For context, I love huge, massive maps with loads of players. OpenRA replays the entire game to restore, it doesn't have a save-current-state routine.
So 20 hours of massive map + 8 players means 2 hours of pegged CPU to reload the save.
Heartbreaking.
It's super impressive this works at all.
1. download current version of Linux
2. an MS-DOS/Minix dualboot VM starts with Linus beating Prince of Persia
3. fast-forward all the way through the history of Linux to him merging the relevant patchset
(note that factorio does a hybrid: multiplayer works like an RTS but starting from a save game instead of from scratch. If your PC can barely keep up with a server that you're joining, it can take a long time to actually get into the game or actually just not be possible)
How do they develop it? The developers must have to save and restart the game more than anyone.
I'm curious about how it's designed, which must be different than most other games and software. (I'm not saying they are crazy, etc. I'm certain they've thought about this issue.)
I suspect the answer is that we are misunderstanding something and that it can save and restore state relatively efficiently.
(It's not impossible to do both: while it's not strictly an RTS, Factorio has the same difficulty of synchronising the whole game state in multiplayer, but also has the disadvantage of quite long-lived and simulation-intensive games. So it uses a hybrid approach: it has a deterministic engine and a game state save, and when someone joins a multiplayer server, the server snapshots and sends the game state, which may take a few minutes, then it sends a replay to catch that player up to the current state of the game. But this is something that took them a lot of work to get into a reliable state and was kind of forced onto them by the constraints they had to work with)
> there's big advantages to having a deterministic simulation and relaying the player's commands instead of the whole game state, in fact unless you know everyone playing the game has a very good internet connection it's the only viable option.
If I understand, running it all on a server and just updating player UIs doesn't work for an RTS because some user Internet connections bottleneck the updates, putting those users at a disadvantage. You need to keep as much on the client as possible.
Since when is having to micro your units viewed as an issue in an RTS?!