coherence 1.4 Brings Ordered Commands, Latest Unity 6 LTS, and More
Version 1.4 of coherence continues a trend we've been pursuing for the past year: building new features and improving performance through the demands of real-world production.
We just announced that we're building the online co-op for Vampire Survivors and you can imagine how games like that will help improve our technology in a way that benefits all coherence users.
Take a look!
Ordered Commands
You might know about commands by now. They are coherence’s mechanism to instruct entities across the network to execute game logic.
However, commands, by design, are sent without any guarantees on priority. Your game however might require specific order resolution for logic to run as expected. For this purpose, we built ordered commands. When using ordered commands, they will be resolved by clients in the exact same order they were sent.
The new CoherenceSync.SendOrderedCommand API mimics the conventional CoherenceSenc.SendCommand signature. For details, check the API Reference.
Unity 6 LTS
On this iteration we’re actively testing and keeping track of the latest developments on Unity’s latest LTS. You can safely use our tools on the latest stable versions of Unity, and expect no surprises.
CoherenceSync Stability
To be able to abstract away coding the network bits, and pack it all in a nice interface, we need to pull off a few tricks. These tricks can challenge stability. This time around, we’ve focused on bindings (i.e., network variables and methods as seen in the Configure window), and explored both common scenarios as well as edge cases that could cause unexpected problems, such as null references, or the inspector not rendering properly.
This effort was also supported by multiple reports from the community. We not only appreciate your time, but encourage you to keep up the good work, so together we can build a better platform for everyone!
Replication Server and IL2CPP
The Replication Server is a native executable. On self-hosted builds, it’s launched as a process, via Process.Start. However, the IL2CPP backend doesn’t implement this part of .NET. So for game builds that want to leverage IL2CPP, we’ve created a native solution to launch this separate process. This solution is only viable for the desktop build targets (Windows, macOS and Linux builds using IL2CPP). The best part? You don’t need to do anything special. It will just work! ™
Optimize Window and Prefab Variants
Most often than not we want to benefit from the advantages of Prefab Variants.
When working with the Optimize window, changes are not applied to Prefab Variants by default. However, that’s exactly what you might want to do. For that purpose, we’ve added the possibility to apply them right away at the click of a button.
Toggling Client Prediction on Play Mode
While it was already possible to change this setting at runtime from code, it wasn’t possible from within the Inspector while in Play Mode. It comes handy to be able to play around with this setting as you iterate on your idea, to quickly see how entities react to changes.
Written By