coherence 1.1 Takes Flight

1.1 has taken off! Keeping with the holiday spirit, we have our own little bag of goodies to present to you.

yevhen-buzuk-emm-tWY4lQ4-unsplash.jpg Photo by Yevhen Buzuk on Unsplash

Support for networking Nested Prefabs

This is a definite highlight. Up until now, coherence has provided a few ways to network a Prefab, including networking variables available through its hierarchy.

Today, we’re introducing support for Nested Prefabs. This allows for setups where the networked entity is made up of other networkable entities. For example, you could create a networkable spaceship and a bunch of enemies (all of them being Prefabs using CoherenceSync), and have a Prefab that holds the spaceship and the entities. coherence is able to resolve such entities as independent, yet you benefit from working with that complex Prefab that references others.

To start networking nested Prefabs, attach the PrefabSyncGroup component to your CoherenceSync Prefab.

CoherenceSync learns new data types

We’ve introduced support for byte, sbyte, short, ushort and char. You’ll be able to see any variables using the aforementioned types exposed on CoherenceSync’s Configure window – as long as they are public, that is.

This also means we support all C# built-in types with the exception of decimal, nint and unint.

Performance

As a continued effort, we keep looking into ways to reduce the amount of CPU time and memory it takes for coherence to run. In this cycle, we’re focusing on the amount of allocations necessary to network your game. Same results, less resources spent.

Interpolation reworked

We improved metadata sent with each sample which allowed us to completely remove overshoot settings. Entities will still overshoot in the direction of travel in case of packet drops, but you don’t need to configure that anymore. Also, when a remote entity stops, we will no longer misovershoot, just to snap back every time. All in all, interpolation is more stable and more correct.

Dropping 2020 LTS support – eyes on the future

As part of this release we’re officially deprecating support for 2020. This might not sound exciting, but in doing so, we can embrace the new features introduced by Unity 2021 LTS. One area directly affected by this change is the source generator, and its legacy dependency on a (no longer maintained) Unity Roslyn package to get support on Unity 2020. Starting on 1.1.0, there’s no longer a dependency on it – less clutter on your project. There’s a bunch of other APIs that we can start using across the board safely and uniformly.

Sending commands (locally) while disconnected

We’ve noticed that it is a pretty common use case to trigger commands locally (if possible) while disconnected. Your game logic might depend heavily on the use of commands, so we’re making sure it keeps working without specialized logic to handle connections and disconnections.

CoherenceNode stability

Parenting entities is a very convenient feature, which is widely used among the games we’ve seen being developed with coherence. However, it’s not trivial to get this right. In 1.1 we’ve put some good effort into making sure it works smoothly.

Written By

Francisco Requena

Published in: News
December 21, 2023