Changes between 1.10s and 1.10
#81
Kartoffelsalat,Nov 5 2003, 09:03 PM Wrote:The changes made today on the AS are interesting:

1) With multiple corpses, the one with the most valuable items (in gold) is saved into your next game.
I think this is pretty dumb.  I liked it better when they just said that your first corpse carried over.  Come to think of it, I liked it just fine in 1.09.
No, actually, the old was was incredibly dumb.

Let's say you die, and your corpse hits the floor with all your items.

You go back after it, and die again, leaving a second corpse.

You go back a third time, manage to grab your first corpse but then die, and give up, and quit the game.

Guess which corpse got carried over?
Great truths are worth repeating:

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 21:9

"It is better to live in the corner of a roof
Than in a house shared with a contentious woman." -Proverbs 25:24
Reply
#82
One almost inconsequential change: Atmas is now a town healer. I have no idea what prompted this change. Perhaps someone at Blizzard was futzing with the NPC tables and made an accidental change? I guess when she's out of her tavern, she's slightly closer to the townportal area and so could be convenient to go to if all you need is a quick heal. But she's not a shop, so you can't sell your items to her or have her repair your weapons, so I doubt Atma's new ability is going to be used a lot.

So, Atma's now a town healer and Cain has moved in Harrogoth. Any other changes to the towns or NPC's?
Reply
#83
I doubt it was accidental, since it was documented in the patch readme. I thought it was a typo at first, since Fara works just fine already, but it's definitely a new feature. Maybe they felt a player could 'heal and rest up' at Atma's tavern too.

AFAIK, Cain's act 5 move wasn't documented, so it threw me off at first. It is very nice to have him near the stash and Larzuk.

It seems that Flavie no longer causes me to lose experience for monsters I kill if she also hits them. I believe this is a change in 1.10. I didn't get around to seeing if this was the case in either of the betas. In 1.09d if I let her hit a monster, I wouldn't get experience for killing it.

I haven't noticed any other NPC adjustments, other than minor tweaks to the goods they offer, here and there.
Reply
#84
Quote:Atmas is now a town healer.

Did you check if she heals you without the first quest? Would be new quest reward then. ;)
Reply
#85
I did a quick "CTRL + F" to check on all 5 pages for this so I hope I am not repeating anyone.
Quick note, this was tested in SC Single Player only.

In the final patch 1.10, if you use '-seed #' in a shortcut, it no longer creates the HUGE hoards of monsters, they spawn just the same as they usually would based on the difficulty.

