Yeah i probably should have worded the OP differently but whatever.
So these are the several possible actions that could help reduce the lag (Ordered by their likelihood to happen in my opinion):
1. Reduce the number of monsters spawned in greater rifts and increase the progress you gain for every monster killed.
2. Remove area damage from the game or replace it with something that is less intensive to constantly calculate.
3. Somehow make sure that damage numbers do not get bigger than uint.max.
4. Change D3 to run in 64 bit.
I personally think that they could provide a fix with relative ease if they just tune the GR numbers as point #1 suggests. Sure, the game might become a bit less exciting because you won't have crazy density maps in GR anymore, but the pros would certainly outweigh the cons if it would mean that you can play a GR 65+ with 4 people or solo with no lag at all.
After this "fix" is deployed, they could investigate more complex solutions that would enable them to bring back the density - without the lag.
#2:
So more players hitting more mobs with many different types of attacks that have procs like area damage, along with constant damage over time ticking, all of that creates insane lag. It looks like their only chance to fix this shit would be to actually design the game mechanics differently from now on i.e get rid of most DOTs and limit procs to once per x amount of time etc...
I just wish they address this problem as a whole and not just provide small fixes that are usually addressing only certain a build.
Original post:
*TL:DR at the bottom*
The game is currently almost unplayable in high greater rifts like 60+ or so and especially in groups of 4 players. I’m not sure if this is the case on all realms but at least on EU it is.
Some builds suffer very badly from this even in solo like the Helltooth WD for an example. Some people claim that if you have 0% area damage then you won't lag in solo but that's just a workaround and not a fix.
In the past, the argument against investing time into fixing this issue was the fact that only a very small percentage of the player base experienced it because it was only evident on high end greater rifts. But today, the lag starts occurring even on 60+ which is not considered that high anymore and i'm pretty sure that more and more people will get to that level and experience the horrible lag.
To the people that are rushing to post things like "no lag here lol noob", please understand that this issue is not always reproducible as it really depends on several factors like the time you play at, what build(s) you are running, the map layout / type you're at and the mob type you are facing. A possible solution to this problem would be to divide all the numbers in game by 100 and display them in the client as strings with added 0's just to keep the consistency.
TL:DR - The game lags horribly on high gr and a possible fix would be to simply divide all the damage and health points numbers in game by 100 so the server calculations, database queries and server-client traffic won’t be as heavy anymore.
+1. Lag has always been an issue, but this season it might be absurd. We see many people switching from hardcore to softcore, and currently 60+ is unplayable (at least on EU, any time of the day, in a 4 man group). It's also really discouraging that people have to do certain measures just to counter the lag (make new games constantly, reduce the game difficulty, turn off damage numbers, remove area damage and life on hit, change to a spec that causes less lag - and away from the spec you really want to play).
In previous seasons the lag was at least only an issue for a few players in the top 100 bracket or so, and it got better and better recently, but this time it might actually affect a much larger playerbase.
Why they make such builds but the server cant support it? some one said maybe a fix would be for a player to disable others afflix or something but I dont think that is what causes the lagg since the spells are there even if you dont see others, maybe not. I dont see if blizzard is looking in to this, first I had the "fps drop" problem and I solve it by setting the sound channel to "16" (low) and other tweks xD stupid fix because a lot of sounds are chopped now I play with 1 wd in grift 63+ and density+wd=lagg sooo I really think is a mayor problem
Noticed this on as low as level 50 Grifts as well as start 60s (highest my group and I have gone so far, this season).. Density + Double-stacking Rend (Lamentation), from two barbs = Massive lag..
The servers are getting slaughtered with all these "calculations" being done.. They need to simplify it somehow..
the lag has nothing to do with grift level. i can experience the lag even on 35 is the density is hhigh enough and your damage low.
If the mobs are not oneshottet its start to lag because all the effects have to be calculated.
And not. deviding them by a factor will not solve shit. Thats really a bad assumpation to make. Just because its easier for humans to work with small numbers, to expect that goes the same for computers is plain wrong.
This approach would even make it worse because division is a operation which can take significantly longer than multiplication. (24 to 4 cpu cycles)
Thats also the reason why everything in diablo2 is x+x1+x2 * y+y1+y2 *z+z1*u
There will be no gain of performance by making another additional calculation to get smaler numbers.
And no, you cannot substitute 100/10 by 100*0,1 this would chaneg the nature of the operation from integer to floating point.
Floating point operations are better performed on the GPU than on the CPU , thus this approach would require another step to include code for executing operations on your GPU
To elaborate more on this : in the link there is said "the killer: repetition"
that means if an operation takes 1 second its fine. if you need to run the same operation a bazillion times its bad.
In this case, repetion is the number of monsters you hit. The more you hit, the more repetion. Since for every mob the damage it received has to be calculated. Efffects like area damage make this even worse. becaus you might run into a two-pass problem, where you cannot calulate the whole damage in the first repretion but need another one to apply effects which depend on the first iteration.
I asume area damage needs this second pass - Because it applies part of the damage you did before to the mobs around it. So you need to know beforehand if you hit that mob and for what damage.
I also asume that the "fix" for area damage was not implemented earlier because blizzard knew exactly that this will cause a slowdown. What has driven them to fix it now is a mystery to me. It was totally forseeable what would happen.
I had removed the effect from the game completly.
Things which cause lag are pretty easy to spot. If an item causes a value to change rapidly a lot of server client communication is required in comparision to a constant value.
e.g. Archon stacks . each stacks changes your paperdps and toughness this has to be synchronized with the server causing even more slowdown in addition to the general calculatory problem.
There is also this thing called action predition in server / client communication.
Normaly if you do something you have to wait for the server to accept this before you can do something else. In Diablo and other online games the client continues immediatly with the next action without waiting for an acknowledge of the previous action.
If the server acknowledges the previous action the client just continues. However if the server does not accept it , the client reverts to the previous state - makes a rollback so to say. (only for actions not for gear)
This is especially the case the faster you do these state changes. (e.g archon stacks). When you are changing states too quicl the game goes to choppy mode and takes only the response from the server as a given state. And these come in infrequently.
the lag has nothing to do with grift level. i can experience the lag even on 35 is the density is hhigh enough and your damage low.
If the mobs are not oneshottet its start to lag because all the effects have to be calculated.
And not. deviding them by a factor will not solve shit. Thats really a bad assumpation to make. Just because its easier for humans to work with small numbers, to expect that goes the same for computers is plain wrong.
You can't say it has nothing to do with the grift level because the fact that on a high grift the mobs have high hp is what creates the lag in the first place (them not being 1 hit...). So yes, on high gr, the game lags when big groups of mobs get hit all at the same time, especially if from multiple sources and especially if the damage type is a DOT and or area damage procs apparently.
If they patched the game so an RG on GR 70 has 10 billion hp and not 10 trillion hp for an example, and then toned down the players' damage accordingly, wouldn't that reduce server stress? See, i didn't mean that they would add another calculation of divison / multiplication along the way, but rather to reduce all of the numbers in their inception...
And regarding the rest of your post, i appreciate your detailed input.
If they patched the game so an RG on GR 70 has 10 billion hp and not 10 trillion hp for an example, and then toned down the players' damage accordingly, wouldn't that reduce server stress? See, i didn't mean that they would add another calculation of divison / multiplication along the way, but rather to reduce all of the numbers in their inception...
no that would not make a difference. as i said, the size of the numbers is not imporant.
If they reduce damage from the players and hp of guardians the situation would still be the same except numbers being smaler. that would not make it better.
you can reproduce the lag on grift 35 or 25. Just fish a high density rift and do not equip a weapon. It will lag like fuck
of course you are right saying that lag is more promiment in higher grift levels. but you can reproduce the issue on lower grifts also under certain circumstances.
From a technical view this problem is not due to the rift level but to the number of calculations needed. and those correlate with the grift level currently. but you can create the same situation on any grift level if you force these amout of calculations in lower grifts by changing gear.
If they patched the game so an RG on GR 70 has 10 billion hp and not 10 trillion hp for an example, and then toned down the players' damage accordingly, wouldn't that reduce server stress? See, i didn't mean that they would add another calculation of divison / multiplication along the way, but rather to reduce all of the numbers in their inception...
no that would not make a difference. as i said, the size of the numbers is not imporant.
If they reduce damage from the players and hp of guardians the situation would still be the same except numbers being smaler. that would not make it better.
you can reproduce the lag on grift 35 or 25. Just fish a high density rift and do not equip a weapon. It will lag like fuck
If the numbers get so big that they are no longer a 32 bit integer, and considering the fact that D3 runs on 32 bit only... Wouldn't that mean that the compiler is emulating 64 bit types and operations onto them, therefore creating a much heavier process on the server in terms of memory usage specifically?
I don't understand why people are ignoring this or even downvoting this (Reddit/official forums). It really seems like:
1) "I'm not having this problem, so you shut up and just continue playing in lag, I don't care"
2) "Yeah lag is an issue but your solution is bad so I'm gonna say no to fixing it"
It's really sad that this attitude ("it's not my problem so your problem is irrelevant") is plaguing the community right now (we also observed this in the paragon debate). *SadPanda*
All of those comments are nice and factual, but does it matter?? nobody from Blizz have focus on that like before.....D3 is performance disaster from early start to 2.3 patch now. More than 3 years of lags, DC, shuttering, FPS drops even on high-end setups.... and what Blizz answers?? Send us your log, something is bad in your setup :D. This is ridiculous, sorry. I love the game (like D1 and D2 before) !!! but this is simply irritating.
I know... Right now it's the only thing that really bothers me about the game. I think that everything else is in a relatively awesome place - Stuff like itemization and build diversity, it's "all good" in relation to previous patches and i'm happy with that. It's just the horrible lag on GR.
I guess a true *simple* fix would be to make GR spawn a lot fewer mobs that give a lot more progress. Focus more on big monsters that cause less lag rather than groups of 100 zombies that are all clumped up together... This would be a good workaround or a band-aid type of fix.
If they patched the game so an RG on GR 70 has 10 billion hp and not 10 trillion hp for an example, and then toned down the players' damage accordingly, wouldn't that reduce server stress? See, i didn't mean that they would add another calculation of divison / multiplication along the way, but rather to reduce all of the numbers in their inception...
no that would not make a difference. as i said, the size of the numbers is not imporant.
If they reduce damage from the players and hp of guardians the situation would still be the same except numbers being smaler. that would not make it better.
you can reproduce the lag on grift 35 or 25. Just fish a high density rift and do not equip a weapon. It will lag like fuck
If the numbers get so big that they are no longer a 32 bit integer, and considering the fact that D3 runs on 32 bit only... Wouldn't that mean that the compiler is emulating 64 bit types and operations onto them, therefore creating a much heavier process on the server in terms of memory usage specifically?
Yes and no. Its true diablo is a 32 bit operation, thus it cannot compute numbers bigger than 32 bit without increased effort.. However
that number is 2147483647 when its signed integer. But make the damage numbers signed is most like not the case since damage is not negative.
So it will have an unsigned integer which maximum damage number is : 4.294.967.295
For comparision the max int for 64 bit unsigned is: 18446744073709551615 . Thats a lot of damage.
Now begins the fun part: You clearly have seen damange number higher then 4.294.967.295 so its safe to assume that a bigger datatype is used.
On 32 bit applications you can have a 64 bit integer too. but its stored in two memory locations, split up in the first and second half. so they are effectively two unsigned ints.
However this comes with a big performance hit. And clearly that is a problem in d3. Because it makes frequent use of this.
Allowing numbers to not get bigger than 4.294.967.295 or convert to 64 bit application, might increase performance. Granted this is exactly what you said earlier (reducing the numbers to gain speed up) However i did not understand you in that way that you referred to this technical limitation because your appraoch was a little bit too vague.
If you change your statement to : change d3 to 64 bit or make sure damage does not get bigger than uint.max then i would have totaly agreed.
While deviding 100000 damage by 100 it would not make a difference to work with either 100000 or 1000. While 14.294.967.295 /10 would make a difference because now the number fits in a 32 bit number again, However you do not solve this problem by division but rather make sure numbers do not get that high.
Also i assume the performacne gain from this would be marginal. The bigger problem is the many state changes and server client synchronisation.
But i have to correct myself. yes you are right , making numbers smaler can increase performance. but this has to be done in another way than you suggested and is only the case for certain big numbers. Which your initial post did not make clear (you probably do not have the required background knowledge).
I am sure that your "make numbers smaler" appraoch would only influence performance by a bit because i can reproduce the lag problems without putting out so big numbers (as i said go to 25 grift and dont equip a weapon - low damage - still lag)
Yeah i probably should have worded the OP differently but whatever.
So these are the several possible actions that could help reduce the lag (Ordered by their likelihood to happen in my opinion):
1. Reduce the number of monsters spawned in greater rifts and increase the progress you gain for every monster killed.
2. Remove area damage from the game or replace it with something that is less intensive to constantly calculate.
3. Somehow make sure that damage numbers do not get bigger than uint.max.
4. Change D3 to run in 64 bit.
I personally think that they could provide a fix with relative ease if they just tune the GR numbers as point #1 suggests. Sure, the game might become a bit less exciting because you won't have crazy density maps in GR anymore, but the pros would certainly outweigh the cons if it would mean that you can play a GR 65+ with 4 people or solo with no lag at all.
After this "fix" is deployed, they could investigate more complex solutions that would enable them to bring back the density - without the lag.
However reducing the max density would also change the balance of the game. Imagine archon set not being able to reach > 150 stacks due to density.How would that build even work on higher grifts.
Reducing the density also means reducing the max grift level you can reach.
It is also worth saying that most of our damage and health calculations on the server are done in floating point numbers. Computationally the expense between large and small floats is the same, and most of the expense on the server is usually the raw quantity of the calculations we are trying to do rather than values stored in the floats themselves.
Thats somehow confirms my assumption that the size of the numbers is not the problem but the frequency of state changes (the raw quantity of calculations)
thus jamoose your suggestion will likely not influence performance greatly. Especially since the server is working with floats.
So more players hitting more mobs with many different types of attacks that have procs like area damage, along with constant damage over time ticking, all of that creates insane lag. It looks like their only chance to fix this shit would be to actually design the game mechanics differently from now on i.e get rid of most DOTs and limit procs to once per x amount of time etc...
I just wish they address this problem as a whole and not just provide small fixes that are usually addressing only certain a build.
The game is currently almost unplayable in high greater rifts like 60+ or so and especially in groups of 4 players. I’m not sure if this is the case on all realms but at least on EU it is.
Some builds suffer very badly from this even in solo like the Helltooth WD for an example. Some people claim that if you have 0% area damage then you won't lag in solo but that's just a workaround and not a fix.
In the past, the argument against investing time into fixing this issue was the fact that only a very small percentage of the player base experienced it because it was only evident on high end greater rifts. But today, the lag starts occurring even on 60+ which is not considered that high anymore and i'm pretty sure that more and more people will get to that level and experience the horrible lag.
To the people that are rushing to post things like "no lag here lol noob", please understand that this issue is not always reproducible as it really depends on several factors like the time you play at, what build(s) you are running, the map layout / type you're at and the mob type you are facing. A possible solution to this problem would be to divide all the numbers in game by 100 and display them in the client as strings with added 0's just to keep the consistency.
TL:DR - The game lags horribly on high gr and a possible fix would be to simply divide all the damage and health points numbers in game by 100 so the server calculations, database queries and server-client traffic won’t be as heavy anymore.
tl;dr you are wrong/misinformed.
The size of the numbers doesn't matter. The amount of numbers matter, e.g. how certain effects are calculated. Some culprits have already been identified, e.g. Helltooth+Acid Rain. This has been mentioned couple of times in the Reddit AMA. Source
The game is currently almost unplayable in high greater rifts like 60+ or so and especially in groups of 4 players. I’m not sure if this is the case on all realms but at least on EU it is.
Some builds suffer very badly from this even in solo like the Helltooth WD for an example. Some people claim that if you have 0% area damage then you won't lag in solo but that's just a workaround and not a fix.
In the past, the argument against investing time into fixing this issue was the fact that only a very small percentage of the player base experienced it because it was only evident on high end greater rifts. But today, the lag starts occurring even on 60+ which is not considered that high anymore and i'm pretty sure that more and more people will get to that level and experience the horrible lag.
To the people that are rushing to post things like "no lag here lol noob", please understand that this issue is not always reproducible as it really depends on several factors like the time you play at, what build(s) you are running, the map layout / type you're at and the mob type you are facing. A possible solution to this problem would be to divide all the numbers in game by 100 and display them in the client as strings with added 0's just to keep the consistency.
TL:DR - The game lags horribly on high gr and a possible fix would be to simply divide all the damage and health points numbers in game by 100 so the server calculations, database queries and server-client traffic won’t be as heavy anymore.
tl;dr you are wrong/misinformed.
The size of the numbers doesn't matter. The amount of numbers matter, e.g. how certain effects are calculated. Some culprits have already been identified, e.g. Helltooth+Acid Rain. This has been mentioned couple of times in the Reddit AMA. Source
IF you had read the thread you would have seen that we already talked about this in depth . no need to repeat what already has been said.
So more players hitting more mobs with many different types of attacks that have procs like area damage, along with constant damage over time ticking, all of that creates insane lag. It looks like their only chance to fix this shit would be to actually design the game mechanics differently from now on i.e get rid of most DOTs and limit procs to once per x amount of time etc...
I just wish they address this problem as a whole and not just provide small fixes that are usually addressing only certain a build.
Yes, but my guess would be that compared to area damage even DoTs are no big problem.
But their approach to DoTs is another issue. Watching the hp-bars of mobs drop, while a DoT-effect is applied, it seems that there's a heap of unnecessary calculations, as their hp seems to drop almost in a continuous manner instead of discrete packages like for example in WoW. That might be a bit more "realistic", but what's the point of recalculating a mobs hp 20 times per second (or however fast DoTs seem to "tick" in diablo 3) from a gameplay perspective.
Still.. that's nothing compared to the shit that's going on with area damage. I don't know if there's efficient ways to quickly determine whether a mob is inside the area-damage range of another mob that just triggered it... but the first idea that would come to my mind to do this (using something like 2D cartesian coordiantes) would be quite a mess.
The recalculation for dot damage on the HP Bar is done clientside and is not affecting lag. i can guarantee youthis. Its just some kind of interpolation. Nothing fancy.
The client knows how much damage the dot does per second, so he can just devide it by 60 to update the hp bar every frame (@60fps). Even if its a little unpresice it gives a better impression of the dot nature. but be assured the server is not involved in visualizing the dot damage as its done now.
Updates:
#1:
Yeah i probably should have worded the OP differently but whatever.
So these are the several possible actions that could help reduce the lag (Ordered by their likelihood to happen in my opinion):
1. Reduce the number of monsters spawned in greater rifts and increase the progress you gain for every monster killed.
2. Remove area damage from the game or replace it with something that is less intensive to constantly calculate.
3. Somehow make sure that damage numbers do not get bigger than uint.max.
4. Change D3 to run in 64 bit.
I personally think that they could provide a fix with relative ease if they just tune the GR numbers as point #1 suggests. Sure, the game might become a bit less exciting because you won't have crazy density maps in GR anymore, but the pros would certainly outweigh the cons if it would mean that you can play a GR 65+ with 4 people or solo with no lag at all.
After this "fix" is deployed, they could investigate more complex solutions that would enable them to bring back the density - without the lag.
#2:
So more players hitting more mobs with many different types of attacks that have procs like area damage, along with constant damage over time ticking, all of that creates insane lag. It looks like their only chance to fix this shit would be to actually design the game mechanics differently from now on i.e get rid of most DOTs and limit procs to once per x amount of time etc...
I just wish they address this problem as a whole and not just provide small fixes that are usually addressing only certain a build.
Original post:
*TL:DR at the bottom*
The game is currently almost unplayable in high greater rifts like 60+ or so and especially in groups of 4 players. I’m not sure if this is the case on all realms but at least on EU it is.
Some builds suffer very badly from this even in solo like the Helltooth WD for an example. Some people claim that if you have 0% area damage then you won't lag in solo but that's just a workaround and not a fix.
In the past, the argument against investing time into fixing this issue was the fact that only a very small percentage of the player base experienced it because it was only evident on high end greater rifts. But today, the lag starts occurring even on 60+ which is not considered that high anymore and i'm pretty sure that more and more people will get to that level and experience the horrible lag.
To the people that are rushing to post things like "no lag here lol noob", please understand that this issue is not always reproducible as it really depends on several factors like the time you play at, what build(s) you are running, the map layout / type you're at and the mob type you are facing. A possible solution to this problem would be to divide all the numbers in game by 100 and display them in the client as strings with added 0's just to keep the consistency.
TL:DR - The game lags horribly on high gr and a possible fix would be to simply divide all the damage and health points numbers in game by 100 so the server calculations, database queries and server-client traffic won’t be as heavy anymore.
Posted also on:
Official forums (US): http://us.battle.net/d3/en/forum/topic/18695103869#1
Official forums (EU): http://eu.battle.net/d3/en/forum/topic/15162513563#1
Reddit: https://www.reddit.com/r/Diablo/comments/3j368b/fix_the_lag/
+1. Lag has always been an issue, but this season it might be absurd. We see many people switching from hardcore to softcore, and currently 60+ is unplayable (at least on EU, any time of the day, in a 4 man group). It's also really discouraging that people have to do certain measures just to counter the lag (make new games constantly, reduce the game difficulty, turn off damage numbers, remove area damage and life on hit, change to a spec that causes less lag - and away from the spec you really want to play).
In previous seasons the lag was at least only an issue for a few players in the top 100 bracket or so, and it got better and better recently, but this time it might actually affect a much larger playerbase.
These were known bugs on PTR... And Blizz didn't care enough to fix them then
Why they make such builds but the server cant support it? some one said maybe a fix would be for a player to disable others afflix or something but I dont think that is what causes the lagg since the spells are there even if you dont see others, maybe not. I dont see if blizzard is looking in to this, first I had the "fps drop" problem and I solve it by setting the sound channel to "16" (low) and other tweks xD stupid fix because a lot of sounds are chopped now I play with 1 wd in grift 63+ and density+wd=lagg sooo I really think is a mayor problem
sorry for my spanglish
Noticed this on as low as level 50 Grifts as well as start 60s (highest my group and I have gone so far, this season).. Density + Double-stacking Rend (Lamentation), from two barbs = Massive lag..
The servers are getting slaughtered with all these "calculations" being done.. They need to simplify it somehow..
the lag has nothing to do with grift level. i can experience the lag even on 35 is the density is hhigh enough and your damage low.
If the mobs are not oneshottet its start to lag because all the effects have to be calculated.
And not. deviding them by a factor will not solve shit. Thats really a bad assumpation to make. Just because its easier for humans to work with small numbers, to expect that goes the same for computers is plain wrong.
This approach would even make it worse because division is a operation which can take significantly longer than multiplication. (24 to 4 cpu cycles)
here is a list
http://streamcomputing.eu/blog/2012-07-16/how-expensive-is-an-operation-on-a-cpu/
Thats also the reason why everything in diablo2 is x+x1+x2 * y+y1+y2 *z+z1*u
There will be no gain of performance by making another additional calculation to get smaler numbers.
And no, you cannot substitute 100/10 by 100*0,1 this would chaneg the nature of the operation from integer to floating point.
Floating point operations are better performed on the GPU than on the CPU , thus this approach would require another step to include code for executing operations on your GPU
To elaborate more on this : in the link there is said "the killer: repetition"
that means if an operation takes 1 second its fine. if you need to run the same operation a bazillion times its bad.
In this case, repetion is the number of monsters you hit. The more you hit, the more repetion. Since for every mob the damage it received has to be calculated. Efffects like area damage make this even worse. becaus you might run into a two-pass problem, where you cannot calulate the whole damage in the first repretion but need another one to apply effects which depend on the first iteration.
I asume area damage needs this second pass - Because it applies part of the damage you did before to the mobs around it. So you need to know beforehand if you hit that mob and for what damage.
I also asume that the "fix" for area damage was not implemented earlier because blizzard knew exactly that this will cause a slowdown. What has driven them to fix it now is a mystery to me. It was totally forseeable what would happen.
I had removed the effect from the game completly.
Things which cause lag are pretty easy to spot. If an item causes a value to change rapidly a lot of server client communication is required in comparision to a constant value.
e.g. Archon stacks . each stacks changes your paperdps and toughness this has to be synchronized with the server causing even more slowdown in addition to the general calculatory problem.
There is also this thing called action predition in server / client communication.
Normaly if you do something you have to wait for the server to accept this before you can do something else. In Diablo and other online games the client continues immediatly with the next action without waiting for an acknowledge of the previous action.
If the server acknowledges the previous action the client just continues. However if the server does not accept it , the client reverts to the previous state - makes a rollback so to say. (only for actions not for gear)
This is especially the case the faster you do these state changes. (e.g archon stacks). When you are changing states too quicl the game goes to choppy mode and takes only the response from the server as a given state. And these come in infrequently.
source: iam a softwaredeveloper.
If they patched the game so an RG on GR 70 has 10 billion hp and not 10 trillion hp for an example, and then toned down the players' damage accordingly, wouldn't that reduce server stress? See, i didn't mean that they would add another calculation of divison / multiplication along the way, but rather to reduce all of the numbers in their inception...
And regarding the rest of your post, i appreciate your detailed input.
Read the post again, i specifically related to solo WD lag too.
no that would not make a difference. as i said, the size of the numbers is not imporant.
If they reduce damage from the players and hp of guardians the situation would still be the same except numbers being smaler. that would not make it better.
you can reproduce the lag on grift 35 or 25. Just fish a high density rift and do not equip a weapon. It will lag like fuck
Hmm i cant find the edit button:
of course you are right saying that lag is more promiment in higher grift levels. but you can reproduce the issue on lower grifts also under certain circumstances.
From a technical view this problem is not due to the rift level but to the number of calculations needed. and those correlate with the grift level currently. but you can create the same situation on any grift level if you force these amout of calculations in lower grifts by changing gear.
I don't understand why people are ignoring this or even downvoting this (Reddit/official forums). It really seems like:
1) "I'm not having this problem, so you shut up and just continue playing in lag, I don't care"
2) "Yeah lag is an issue but your solution is bad so I'm gonna say no to fixing it"
It's really sad that this attitude ("it's not my problem so your problem is irrelevant") is plaguing the community right now (we also observed this in the paragon debate). *SadPanda*
I guess a true *simple* fix would be to make GR spawn a lot fewer mobs that give a lot more progress. Focus more on big monsters that cause less lag rather than groups of 100 zombies that are all clumped up together... This would be a good workaround or a band-aid type of fix.
Yes and no. Its true diablo is a 32 bit operation, thus it cannot compute numbers bigger than 32 bit without increased effort.. However
that number is 2147483647 when its signed integer. But make the damage numbers signed is most like not the case since damage is not negative.
So it will have an unsigned integer which maximum damage number is : 4.294.967.295
For comparision the max int for 64 bit unsigned is: 18446744073709551615 . Thats a lot of damage.
Now begins the fun part: You clearly have seen damange number higher then 4.294.967.295 so its safe to assume that a bigger datatype is used.
On 32 bit applications you can have a 64 bit integer too. but its stored in two memory locations, split up in the first and second half. so they are effectively two unsigned ints.
However this comes with a big performance hit. And clearly that is a problem in d3. Because it makes frequent use of this.
Allowing numbers to not get bigger than 4.294.967.295 or convert to 64 bit application, might increase performance. Granted this is exactly what you said earlier (reducing the numbers to gain speed up) However i did not understand you in that way that you referred to this technical limitation because your appraoch was a little bit too vague.
If you change your statement to : change d3 to 64 bit or make sure damage does not get bigger than uint.max then i would have totaly agreed.
While deviding 100000 damage by 100 it would not make a difference to work with either 100000 or 1000. While 14.294.967.295 /10 would make a difference because now the number fits in a 32 bit number again, However you do not solve this problem by division but rather make sure numbers do not get that high.
Also i assume the performacne gain from this would be marginal. The bigger problem is the many state changes and server client synchronisation.
But i have to correct myself. yes you are right , making numbers smaler can increase performance. but this has to be done in another way than you suggested and is only the case for certain big numbers. Which your initial post did not make clear (you probably do not have the required background knowledge).
I am sure that your "make numbers smaler" appraoch would only influence performance by a bit because i can reproduce the lag problems without putting out so big numbers (as i said go to 25 grift and dont equip a weapon - low damage - still lag)
Yeah i probably should have worded the OP differently but whatever.
So these are the several possible actions that could help reduce the lag (Ordered by their likelihood to happen in my opinion):
1. Reduce the number of monsters spawned in greater rifts and increase the progress you gain for every monster killed.
2. Remove area damage from the game or replace it with something that is less intensive to constantly calculate.
3. Somehow make sure that damage numbers do not get bigger than uint.max.
4. Change D3 to run in 64 bit.
I personally think that they could provide a fix with relative ease if they just tune the GR numbers as point #1 suggests. Sure, the game might become a bit less exciting because you won't have crazy density maps in GR anymore, but the pros would certainly outweigh the cons if it would mean that you can play a GR 65+ with 4 people or solo with no lag at all.
After this "fix" is deployed, they could investigate more complex solutions that would enable them to bring back the density - without the lag.
you are totally right jamoose
However reducing the max density would also change the balance of the game. Imagine archon set not being able to reach > 150 stacks due to density.How would that build even work on higher grifts.
Reducing the density also means reducing the max grift level you can reach.
However . it is a solution.
Here is a little info from the reddit AMA:
BY: (blizz_rogerhughston)
It is also worth saying that most of our damage and health calculations on the server are done in floating point numbers. Computationally the expense between large and small floats is the same, and most of the expense on the server is usually the raw quantity of the calculations we are trying to do rather than values stored in the floats themselves.
Thats somehow confirms my assumption that the size of the numbers is not the problem but the frequency of state changes (the raw quantity of calculations)
thus jamoose your suggestion will likely not influence performance greatly. Especially since the server is working with floats.
So more players hitting more mobs with many different types of attacks that have procs like area damage, along with constant damage over time ticking, all of that creates insane lag. It looks like their only chance to fix this shit would be to actually design the game mechanics differently from now on i.e get rid of most DOTs and limit procs to once per x amount of time etc...
I just wish they address this problem as a whole and not just provide small fixes that are usually addressing only certain a build.
We had the same probleme yesterday
69-71 Grifts in V3/V4, (2monk/2babr, no WD!) each big pack = 4000MS = 15 sec freeze = Riperino
The size of the numbers doesn't matter. The amount of numbers matter, e.g. how certain effects are calculated. Some culprits have already been identified, e.g. Helltooth+Acid Rain. This has been mentioned couple of times in the Reddit AMA.
Source
IF you had read the thread you would have seen that we already talked about this in depth . no need to repeat what already has been said.
The recalculation for dot damage on the HP Bar is done clientside and is not affecting lag. i can guarantee youthis. Its just some kind of interpolation. Nothing fancy.
The client knows how much damage the dot does per second, so he can just devide it by 60 to update the hp bar every frame (@60fps). Even if its a little unpresice it gives a better impression of the dot nature. but be assured the server is not involved in visualizing the dot damage as its done now.