Maintenance for the week of April 6:
• PC/Mac: No maintenance – April 6

Coding and Calculations

TheBonesXXX
TheBonesXXX
✭✭✭✭✭
For anyone who can answer this,..

I've always suspected that Elder Scrolls tries to do too many things at once, with that said would it be easier to reduce lag and improve performance by simplifying the coding?

For example, if everything in the champion tree was additive instead of multiplicative save crit damage and crit chance, would that reduce stress on the servers?

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?

Why not zenimax show all the stats on the paper doll, then make it so the champ tree just increases those stats and have gear be the additional stat so it reduces the calculations made.

By no means am I a professional, however a lot of my friends who are professionals say that instead of throwing cash at servers, why not just make the coding simplified and instead of having a paragraph to run one function why not reduce it to one line?

That would improve server performance from what I was told.

Would also make balancing much more manageable. Thoughts and opinions from those who know how to code or deeply appreciated.
  • majulook
    majulook
    ✭✭✭✭✭
    IMHO Simplifying the code at this point is not gonna happen.
    Si vis pacem, para bellum
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭

    majulook wrote: »
    IMHO Simplifying the code at this point is not gonna happen.

    Yeah, but if they did?
  • Soleya
    Soleya
    ✭✭✭✭✭
    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.
    Edited by Soleya on February 20, 2019 10:04PM
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    Soleya wrote: »
    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.

    So shortening the script would help, just not as much as switching the way we receive packets. Interesting.
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    @Soleya What about collision detection?
  • JamilaRaj
    JamilaRaj
    ✭✭✭✭✭
    Prerequisite of any performance improvement is to replace Firor with someone else. Yes, the game is utter garbage and ZOS programmers could easily take money for not coming to work, but that the garbage is on live servers is political decision. If they repeatedly push obviously broken code to live servers, Firor does nothing and heads do not roll, then his head should roll.
    But apparently garbage is profitable enough to keep him in place. Think about that next time you spend money on ESO.


    EDIT: for example: https://forums.elderscrollsonline.com/en/discussion/460320/u21-launch-day-load-times-and-how-you-can-help/p1

    Pathetic.
    Edited by JamilaRaj on February 23, 2019 1:33PM
  • SirAndy
    SirAndy
    ✭✭✭✭✭
    ✭✭✭✭✭
    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.
    shades.gif
  • SirAndy
    SirAndy
    ✭✭✭✭✭
    ✭✭✭✭✭
    @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..
    type.gif


    Edited by SirAndy on February 20, 2019 10:34PM
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    SirAndy 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.
    shades.gif

    Beta was smooth
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    SirAndy 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..
    type.gif


    Would it cause lag?
  • Noctus
    Noctus
    ✭✭✭✭✭
    what causes lag is the hack protection. the skills cooldowns, runnings speed etc. are checked by the server at all times thats why u dont see things that would happen in other mmo. the maximum u could do is bug exploiting which happens after updates nowadays.
    there was even a bug for example which will show ur body as corpse not allowing ppl to target you while u can happily do ur thing. stuff like this get fixed fast. the eso devs are no idiots they just need more and better servers thats all.
    they are just pretty cheap on their servers i suppose
    with time there will probably even be more to track server sided but if the community makes it look so urgent im afraid they gonna do a stupid decision.
    Edited by Noctus on February 20, 2019 11:40PM
  • Siohwenoeht
    Siohwenoeht
    ✭✭✭✭✭
    ✭✭
    Akamai=most of the lag imo.
    "It is a lovely language, but it takes a very long time saying anything in it, because we do not say anything in it, unless it is worth taking a long time to say, and to listen to." - Treebeard
  • Mudcrabber
    Mudcrabber
    ✭✭✭✭
    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.

    Edited by Mudcrabber on February 21, 2019 12:25AM
  • Noctus
    Noctus
    ✭✭✭✭✭
    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.

    finally someone like me who understands this
  • Mintaka5
    Mintaka5
    ✭✭✭✭✭
    The code was probably good at one point, but I have a gut feeling Zenimax is not reinvesting any profits into their network infrastructure. The megaserver was for a time when online gaming was new, and the tech is probably out-dated and poorly maintained. Anyhow this is all speculation.

    An interesting read if your not a networking professional, to help you understand gaming networking, and its pitfalls.
  • zaria
    zaria
    ✭✭✭✭✭
    ✭✭✭✭✭
    SirAndy 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.
    shades.gif

    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.
    Grinding just make you go in circles.
    Asking ZoS for nerfs is as stupid as asking for close air support from the death star.
  • Kulvar
    Kulvar
    ✭✭✭✭
    zaria wrote: »
    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.
    Edited by Kulvar on February 21, 2019 10:02AM
    Coward Argonian scholar of the Ebonheart Pact
  • Noctus
    Noctus
    ✭✭✭✭✭
    Kulvar wrote: »
    zaria wrote: »
    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.

    its basically that all ur actions are calculated twice. ur gear ur stats ur speed ur buffs everything is calculated on the server. for example u have a set that gives u x ammount of speed the gameserver knows what u wearing what buffs u activate whats ur cooldown attack speed anything its like the server simmulates everything u do and if u are for example faster than what a certain number says either way ur banned immadiately or within a day.

    if u tell the game for example u have x ammount of stamina the server says nope u dont. the maximum u can do is change the visuals to make it look like u have 1 milllion stamina. but thats just visual and thats how people spread virus to idiots that believe in it (especially russians :wink: ). it will show up as million stamina but u will have ur set ammount of stamina to use u cant trick the server.

    this is the best way to protect a game and usually korean games dont do that to not put a strain on the servers. but its the only way to rly prevent any cheating. god knows what they did to improve quality during the pvp event. its rly a stupid idea of them to tweak that controll down. i rather play a lagfest than a cheatfest.
    however u can go around cheatprotection of punkbuster or xing or whatever but a server sided tracking like in eso .... forget about that one.

    this is how to prevent cheating. but that ofc doesnt prevent bug abuse but eso is rather fast in fixing that. (unless its minor problem. well some ppl go crazy about minor stuff. its a big game and there is alot of coding people underestimate the work).

    they probably even track how long u stay in a certain area and how long u kill stuff there. i got an error message when i grinded for an extraordinary ammount of time.
    Edited by Noctus on February 21, 2019 12:16PM
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    So in reality if they had a moderator to watch the game people wouldn't cheat.
  • Amksed1991
    Amksed1991
    ✭✭✭
    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.
  • TheBonesXXX
    TheBonesXXX
    ✭✭✭✭✭
    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.

    Makes me wonder too, I'm just trying to wrap my head around where the lag is, sloppy coding and old hardware seem to be the general consensus.

    Which in that case people need to be fired, because a lag free and updated Cyrodiil is money. There's quite a few players who are more qualified to run the business while putting out a pristine product.

    Performance + Balance + Content = Revenue, the guys at Turbine who said cash shop + mediocre game = superior revenue prob didn't pass stats.

  • zaria
    zaria
    ✭✭✭✭✭
    ✭✭✭✭✭
    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.
    https://www.supermicro.com/products/system/7U/7089/SYS-7089P-TR4T.cfm
    224 cores. 12TB ram.

    Yes that one might be a bit of an overkill, but still better hardware on the primary pvp servers would help.
    Will not help with lag, had one guy in our group in Cyrodil rubberbanding so hard it looked like he was using streak without the visual effects.
    None other had issues and my framerate was around 60. Think he was from South Africa.
    Grinding just make you go in circles.
    Asking ZoS for nerfs is as stupid as asking for close air support from the death star.
  • marius_buys
    marius_buys
    ✭✭✭✭✭
    What is the ESO server tick rate? Anyone?
    Golden Clover AD PvP on PC EU (since 2017) Guildex https://eso.guildex.org/view-guild/17669 Facebook https://www.facebook.com/groups/131211320795196
  • ZOS_Lunar
    ZOS_Lunar
    admin
    Greetings!

    We've closed this thread given its age and given that some information may be out of date. If you wish to continue discussing this topic please create a new thread. Thank you for your understanding.
    The Elder Scrolls Online - ZeniMax Online Studios
    Forum Rules | Code of Conduct | Terms of Service | Home Page | Help Site
    Staff Post
This discussion has been closed.