What does now happen is that in Normal, Nightmare or Hell with any characters, (doesn't matter if they have a title of not.) the maps are EXACTLY and I mean EXACTLY the same with who ever you use.

I even took a lvl 99 Barb that had completed Hell and ran him around in Act 1 Normal. Then I used a lvl 42 or so Amazon that had only completed Normal and wherever my Barb had run around the map had already been revealed in NM diff even though she had never actually walked outside town.

This was all done a few days ago so I think I got all the details.
Well, night all.
Blood for the Blood God!
Skulls for the Throne of Khorne!
- Warcry of Khorne's Champions.
Reply
#86
I'm not 100% sure on this, but if I remember correctly it wasn't possible to wear an item, whose requirements weren't met without the bonuses from the item itself. It would turn red, and no bonuses would be gained. It seems to work now. This might also be a change from 1.09, don't blame me. :unsure:

Beware, this is a bad pratice. If your character dies you have a problem recovering the corpse, unless you have enough inventory space.
Reply
#87
MongoJerry,Oct 29 2003, 08:34 AM Wrote:Nope!  There's no new "stun" effect that Grizabella could see.   I'm not sure what Frazier was smoking.  The Delirium curse works exactly as it did before -- it turns you into an undead stygian doll.  The only difference is that the chances of casting Confuse and other effects has been reduced.

Not exactly. Confuse has changed.

In the beta, for an aura enchanted pack, Confuse would wipe the aura off the minions, thus instant boss pack nerf. You used this effect to advantage with your melee sorc story.

In the real 1.10, Confuse doesn't have any effect on a Might enchanted pack in NM [1] The pack showed the Confuse curse animation, and came straight at me. Then the fun problems with 'no overwrite' got started....

[1] the place I saw it and had it be a problem, I'm assuming it is true everywhere....but there are server "weird stuff" during the eariler days of a patch, as they muck with the code.
Reply
#88
Ruvanal,Oct 30 2003, 10:38 PM Wrote:In which case you may want to save the ring rewards (act 1 and act 3) along with the class specific item reward from act 5 till you can get the maximum benefit from it.
I did that once, and learned that Act1 rings are still capped at low levels. Act3 rings are also capped. Rings drop pretty often and there are cubing games to play now, so I would suspect this is not time efficient.
Reply
#89
adamantine,Nov 4 2003, 04:23 PM Wrote:sometimes they go off several times in a row (caused by randomization being partly based on position).
Nope, it is caused by poor random number generation code. The "standard" code is to divide your big range random number into a small range, but this causes "2-point correlation", i.e. successive numbers strongly tend to be the same. About 99% of programmers have never heard of these basics, which are well discussed in their classic literature -- i.e. those boobs cannot read.
Reply
#90
Ferengi,Nov 9 2003, 06:17 AM Wrote:Nope, it is caused by poor random number generation code.  The "standard" code is to divide your big range random number into a small range, but this causes "2-point correlation", i.e.  successive numbers strongly tend to be the same.   About 99% of programmers have never heard of these basics, which are well discussed in their classic literature -- i.e. those boobs cannot read.
I think you are being rather harsh, and rather confident given how little is known about all the facts. When writing code you have to measure the gain versus the effort to achieve that gain. In general it matters little that _true_ random numbers are not obtained. In the case of crypto, you need to spend the effort to get true random number generation. In the case of a game like this, the code is probably optimized for speed (there are a lot of random number calls in the game), or optimized for developer efficiency :). I wouldn't call someone a boob for not worrying about some non-randomness. It won't affect game sales, hardly affects game performance, and it could be a reasonable amount of effort (or be computationally prohibitive) to get a high-quality distribution. I wouldn't fault the engineering decision even assuming that they have made exactly the same 'mistake' as you claim.

Regardless, can you explain a bit better? First, the standard call to rand() returns a number which is supposedly evenly distributed between 0 and 1. This is generally multiplied to get the range that you want. You suggest it is the reverse. While I'm not saying that you are wrong about standard random number generation, your explanation is lacking (dividing a large range into a small range is uniform for floats except for round-off error, which should not be ultimately significant with a single division unless the range is very small). Can you clarify? I'd also be interested in a reference if you have one handy, even though I don't know that it tells us anything about how Diablo2 runs. The implementations of rand() have changed a lot since the classic literature anyway. Hasn't 'classic' RNG mostly been replaced by instructions on the processor?

Your explanation is so terse that it appears you read something once and are now trumpeting it, throwing out a technical term coupled with an implausible explanation because you wish to sound smarter than others. Provide some more detail so it doesn't appear that way anymore. Realize that it still doesn't necessarily tell us much about the case in question unless information about Diablo2 in particular is provided.

There have been a lot of indications that positioning affects random number rolls (at least back in the classic days), so I don't think they are using a standard call anyway. I'd guess their implementation avoids floats altogether. Were you perhaps referring to a 'standard/classic' algorithm? They may in fact be using something like that. Which one exhibits 2-point correlation in particular?

Are there any knowledgeable modders that can help here? Maybe some true CS guys?

EDIT: By true CS guys I mean as contrasted with myself as an electrical engineer who codes for a living. I don't mean to say that Ferengi is not a 'true' CS guy.
Reply
#91
vor_lord,Nov 9 2003, 10:26 AM Wrote:There have been a lot of indications that positioning affects random number rolls (at least back in the classic days), so I don't think they are using a standard call anyway.  I'd guess their implementation avoids floats altogether.  Were you perhaps referring to a 'standard/classic' algorithm?  They may in fact be using something like that.  Which one exhibits 2-point correlation in particular?

