I don't really consider it a miracle that the game is still around today. They have a customer base of hoarders with loads of virtual junk that their customers have sentimental attachment to. Honestly, they could remove all content, fire the devs, put the servers on $50/month AWS VMs, and never release any content again and I'd be willing to bet that at least half of their current customers would keep paying for their accounts at least once every 3 months to keep their houses. Just look at the attitude of these forums over the last few years, UO is almost like an abusive relationship to a lot of these people. It's really kind of sad.It's truly a miracle the game is still around after some major design decision made at the very top.
Let's not put words in my mouth. I said nothing of the kind.@railshot random distribution is random. It should not be equal.
What you want is to RNG work in your favour. Or remember previous rolls and avoid them. It will not.Some values will occur more often then others.
How can you state in one message that I won't get 15 heads in a row, and that it is 1/32 possibility to get it?Let's not put words in my mouth. I said nothing of the kind.
UO RNG does not behave even close to a random fashion. Anyone who played long enough and knows the basics of probability theory had multiple chances to observe it. Toss a coin 1000 times. See if you get a single streak of 15 heads in a row. You won't because the chance of you getting that is about 1 in 32. But you will routinely see those kinds of streaks even within several hundred rolls.
I think many things in UO are more about the journey than the final destination. It's a great achievement to be knight of all the virtues (one which most people probably cannot claim) and yes I'm sure it was a bit grindy to get some of the virtues but that's all part of the journey. If every virtue was like spirituality and you gained simply for healing someone then everyone would be Knight of all virtues and it wouldn't be as special (it would be like having GM tactics).Once I thought it would be great to be a Knight of all the virtues... but then when I did... the "reward" for doing so... was just not there... and seemed like an empty achievement. Rather disappointing to say the least.
The code is totally different. For perspective: Most free shards use one of two emulators written in C#. C# did not exist when UO was written. Also, those emulators are actively maintained and open source.Forgive me both my ignorance and if this not allowed here but why is spaghetti code not an issue for free shards? Something about they use emulators? Why can't the real developers use them?
Did you actually bother to run the numbers yourself, or you just like to mouth off to people you don't know on the subject you clearly do not understand? What I wrote, if you were to do 1000 flips, the chances of you getting 15 heads in a row in that set of 1000 flips is 1/32. That means that on average you'd need 32,000 flips to get that streak.How can you state in one message that I won't get 15 heads in a row, and that it is 1/32 possibility to get it?
1/32 means I CAN get it. Nothing prevents me to do so. Even on my first 15 tosses . Go learn more about theory of probabilities, not just basics.
Finally learn difference between CAN and SHOULD
I checked all messages in this topic. Cannot find any clear stated criteria how you will judge if RNG is fixed or not.
I think the main reason is that those emulators were written from scratch with good practices in mind. Original UO code was not. They could have written a maintainable code without C#. They did not, for whatever reason (poor management, mad rush to finish maybe?)The code is totally different. For perspective: Most free shards use one of two emulators written in C#. C# did not exist when UO was written. Also, those emulators are actively maintained and open source.
Yeah, for sure.I think the main reason is that those emulators were written from scratch with good practices in mind. Original UP code was not. They could have written a maintainable code without C#. They did not, for whatever reason (poor management, mad rush to finish maybe?)
And that more likely than not will be the response.Or, they can just say that it's working as intended because it's working as intended whether you like how it works or not.
I take it you never heard of the semi-satirical "Real programmers" that floated around many years ago.Wow! You know an "actual real programmer?" Can I have his autograph?
Can you not be such a sophist when I'm trying to have a serious discussion? I used client-side generation as an example of generating a random number without the latency you're talking about.Who said anything about generating random numbers client-side?
And that is still unnecessary for true randomness. Like I said, the roll of a dice does not depend on when I hear about the results. Randomness is all about when the dice are rolled, or the server determines if you hit the balron.As I've said multiple times now, the example I provided was to show how an RNG can generate streaks exactly like the ones that @Basara shared and how changing the speed at which the time-based RNG is possibly being seeded to match actual real-world conditions essentially mitigates the problem, thus making the chances of that being the issue highly unlikely.
Way to derail the conversation with personal attacks that would have already gotten me a week ban, but what can I say, I'm not among the Stratics favored.If you don't understand it, you can just say that you don't understand it,
There we go again with personal attacks, but it's not surprising from someone who fooilshly thinks ping has anything to do with probability.or you can get your friend's brother's cousin twice removed that used to work at Microsoft or whatever to explain it to you. Better yet, you could just not comment on it at all
Oh so there it is, you like the game, so it must be running perfectly. Gosh, thanks for setting the rest of us straight.and go back to complaining about what you think the devs should be fixing while the rest of us enjoy the game.
"Quite possible," with this current team...nah.And another consideration. It's quite possible they did use a good third-party RNG that works as intended. It does not mean that whatever transformation the random number needs to undergo before it becomes a tangible result is working as intended. God knows, UO Devs historically took the most torturous convoluted way to the goal possible.
Each player gets six cards, except for the player on the dealer's right, who gets seven. The second card is turned up, except on Tuesdays. If you have two jacks, you don't want a third jack lest you be disqualified, but you want a king and a deuce, except at night, when you'd need a queen and a four.Look at the damage formula. It's more complex than Windows Registry, and just like Windows Registry, you can do a PhD thesis on it. Do you really think it's beyond them to pancake the RNG output to the degree that they cannot understand or fix it themselves? I don't.
I never accepted "It's not a bug, it's a feature!" and am not about to start.These are all very good points. There's also a very good possibility that that part of the code is contained in a .dll along with a bunch of other stuff and they don't have the source code for it any more. Honestly, it doesn't matter. It's been like it is for almost 25 years now. At this point I would say it's part of the game that sometimes whacky and very improbable things happen, just like irl. So like I said before, working as intended.
Sure, any computer generates a "random number" based on a seed. But it's the easiest thing to get a new random seed every time a random number needs to be generated, whcih makes the number random.The problem is that computers use "pseudo-random" generators, not truly random. Back in the Day, Draconi even managed to determine what was being used for UO, and it appeared to be one of the simplest, least-random, PRNG, out there - one that was not only public domain, but also one commonly used for teaching programming of random generators in college (one that I had an assignment for, ironically, but my health issues caused be to have to withdraw from the class before completion). It was one NOT meant for being used in any serious application, but as the first step in teaching them (as a prelude to teaching more complex RNGs). Literally ANY other RNG package for sale (and all others for free) are more complex than the one being used.
The issue apparently lies with what's being used as the seeding process for the subroutine, from what Draconi said in 2009.
When this event started, I was wondering how many years it had been since I went into Hythloth at all. Maybe twenty. It's good in concept that certain dungeons are an attraction again, but the implementation could be so much better. Well, I had the time to do the grind on Atlantic for the first couple of days (the dungeon events being how I make money to buy the priciest scrolls), I got the chest and daemon slayer talisman on Sonoma, and that was it for me. It's nice to have a variety of rewards to choose from, but at the same time, including all previous rewards would make a new event much more attractive to players who missed the previous ones (completely or they didn't have time to grind).I disagree. The tortuous grind that was acceptable 20 years ago is less and less so now. This is both because there are plenty of games that found ways to avoid grind or make it fun, as well as all of us are adults that are a lot less tolerant to it. Unfortunately, the current team consciously uses grind as a filler for content. In few and far between cases where accidentally they manage to come up with a mechanic that would provide mostly self-generated content without the monotony, they somehow always manage to step on their own pancake and self-sabotage. So, grind it is. And a wonky RNG makes that grind even less tolerable. When the game starts looking like a dreaded job (monotony with no end in sight), it's a problem.
The nature of the game still doesn't change that we, at least I, expect random numbers. And they aren't hard to produce.The fact that the RNG is pseudo-random is completely irrelevant though. It's not the lottery, it's a stupid game about wizards and stuff. It doesn't matter if the numbers are truly random or not. Any psudo-random number generator would work fine, even ones not designed for serious applications because despite what half of this forum's users believe, UO is not a serious application.
And you're still not understanding that true randomness does not depend on the news travel time of the event.The seeding process is important. I've already showed how to cause streaks in an RNG by seeding with a timestamp too quickly. I've also explained why that is likely not causing the issue but might still cause the data that Draconi shared to be flawed. I personally think the seeding issue is a red herring caused by how Draconi generated the data. Just a hunch based off of what I know and problems I encountered years ago.
The problem isn't just "from time to time," but that "improbable" happens too often. Stated success chances with imbuing and refinements are messed up.This is a mighty fine opinion. I can't disagree because I don't grind content in games as it bores me to tears. But neither you nor I get to decide what is intended. My opinion is that it's actually kind of neat that improbable stuff happens from time to time... probably way more often than it should. One might say that in itself makes it even more random, maybe not fair, but random.
I've seen a lot of rationalization and cheerleading for the devs throughout the years, but this here, oh boy.Thinking about what I just typed... Perhaps it was intentionally coded that way. What if, built inside the RNG, there is another random number generated that decides if something miraculous and highly improbable happens with your next role or several roles? That would make things interesting for sure, and again... working as intended.
I still say the current team doesn't even know how much of the basic code works. It's an inevitable problem when things are so cobbled together over a couple of decades, sure, but there are also fundamental functions that the current team should understand — and be able to give a definitive answer.A couple of points:
1) I think it is a real possibility that sometime in 1997 they decided to make the RNG not quite random. It may be working as they intended, but their 20+ year old intentions are irrelevant today.
2) UO can be used as an example of how to take a bad situation and make it worse, repeatedly. Every action was fully intentional, yet here we are. It's truly a miracle the game is still around after some major design decision made at the very top. Something is working as intended is not always good, especially if the person doing the intending is not that bright.
3) Several later generations of devs acknowledged the issue with RNG, so clearly it is not working as intended today.
Thanks for answering my question about whether I'm talking to a wall. You seem to have a comprehension problem, so I have to keep explaining that I in fact am not talking about historical events having any influence on a new event. I'm not talking about, say, hitting a para balron every time while it doesn't hit me. But your "argument" (I'm being charitable there) keeps coming back to this straw man.@railshot random distribution is random. It should not be equal.
What you want is to RNG work in your favour. Or remember previous rolls and avoid them. It will not.
Right there you demonstrate that you have no idea what random really means. If there are three events with the same probability, but out of 1000 occurrences one occurs 50% of the time, there's a problem.Some values will occur more often then others.
Actually, it's you who needs to learn the difference, as well as basic probability functions. If you're lucky enough to experience something that "should" happen 1 in 32,768 times, good for you. But if there are 32,768,000 rolls of the dice and it happens only 500 times, or 2000 times, then something is wrong. The dice are loaded, or a computer's RNG code is not truly random.How can you state in one message that I won't get 15 heads in a row, and that it is 1/32 possibility to get it?
1/32 means I CAN get it. Nothing prevents me to do so. Even on my first 15 tosses . Go learn more about theory of probabilities, not just basics.
Finally learn difference between CAN and SHOULD
Well, go back and re-read them, then.I checked all messages in this topic. Cannot find any clear stated criteria how you will judge if RNG is fixed or not.
Not for me. Many other games have leveling, e.g. EQ (hated it) and Diablo II (loved it for the first two go-arounds but terrible replay value), of fighting progressively harder and harder monsters. But in UO you wanted GM swords and tactics even for just the first couple of levels of Despise or Wrong. It was better for my guildmates and me to spar up new characters to maximum skills first, and then go adventuring.I'd look at it as the "reward" you received was the X hours of gameplay you took part in and the feeling you had when completing a tough virtue rather than there not being a reward (like title saying you have all or something else). Again if there was some great reward for having all the virtues (even with the grind) then there would be tons of people that had it. I think this is why UO has such a following of seasoned vets because many of us still remember what it was like making our first warrior or crafter etc and the journey we all took in trying to finish our characters. The journey is the reward.
When something is not 100% guaranteed, it is certainly possible it won't happen several times in a row. Conversely, when something has an extremely low probability, it can happen with enough rolls of the dice. It's just highly improbable. If only 1000 lotto tickets are sold when the odds for a single line are 1 in 45,057,474, then there would be hardly any winners, but certainly still possible that there can be a winner on the first draw. But "highly improbable" in UO is absurdly streaky.The game is 24 years old now. I would really like loot tables, answers on why i can fail 5 times in a row with a 99% success chance or why i can succeed with a 2% chance.
Just still seems wonky.
Once again, I'm talking to a wall here.As being historian, you have really "humanitarian" approach to what is wrong and right. Including math.
I have no "criteria" for randomness. Randomness is self-evident, and yet you don't know what it is. The example you bring up "can" happen, just not over so many as 32,768,000 coin flips. If it does, there's something wrong with the randomness. The coin isn't evenly weighted or isn't being flipped properly, or a computer's RNG code isn't truly random.State your criteria for RNG. Because your "wrong" criteria is incorrect. It CAN happen both 500 and 2000 times. Or not at all. Even though 32 million rolls.
This is literally what I did in the first example I provided. Generating a new seed every time a number needs to be generated is the exact wrong thing to do. I thought I explained that 5 times now. I've met a lot of people who just couldn't understand code in my time, I can respect that. I never met someone who argues that an idea that I can clearly prove wrong using code is correct. I give up.Sure, any computer generates a "random number" based on a seed. But it's the easiest thing to get a new random seed every time a random number needs to be generated, whcih makes the number random.
You should probably quit playing games then. Truly random numbers, as I have already explained are typically too expensive (in terms of both compute power and monetary cost) or too slow to generate to use in a game where you might be calling for them hundreds of times a second.The nature of the game still doesn't change that we, at least I, expect random numbers. And they aren't hard to produce.
The problem is worse than that. I do find it hard to believe that regardless of how old the code is, they can't figure out how the RNG works, but let's suppose that is the case. I do know for a fact that they pointedly ignored game-breaking bugs in the EC. I am talking about getting too much text in a shard event and the text buffer CTDing the client. Or crashes when opening those event corpses with hundreds of items in them. The guy who wrote EC's UI sent them the bug information with quite a bit of the tracing already done only to get the silent treatment. Note this is not some Joe shmoe who can't tell a bug from the hole in the wall. This is a guy who used to work with them, who already did a lot of work towards diagnosing the bug. And they don't even bother to answer.I still say the current team doesn't even know how much of the basic code works. It's an inevitable problem when things are so cobbled together over a couple of decades, sure, but there are also fundamental functions that the current team should understand — and be able to give a definitive answer.
Actually, while generating a new seed each time is theoretically superfluous, for the cost of a few extra CPU cycles, it ensures randomness in case the seed variable is happened on again.This is literally what I did in the first example I provided. Generating a new seed every time a number needs to be generated is the exact wrong thing to do. I thought I explained that 5 times now.
I didn't even look at a single line of your code. I scrolled on past, then once I saw in your summary that you don't understand the general concept of probability (particularly that the time for news delivery doesn't matter), why would I bother going back to see what you did?I've met a lot of people who just couldn't understand code in my time, I can respect that. I never met someone who argues that an idea that I can clearly prove wrong using code is correct. I give up.
Utterly false. Must I repeat myself?You should probably quit playing games then. Truly random numbers, as I have already explained are typically too expensive (in terms of both compute power and monetary cost)
If generating a seed each time somehow takes too many CPU cycles, then it can be done once a minute. Even so, we're not talking about 1 MHz CPUs anymore, or do you not understand how fast a server is? Or at least how fast a server should be. I guess maybe UO is 6502-based after all?or too slow to generate to use in a game where you might be calling for them hundreds of times a second.
If they deliberately wanted to make players quit — and I stress again how many accounts they've lost by not fixing gameplay — what would they have to do differently? I didn't know about the guy doing the legwork for them, but it's just like that database vendor I mentioned, focused more on churning and burning new clients than keeping the big ones. I had to trace their bugs for them, I sometimes had to fix their SQL, I was willing to fix their C#. Like UO, it was a product cobbled together by dozens of people over so many years, that no one still there truly knew how things were programmed. But I'd used it since V1 and knew better than anyone on the planet how it functioned and where they should look. They'd always fall back on "proprietary."The problem is worse than that. I do find it hard to believe that regardless of how old the code is, they can't figure out how the RNG works, but let's suppose that is the case. I do know for a fact that they pointedly ignored game-breaking bugs in the EC. I am talking about getting too much text in a shard event and the text buffer CTDing the client. Or crashes when opening those event corpses with hundreds of items in them. The guy who wrote EC's UI sent them the bug information with quite a bit of the tracing already done only to get the silent treatment. Note this is not some Joe shmoe who can't tell a bug from the hole in the wall. This is a guy who used to work with them, who already did a lot of work towards diagnosing the bug. And they don't even bother to answer.
Yes, yes, a non-reply reply. I tell you what: show me how much you understand basic statistical concepts by answering a couple of questions. I figure you'll try to find the answer online, or ask someone secretly. That's ok, and I'm used to it. Back in school a lot of others would try to sneak a peek at my answers during tests.
The fact that I demonstrated doesn't have anything to do with dice rolls and time delays of dice rolls. You are arguing about something I never said. What I showed, had you bothered to read it, was that you can't seed a time-based RNG in a tight loop. You will get frequently repeating results, as I demonstrated. So I'm just going to do this again and be done with you.Now, if I rolled my die 20 ms after you did, or 20 seconds, or 20 days, how would the time delay affect the probability of my roll?
I determined that you aren't really worth a proper response.I didn't even look at a single line of your code.
Eh, I'll just concede the point here. I shouldn't try to argue someone else's intentions. I don't think that the current team has ever acknowledged any issue regarding the RNG or made any attempt to change how it works so I may have inferred that the way they have it working is intended and I may very well be wrong. It's really not worth arguing about.
I don't really consider it a miracle that the game is still around today. They have a customer base of hoarders with loads of virtual junk that their customers have sentimental attachment to. Honestly, they could remove all content, fire the devs, put the servers on $50/month AWS VMs, and never release any content again and I'd be willing to bet that at least half of their current customers would keep paying for their accounts at least once every 3 months to keep their houses. Just look at the attitude of these forums over the last few years, UO is almost like an abusive relationship to a lot of these people. It's really kind of sad.
But new legacy....this is mostly me to a T
you said better than anyone ever has
and its embarrassing to admit
every year that goes by i cant believe it just keeps getting worst. talk about bad leadership.....
Actually, you're the one who wrote: "but the fact that the numbers are generated server-side and none of us have a fast enough ping to run a loop that tight, even from a 3rd party program, it seems unlikely to cause an issue even if the code is technically bad." Right there you demonstrated that you don't understand that probability doesn't depend on how fast news travels.The fact that I demonstrated doesn't have anything to do with dice rolls and time delays of dice rolls. You are arguing about something I never said. What I showed, had you bothered to read it, was that you can't seed a time-based RNG in a tight loop. You will get frequently repeating results, as I demonstrated. So I'm just going to do this again and be done with you.
At first I thought you didn't understand but when you said:
I determined that you aren't really worth a proper response.
I don't think I saw this before, but baby Jesus in the manger, you didn't have to keep showing .This is pic of table with random numbers in Excel. =Rand() function. Second column is =if(A1>0.5, 1, 0) . Then summarize each column.
You can play with it yourself. On a pic above I managed to have amount less then 40. Can be above 50. It aims to 50, but hardly can do. And even harder to make both at 50. It will be different each time you refresh page.
If you will make a slice chart how many occurances
=round(Rand() *8, 0) you will see something like situation happening to our ship plans.
Worthless appeal to authority, as well as irrelevant.I can give an example of speed affecting results.
As an electronics teacher for 17 years
Your example isn't based on built-in randomness, but the actions of the user, and that's, uh, exactly what I said with an RNG determined by player actions in a certain preceding time period.A digital display is first then a counter on a clock. Add start and stop numbers and have it count until a button is pressed that stops the counter and displays that number.
A very basic random number generator. But use a slow clock with a large range and it is not very random, you may never get to the high numbers.
But a 1k clock with 2 set ups running 1 thru 6, made a very realistic dice set.
A 1 Hz clock not so random.
Well no kidding. Rolling dice in a small space, or shaking them in a cup and just dumping them down, is not true randomness.Also with your dice comparison. If you try rolling your dice in a very tiny space they do not roll a random number.
That's why you have to shoot craps dice across the table and against a wall that is not smooth.
Basically this is what Pete is saying. The generator needs time to set up artificial randomness.
Such quests, and Krampus too, need to be about building points to buy the reward you want. I got the earrings on my second time. I counted myself lucky and wasn't going to bother getting a second pair.Yukio quest brought about many complaints about RNG. It was a one in 8 chance to get the earrings. But some players took more tries some took less. I was 2 for 17 tries. I did not like the quest So I bought more instead.
You might want to make clear why true randomness matters in this context?Well no kidding. Rolling dice in a small space, or shaking them in a cup and just dumping them down, is not true randomness.
Yes, please explain how your coin should find out that it had 40 times heads streak before, so it must give more tails later.If you flip it 100 times, it's not impossible to get heads 40 times,
....
But if you flip it 1000 times and you get heads only 400 times, then something's wrong. Must I keep explaining?