reported for advertisement
reported for advertisement
the thing is i played this game forever and in wotlk/cata/mop(when classes had the most abilities and highest cpm) when internet stopped being shit for most people, but sharding wasnt a thing yet and snapshotting was still a thing there was no lag like that. Also there is no lag like that on pservers, i played on many and it never lagged as much as current retail servers do(outside of times where the server just couldnt handle 15k people at the same time, but it was lagging everywhere, not just in a specific situations where a lot of people are casting a lot of stuff), like the lag in wintersgrasp on retail is unbearable, but i played through many wintersgrasps in wrath and it wasn't nearly as laggy on both retail wotlk and on pservers... same shit with any big scale pvp or big bgs
If you still think its a sharding issue try watching methods video of 30 mages vs nyalotha.
I know that you simplified things on purpose, but your calculations are slightly off.
0-100 equals 101 possibilities.
For miss (90-100) thats 11/101, meaning 10.89%, which is not 10% (1-90%) like it should be.
Same for hit without crit: 65/101 is 64.36%, whereas with real die rolls you would get 67,5% (= 90%*75%)
For crit: 20/101 = 19,8%, whereas 90%*25% = 22,5%
For Supercrit: 5/101 = 4,95%, dieroll: 90%*25%*20% = 4.5%
I don't want to criticizise you calculation here, since you wanted to keep things simple. But you're hiding a significant problem: the precision of state maps.
In your example (only integers values) you need 3 dies with 100 possible outcomes (let's not include 0 for simplicities sake). You thus have 1,000,000 possibilities.
In a state map you will lose precision, if you don't make the state map have 1,000,000 entries. Otherwise you can not account for 1% hit, 1% crit, 1% supercrit, which is 1/1,000,000. And now you have a problem. Make 3 dice rolls over a field of 100 or make 1 over a field of 1,000,000? Modern implementations of RNG perform indepentend from the given range, meaning 3 dice rolls take 3 times as long as one (assuming Blizzard has implemented this correctly). So runtime wise you got 3 times faster. But you needed 1000000/300 = 3333 times more memory to achieve this (if you actually create a map of which one element is getting selected).
Although memory is fast and cheap, such an increase is still not feasable.
So, you have to make a choice here: Either be fast or be accurate. And it gets exponentially worse with non-integer stat numbers.
Why do you need 3 die in that example?
It’s bad programming. Simple as that.
The game used to be able to handle more players in a tight area no problem but the more they touch up the graphics, the worse the game plays together.
100v100 in classic can be less laggy than 30 man raids or battlegrounds in retail. How?!
Preach is, by far, the best wow youtuber this side of classic
The people who hate him often mistake him for heelvsbabyface (who is the definition of toxic gamer)
Preach is a damn good player, gamer, good guy and always is fair and honest about wow
Wow bfa just isn’t that good of an expansion, sorry but it’s the truth. If it wasn’t for wod, bfa would be the worst expansion in wow history and you could make a genuine argument that wod was superior in some ways
I don't think the Preach video is right. Rng on rng on rng isn't slowing anything down, because these operations are ludicrously fast. Like even if we were relying on one PC somewhere to calculate this for everyone (and we aren't, we're all on shards and instance servers for exactly this reason), it would still be able to cope with modern CPUs.
I think the real reason is hiding in plain sight. In BFA AoE spells will be limited to hit like 5 enemies. There's your culprit and your solution.
1 person hits a mob. 1 damage spell recorded and sent over the network.
1 person hit 20 mobs. 20 damage spells recorded and sent.
2 people hit 20 mobs. 40 spells recorded, and sent to 2 players, so 80 sent over the network.
25 people hit 20 mobs. 500 spells, sent out to 25 players, so 12,500 sent out.
You can see how a giant 40v40 cluster fuck in Alterac Valley could spiral out of control here. 40x40x2x80=256,000 damage records sent.
And this is happening potentially every second.
agreed. youtubers nd twitch streamers are equaly cancerous
its because of them game is catered towards top 5% of players instead 95% .
its also why retail is dying while classic is growing
people dont want to play instance symulator - people want to play true mmorpg/
just wait what will happend once both TBC and WoLK will be out.
Even you said that your example works with related events. Great. What the video was about is the massive amount, unrelated random procs/events/buffs/happenings that causing lag. I don't see how your argument contradicts his.
Especially when Blizzard devs literally contacted him and told him that's what causes the problem.
Well, unless you think he is lying.
Which could be trivially fixed by making it 1-100 or 0-99 instead.
Your supposed counterexample doesn't actually show anything new. It also depends on how the system works: 1% hit and 1% crit could simply mean that every hit will also crit, at which point you go from 1/1,000,000 to 1/10,000
Sure is. Neither takes a significant amount of memory, and unless they programmed specificially for efficiency, they probably don't even take a different amount of memory because they both use the same variable type.Although memory is fast and cheap, such an increase is still not feasable.
- - - Updated - - -
Did they tell him it's the number of rolls being made, or the results of those rolls having to be communicated to every player in the area?
About the bolded part...emm..no you don't.
Well,let's start for the begining.You don't have 1 M possibilites -> you just did 100 x100x 100 but this does not describe the model: that million posibilites include events where it does not hit but still crit or supercrit and it includes events where it does not crit but it supercrits. These events are out of the model as non feasible events. Not every combination of events is allowed in the model and therefore we can't just make a combination of 100x100 x100: you can't miss and supercrit at the same time.
The main thing tough is that you are describing numerical treatment as independent from it's logical implementation that is a 64 bits number. It does not matter if you want to get a 0-100 random number or a 1 - *18.446.744.073.709.551.616 random number ( 2^64): the system is still generating a 64 bits number and the computational cost is the same ( the 78 you get when doing /roll 100 is the rounding of the result).
But what about the memory? Again in the example we got 3 parameters that are stored in a 64 bits numbers. We see:
90% hit
25% crit
20% supercrit on crit
But those numbers are still a 64 bits number. In an scenario of 3 roll dices you still are obtaining a number between 1 and 2^64 to determine the result.... so the state map using one single 64 bits number can have 18.446.744.073.709.551.616 "entries" ( as you called it)
Wow...I have no insight of the game implementation (none of us do) but that's quite big number of entries. No matter how complex is your state map: you are just gonna roll once. You can have 0.00001 % hit and 0.00001% crit if you hit and 0.00001% supercrit if you crit and still have a mind-nubbing ammout of unused entries in the 64 bits numbers.
The real cost in the memory is that you have to store the states map: you need to store that between 89.9999 and 99.9999 it's a miss so (let's add one more number for the state code) you got 24 bytes per range. You can add 1000 ranges (and this is quite generous for WoW) to your states map and still using just around 24 kylobytes of memory to store the states map.
The memory cost of a state map is not determined by the scale of the roll: it's determined by the precission,scale and number of ranges in the map.
No, we are mixing concepts here wich is something easy to do when not in the proper context.
I don't believe for a single second ( and if that's what Preach is saying then yeah I 100% say he is lying) that Blizzard told him specifically there's too much rolls. Not at all.
IF Blizzard told him anything ( wich I honestly have problems believing because sharing this kind of insights is pretty rare) it's that the communication between the individual events shared to each client it's the thing that is causing the lag ( your pally tank has critted, the boss have procced Relentless desesperation,your drood healer is standing in the fire -> -10.000k HP for him...) wich has absolutely nothing to do with rolling the dice 40 times to see if your Enlarged Penis azerite trait procced or not.
Last edited by PrimiOne; 2020-06-15 at 03:08 PM.
Haven't lagged since the first few weeks of 8.3, but I don't play on warmode and that's where I hear most of the lag complaints.
No, it isn't. With 0-99 you won't be able to correctly reflect decimals. You would not be able to correctly calculate the hitchance without crit (which is 67.5%)
Please, draw me an example state map for 1% hit, 1% crit and 1% supercrit, that has the SAME probabilities as the dieroll model. In my model I haveYour supposed counterexample doesn't actually show anything new. It also depends on how the system works: 1% hit and 1% crit could simply mean that every hit will also crit, at which point you go from 1/1,000,000 to 1/10,000
1-990,000: "miss"
990,001- 999,900: "hit, but no crit"
999,901- 999,999: "hit, crit, but no supercrit"
and only 1,000,000: "supercrit".
This model reflects precisely the real probabilities. Where do I include non feasible events here?
Sure is. Neither takes a significant amount of memory, and unless they programmed specificially for efficiency, they probably don't even take a different amount of memory because they both use the same variable type.Ah, you are right, as WoW seems to be written in C/C++, which features specific memory allocation. I forgot about that (because I mainly use Python, which handles memory allocation for you so I rarely think about it).The main thing tough is that you are describing numerical treatment as independent from it's logical implementation that is a 64 bits number. It does not matter if you want to get a 0-100 random number or a 1 - *18.446.744.073.709.551.616 random number ( 2^64): the system is still generating a 64 bits number and the computational cost is the same ( the 78 you get when doing /roll 100 is the rounding of the result).
But what about the memory? Again in the example we got 3 parameters that are stored in a 64 bits numbers. We see:
90% hit
25% crit
20% supercrit on crit
But those numbers are still a 64 bits number. In an scenario of 3 roll dices you still are obtaining a number between 1 and 2^64 to determine the result.... so the state map using one single 64 bits number can have 18.446.744.073.709.551.616 "entries" ( as you called it)
Wow...I have no insight of the game implementation (none of us do) but that's quite big number of entries. No matter how complex is your state map: you are just gonna roll once. You can have 0.00001 % hit and 0.00001% crit if you hit and 0.00001% supercrit if you crit and still have a mind-nubbing ammout of unused entries in the 64 bits numbers.
The point about precision is the one I was talking about. But how is the size of one range calculated? And could you provide me with a link to a source with information about state maps? I tried to find it, but googling "state map" combinded with variing other terms proved fruitless.The real cost in the memory is that you have to store the states map: you need to store that between 89.9999 and 99.9999 it's a miss so (let's add one more number for the state code) you got 24 bytes per range. You can add 1000 ranges (and this is quite generous for WoW) to your states map and still using just around 24 kylobytes of memory to store the states map.
The memory cost of a state map is not determined by the scale of the roll: it's determined by the precission,scale and number of ranges in the map.