Would removing AOE cap have noticable impact on Cyrodiil performance

  • Ranger209
    Ranger209
    ✭✭✭✭✭
    ATRing wrote: »

    Though it seems to only manifest when so many players are within range leading to the belief that there is some sort of localized calculation that is done in an attempt to eliminate as many players as possible from the pool of players.

    This is the crux of it.

    At some point the server has to tell my client what the health and what events are occurring upon someone else's client.
    A likely starting point would be within the clip region. If my client is rendering them the server is passing information onto my client regarding theirs and vice versa. It could be closer than this, say 2x, 3x, or 4x the maximum range of any ability in the game. The clip region makes the most sense since if I can see them they should be deemed a threat. If I can't render them I really have no reason to know what is going on with them. This would be a likely locale for clients to start talking back and forth with each other through the server. When the clip region becomes saturated issues ensue, the server can't keep up, the clients can't keep up, and information is lost.

    I guess the real questions are; what calculations can be made leaner, is there a way to make the information bouncing back and forth more concise, are there creative ways to pipe or funnel the information to clients periodically either faster or slower. For instance how often does the server send information to each client? Is it in real time plus lag? Is it periodic say every 10th or hundredth of a second? If so could it be staggered to send the information to 20% of the of the clients every half a second or 5 hundredths of a second? Would that reduce the stress or make it worse.

    On the surface removing some of the AOE calculations or just limiting them to 6 targets or whatever so that it doesn't need to consider anything beyond that would seem to help, so I started there. I realize some of these questions get into what the game engine can and cannot do. I don't expect you to necessarily have the answers, but they are questions that need to be asked. I imagine they have already asked themselves these questions, but you never know, sometimes you look under rocks that for whatever reason have not yet been touched. You just keep looking. Of all the things I would like to see resolved in Cyrodiil performance is number 1. People just will push the game aside if performance makes the experience not fun. Thanks for your responses to earlier questions.
  • ATRing
    ATRing
    Soul Shriven
    Perhaps just mimic that game where Cyrodil is the endgame and break it up into multiple sections. Trial access (new trials) should be in this zone as some type of militant force as a PvE version of PvP.
    This would allow different sections to be capped and owned for x amount of time within a campaign.

    I am not sure I follow what you are proposing here. Is this a PvE version of Cyrodiil?

    If I understand right you are saying that they should break the Cyrodiil zone into smaller zones where each has a purpose such as an open world trial? Would these be shard'ed to your faction you align with, or would this be shard'ed to everyone in that "campaign"?

    If it is just your alliance then why would they re-purpose Cyrodiil rather than developing a bespoke zone for this?
    If it is shared between all of the alliances then how would player factions compete if this is the PvE version of PvP? Is it just the first faction to the location controls it?

    But based on my understanding of your proposal I agree that Cyrodiil should remain as is like Varanis stated as it is our only location to participate in large scale player driven PvP.
    Last I checked, Cyrodiil s an open world PVP zone that supports everything from solo players, small groups, organized raids, pugs, zergs, faction stacks, objective-based play, ganking, bombing, AP farming, Alessia bridge fights, remember the Chalamo, scroll runs, pve questing, and quite a bit more.

  • ATRing
    ATRing
    Soul Shriven
    Ranger209 wrote: »

    At some point the server has to tell my client what the health and what events are occurring upon someone else's client.
    A likely starting point would be within the clip region. If my client is rendering them the server is passing information onto my client regarding theirs and vice versa. It could be closer than this, say 2x, 3x, or 4x the maximum range of any ability in the game. The clip region makes the most sense since if I can see them they should be deemed a threat. If I can't render them I really have no reason to know what is going on with them. This would be a likely locale for clients to start talking back and forth with each other through the server. When the clip region becomes saturated issues ensue, the server can't keep up, the clients can't keep up, and information is lost.

    Doubtful that clipping distance can be used to aid in these calculations as that would be local to the machine and variable between machines, and as such the server would have no way of knowing this information.

    Realistically the range for the calculations/update on nearby players needs to be account for 2 players moving as fast as possible in a converging path in the worst possible acceptable latency conditions. But this is tricky because you do not know when you will receive a packet containing information regarding other player positions.

    This is just wild speculation but likely the server itself has a game state that players modify their own values with positions and actions. The server is likely updating this game object and sends us components or the whole object every so often to keep us in sync. I would imagine this would include position of the player and pets, position of active effects, any buffs we might have, any number of things. (I am likely wrong about this and hopefully someone else knows more about the networking portion of the application)
    Ranger209 wrote: »

    For instance how often does the server send information to each client? Is it in real time plus lag? Is it periodic say every 10th or hundredth of a second?

    Doubtful that the data is sent real time. From my understanding the data can be pushed at the application level but not specified to be sent until the packet size has been reached. But likely I am wrong about this hopefully someone with more insight can go into more details on the networking aspects.
    Ranger209 wrote: »

    If so could it be staggered to send the information to 20% of the of the clients every half a second or 5 hundredths of a second?

    For the most part when you load balance operations the result is a slightly delayed result for a more stabilized work load so you do not see any spikes. So by only broadcasting 20% of the results to calculations you likely will increase latency in regards to server to player communication. Though likely there is a limit on the amount of data you can push at a given time, I am unsure.
    Ranger209 wrote: »

    I guess the real questions are; what calculations can be made leaner, is there a way to make the information bouncing back and forth more concise, are there creative ways to pipe or funnel the information to clients periodically either faster or slower.

    The largest gain, which they most likely are doing, is to compute all these values in parallel. While the arithmetic operations might be slow you could do many more at a time and these types of calculations would likely be the perfect candidate for this.
  • Recremen
    Recremen
    ✭✭✭✭✭
    ✭✭✭✭✭
    After doing a little research and a lot of thinking on the topic, I've got to agree with @ATRing . For an AoE ability specifically the server is going to need to perform an extra operation for EVERY player on that server until it hits the cap, though more than likely it will still perform the operation even after cap to see which targets are "ideal" (closest players, etc.). There just isn't a way around it. With a single-target ability, all you need to do is calculate for the person targeted and notify all clients that the effect is going off, but for AoE you have to notify everyone that the effect is going off AND check every player to see if they're in the AoE polygon (radius seems to just be a rough estimate, not exact). Obviously you're excluding friendly players from attacks (unless they have a buff component) and enemies from heals (unless they have a debuff component) but you know, basically everyone. Arithmetic operations for actually calculating damage are invariably fast and trivial, and even finding if a single point is in a polygon should be very fast, but when you have to do the polygon check for everyone in a server's domain that's probably going to be the most taxing part.
    Men'Do PC NA AD Khajiit
    Grand High Illustrious Mid-Tier PvP/PvE Bussmunster
  • Ranger209
    Ranger209
    ✭✭✭✭✭
    This makes no sense to me. Let's look at this another way. If I cast an AOE on an NPC you are saying that it is going to check a list of every NPC in the game and find out which ones are close enough to get hit by it? By rights it would have to check a PC list and an NPC list as there could be both types taking damage from a single AOE if they are in close enough proximity.

    If I wander by a hostile NPC how does it know to aggro me? By checking a list of everyone on in the game to see who is close enough to aggro? These mechanics should be similar albeit they are with different entities, but the logic behind them should be similar.

    The way you are describing does not seem optimal at all.
    Edited by Ranger209 on November 25, 2017 12:10AM
Sign In or Register to comment.