Hey, Colonists! If you are following our Discord, you probably know that my focus went to improving multiplayer so it's fully playable even with a rough Internet connection. I spent the last 3 weeks making every system in the game bulletproof and fully reliable even with 500 ms delay or 25% packages being lost 😱 In the post, I want to share progress and let you try it out with a custom branch. The official release will come in about 2 weeks.
With the new initialization not using begin play but waiting for all systems to be fully replicated, it is now 100% sure that syncing will eventually succeed.
There were some actors in the game using Begin Play, so they got all modified to use a new, reliable path.
Having reliable client simulation with 1000 ms is not an easy task. There are many ways to make resources move ahead of a server or behind the server.
There are two types of corrections right now that allow for a 100% replicate outcome.
If the client has already pushed something in the wrong direction, resources are simply teleported back. This happens for the entire chain that was wrongly pushed.
If the client is behind and there are awaiting pushes, server is overriding the simulation, allowing for synchronized moves. This is a saving situation where the server removes the conveyor belt, and resources cannot cross the gap. Right now they will still move like it was a conveyor belt there.
Every resources in the game has it's own unique ID that is set by the server. This makes it easier to find exact location and do correction if needed.
This also resolves the removal of moving resources, as many times clients could accidentally remove resources in adjacent cells.
Even if the previous merge was working quite well, it is now improved for multiplayer to guarantee that all resources are always matching between client and server.
Devices and logic blocks are now creating conveyor connections.
gates of every device and logic block pushers are now showing conveyor belt connection - just like placing conveyor belts
stable merge is now improved using a new junction system that makes it more reliable and in sync between client and server
NEBULAS are visible on the clients
multiplayer got in-game syncing option - pressing it will sync all existing planets and their states.
some visual effects and sounds are now properly triggered for clients - example no oxygen left
when player left the station in the previous universe, it was no longer linked to it, so he is not moving with it
miners are now fully controlled by the server, which ensures 100% move validity. Also, miners should never create a ghost due to an invalid move.
resources even is simulated locally, having new systems like junctions, logic block controls, to ensure that the state is always in sync
crafting now is giving resources back from active recipes when a device is removed
asteroid interactions now have a new system to better sync it
all cosmic events, vehicles, and other gameplay related systems are now paused when a new player is joining
finally fixed default Unreal crash related to hair simulation and going to the map (hiding hairs)
fixed another crash related to cleanup and manually destroying components - right now all rendering is cleaned by the engine, solving random crash
fixed multiplayer issue where some animals wouldn't be visible after generating it first time
fixed multiplayer issue where some geysers wouldn't be visible after generating it first time
fixed human standing animation after getting oxygen on a client
fixed client that sometimes couldn't place a colony origin block
fixed issues with registering AIs multiple times and showing them in the UI
auto-syncing detection: The game detects some invalid states and lets the player know about it. Asking to sync the game or doing syncing in the background
Testing for pipes and ramps
splitters checking for 1000ms latency
filters/blockers checking for 1000ms latency
testing for large data replication - blueprints limit etc
due to new initialization, there are some new issues, like racing mod not performing as before
There is a custom branch available on Steam, so you can check all new changes!
name: mptest
pass: testmulti123
Thanks guys so much for your support!
Tefel (Terad Games)