Read about new features, important changes and fixes for version 0.10
Published 02.06.2023
This is a maintenance release.
Child entities of duplicate unique entities are no longer destroyed.
TCP fallback removed until it receives a rework in the next major version.
Published 27.04.2023
This is a maintenance release.
Permissions issue while executing baking or a Replication Server on macOS.
Published 26.04.2023
This is a feature release!
Added Floating Origin support. It's now possible to move the whole world underneath an entity and position game objects precisely even in very large virtual worlds. For more information, see the Floating Origin article.
Published 24.04.2023
This is a maintenance release.
Compilation on Unity 2022.2+ works now.
Reverted a warning on the CoherenceSync inspector where the object is not in the Prefab Mapper.
Published 11.04.2023
This is a maintenance release.
Added a warning about Prefabs not being addded to the Prefab Mapper when baking from the CoherenceSync inspector.
Log settings are now stored in Library/coherence/logSettings.json
.
Improved coherence Hub performance.
BakeUtil.Bake method return value.
LogSettings saved on fresh imports.
Multi-Room Simulators no longer attempt to serve more than one HTTP server.
Published 28.03.2023
The main benefits of this release involve schema. Gathered.schema is now stored in the project and as such, became fully versionable. This and some other choice improvements below have dramatically improved SchemaID stability.
BakeUtil.OnBakeStarted and BakeUtil.OnBakeEnded events.
Multi-Room Simulators: reconnection timeout.
CoherenceNode: fixed order of execution. Now, updates are applied before parenting is resolved.
Gathered.schema moved to Assets/coherence/Gathered.schema (from Library/coherence/Gathered.schema).
Can no longer disable Toolkit/Reflection/Generic Schema on Settings. It's required now.
RuntimeSettings' SchemaID property now warns about outdated schemas.
Optimize window: added statement that it is an experimental feature for now.
Sample UI hanging when there's no connection.
Reduced allocations made by the SDK.
Auto-update RuntimeSettings after bake.
Entering Play Mode is now faster on big projects.
CoherenceInput: now works with Prefabs containing spaces in their name.
Faster synchronization of Transform's position.
Connection: packets filtered by roomID to prevent cross-room data contamination.
Users no longer receive a prompt to bake before entering Play Mode.
Bake Window button removed from the Optimize window UI.
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.