#Low FPS/High UPS. Massive stuttering on Multiplayer.

1 messages · Page 1 of 1 (latest)

limber idol
#

I'm playing SpaceExploration multiplayer hosted by a friend, my frame-rate has been getting significantly worse over time (drops to 4fps). I thought this implies the map just expanding and my PC not being able to handle it, however I definitely meet the minimum requirements (Core i5-6400, GTX 1050Ti) and when running the save locally I get 60/60 fps/ups which makes it seem that isn't the issue. To verify that it is not graphics issues I also joined with render resolution reduced to 1920/1080 & all graphics settings set to minimum: there was no improvement.

So next I thought that it is connection issues (if it works fine locally but multiplayer doesn't), however I have very good connection bandwidth & latency (see attached image)

The fact that the mods update time is very small makes me think that is isn't a mod issue & is caused by something else

There are some indicators of other network issues, using this link: https://www.clouddirect.net/knowledge-base/KB0011163/checking-for-tcpip-packet-loss, I measured an average packet loss of 1 (10x higher than the recommended 0.1).

I am running the latest graphics drivers, the latest Factorio update & latest update of my mods. Any help to improve this would be greatly appreciated!

ripe sluice
#

The issue seems to be related with drawing frames

#

Is what stands out to me

#

Especially the Wait For Update one at 209 ms

limber idol
#

agreed! that's what stood out to me the most too. However I don't understand why. The save runs perfectly in singleplayer

thorny dirge
#

Swap who is hosting around. You host, they join.

#

Basically factorio is dropping frames to keep up with the host.

ripe sluice
thorny dirge
#

No they determine the speed.

thorny dirge
#

Their CPU is faster, your cannot keep up.

#

You reached a point where the difference is substantial.

#

The two solutions are to slow the game down, or to get the slowest person to host.

#

You can slow the game down using console commands like /c game.speed = 0.9 to set speed to 90%.

ripe sluice
#

I see. So factorio prioritises UPS way above the FPS so you drop to low FPS before you drop out of the game.

limber idol
#

cheers guys!

#

its intruiging to me that my CPU is the issue, when there are other players that have worse CPUs than me but are running fine

#

(I have no background tasks open btw)

ripe sluice
#

threads*

limber idol
#

4 render threads

limber idol
ripe sluice
#

I think the difference is less than 0.5 FPS

#

Making it need to run that much faster in MP means that factorio sacrifices your FPS to not make you drop out of the game

#

So for example your computer can handle the safefile at 51 FPS, but not at 51.2FPS (I am getting the numbers out of my ass)

#

And the PC of your friends forces your computer to run it at that 51.2FPS making you drop frames like no tomorrow.

limber idol
#

that sounds fabbbbb! thanks u so much for the help! i'll have a try of that and get back to you

thorny dirge
thorny dirge
#

Getting slowest person to host is usually the easiest way to make sure everyone has good performance. Otherwise you need to mess around constantly adjusting game speed with console commands.

velvet tangle
#

Actually, everyones' game updates at the same time individually, and the host's game will slow down if another player on the server doesn't have capability to run the game as fast as the host. Having the slowest user host the game will only make it so that nobody can get kicked for having too large of an UPS difference. The only thing you can do is not play with the person causing the server to get dragged so far down

ripe sluice
#

The host never slows down for slow players.

#

AFAIK

velvet tangle
#

I used to not, but it was changed

ripe sluice
#

When? changelog or it did not happen

velvet tangle
#

shrug I don't really have time to sift through literal thousands of changelogs

ripe sluice
#

I can only see things that can abuse this

velvet tangle
#

Whatya mean?

#

Like griefing servers?

ripe sluice
#

yeo

velvet tangle
#

I mean, there were plenty of ways to do that already. Plus, if you don't want someone griefing a server like that, /ban exists

thorny dirge
velvet tangle
#

So then... what is happening in CarrotMan's image?

#

Because if his system isn't keeping up then he should be dropped from the game, no?

thorny dirge
#

If one breaks down the time allocation of an update cycle of factorio in single player it is comrpised of 2 parts. Updating game state and render preparation. The actual render happens asynchronously on the GPU so does not count.

#

What is happening is that in order to keep up with the host, it is sacrificing (skipping) render preparation and as such skipping drawing frames.

#

Most RTS games do this.

#

Factorio does have the issue that render preparation is not that demanding. As such what usually happens is that once the update limit of the system is reach and the host is faster, frame rate starts to quickly tank to slide show levels as it is forced to skip almost all render preparation stages to keep up. The game is as good as unplayable in this state. Soon after the client starts to fall behind as can be seen by increasing latency, until eventually around the 30 second delay mark the server decides to kick the player for not keeping up.

#

Like wise in these conditions the player can never join the server without the server pausing as they will never catch up after the map loads.

#

Evidence that carrot could not keep up? That is over a 13.6 game second latency. So either they are somewhere like the moon, or they are already falling behind.

#

Given latency is 32 ticks (~500ms) I generally believe the cannot keep up part.

#

Eventually when buffer reaches a few thousand updates the server gives up and drops the player.

ripe sluice
thorny dirge
#

They are effecitvly already in that. Hence they get kicked because they cannot ever catch up.

ripe sluice
#

well, the catching up bar first need to clear out before that happens

thorny dirge
#

Yes but only if they are joining.

#

If they have already joined, or the host paused to let them join, they will be booted around 2,000-3,000 buffer.

velvet tangle
#

Fuck, I even get like 25 playing with the guy 20 feet to the left of me

thorny dirge
#

Yes 32 updates will be physical latency. >800 clearly is not.

#

This can also be easilly tested. If the host pauses the game, then for several seconds (~15 in carrots case) the game will keep moving and progressing until it is caught up and buffer drops to ~0.

#

I tested this extensivly with Dr Super Evil when we played Space Exploration and Pyanodons.

#

Getting the weakest PC to host solves all the issues. Everyone gets the same FPS which matches the UPS. Except if they do something very demanding like dragging a deconstruction planner across a megabase but that only is in effect while you do that.

ripe sluice
shrewd gale
thorny dirge