While optimizations may help with "lag", my guess would be the largest reason for lag has to do with using the TCP network prototcol instead of UDP. Most FPS games which require as real time as possible interactions use UDP. Many MMO's these days are using TCP cause it's just "easier".
Changing over to UDP would be a massive task, so very unlikely to happen.
WIthout getting into the major details of the two protocols, essentially UDP you send and receive packets and it's up to the code to handle missed and out of order packets. In TCP, the protocol makes sure all packets arrive and in order. This can lead to larger delays in packets getting through, and information being updated on client and server.
WIth UDP you would just ignore older packets if you already received a newer one.
Of course there are some cases where it's vital that a packet goes through properly, like adding and removing from your bank. If a packet was lost and item could be lost.
But in combat where things like positions can be updated constantly, so if your missing a packet, the newer one can be used and locations can be fixed properly.
That all said. The more complex the combat equations are, the more processing power necessary to compute them in a timely matter. The actual values of the numbers don't matter. 1000 health vs 10000 health is no different in processing time. But a calculation like Base * Modifier = Damage, vs something like Base * Modifier * Penetration *Armor = Damage is more complex, and so on.
TheBonesXXX wrote: »Is the numerical inflation causing a problem? For instance in the beginning of the game we were only in the thousands, now we're in the ten thousands of the digits. If they resimplified the coding wouldn't that make it easier to make shorthand scripts so the server and the performance would improve?
TheBonesXXX wrote: »@Soleya What about collision detection?
TheBonesXXX wrote: »Is the numerical inflation causing a problem? For instance in the beginning of the game we were only in the thousands, now we're in the ten thousands of the digits. If they resimplified the coding wouldn't that make it easier to make shorthand scripts so the server and the performance would improve?
Nope, on current hardware the difference would be measured in fractions of microseconds.
The CPU cycles for such calculations are negligible, especially since each server "shard" has a fairly low player cap.
Not sure what the current player cap is now, it used to be 2500 players during beta, probably well under 1000 by now.
TheBonesXXX wrote: »@Soleya What about collision detection?
Collision detection has been optimized ad nauseum.
You start with a bounding sphere first, which requires minimal computation. if you get a hit, you go to an axis aligned bounding box, which also requires minimal computation. If you get a hit, you can go to per polygon detection if you want, which also isn't too expensive since at that point you have already narrowed down the area of interest to a small number of polygons (Use a LOD model for per polygon detection) or use individual bounding boxes for body parts, like head, torso, arms, legs etc..
Mudcrabber wrote: »Before the bounding checks you have an octree search which is pretty fast. But there's just so many things to check in one tick.
Someone casts a heal and you have to find everyone in their radius, sort them by suitability, and then perform ray casts each one to prove line of sight. Even if it's done on the client, the results have to be verified by the server or else people have a way to cheat. Every tick of every AoE ability is another radius search. And you still have the AI pathfinding and physics to do.
On top of all that it has to send updates to all of players on the server 10-20 times a second or more, depending on what their tick rate is. For each little event it has to determine which players are in the radius to see it. If you have a real battle, like 30 vs 30, that's 60 players receiving updates on themselves and 59 other players, or up to 3600 updates per tick that it has to send out for that one battle, minus whoever's standing still doing nothing.
That's just for 60 players. Their help page claims there's up to 1800 in one campaign, though it hasn't been updated in a while.
Problem with Cyrodil was all the cheaters. Lots of stuff was handled on client. This let hackers simply don't apply damage and have 1000 ultimate / second.TheBonesXXX wrote: »TheBonesXXX wrote: »Is the numerical inflation causing a problem? For instance in the beginning of the game we were only in the thousands, now we're in the ten thousands of the digits. If they resimplified the coding wouldn't that make it easier to make shorthand scripts so the server and the performance would improve?
Nope, on current hardware the difference would be measured in fractions of microseconds.
The CPU cycles for such calculations are negligible, especially since each server "shard" has a fairly low player cap.
Not sure what the current player cap is now, it used to be 2500 players during beta, probably well under 1000 by now.
Beta was smooth
Problem with Cyrodil was all the cheaters. Lots of stuff was handled on client. This let hackers simply don't apply damage and have 1000 ultimate / second.
ZoS solution was to move this to the server who increased server load a lot.
Shooters like PuGb does this on client and tend to have serious cheating problems and use client based anti cheat systems.
Add that ESO has lots of ground based effects, both healing, buffs and damage.
CP itself is not an issue as you can bake it into the character. You can not do this with gear as it can change fast even on bar swap.
Problem with Cyrodil was all the cheaters. Lots of stuff was handled on client. This let hackers simply don't apply damage and have 1000 ultimate / second.
ZoS solution was to move this to the server who increased server load a lot.
Shooters like PuGb does this on client and tend to have serious cheating problems and use client based anti cheat systems.
Add that ESO has lots of ground based effects, both healing, buffs and damage.
CP itself is not an issue as you can bake it into the character. You can not do this with gear as it can change fast even on bar swap.
I wonder how it works.
Did they moved everything to server side, or did they duplicate everything and as long as you don't do something that the server deems not possible you can go on ? So hacker can "hack" their client to trick it into thinking you have 1000 ultimate, but the server just say "no" if he receives a request for using an ultimate ability without enough resource.
Amksed1991 wrote: »I wonder if they have done any hardware improvements since 2013 (beta).
If they are running the Xeons from that year then they are also still stuck using DDR3.
Wonder how much of an improvement they would see with Ryzen/DDR4.
You can go way past Ryzen.Amksed1991 wrote: »I wonder if they have done any hardware improvements since 2013 (beta).
If they are running the Xeons from that year then they are also still stuck using DDR3.
Wonder how much of an improvement they would see with Ryzen/DDR4.