Maintenance for the week of December 23:
· [COMPLETE] NA megaservers for maintenance – December 23, 4:00AM EST (9:00 UTC) - 9:00AM EST (14:00 UTC)
· [COMPLETE] EU megaservers for maintenance – December 23, 9:00 UTC (4:00AM EST) - 14:00 UTC (9:00AM EST)

Why does my FPS seem to directly impact my Ping?

Gix
Gix
✭✭✭✭
I normally run the game at around 50-60 FPS and I get a ping averaging 130ms. Occasionally, I'd get lag spikes of 480ms.

I decided to lower the resolution to get into 70-80 FPS and suddenly I'm getting a ping averaging 85ms. After a few hours of play time, it hasn't spiked yet.

What gives? Are you only allowing the computer to talk to the server on a per-frame basis? If so, why?
Edited by Gix on July 21, 2015 2:06PM
  • KhajitFurTrader
    KhajitFurTrader
    ✭✭✭✭✭
    ✭✭
    Don't know what you're seeing there, the causality usually goes the other way round: renderers of MMOs rely on the network code on no small part, because the server tells the client which dynamic objects are within drawing distance. The client is allowed to guess and extrapolate to some extend, but this only goes so far. So usually, a higher latency begets a lowered FPS. Haven't heard that this also works vice versa -- until now :smiley:

    Btw, the value that is displayed in-game isn't the sole network latency between your machine and the data center gateway. It's a value inherent to the server cluster and factors in system load of your zone, load on the database, etc. I like to think of it as an "average command processing duration", and it usually is much higher than the ICMP Echo_Request round trip times (a.k.a. ping). E.g. here in Germany, I get a quiet steady ping between 11 to 13 ms to the server farm in Frankfurt/Main. In-game, I usually see a value of 50 on average, up to 150.
  • chris.dillman
    chris.dillman
    ✭✭✭
    Gix wrote: »
    I normally run the game at around 50-60 FPS and I get a ping averaging 130ms. Occasionally, I'd get lag spikes of 480ms.

    I decided to lower the resolution to get into 70-80 FPS and suddenly I'm getting a ping averaging 85ms. After a few hours of play time, it hasn't spiked yet.

    What gives? Are you only allowing the computer to talk to the server on a per-frame basis? If so, why?

    Hi Gix

    The ping time you are seeing is NOT the actually steady stream ping time between you are the server like you might see running ping on the command line.

    It is a ping time based on the packet time from client to server then back to client
    PLUS the time it takes to process that event on the main game play thread.

    The higher the frame rate the more free time theres is to spend processing user input and game events.

    The actually network packets are sent and picked up on dedicated threads, but someone has to get around to processing them and synching the entire world with the renderer.







    -- ESO -- Lead Mac Programmer...
    Staff Post
  • Gix
    Gix
    ✭✭✭✭
    Thank you both for the replies. It clarifies a few things.
    The higher the frame rate the more free time theres is to spend processing user input and game events.
    This is the confusing part for me. If it's not processed on a per-frame basis, how does a higher-frame rate allocate more time to process? If anything shouldn't that be more taxing on the computer?

    Shouldn't there be an option to lock the framerate allow the computer to process that on the side?
  • KhajitFurTrader
    KhajitFurTrader
    ✭✭✭✭✭
    ✭✭
    Ok, so the value that's displayed in-game factors in a synchronization wait time with a locally running thread as well? That's interesting. I think I have an explanation:

    Let's say the renderer runs at 50 FPS, i.e. it finishes drawing a frame once every 20 ms. Then the sync happens, determinating event processing time, to be displayed in the next frame.

    If the renderer now runs at 80 FPS, it will finish one frame every 12.5 ms, that's ~38% faster [(1-(12.5/20))*100]. Now the client side sync may also happen faster more frequently, thus event processing time decreases by roughly the same factor. Looking at the ping times you've reported above, the figure is in the same ballpark [((1-(85/130))*100 = 34.6].

    MMOs can behave weirdly sometimes. I fondly remember times in LOTRO after the dragon was slain (if it didn't bug out beforehand) and loot was being distributed, when some folks reported over voice chat they were still seeing the final phase of the fight playing out on their client. Prime example of a massive desync of client and server. Clients could be programmed to disconnect if such a condition is detected (reliability would be crucial here), or simply crash to desktop -- the exception would have been handled either way. :wink:

    Edited by KhajitFurTrader on July 24, 2015 7:53AM
  • chris.dillman
    chris.dillman
    ✭✭✭

    Hi Gix,

    What KhajitFurTrader plus...

    The main thread is the rendering thread on OSX.

    The Main thread processes all user input once per frame.
    After that tasks are spawn off for processing across other thread (cores) as much as possible.
    When the main thread is ready to draw things it picks up all the data from the other thread (cores)
    aka synchronizes everything.
    Next the main thread draws the frame and waits for the GPU before moving on to the next frame.


    So your user input... gets processed once per frame and then sent to a server on a network thread.
    Then the server sends data back.. this gets synchronized at the main thread at some future frame
    and then applied to the world.

    So your useable ping time or user input time is FPS based.

    >What gives? Are you only allowing the computer to talk to the server on a per-frame basis? If so, why?

    So yes the user input etc is per frame based.

    The actual network sending and receiving does happen in the back ground on dedicated threads
    and would have a proper network ping time.






    -- ESO -- Lead Mac Programmer...
    Staff Post
  • Gix
    Gix
    ✭✭✭✭
    Thanks for clearing that up!
  • KhajitFurTrader
    KhajitFurTrader
    ✭✭✭✭✭
    ✭✭
    Don't forget that we're dealing with an MMO, and not an FPS, here. Clients and Server are synchronized by ticks or heartbeats, i.e. the game won't update for anyone before the next tick. Would it come as a surprise that some MMOs internally run with ticks of about 500 ms? Granted, those games have a GCD of 1000 ms or more client-side.

    The issue of key-polling is a non-issue for MMOs, really. ESO runs fluid and responsive on the PTS from the EU, and it ran fluid and responsive when the EU server cluster was still in the US. And we're talking about pure ICMP roundtrip times north of 140 ms here. Anything related to "lag" is often caused by the increased server-side system load of large-scale PVP battles, stretching the time in-between updates for everyone within the same zone thread, no matter whether they run 5 FPS or 150 client-side (EVE online even tells the clients about this when need arises and calls it "time dilation").

    Why isn't input polling running in a thread of it's own? If it was more advantageous to do it this way, it wouldn't have been done already? ESO isn't a single-player first person shooter, not even an online, multiplayer one. Doesn't matter whether the clients send 10 or 100 or 1000 keystroke packets every tick (but indeed it would, DDOSing your inbound data center gateway doesn't seem so be so clever), as only the last one gets considered for the next tick. Or however some algorithm determines the action to be considered server-side (LOTRO had an input queue, btw, which was quite nice to have. But then again, LOTRO was anything but twitchy).


    Edit: Where...? There was a question to my answer, once... Ok, keeping it for future reference, should the question arise again. :smiley:


    Edited by KhajitFurTrader on August 3, 2015 9:36PM
  • Gix
    Gix
    ✭✭✭✭
    It just feels odd to play a game that seems to be entirely dependent on my client's framerate, though.

    I used to get the issue where objects were not loading fast enough when you enter a building... that was when I running the game at 60fps. At 60fps, I sometimes had to wait a full minutes to load the WALLS of an interior area; I'd just be there floating in the sky with NPCs, crates, tables, slowly appearing into view.

    Now I changed screen resolution, running the game at 110fps and now objects (and walls) load near-instantly.

    I've never experienced this in any other MMO; it makes a significant difference in how you can perceive events in the game. For months, my friends thought I was incompetent at avoiding AoE when all I had to do was increase the framerate to 90fps+ to be able to react in time.

    I no longer get the "You can't do that while dead" error when I try to use abilities for 5 seconds.
  • KhajitFurTrader
    KhajitFurTrader
    ✭✭✭✭✭
    ✭✭
    Gix wrote: »
    I used to get the issue where objects were not loading fast enough when you enter a building... that was when I running the game at 60fps. At 60fps, I sometimes had to wait a full minutes to load the WALLS of an interior area; I'd just be there floating in the sky with NPCs, crates, tables, slowly appearing into view.

    Now I changed screen resolution, running the game at 110fps and now objects (and walls) load near-instantly.
    The issue of slowly loading wall and floor textures is an older one, seemingly introduced with patch 2.0.1. I haven't seen it anymore in version 2.1 on the PTS, where my frame rate is roughly the same with equivalent graphic quality settings I have on live.
  • Runicus
    Sorry for reactivating this thread but I get the feeling there is a server-side issue here with ping. I'm in Canada and Speedtest.net is giving me 12 ms but in-game ping frequently goes to 200, 300, 400, 500 ms. The FPS on my very capable Alienware drops to somewhere between 0 and 15.

    Empirical observations seem to indicate it is related to presence of other players in range. When I'm alone in an area my ping is low and FPS much better. Cities are horrible, world objects don't load, NPC are invisible and I get 2-3 load screens while riding in town.

    This was NOT happening 2 days ago but it was happening 3 weeks ago early October. Problem came for a couple of days and went away by itself about 48 hours after I gave up trying to fix it myself. It went well for the following 3 weeks and then 2 days ago just came right back.

    It's clearly not my machine, there is something wrong with client-server data exchange and looking at forums I'm clearly not the only one with issues. Besides this thread there's a few that share my problems (below links are all from past 7 days)

    http://forums.elderscrollsonline.com/en/discussion/221698/fps-issues-even-with-a-gtx-970#latest
    http://forums.elderscrollsonline.com/en/discussion/comment/2364239/#Comment_2364239
    http://forums.elderscrollsonline.com/en/discussion/comment/2364253/#Comment_2364253

    Can we get a statement or update that ZOS is working the issue?
Sign In or Register to comment.