Whats the correct way to pause a game in multiplayer?

The issue is SetPaused or low TimeDilations also stop replication so i cant even notify the client that the game is paused

I haven’t tried it but is there an issue to notify the clients before you set the servers Time Dilation?

I would suggest first notifying everybody and then try to pause the game. Note that each client will pause at a slightly different time so you will probably need some correction on resume.

its clunky though, what would i do, delay, for how long, is it consistent etc

Hey there. Maybe you could set your GameMode’s (or whatever object is managing the communication with the clients and sending the pause to everyone) Tick Even when Paused setting to true, or its Custom Time Dilation value to 1/World Time Dilation so it will still run at normal speed despite the rest being stopped/slowed down.

Presumably you’d also need something in the clients that also responds to that and also ticks when paused or has consistent speed using the Custom Time Dilation trick. It depends on your game’s architecture.

i tried that one too, i think replication runs off the root tick so maybe its just not possible with pause?

i’ll keep testing but may just have to do a custom implementation

No delays initially. Just send a reliable multicast event and pause the game. All clients would pause when they get notified no matter where they are in-game. Not sure what will happen in between (when server is not ticking but the client is) but it should be alright.

The un-pause would be VERY clunky though. All clients should start at the same state.