Release Notes
Read about new features, important changes and fixes for version 0.10
- macOS builds uploaded to coherence Cloud now keep the Application Bundle (.app) structure intact.
- When a simulator fails to build, the scripting define symbol
COHERENCE_SIMULATOR
is properly removed. - Faster assembly reloads, since coherence no longer tries to load your project Prefabs (was done to inform about possible issues or misconfigurations).
- WebGL won't crash when failing to create a WebSocket.
- TCP fallback when UDP connections fail or are blocked. Useful in heavily firewalled/restricted environments.
- CoherenceSync: ability to trigger authority transfers from within the inspector while in Play Mode.
- CoherenceSync: when adding CoherenceSync to a Prefab Instance, it's possible to apply CoherenceSync to the original Prefab instead of creating a new one.
- Sample UI: layout.
- Sample UI: watermark shows current Room/World ID, region and schema ID.
- Replication issues when commands or inputs are being sent right after instantiation.
- CoherenceSync: moving to Assets/Resources won't fail if the folder doesn't exist yet, and it's possible to issue from within a Prefab Stage.
- CoherenceSync: adding a CoherenceSync inside a Prefab Stage resolves 'Load via' properly now.
- Sample UI: highly reduced GC allocations in watermark.
- Sample UI: refreshing was performed multiple times. Now, it also takes less time to get the state updated.
- New PlayResolver.RemoveRoom API.
- Sample UI: detect available local Replication Server.
- CoherencePlayerName component to ease networking the player name set on the Sample UI.
- Bake automatically defaults to false.
- Sample UI: improved layout and better state management.
- CoherenceSync: tooltips have been rewritten and improved.
- PlayResolver.FetchWorlds takes optional region and simulator slug as arguments.
- Connection Dialog defaults to rooms.
- Baking automatically on building a Unity Player no longer updates Prefabs.
- Texture-loading related issues (Editor).
- Packets received from incorrect endpoints are ignored.
- Build uploading on macOS.
- Hub: improvements to the Overview section.
- Hub: Multi-Room Simulators Wizard no longer reopens.
- coherence now waits for the AssetDatabase to be ready before performing changes to Prefabs.
- CoherenceSync: No Duplicates resolves uniqueness properly now.
- Uploading schemas from CI using COHERENCE_PORTAL_TOKEN.
- CoherenceSync: with rigidbody, parented under an object without CoherenceSync, now correctly syncs its position.
The first thing you'll notice is that our Documentation has gotten a thorough overhaul to its structure. We hope you find the new layout of topics more usable and logical.
- Play.IsLoggedIn to wait before interacting further with the Play API.
- Authority-side sample interpolation that removes jitter for bindings that are sampled at high frequencies.
- CoherenceSync: now fully configurable in Prefab variants. Prefab overrides can be visualized both in the CoherenceSync inspector and the Configure window.
- PlayResolver: Option to create or join existing room with matching tags.
- DescriptorProvider custom data object added for extended binding support.
- Play.IsLoggedIn now waits before interacting further with the Play API.
- Authority-side sample interpolation that removes jitter for bindings that are sampled at high frequencies.
- CoherenceSync: a new 'Preserve Children' option to prevent connected entities (CoherenceSyncs in hierarchy) from being destroyed if the parent entity is destroyed.
- CoherenceSync: [Sync] and [Command] attributes now allow you to specify the old name of the member to migrate it in place (example:
[Sync("myOldVar")] public float myVar;
). - CoherenceMonoBridge: onLiveQuerySynced exposed in the inspector (OnLiveQuerySynced deprecated).
- Build sharing: improved build path validation.
- Baking: now informs users about the current limitation of 32 schema components.
- Source Generator: improved reports so that it's clear when there's a failure.
- PlayResolver: Option to create or join existing room with matching tags.
- DescriptorProvider custom data object for extended binding support.
- CoherenceSync: polymorphic bindings using serialized references. Upgrading from older coherence versions requires migration (done automatically, can trigger manually via menu item 'coherence > Reimport coherence Assets').
- CoherenceSync: configurable rigidbody component action. You can decide when isKinematic should be (un)set.
- CoherenceSync: authority transfer UI label changed from 'No' to 'Disabled'.
- CoherenceHub: last tab opened is now persistent when closing and opening the window again.
- Networked Prefabs are now instantiated with their original rotation if the rotation is not synced.
- Truncated floating point precision in the 'Optimize' window.
- Losing latest changes when transferring authority.
- Overshooting and overflowing of integers while interpolating.
- WebGL Client automatically disconnecting after Replication Server shutdown.
- Recycling of EntityIDs caused by a double delete of an ID when an Entity is destroyed because of a parent moving out of the query.
- Negative latency calculations during CPU spikes.
- Fixed ConnectionSettings.PingOnConnect causing a timeout when connecting.
- Editor getting stuck in an infinite loop when trying to import packages that reference missing types.
- CoherenceNode script is now executed before CoherenceSync to mitigate parenting validation warnings.
- Entities that exceed the Room's max Entity count are destroyed and a warning is logged.
- Cloning GameObject instances with baked bindings using Instantiate would result in binding errors due to missing GUIDs (globally unique identifiers).
- Warnings spammed when exiting Play Mode in Unity Editor.
- Baking: process running longer than expected.
- Baking: gather bindings from inactive GameObjects in hierarchy.
- Baking: fixed NullReferenceException by skipping missing scripts.
- Hub: don't show synchronous fetch organization progress bar.
- Hub: improved scene setup instructions.
- Hub: improved Multi-Room Simulators setup.
- More coherence components implement a custom editor now, showing the logo and a brief description.
- Source Generator: allow on 2020.3.
- Source Generator: first time import failing due to directories not yet existing.
- CoherenceSync: binding the same method as a command multiple times in the same Prefab is now supported.
- CoherenceSync: fixed issue with parenting and interpolation which would result in a few frames of the connected Entity being in the wrong place.
- CoherenceSync: use the method SendCommandToChildren to send a command to every bound component in the hierarchy.
- CoherenceSync: new overload for the SendCommand method that accepts an Action, you can use it to send a command to a specific Component instance, if a method is bound to more than one component in the hierarchy.
- CoherenceSync: disabled prediction controls on reflection (non-baked) mode.
- CoherenceSync: set default interpolation.
- CoherenceSync: fixed error on cancelling interpolation asset creation.
- CoherenceSync: opening the inspector should not load additional assets (noticeable speedups on bigger projects).
- CoherenceSync: binding to generic members is no longer allowed.
- CoherenceSync: collapsed 'Custom Events' section by default.
- CoherenceSync: 'Steal' authority transfer type on persistent Entities is no longer forced.
- CoherenceNode: executed before CoherenceSync to mitigate parenting validation warnings.
- Sample UI: don't auto-generate EventSystem, but inform when it's missing.
- Sample UI: fixed default room name.
- Sample UI: fixed Refresh button throttling (too many requests).
- PlayClient: fixed missing Client version header.
- Analytics: Exception thrown due to threading error.
- PlayResolver: Cached rooms not filtered by tags.
- CoherenceMonoBridge: OnShutdown event.
Last modified 1mo ago