Are there any knowledgeable modders that can help here?  Maybe some true CS guys?

EDIT:  By true CS guys I mean as contrasted with myself as an electrical engineer who codes for a living.  I don't mean to say that Ferengi is not a 'true' CS guy.
They do not use a standard call as that could yield different results on different hardware platforms (Intel, AMD, Macs, etc.) depending on how they each implemented such a thing at the processor level. The PRNGs that are used in multiplayer games must stay in synch or it will start giving each of the players different results in the same game, and then who is right?

The system in Diablo2 is mostly integer calculations except in a few small sections of code. For the PRNGs in the game they are using 2 DWORDs for handling this. Here is a better listing that I save from some time ago.

Quote:Jarulf made a post on the Amazon basin outlining the random number generator. Relevant portion:
In reply to:

>If the number generator was written by Blizzard, this contradicts your first assertion and is indeed a critical
>point in this discussion. If it is not written by Blizzard and not a component of the C runtime library, how can
>you assert that it is not flawed?

As far as I know, the one used in D2 should not be "invented" or written by Blizzard themselves. BY the way, it works like this (the exact explanation may depend on how one view the data, 2 32 bit values can be seen as a 64 bit value for example. I like to view it as two separate 32 bit values though.

Each seed is made up of 2 32 bit values (or one may see them as 1 64 bit value). I will call it seed_lo and seed_hi.

Next, an intermediate value (64 BIT!!!) is calculated as:

seed_lo * 0x6ac690c5 + seed_hi

Note, it will "roll over" if above max value for an unsigned 64 bit value.

The upper 32 bits are stored away as the new seed_hi while the lower 32 bits are stored away as seed_lo. In addition the lower 32 bits (the new seed_lo) is used to generate the random number through a mod division:

random number = seed_lo mod X

Thus generating an integer value in the range from 0 to X-1

The game will always when needing a random value, thus do a Rnd[X] which will return a value in the range 0 to X-1. If one need a value in the range Y to Z, one have to do Y + Rnd[Z-Y+1]. Here we have the reason for the off by 1 bug found in pre 1.08 version of Diablo 2. Where affixes and properties of an item like AC could never have its maximum value, the programmer forgot the +1 and used Y + Rnd[Z-Y]. This has been fixed for most cases but last I checked not for AC and possibly for things like number of arrows in a quiver and such, have not checked each case, I have informed Blizzard about it though. The same bug actually existed in several other places, like damage calcs. Since they used higher precision through fixed point arithmetic, the errors was only 1/256 of a damage point, which for practical purposes is neglectable but still exist in the game, that is, if your weapon do a maximum of 50 damage, the most you can do is 49 + 255/256 of a point. Since selecting items from a list and such only uses random values from 0 up to X, this should not happen.

Feel free to do whatever tests there can be done on this random number generator. By the way, when the seed is initialized, it is always made so that seed_hi has the value of 0x0000029a, while seed_lo can get whatever "random" number one want, initially for example based on some time stamp. The algorithm will never, if seeded correctly with 0x29a and a non 0 seed_lo, reach a state where seed_lo and seed_hi are 0 (since then from then on it would definitely not randomize any more ).

From my looking at the process I have not seen any indication that the "successive numbers strongly tend to be the same" as Ferengi puts it. In fact comparing this to several of the PRNG algorithms that I have found on the net (that are considered to be about as could as you can get without resorting more than 64 bits), this one is very similar in form and function. Considering the number of times that it is called at some points in the game, it is probably an adaptation that has been optimized for the speed at the reduction of some of the factors in the other PRND that would not be getting exploited. (Keeping in mind that a server will be running up to 128 games simultaneously.)
Reply
#92
Quote:In the beta, for an aura enchanted pack, Confuse would wipe the aura off the minions, thus instant boss pack nerf. You used this effect to advantage with your melee sorc story.

I don't recall Confuse overwriting auras like might. It overwrote curses like amp (and was itself overwritten by amp), but might, fanatacism, etc. weren't affected by Confuse.
Reply
#93
Quote:Keeping in mind that a server will be running up to 128 games simultaneously

sorry for resurrecting an old thread (i was searching for whether or not there was info on how CTC items stack).

anyway. a server runs a lot more than 128 games simultaneously ;)
Reply
#94
I think you are thinking of Realms. A realm (USEast, USWest) will indeed have more than 128 games. However, there are multiple servers per realm. This can be shown by going into a game, and waiting for the SoJ message. Then, log off (not sure if this is necessary), and log back on. Join a different game, and wait for the SoJ message again. The number can be very different. I've seen it go from 43xx to 21xx SoJs sold.
Reply
#95
Quote:I think you are thinking of Realms.

