I didn't play Factorio for a while. But in ~0.15 I was able to join smaller multiplayer sessions with my laptop with an i5-2520M/8G-DDR3.
Now I can't join most of the online games with my PC (FX-8370/GTX-960/16G-DDR4).
I have had some similar experiences recently with my FX-8320E.
wanne wrote: ↑Tue Jan 28, 2020 12:12 pm
Recommended (not minimal) requirements is a "Quad core 3GHz+-CPU". This is a Eight core CPU with 4.4GHz. So this is wrong now and the recommended hardware is by far not able to run the late game?
That's for single player. It doesn't matter for MP. See the end of this post.
wanne wrote: ↑Tue Jan 28, 2020 12:12 pm
And like I said. It can run all mayor games including GTA V, Anno 1800, Whicher III and RDR II. So factorio is now the single most demanding game now? (For the CPU)
wanne wrote: ↑Tue Jan 28, 2020 3:53 pm
[...]
1. Making the game state deterministic avoids bugs. But it makes performance optimizing a lot more complicated. An serve which would be able to override the gamestate of the clients like it is common in every other game would have made thing much easier. But would ultimately lead to glitches. So I support this decision. But it is not the most performant.
2. Solving conflicts by giving actors a strict total order makes the game defacto singlethreaded wasting all the cache of the other cores. Instead of using a queue of actors they could have used an array of movable objects/stacks would have made things parallelizable. (With exception of the user interaction. But having this sequential afterwards wouldn't take much time.) – Of course this would kill all optimizations they made until now. Since all look from the actor viewpoint instead from an place-viewpoint. So I don't think anybody is willing to do this change. But with this design you could even run the simulation on a GPU with much faster memory and hundreds of shaders. I made a simulation like this with CUDA once. It works.
[...]
CrushedIce wrote: ↑Tue Jan 28, 2020 7:20 pm
It's not only a few k objects, in large bases there are millions of items and objects which can influence each other.
A big difference to other games is that Factorio simulates always the whole world (or even multiple worlds with mods). Most games simulate the world only in a certain area around the player. For example in Minecraft only 10 chunks around the player are loaded and machines will only work while the player is nearby.
1. Making the game state deterministic avoids bugs.
Determinism is mainly needed for multiplayer in Factorio because otherwise the amount of data the server would need to send would be huge.
I don't know why this is surprising to you. I don't know about Anno 1800, but games tending towards the simulation of large numbers of entities, dependent on each other, tends to be very hard on the single-core CPU performance.
I'm not aware of a
single game like that that does NOT use the same "client-server with sequential simulation" model, and none that would have managed to multi-thread its simulation.
See this thread :
Parrallel processing in games & applications
(However, see caveat at the end of this post.)
And sorry the [FX-8370] might not be high-end but it is not below average. – At least not for causal gamers.
Well, if you only look at people with below average PCs, then yeah, it's isn't below *that* average. But people likely to play Factorio MP will have *above* average PCs, like you (and I) "discovered". (I also seem to have had better performance in 0.18, but this doesn't matter, see at the very end.)
Otherwise :
FX-8370 PassMark single-thread rating : 1537
i5-2520M PassMark single-thread rating : 1492
(Note that in a few years since you've played MP on 0.15, the average is likely to have risen quite a bit.)
Steam Hardware survey indicates the most popular category to be : "Intel 3.3 Ghz to 3.69 Ghz"
PassMark's
"CPU Mark-worst" "Common CPU" in this category is the Intel Core i3-2120 with a single-thread rating of 1691.
PassMark's
"CPU Mark-best" "Common CPU" in this category is the Intel Core i9-9900K with a single-thread rating of 2891.
AFAIK, the end of the map had to be introduced because some players played with fire eldritch majick trying to teleport to places way, waaaay above what your typical coordinates stored in typical number formats could handle ?
posila wrote: ↑Tue Jan 28, 2020 9:50 pm
I have no idea what the maps look like on servers you are trying to connect to look like
Try to join 50+ players Biter Battles sometimes.
Though I wouldn't be surprised if a good part of the issues came from their own un-optimized Lua scripts. I feel that they could scale even more by instead using 1 surface per team, and having the C++ Factorio side to handle pollution and biter spawning ?
Or maybe there
is some overhead that doesn't
just come from more entities, but
strictly from more players ?
(I wouldn't bet on it though...)
Ok, so, finally, what I feel is the crux of the issue : (And what has already been raised, but maybe not dwelled on enough ?)
The way how in current Factorio the players have to adjust to the server, rather than vice-versa.
It also would seem that this has not always been the case :
Multiplayer adaptive game speed (slow down for slow clients)
I'm aware of two ways of dealing with this issue :
- As expected, with games with expectations of not many players in MP, they tend to pick the "server slows down to keep up with slowest player" rule (Sword of the Stars 1, as an example. And, weirdly enough,
Supreme Commander 1 : Forged Alliance (Forever) ? ).
- While for games with lots of players, where one single lagging player is going to slow
everyone else down, well, they tend to follow the same rules as current Factorio. (See
Spring games as an example.)
But one can imagine Factorio as being played in either of these "modes" : low (mostly private) or high (mostly public) player count...
So perhaps the best way would be to let the server owner to configure this behavior ?
ekimekim wrote: ↑Mon Jun 25, 2018 2:29 am
[...]
My solution has been to manually set the game speed down via console command when certain players want to join, limiting the server to (say) 50 UPS so that a player that can barely do 55 UPS can both keep up and get a decent FPS.
However, this process is highly annoying and error-prone (I'll often forget to set game speed back up, so everything takes longer even if no-one is logged in).
Unfortunately I can't simply give console command access to my players even though they're trusted, because they can't even fully connect to the server (can't catch up) so they have no way to send a console command to slow the server down.
What I'd like to see is an optional feature that a server admin can enable, where the server will attempt to adapt its game speed value to match the slowest connected client. Then it can speed up again when the slow client disconnects.
Obviously this can be abused by a client that reports itself being unplayably slow, DoS-ing the server, so this option would only be appropriate for trusted clients (or you could cap the slowdown to some minimum value, say 0.5).
Also, funnily, in the current "server won't slow down" mode,
eventually, the only people that are going to be able to keep up, would be those that have even faster hardware than the server ! And in the case of dedicated servers, only those that can compensate for the extra computing power needed to run the graphics !!
(Also, going back again to the "factorio is now the single most demanding game" - well duh,
of course it is : there's no restriction on the number of entities !)