nope. i was talking about servers. that is, a single computer within the realm.
Reply
#96
Aello,Mar 13 2004, 03:57 AM Wrote:sorry for resurrecting an old thread (i was searching for whether or not there was info on how CTC items stack).

anyway.  a server runs a lot more than 128 games simultaneously ;)

Well, yeah, it can handle 1024 now, but 128 was if I recall correctly the size of the record keeping games in some old version.

By the way, what is a CTC item???
There are three types of people in the world. Those who can count and those who can't.
Reply
#97
CTC = chance to cast.
Reply
#98
Jarulf,Mar 15 2004, 09:48 AM Wrote:
Aello,Mar 13 2004, 03:57 AM Wrote:...anyway.  a server runs a lot more than 128 games simultaneously ;)

Well, yeah, it can handle 1024 now, but 128 was if I recall correctly the size of the record keeping games in some old version.
Yes, it was partly my faulty memory of an obscure point that I do not need to reference much anyway. Who on their home systems are really going to end up running 128 games of Diablo2 anyway? :P

I also did not take into account that the operating systems that would typically be getting used on the servers can typically end running different instances of the state space. In each of these instances the limits would the same as that the typical win98 system or on XP's different signed in users (1024 games each). So yes I can see there being "a lot more than 128 games simultaneously". That just drives home the point that I was trying to make, the speed of the these frequently called routines needs the optimized more than having some of the hooks that do not get used cluttering up the executing code.
Reply
#99
Quote:Well, yeah, it can handle 1024 now, but 128 was if I recall correctly the size of the record keeping games in some old version.
don't think so. the problem with only 128 games on a server is that it would never have been cost effective. i think the max concurrent users on the realms (all 6 of them) has at times reached at least 350k. divide by 128 and you get 2735. even if everything were running extremely well and games are very evenly distributed, that would mean you'd need at least 3k servers. at about $5k a pop, plus the continuing charge of rental space (not to mention bandwidth, though bandwidth doesn't factor into the equation for figuring out target games-per-server of course). ugly ugly ugly. especially since it isn't pay-to-play. (which of course it should NOT be, but you can see why optimization is important). so i think it's pretty unlikely that a limit as low as 128 games would ever have even been considered.


Quote:Yes, it was partly my faulty memory of an obscure point that I do not need to reference much anyway. Who on their home systems are really going to end up running 128 games of Diablo2 anyway? 

I also did not take into account that the operating systems that would typically be getting used on the servers can typically end running different instances of the state space. In each of these instances the limits would the same as that the typical win98 system or on XP's different signed in users (1024 games each). So yes I can see there being "a lot more than 128 games simultaneously". That just drives home the point that I was trying to make, the speed of the these frequently called routines needs the optimized more than having some of the hooks that do not get used cluttering up the executing code.
:) it's exciting enough to see someone actually defending d2 code for once, i'm not going to complain!
Reply
Ohh, OK, then I perhaps remember wrong then. Not the first time.

As for commeting on code, I think that it is like with everything else, one usually only see or talk about things were there is a problem or when one think someone is not good. That makes it seem everything is bad when in fact most of it is very nice and good. So don't despair :)
There are three types of people in the world. Those who can count and those who can't.
Reply


Forum Jump:


Users browsing this thread: 13 Guest(s)