Release Notes 2.1
2.1.10
Stable
Build 1705 (May 16, 2025)
Breaking Changes
- Fixed an issue that caused 
SystemBase.OnEnable()to be called for systems that are starting disabled by hierarchy having a parent system setStartEnabledtofalse, to disable this fix for compatiblity reasons addQuantumGameFlags.UseLegacySystemStartEnabledModeto theQuantumRunner.StartParameters.GameFlags 
What's New
- Added entity naming by using 
EntityRef.GetEntityNameUser(), a static delegate that can return a customEntityRefstring representation; otherwise the defaultEntityRef.ToStringis used. Used by theFramePrinter, theQuantumStateInspectorand theEntityViewUpdater - Added an assembly definition to 
Photon/PhotonLibs/WebSockets - Added a way to disable the initial Quantun memory integrity check by using 
QuantumGameFlags.DisableMemoryIntegrityCheck - Added access to all root systems 
SystemsRootson theFrameobject - Added 
Transform3D.RotateAround() - Added 
FPBounds2.Contains()andFPBounds3.Contains() - Added 
CompoundShape2D.ReserveCapacity()andCompoundShape3D.ReserveCapacity()methods and a matchingCapacityproperty - Added a 
GameFlagsfield to theQuantumRunner.StartParameters(QuantumGameFlags) 
Changes
- Upgraded Photon Realtime to version 
4.1.8.15 Heap.Stats.PagesFullnow better reflect the number of Frame Heap pages with all blocks allocatedTransform3D.Rotate()now accepts an optionalTransformSpaceparameter that defaults toTransformSpace.Localas beforeQuantumRunner.StartParameters.DisableInterpolatableStatesis obsolete now, useGameFlagsfield instead
Bug Fixes
- Fixed: An issue that caused 
QuatumGameto keep references to replay recording data structures after being destroyed which makes leaking their memory more likely - Fixed: An issue that caused the 
AssetBase.Dispose()never being called, defineQUANTUM_DISABLE_ASSET_BASE_DISPOSEto restore the old behaviour - Fixed: An issue that reset the 
DeterministicCommandSerializer.WriteStreamto a hard-coded size size duringSendCommand()making it impossible to increase the size - Fixed: An issue that caused 
defaultvalues on assets to create wrong asset DB JSON deserialization by settingObjectCreationHandling = ObjectCreationHandling.Replace - Fixed: An issue that caused the static box collider rotation offset to not be calculated correctly, must be opt-in by toggling off 
QuantumEditorSettings.UseLegacyBox3DRotationBaking - Fixed: An issue that caused the predicted frames to be used for initial entity view and map entity placement
 - Fixed: An issue that could caused jitter on 
EntityViewinterpolation when the simulationFrame.DeltaTimewas set to a different value than the inverse of the simulationUpdateRate - Fixed: An issue that could caused the 2D and 3D KCC perceiving side-faces of rotated boxes as steep slopes instead of walls
 - Fixed: An issue that caused standalone prefab assets never to unloading view prefabs
 - Fixed: An issue that caused standalone prefab assets for 
Resourcestrying to unload prefab withResourcesAPI - Fixed: An issue that could causes an assertion error on 
Heap.PageFreewhen executingAllocationTracker.FreeAllTrackedon a late-joiner - Fixed: An issue that could cause an 
OverflowExceptioninQDictionaryandQHashSetwhen their respective Key and Value types have a negative hash code and numeric casts arecheckedby default - Fixed: An issue that could cause a debug assertion that expected all inputs to be polled exactly once on the clients, which might not be the case in extreme conditions
 - Fixed: An issue that caused build problems on Android and Linux by removing the unsused content of 
NativeSemaphore.c 
2.1.9
Stable
Build 1529 (Jul 17, 2024)
What's New
- Support to physics 
QueryOptionsandCallbackFlagstypes in the DSL QuantumEditorSettings.UseAsyncAssetDBGeneration- if enabled, AssetDB will be generated asynchronously if an asset is created/removed. This can be slower but allows for a more responsive editor. If disabled, AssetDB generation will be synchronous (default)Quantum/Generate Asset Resources (Async)menu itemPrototypeMaterializationContext.userData- a way to pass additional context to manual prototype materialization- 2D and 3D 
JointPrototype.Materializeoverloads that receive anchor references instead of aPrototypeMaterializationContext QuantumGameFlags.InitSystemsBeforeCallbackGameStarted- passing it start parameter'sGameFlagsin will invokeCallbackGameStartedcallback after systems are initializedRuntimeConfig.GetUserByteArrayCapacity- partial method that allows to override the default byte array capacity used inToByteArrayAssetBase.AssetRefT- a property that always returns the underlying AssetObject as the most derived type instance. Helps to avoid casting the result ofAssetBase.AssetObjectif asset type hierarchies are used- Added a 
savebutton to the non-Editor frame differ screen which will dump the state intoApplication.persistentDataPath 
Changes
- Upgrading to Photon Realtime 
4.1.8.7 - When removing a component T or destroying an entity that has T, the ComponentCount
is now reduced after component-remove signals are invoked instead of before  - Frame Heap now throws an 
OutOfMemoryExceptionwhen it fails to allocate - The 
QuantumLoadBalancingPeersetLoadBalancingPeer.ReuseEventInstanceby default to reduce allocations with incoming network messages - The Terrain Collider now detects degenerate triangles, logs a warning and does not bake them into the asset
 PrototypeMaterializationContextconstructor is now publicQuantumRunnerLocalDebug.RecordingFlagsis set toNoneby default- A warning message is logged if decompressing checksum error frame data fails
 - Disabled prefab variant workaround for Unity 2021+
 AssetDB.LoadedAssetis now obsoleteFPQuaternion.LookRotation(FPVector3, bool)overload is now deprecated (optional bool parameter was never used) andFPQuaternion.LookRotation(FPVector3)was added in replacement
Bug Fixes
- Fixed: Compile warnings for Unity 2023+
 - Fixed: 
LayerMatrixGUIerror for Unity 2023.1+ - Fixed: GetDrawerTypeForType() errors for Unity 2022.3.23+
 - Fixed: Alse-positive desync when late-joining and receiving a snapshot where a Compound Shape had its internal buffer expanded
 - Fixed: An issue that caused memory allocations in 
QList.Contains() - Fixed: Non-deterministic order of fields in 
QuantumEditorUtilityContainer - Fixed: Heap AllocationTracker.Dispose not correctly the buffer's capacity
 - Fixed: An exception during map entity binding when the map entity reference game object is null
 - Fixed: Replaced an assertion with an error log when entity views are destroyed by user code
 - Fixed: Added protection against infinite loops during Unity navmesh importing during 
FixTrianglesOnEdges - Fixed: An issue that caused inverted navmesh border normals during navmesh baking
 - Fixed: Improved the Unity navmesh importing by adding an explicit 
FixTrianglesOnEdgesHeightEpsilonfor the vertical offset that can be set to 50x of the horizontal offset to catch more edge cases overall - Fixed: AssetDBGeneration: long import times for projects with a large number of addressables
 - Fixed: Debug assert that could fail when resetting or reinitializing a map on the 2D or 3D physics engines
 - Fixed: Enabling or disabling static mesh colliders can now be correctly predicted by the physics engine
 - Fixed: Incorrect normal between box collisions when a shape is totally inside the other
 - Fixed: 3D Physics scene mesh always updating to the 
Frame.Map, even when a specific map is provided when forcingIniton the physics engine - Fixed: 3D Physics issue when disabling 
UseAngularVelocity, which could cause some collision constraints to be ignored on every solver iteration - Fixed: 3D Scene Mesh structure not resetting the current tracked Map when calling 
ResetMapin the engine API - Fixed: Not being able to reinitialized the 3D Scene Mesh from outside the Frame simulation loop, even if in a Verified frame
 - Fixed: An issue on the plugin that caused large snapshot downloading to fail and cause disconnects or exceptions during late-joining
 
2.1.8
Stable
Build 1389 (Mar 18, 2024)
What's New
- The context 
LayerInfois now exposed inFrameThreadSafe.Layersproperty, similarly toFrame.Layers Session.IsDestroyedandQuantumGame.IsSessionDestroyedproperties to be able to check for destroyed sessions- CodeGen: Support for casting in the attribute list. E.g.: 
[DrawIf("SomeField", (long)SomeEnum.SomeValue)] Int32 IntField; - Set of core DLLs that increase max component count to 512. See Manual/Quantum ECS/Components/Max Component Count doc for details
 - NavMeshRegions support 3D colliders during NavMesh baking
 - Assertion error in Debug with meaningful message when LUTs are not loaded and trigonometric functions are called
 - Added 
OnSimulateBeginUser(Frame)andOnSimulateEndUser(Frame)partial methods to easier extendQuantumGame - Marking callback methods in 
QuantumGameasvirtual(e.g. OnGameStart(), OnSimulate, ..) - Added the optional paramter 
arrayCapacitytoRuntimeConfig.ToByteArray(RuntimeConfig config, int arrayCapacity = 8192)andRuntimePlayer.ToByteArray(RuntimePlayer player, int arrayCapacity = 8192) ColorRGBA.Lerpand.LerpUnclamped
Improvements
- Layer properties in 2D and 3D colliders now clamp the value if outside the valid layer range
 - Improved detection of degenerate triangles when baking static mesh colliders
 
Changes
- Upgraded Photon Realtime SDK to version 
4.1.8.0 - 2D and 3D PhysicsBody Force and Torque fields are now exposed as public getter properties
 - Upgraded Custom Quantum Plugin SDK Newtonsoft dependency to 
13.0.3 
Bug Fixes
- Fixed: An issue on the server that cause input to be not accepted for late-joines for a while when lots of commands are issued by other clients
 - Fixed: Potential deadlocks when the simulation is using all Job threads and an asset which is sync-loaded triggers an async mesh/texture load
 - Fixed: An issue in the navmesh baking that could cause wrongs borders being generated, another epsilon has been introduced on the 
MapNavMesh.ImportSettingscalledFixTrianglesOnEdgesHeightEpsilon, which is set to 0.05 as default - Fixed: The sleep detection when the flag IsAwakenedByForces is enabled in 2D and 3D simulation for the Legacy Gauss collision solver
 - Fixed: The sleep detection when the flag IsAwakenedByForces is enabled in 2D simulation for the collision solver Hybrid Jacobi and Legacy Gauss
 - Fixed: An issue that could cause flipped navmesh border normals around overlapping 3D navmesh parts
 - Fixed: Serialization issue in FrameMetaData that could cause a soft desync when expanding internal hash collections
 - Fixed: Possible desync on late-joins when switching a Map and disabling the Physics Engine system before it updates to the new Map
 - Fixed: An issue that could cause an exception inside the QuantumStats script after a plugin error during late-joining
 - Fixed: QuantumPrefabAssetImporter: long import times for projects with a large number of addressables
 - Fixed: 
ComponentSet.IsSubsetOfnot computing the returned value correctly - Fixed: An issue that caused 
Frame.GetPlayerData()to return valid data before theOnPlayerDatacallback was called and potentially causing a desync - Fixed: Issues that could cause the player input flags to be PlayerNotPresent during the OnPlayerDataSet() callback
 - Fixed: Heap Allocation Tracker giving a false positive when adding shapes to a Compound and expanding the buffer
 - Fixed: Issue in the 2D Polygon-Polygon overlap check that could cause DivisionByZero exceptions
 - Fixed: Issue in 2D and 3D Physics that could cause queries and colliders that were touching but not penetrating to be ignored
 - Fixed: Quantum Prefab assets initial import failing due to Resources not being yet accessible
 - Fixed: An issue on the server that was introduced recently which caused an exception when disconnecting while the simulation is starting
 - Fixed: Issues with broad-phase shape overlap and cast queries in case the internal query buffer had to expand, on the frame when that happened
 - Fixed: An issue on the server that would cause redundant snapshot requests when heavily using commands at that time
 - Fixed: An issue on the server that could cause player RPCs to be unreasonably delayed
 - Fixed: Potential NullReferenceException on 
MapData.DrawGizmosdue to math LUTs not being loaded - Fixed: An issue in pathfinding that caused the 
OnSearchFailedcallback to be only called for one agent, when multiple agent path seaches fail at the same tick - Fixed: Possible memory corruption when using the 2D or 3D Physics Legacy Gauss-Seidel solver
 - Fixed: An issue on the 
FPAnimationCurvePropertyDrawerthat ignored theWeightedModefor keys - Fixed: Issue in the volume computation of 3D boxes, which could affect the inertia tensor of dynamic bodies with compound-shape colliders that included box shapes
 
2.1.7
Stable
Build 1164 (Jun 14, 2023)
Changes
Map.StaticColliders3DTrianglesis now aSortedDictionaryinstead of aDictionary, so triangle sets are inserted already sorted by their mesh collider ID- Upgraded to Photon Realtime 
4.1.6.25(05. June 2023) 
Bug Fixes
- Fixed: An issue that could cause allocation-too-large exceptions when a large number of entities were destroyed or had components removed on a single frame
 - Fixed: An issue that could cause Instant Replays to be initialized with the current state of the colliders instead of the state they had when the frame copy was created
 - Fixed: An issue that broke the compilation of the 
UIRoom.csscript when creating a component namedPlayer. To apply the fix also importquantum_demo.unitypackage - Fixed: An issue on the plugin that sent outdated input to connecting clients when running a very low simulation time
 - Fixed: An issue on the plugin that could cause PlayerConnected signals to be missed on the clients when disconnecting and joining a new player at the exact same tick
 - Fixed: Serialization issue on QDictionary and QHashCollection (introduced on v2.1.6)
 - Fixed: Multi-object editing of 
EntityPrototypecomponents whenEntity Component Inspector Modeis set to a value different thanShow Mono Behaviours 
2.1.6
Stable
Build 1155 (May 11, 2023)
What's New
QuantumEditorSettings.MaxArraySizeForInspector- if an array's length exceeds the value (1000 by default), it will not be expandable in the Inspector- Memory allocation tracking tool for the Frame Heap, which can detect memory leaks and trace allocations. The tool can be enabled in the Simulation Config (Debug mode only, disabled by default)
 - Debug assertions to check if 2D and 3D Linecast queries have squared magnitude in the FP useable range, logging parameters if an overflow happens
 - Profiling samples when performing Frame copies (Host Profiler only)
 
Bug Fixes
- Fixed: Inaccuracies in the 3D EntityView rotation error computation that could cause jitter in the resultant view rotation values
 - Fixed: Issue in CCD collisions against 3D mesh colliders that would cause the body velocity to not be partially integrated up to the first time-of-impact
 - Fixed: 
QuantumPrefabAssetnot unloading properly - Fixed: Issue when enabling or disabling toggleable static colliders that could cause multiple colliders to be (en/dis)abled when modifying the state of one (bug introduced on v2.1.5)
 - Fixed: 
RNGSession.NextInclusive(FP, FP)resolution being always 16 bits - Fixed: Support for generic assets with 
unmanaged, Enumconstraints - Fixed: Multiple simultaneous calls loading the same Addressable asset ending up in exceptions
 - Fixed: Enforce Windows-style slashes in auto-generated nuget.config when code integration is used
 - Fixed: Physics OnExit trigger callback not being called if the entity had a trigger collider and the static was not trigger
 
2.1.5
Stable
Build 1144 (Mar 14, 2023)
What's New
UnityDB.FindAssetForInspector(string path)
Improvements
- Reduced the stack frame size used by the 3D box-box narrow collision check
 
Changes
- When baking 2D static edges, if the edge is degenerate (zero length), a warning will be logged and the edge will not be baked
 
Bug Fixes
- Fixed: 3D broad-phase shape cast API 
AddShapeCastQueryquery options parameter (optional) havingComputeDetailedInfoas default value instead ofHitAll - Fixed: Desync when resetting to a snapshot with disabled static colliders from a map that is different from the map initially loaded by the resyncing client
 - Fixed: Soft memory leak inside the Frame heap when allocating new QLists
 - Fixed: Resolve PluginDisconnect callbacks when using the MultiClient scripts
 - Fixed: Typo in 
Map.StaticColliders2Dand.StaticColliders3Dtooltips - Fixed: Debug assertion checks for null QBuffer Ptr fields
 - Fixed: Fixing obsolete warning when using Unity 2022
 
2.1.4
Stable
Build 1137 (Jan 25, 2023)
What's New
AssetObjectConfigAttribute.GenerateAsMainScript- setting to false will add ".Partial" suffix to the generated file and remove inheriting from the base class. User needs to provide their own script matching theAssetBasescript's nameEntityComponentConfigAttribute.GenerateAsMainScript- setting to false will add ".Partial" suffix to the generated file and remove inheriting from the base class. User needs to provide their own script matching theEntityComponentBasescript's name- Component type name to exception thrown from ComponentDataBuffer
 - Component type info to exception thrown from component block iterator
 QUANTUM_VSINTEGRATION_ENFORCE_RELEASE_CONFIGURATION- defining it while usingMergeWithVisualStudioSolutionoption will addReleaseconfiguration to the generated solution, if missingEndOfLineCharactersoption toquantum.codegen.host.exe.config: an ability to control EOL characters for the codegen. If unspecified, uses whateverTextWriter's default is. See documentation for details- QuantumCodeIntegration: ability to override paths to mono/dotnet with 
QUANTUM_CODE_INTEGRATION_MONO_PATHandQUANTUM_CODE_INTEGRATION_DOTNET_PATHenv variables 
Improvements
QuantumTaskRunnerJobsnow implementIDisposable, which is called when the Frame Context is disposed, preventing the task runner from holding references to the disposed session's delegates- Improved the accuracy of the inertia tensor of 2D and 3D physics bodies with compound shapes that only have a single primitive shape
 
Changes
- QuantumCodeIntegration: For MacOS and when .NET Core is in use, 
dotnetcommand line tool will be used to run Unity code generation 
Bug Fixes
- Fixed: 
AssetBasegenerated forSimulationConfigis now suffixed with ".Partial" to avoid name clashes in Unity 2022.2.x - Fixed: 
EntityComponentscripts for some built-in components are now merged intoAssetTypes.Partial.csto avoid name clashes in Unity 2022.2.x - Fixed: Missing serialization of component data buffers' pending removal count.
This issue could cause assertion exceptions in Debug and a desync in theFrame.ComponentCountif Commit Commands Mode is set toOnFrameSimulationBeginin the Simulation Config and Remove or Destroy commands were issued during the frame being serialized 
2.1.3
Stable
Build 1134 (Dec 19, 2022)
What's New
- API documentation module for culling-related methods and systems
 
Improvements
- Increased the maximum size supported for the total frame heap memory from 2GB to 4GB
 - A warning message is logged in Debug mode if allocating more than 2GB (previously would crash Unity) and an 
ArgumentOutOfRangeExceptionis thrown if attempting to allocate more than 4GB - Default 
CustomQuantumServernow wraps the session container servicing logic in a try-catch and destroys the container if an exception is thrown Transform3D.Rotatemethods now normalize the resultant quaternion by default, avoiding rounding towards zero over multiple operations. An optional parameter can be used to disable the normalization- Improved the API documentation of culling methods
 - Map's Physics World Size is now ensured to be in a valid range also when the asset is loaded and not only on the Editor
 - Assertion exception message when the 3D Physics tries to initialize an entry with zeroed quaternion as rotation now states the entity ref or the static collider index of the offending entry
 
Bug Fixes
- Fixed: Inability to edit layer 31 in 
SimulationConfigAsseteditor - Fixed: "Do not use ReadObjectThreaded on scene objects!" error when importing scenes (.unity) in any of 
AssetSearchPathslocations - Fixed: Unity crash due to size overflow in allocator when trying to allocate or clear more than 
int.MaxValuebytes (usually when trying to allocate a very large number of frame heaps) - Fixed: Serialization issue on collision info structure used to track OnEnter/OnExit physics callbacks, which could cause desyncs
 - Fixed: An issue that caused the 
NavMeshAvoidanceObstaclevelocity not to be recognized for avoidance calculations in some cases - Fixed: Assertion exception in the 2D and 3D physics when initializing the simulation with disabled 
AllowCCDand enabling it in runtime - Fixed: An issue on 
QuantumRunnerthat caused it to not be accessible byShutdownAll()after getting disconnected by the plugin (e.g. Snapshot request timed out). Removing the runner from the static registry was moved from Dispose() to OnDisable(). This changed the runner shutdown handling slightly and can be disabled by addingQUANTUM_DISABLE_RUNNER_FIXto the Unity scripting defines (to all required platforms) - Fixed: An issue that caused the runner to shutdow twice when stopping a 
QuantumInstantReplayDemo - Fixed: An issue that caused a NullReferenceException when updating a destroyed session
 
2.1.2
Stable
Build 1129 (Nov 01, 2022)
- Upgraded the version of Photon Realtime shipped with the Quantum SDK to 4.1.6.18f2 (23. September 2022 - rev6505)
 
What's New
RingBufferInputProvider, an Input Provider that reuses a fixed number of input sets to feed inputs to a simulation. Used by default in the custom Quantum plugin sampleQuantumGameFlagthat can disable interpolatable states in the simulation, reducing memory allocation and frame copies when there is no use for interpolation (e.g. Spectator and Replay console runners and Server simulations)- 2D and 3D Physics Bodies 
MassInverseproperties, a way to access and modify the value directly as it is stored on the component (inverse mass) 
Improvements
- The distribution of generated hash codes when a large number of 
GetHashCodemethods must be code-generated - Reduced the allocation of frame heaps when the game mode does not need to allocate all frames instances (e.g. Replay, Server sim and console applications)
 
Changes
- On Unity 2019 and newer, Quantum modules are no longer toggled in the Quantum Editor Settings, but are now defined in the 
PhotonQuantumandPhotonQuantumEditorassembly definitions.
If these asmdefs are removed from the project, the following modules must be explicitly added to the Project Settings in order to be used:QUANTUM_ENABLE_PHYSICS2D,QUANTUM_ENABLE_PHYSICS3D,QUANTUM_ENABLE_AIandQUANTUM_ENABLE_TERRAIN - Unity 2018 - Addressables packages references are not automatically added when toggling 
QUANTUM_ADDRESSABLESdefine 
Bug Fixes
- Fixed: Code-gen issue that could cause an 
IndexOutOfRangeExceptionif a large enough number ofGetHashCodeinstances were emitted - Fixed: Issue in the 2D and 3D Physics engines when creating physics entries for a compound shape and the entries buffer had to be expanded, which could cause an access to memory that had already been disposed
 - Fixed: Custom plugin sample not including the server flag in the game flags, which could cause server-only events to not be raised on the server simulation
 - Fixed: Missing 
Photon.Deterministic.DeterministicLog.InitForConsole()calls in the default console runners and session containers - Fixed: 
EntityViewUpdaternot performing smooth prediction error correction inSpectatormode (rarely necessary) and wrongly performing this correction if the simulation was forced to run in Lockstep - Fixed: An issue in the 2D and 3D KCC clamping of 
MaxSpeedif the currentVelocityis in the opposite direction of the intended movement - Fixed: 
TooltipAttributebeing ignored forFPAnimationCurvefields - Fixed: Quantum shortcut Unity window error message spamming
 
2.1.1
Stable
Build 1122 (Sep 26, 2022)
What's New
- Added 
USER_CODE.txtfiles to highlight directories inside the Quantum Unity scripts hierarchy that can be used for user generated code that has to be inside the Quantum assembly definition (partial asset classes for example) - Inspector tooltips on 
EntityViewprediction error correction settings 
Changes
- PhotonQuantum.asmdef and PhotonQuantumEditor.asmdef now auto-detect the presence of Addressables and core modules for Unity 2019.1 and newer. Older version still need to use the toggles in 
QuantumEditorSettingsand global defines 
Bug Fixes
- Fixed: Prototype/View assets of a new prefab not being referenceable without AssetDB refresh
 - Fixed: "Unreachable code detected" warning when physics modules are disabled
 - Fixed: 2D Quantum static polygon colliders marked to be baked as static edges now also have their gizmos drawn as static edges
 - Fixed: Potential 
DivideByZeroExceptionon 2D Physics' Circle-Edge narrow check if the edge extent is small enough but not zero - Fixed: Static physics callbacks only being called if both the respective static and dynamic callback flags were set
 
2.1.0
Breaking Changes
- Unity: Editor code has been refactored and, to simplify future updates, some files have been merged. That means that any changes made to the editor code will need to be reapplied, if necessary. That said, extending inspector and handling Quantum attributes is much simpler now and can be done with PropertyDrawers (check LayerAttributeDrawer or RangeAttributeDrawer).
 - Unity: Quantum scripts are now contained in 
PhotonQuantumandPhotonQuantumEditorassemblies using Assembly Definitions. This allows you to use Quantum in custom and test assemblies, but forces a different approach when it comes to extending Quantum itself: all partial classes need to be a part ofPhotonQuantumassembly, types from global assembly can't be used andAssembly Definitions Referenceslist needs to be updated to access types defined in other assemblies. If the transition proves problematic, removingPhotonQuantum.asdefandPhotonQuantumEditor.asmdefwill make Quantum global again. Note that the new assemblies have a missing reference toPhotonQuantumCode- this is a placeholder in case you go for full code integration (explained later on) and should not cause any issues. - Unity: Changed generated Editor scripts location to 
quantum_unity/Assets/Photon/Quantum/Editor/Generated. Old scripts (located inquantum_unity/Assets/Photon/Quantum/Generated) need to be removed by hand. - Unity: 
QuantumInstantReplayhas been reworked and simplified. If your code depends on the old implementation, useQuantum.Legacy.QuantumInstantReplayinstead. - Unity: 
MapandNavMeshassets no longer create extra binary files to be loaded withIFileLoader. They useBinaryDataassets instead. Rebake all your maps withQuantum/All ScenesorQuantum/All Enabled Scenes. Old binary files will be removed in the process. - Unity: Removed 
QuantumEvent/QuantumCallback.SubscribeparameterexcludeGameMode. UsegameModeandexcludeparameters instead. AssignEntityRefsprototype materialization phase has been removed.EntityReffields are now resolved during theMaterializestage. This means that any changes toEntityReffields performed inISignalOnComponentAddedsignal or inMaterializeUserpartial method will no longer be overwritten. Remember that just like before, in case of map prototypes querying other entities' components is only safe after all prototypes have been materialized (ISignalOnEntityPrototypeMaterialized).- DrawIfAttribute now uses enum value instead of enum index, if it points to an enum property.
 - The navmesh binary data format has changed (pre-calculation of triangle normals for projection): Re-bake all your navmeshes.
 - The navmesh binary data file has been converted into a Quantum asset (
BinaryDataAsset): Relink the new asset files in your debugMapNavMeshDebugDrawerinstances (if you have any) and remove any leftover navmesh .bytes files from your project. - Removed the pathfinder radius feature: Different agent radii are nice but they were taking a lot of extra effort and in the end caused more trouble than we saw potential gain. It is still possible to achieve a similar effect by creating different navmeshes for different radii. This is also a much cleaner solution as it closes paths for bigger agents entirely, which was not possible with the radius feature before. Caveat: the avoidance radius needs to be set explicitly now because it does not have the Radius parameter to fall back to: Consider noting down the Radius values in this case before the upgrade or retrieve from a source control diff afterwards.
 - Navigation agents that are starting off the navmesh (due to a disabled region for example) are teleported to a valid (closest) position inside the navmesh when they begin their path. Previously they were trying to get out of the non-navmesh zone gracefully, but that was not possible all the time.
 - Some Navigation API changes will result in compilation errors and unfortunately need to be fixed by hand while other API changes are marked in code by the 
Obsoleteattribute. - The new Realtime version restricts access to the auth token. As a guideline reconnecting after losing the connection object should always pass through the nameserver again.
 - The 
SessionContainerclass has been refactored and will showobsoletewarnings. Use the class from theQuantum.Legacynamespace if you are unable to adapt the changes. This change also reflects in the custom server plugin package, checkout the newest version to see how to set up the session container. - We upgraded Photon Realtime used by the client to version 4.1.5.1. The new Realtime version restricts access to the auth token. As a guideline reconnecting after losing the connection object should always pass through the nameserver again.
 - We upgraded the 
PhotonHivePlugin.dllused by the Quantum plugin to version 1.1.0.24499. For Quantum Cloud customers nothing changes but Enterprise customers that want to run this new version need to upgrade their private cloud to Photon Server v5 RC1 (https://doc.photonengine.com/en-us/server/current/plugins/plugins-whats-new#plugins_api_version_upgrade). 
C#
NavMeshPathfinder {
    // OLD
    public FPVector2 Target
    public FPVector2 InternalTarget
    public FPVector2 GetWaypoint(FrameBase f, int index) { }
    public void SetTarget(FrameBase f, FPVector2 target, NavMesh navMesh) { }
    // NEW
    public FPVector3 Target
    public FPVector3 InternalTarget
    public FPVector3 GetWaypoint(FrameBase f, int index) { }
    public void SetTarget(FrameBase f, FPVector3 target, NavMesh navMesh) { }
}
OnNavMeshWaypointReached changed the waypoint parameter type from FPVector2 to FPVector3 inside the callback signature
What's New
- Shape Casts (Regular and Broadphase Queries)
 - Inertia Tensors for 3D Physics Bodies
 - New Collision Solvers: improved performance and parallelism
 - Physics Colliders now have an 
Enabledproperty, so that disabling a collider does not need to incur in removing the component anymore. - We added proper 3D support for NavMeshes: When using a Transform3D component the navmesh agents will be able to fully move inside the 3D navigation mesh under and over bridges for example. The input target position is passed in 3D and will be projected onto the closest navmesh triangle vertically-wise.
The navigation agent will move on the navmesh by default. But for better visual results there should be static Quantum colliders that the agent can use to vertically position itself on. The heightmap, which is generated alongside the Unity navmesh, can not be utilized (access is not exposed). - Room spectating support: the simulation can be joined with 0 local players to implement spectating clients that cannot influence the simulation
 - Quantum Asset Database can optionally be baked into quantum.code.dll to simplify custom server deployment. Export the AssetDB from Unity to 
quantum_code/quantum.code/db.json. The custom plugin project will prioritize loading from disk first and upon failing to find the db file will try to load internal one. - The multi client test runner similar to the DebugRunner can load multiple online clients into a scene controlled by one Unity Editor (
QuantumMutliClientRunner) - Dynamic assets can now be searched by a path. Variants of 
Frame/FrameThreadSafe.FindAssetaccepting a path now have an additional parameter:DatabaseType. Dynamic asset's path needs to be unique only among other dynamic assets. - Unity: Quantum State Inspector has been completely reworked. The look & feel is now much closer to Unity Hierarchy and Inspector windows. In addition to entities and globals you can now inspect session settings and dynamic assets. Entities and components can now be added and removed from within the inspector, provided 
quantum.codehas been built inDebugmode. - Native Strings 
QString<N>andQStringUtf8<N>DSL types withNbeing the total size in bytes minus 2 bytes used for bookkeeping, e.g.QString<64>will use 64 bytes for a string with a max byte length of 62 bytes (up to 31 UTF-16 characters) - DSL: 
client&serverevent keywords added. Events marked withclientare culled immediately when simulation is running as a server plug-in. Marking withserverhas the opposite effect. - DSL: 
FreeOnComponentRemovedattribute: a way to auto-free lists and dictionaries. Decorating a field with it will emit clean up code that gets ivoked when component gets removed, afterISignalOnComponentRemoved. If used on a struct's field, then the code will be emit and invoked for all components that use the struct. Frame/FrameThreadBase.TryFindAsset- a way to look for an optional asset without polluting output logs with missing assets errorsquantum.codeproject source files can now be entirely moved to the Unity project. Readtools/codeintegration_unity/README.mdfor details.BinaryData: an asset hosting binary data with a support for lazy decompression.- Math: 
FPMath.SinCos(much faster than callingFPMath.Sinand thenFPMath.Cos). - Math: Logarithms (
FPMath.Log2,FPMath.Log10,FPMath.Ln,FPMath.Log,FPMath.Log2FloorToIntandFPMath.Log2CeilingToInt). - Prototypes: Inspector support for dictionaries.
 AssetGuid.TryParseEntityRef.TryParseRNGSession.NextInclusiveandRNGSession.Peek.FrameContextUser.ConstructUserandFrameContextUser.DisposeUserpartial methods.Frame.Serializeoverload that takes an external byte array to avoid majority of internal allocsDeterministicSession.MaxVerifiedTicksPerUpdate- a way to limit how many verified simulations are allowed to happen in a singleUpdate.JsonAssetSerializerBase,QuantumJsonSerializerandQuantumUnityJsonSerializerauto-compression ofBinaryData(CompressBinaryDataOnSerializationThresholdandDecompressBinaryDataOnDeserializationproperties)- Unity: 
BinaryDataAsset: a wrapper for BinaryData assets. Supports compression and can point to a TextAsset as their data source. - Unity: 
QuantumMapDataBakeFlags:BakeMapPrototypesandBakeMapCollidersflags can be used to enable/disable baking of prototypes/colliders to speed up the auto-bake process. - Unity: 
QuantumEvent/Callback: an optionalDispatchableFilterargument toSubscribeManual - Unity: 
QuantumEvent/Callback: an optionalonlyIfEntityViewBoundargument toSubscribe(makes sure the handler will only be invoked ifEntityViewon the listener hasEntityRefassigned.GetComponentInParentis used to get theEntityViewinstance) - Added 
PositionOffsetandRotationOffsetto most of the Quantum static collider scripts (these offsets are baked into the map) - Added support for the 
Inspector.Reorderableattribute inside partial AssetObject implementations to display arrays as reorderable lists in the Unity inspector - Added an Asset Database Windows toggle inside Quantum shortcuts
 - New inspector attributes: DisplayName, ReadOnly, Range, ComponentTypeName
 - XML API documentation files alongside core and PhotonDeterministic dlls (assemblies folder). If you don't want them to be copied into the Unity Quantum assemblies folder add this line to each configuration property group (debug, release) in your quantum.code.csproj 
<AllowedReferenceRelatedFileExtensions>.pdb</AllowedReferenceRelatedFileExtensions> - Quantum Spectator project showcases a way to run the Quantum simulation online with Unity.
 
Changes
- Unity: CustomEditorsHelper has been deprecated, use QuantumEditorGUI instead.
 - Math: 
FP.Sqrt,FPVector3.NormalizeandFPVector2.Normalizespeed up and precision increased - Physics: First-hit-only Raycasts' performance improvements
 - Synced events are culled immediately when a frame is predicted
 quantum.codegen.unitynow checks if a file needs an update instead of overwriting it each time- Unity: Addressables can now be enabled for all platforms only (in 
QuantumEditorSettings) - Unity: prototypes' lists and dictionares fields that have not been decorated with 
FreeOnComponentRemovedare decorated with a reminder that they need to be freed manually. - Removed 
IFileLoaderand all its implementations AssetGuid.ToString()format changed to 16 digit hexadecimal number in brackets, e.g.[0012345789ABCDEF]EntityRef.ToString()format changed toE.IIIII.VVVformat (I - index, V - version), e.g.E.00123.001FPSinCos.bytesreplaced bothFPSin.bytesandFPCos.bytes; since Unity packages can't handle file removal,FPSin.bytesandFPCos.bytesare now 0-sized and can be safely removed- Removed 
PROFILER_REPORTdefine constant from thequantum.codeproject (QUANTUM_REMOTE_PROFILERon Unity's side remains) - Unity: Scene loading has been reworked and is now controlled with 
SimulationConfig.AutoLoadSceneFromMapenum.UnloadPreviousSceneThenLoadis the new default. TheLegacyway of loading scenes can still be selected but due to bugs it is discouraged. - Unity: We added a new menu item 
Export Asset DBand kept the old way of exporting asExport Asset DB (Through UnityDB). The new export will properly locate all assets files using the same process as the Asset Resource object generation instead of locating the files through the UnityDB. - Unity: AssetBase has a new virtual member: 
PrepareAsset()which is called fromLoaded(). The code from the Loaded method inEntityPrototypeAssetandMapAssethave been moved toPrepareAsset()because the latter is required to be called when exporting the Asset DB. Make sure to move your code into PrepareAsset() when you use the exported Asset DB. - Renamed FixedArrayAttribute to ArrayLengthAttribute
 ComponentTypeSelector.QualifiedNameandComponentTypeSetSelector.QualifiedNamesstill work, but have been made obsolete. Use ComponentTypeName/ComponentTypeNames instead.JsonAssetSerializeBaseuses Assembly Qualified Names only for user assets defined outside ofquantum.code; for all other assets it usesType.FullName. This change is backwards-compatible.
Changes In Navigation
Improved quality and performance by updating the pivot point calculation for path-finding through triangles when Path Quality is set to
GoodorBest(toggle onDrawPathfinderRawPathin Editor Settings to observe)Under some conditions it is preferable for avoidance agents to be able to reduce their speed to convey a more natural avoidance behavior. Of course, this is not advisable for most player controlled units and can be opted in inside NavMeshAgentConfig
The navmesh cost (weights) set under Unity Navigation Areas is exported and used by Quantum regions for heuristic calculations: check out
Costin theMapNavMeshRegionscriptNavMeshAgentConfig
- Removed 
Radius(not used anymore) - Removed 
ClampAgentToNavmeshRadiusThreshold(not needed anymore) - Renamed 
FindValidTargetCellRange(integer) intoAutomaticTargetCorrectionRadius(FP) for hopefully more clarity. Convert by finding out how one navmesh cell width translates to absolute distance. - Added 
AvoidanceCanReduceSpeedtoggle (default is off) - Added 
VerticalPositioningselection to the steering section 
- Removed 
 SimulationConfig.Navigation
- Added 
HeightThresholdForAvoidanceto filter out agents that are too far from each other (only required for 3D navigation) - Added 
HeightThresholdForWaypointsto support waypoint detection on different vertical layers (only required for 3D navigation) 
- Added 
 API
Old method signatures have been markedObsolete. Please update them.Navigation/PathFinder.FindPath()- Removed 
minDistanceToBorderparameter - Changed Int32 
findValidTargetCellRangeto FPautomaticTargetCorrection - Now returns a 
FindPathResultsobject which gives more information about what went wrong (see below) or uponSuccessgives access to the calucalted path: 
C#
public struct FindPathResult { public enum Code { Success, InvalidStartPosition, InvalidEndPosition, NoPathFound } public Code Result; public FPVector3 CorrectedStartPosition; public FPVector3 CorrectedEndPosition; public int PathSize { get }; public PathVertex[] Path { get }; }- Removed 
 Navigation/NavMesh.LineOfSight()- Requires 
FPVector3inputs - We changed the algorithm to use navmesh triangle funnelling instead of raycasting the borders, which conveniently also works for 3D and is faster.
 Raycast2D()(new method) is the formerLineOfSight()implementation which is practically a raycast against the navmesh borders. This only works in 2D!
- Requires 
 NavMeshMovePositionIntoNavmesh()removedagentRadiusand removedradiusThresholdFindTriangle()renamed method toFindTriangle2D()FindClosestTriangle()has been completely changed to support 3D:
C#
bool FindClosestTriangle(FPVector3 sourcePosition, FP radius, NavMeshRegionMask regionMask, out Int32 triangle, out FPVector3 correctedPosition, MailboxSet8 mailbox = null)- (new) 
NavMesh.GetHeightAtTriangleRaw()use this to project the y-position onto a 3D triangle, the method expects that the 2D projection of the point is inside the 2D projection of the triangle. - (new) 
NavMesh.FindRandomPointOnTriangle()use this for an excellent randomization of a point inside one triangle. 
Removed
- Removed the obsolete quantum.systems project (since 2.0) from the quantum_code solution
 - Removed the 
docsfolder and the quickstart guide while moving the API doc file into the root folder of the SDK, please refer to the online docs for starting guides - Removed the unnecessary 
PROFILER_REPORTdefine constant from the quantum.code project (QUANTUM_REMOTE_PROFILER on Unity's side remains) - Removed 
DebugGizmoSizefrom Navigation.Constants, the scaling is smartly matching the agent sizes 
Bug Fixes
- Replays now work for late-joiners
 FixedArray<T>contents are used when calculating hash codes of owner structs (instead of just the pointer)- Fixed the UI rendering of the Quantum shortcuts to better accommodate a wider layout
 - Fixed the debug rendering of inactive navmesh region borders
 
Shape Casts Details
2D and 3D Shape Casts are now available as Regular and Broad-phase queries for all dynamic shapes supported. Internally, a custom GJK-based algorithm is used and new settings are available in the Physics.GJKConfig section in the Simulation Config. The new settings are intended to allow a trade-off between accuracy and performance, with the default values being a balanced compromise for regularly sized shapes:
Simplex Min/Max Bit Shift: Allows better precision for points in the Voronoy Simplex by progressively shifting their raw values, avoiding degenerate cases without compromising the valid range of positions in the Physics space. Consider increasing the values if the scale of the shapes involved and/or the distance between them is very small.
Shape Cast Max Iterations: The max number of iterations performed by the algorithm while searching for a solution below the hard tolerance. Increasing it might result in more accurate results, at the cost of performance in worst-case scenarios, and vice-versa.
Shape Cast Hard Tolerance: An iteration result (closest distance between the shapes) below this threshold is acceptable as a finishing condition. Decreasing it might result in more accurate results, at the cost of more iterations, and vice-versa.
Shape Cast Soft Tolerance: A shape cast resolution that fails to find an acceptable result below the defined Hard Tolerance within the Max Iterations allowed will still return positive if the best result found so far is below this soft threshold. In these cases, increasing this threshold enhances the probability of false-positives, while decreasing it enhances false-negatives.
F1
Build 1116 (Sep 14, 2022)
- Marking 2.1.0 final
 
RC2N
Build 1115 (Sep 13, 2022)
What's New
- Asset create shortcut to create a 
3D>Character Controller Entity 
Build 1112 (Sep 08, 2022)
Improvements
- When playing on Editor, 2D Joints gizmos are now drawn by polling the frame state, similarly to how it is done for other components
 
Bug Fixes
- Fixed: An issue with the construction of islands in the 3D Physics Engine when using joints (introduced on build 1097)
 
Build 1111 (Sep 07, 2022)
Changes
QuantumRunnerLocalDebugnow hides theSave and ReloadGUI button by default (toggleDisplaySaveAndReloadButtonto change)
Bug Fixes
- Fixed: The bake flag 
QuantumMapDataBakeFlags.ClearUnityNavMeshnow actually clears the global navmesh (when NavmeshSurfaces are not used) after the baking - Fixed: "namespace modification was detected" warning for 
QuantumCustomEditors.cs 
Build 1110 (Sep 05, 2022)
What's New
OnReleasedoverridable method to all Quantum Events, called when the event instance is released to its internal pool- The AssetDBInspector window got a search field (search for guid and filename) and improved its gui performance
 
Changes
- The client now sends non-reliable messages as 
Unsequencedwhich will slightly reduce the bandwith and improve the network performance 
Build 1109 (Sep 02, 2022)
Bug Fixes
- Fixed: An issue in the navigation introduced with build 1100 that affected 
SetTarget()withAutomaticTargetCorrectiondisabled. For 3D always enableAutomaticTargetCorrection 
Build 1108 (Sep 01, 2022)
What's New
- Added feedback on the inspector when default Unity navmesh areas are selected for Quantum Region conversion
 
Bug Fixes
- Fixed: "Failed To Load Script Object" message in the inspector for qprefabs
 
Build 1105 (Aug 30, 2022)
Bug Fixes
- Fixed: Mismatched enum backing type
 - Fixed: Using imported types as dictionary keys
 
Build 1104 (Aug 30, 2022)
What's New
- Alternative, on the Map asset, to serialize the static triangles metadata or to compute it during deserialization
 
Bug Fixes
- Fixed: Quantum codegen tool parameter usage for the 
codeintegration_unity(introduced in build 1102) 
Build 1103 (Aug 26, 2022)
What's New
- 2D and 3D trigger callbacks can now be ignored through the 
IgnoreTriggerproperty in the callback info 
Bug Fixes
- Fixed: Physics OnExit callbacks being called even if all collisions were ignored
 
Build 1102 (Aug 25, 2022)
What's New
- In Debug mode, the Quantum simulator now raises a warning when resetting the frame state to one whose number is smaller than the rollback window
 - Overloads to 
Photon.Deterministic.Log.Info,.WarnandErrormethods that explicitly accept 1-3 arguments and can avoid the implict allocation of arguments' array - Quantum codegen tools now support 
--helpcommand to list their usage and--version 
Build 1101 (Aug 24, 2022)
What's New
- Frame 
IsCullablemethod to check if an entity can be culled during predictions if out of a defined prediction area 
Changes
FrameContext.InPredictionAreais now marked asvirtualand can be overriden with a custom implementationSchedulemethod overrides on built-in multi-threaded systems are no longer marked as sealed
Build 1100 (Aug 22, 2022)
Bug Fixes
- Fixed: Changed 
Navmesh.FindClosestTriangle()to always prefer triangles that fit the x,z position while inside the providedradius. The fixes issues where agents get displaced on a 3D navmesh when starting a path. IfautomaticTargetCorrectionis set tofalseno correction is attempted anymore., which not recommended for 3D navmeshes 
Build 1099 (Aug 22, 2022)
Bug Fixes
- Fixed: Static colliders' 
Settingsfield being null afterAddComponent 
Build 1097 (Aug 18, 2022)
Bug Fixes
- Fixed: An issue on physics callbacks of CCD collisions where ignoring the first non-trigger collision would not allow subsequent ones to have their callbacks called
 - Fixed: QuantumJsonSerializer not recognizing NaN values for float and double fixed-size buffers
 
Build 1096 (Aug 17, 2022)
What's New
- Float and double fixed-sized buffers support for QuantumJsonSerializer
 
Bug Fixes
- Fixed: An issue that could cause an 
AssertExceptioninside theAvoidanceBroadphasewhen using world positions > 500 
Build 1095 (Aug 16, 2022)
What's New
Log.Info,.Warnand.Erroroverloads that accept a string format and an explicit number of parameters (1-3) and avoid implicit array allocations
Changes
- The physics engines will now ignore and log a warning in Debug mode when an entity's physics collider has a 
Noneshape 
Bug Fixes
- Fixed: Local simulation (offline) stalling if feeding the simulator with a delta-time greater than rollback-window (usually triggered when using 
DefaultasSimulationConfig.DeltaTimeType) - Fixed: An issue that could cause errors on the navigation broadphase when 
AvoidanceRangeswere 0 or less 
Build 1094 (Aug 15, 2022)
What's New
- Navmesh support for 
Transform2DVertical 
Build 1093 (Aug 12, 2022)
Bug Fixes
- Fixed: Fixing an issue with the navmesh agent using 
VerticalPositioning.Physicsthat caused the raycast always start with height 1 and now uses the navmeshMinAgentRadius 
Build 1092 (Aug 11, 2022)
Bug Fixes
- Fixed: An issue with 3D navmesh agents using 
MovementType.TransformandVerticalPositioning.None, where the y value of the agent position was occationally modified - Fixed: Correctly clear manually baked navmesh surfaces during BakeAll to avoid Unity namesh asset file duplications
 
Build 1091 (Aug 10, 2022)
Improvements
- Reduced the upwards bandwidth usage on Quantum clients
 
Build 1089 (Aug 09, 2022)
What's New
QuantumEditorSettings.ColliderGizmosStyle,StaticColliderGizmoStyleandJointGizmosStyle
Changes
GizmoUtils.Draw()methods do not change the color alpha anymore,selectedwill add a brightness highlight effect instead which is configurable byQuantumEditorSettings.GizmoSelectedBrightness- Meaning of 
DeterministicSimulator.FramesPredictedchanged from "How much is prediction ahead of verified state" to "How many predictd frames were simulated in last Unity update" - Circle gizmos no longer displays wireframe
 
Bug Fixes
- Fixed: Interpolation jitter when simulation IsStalling = true
 - Fixed: IsStalling flag now correctly returns true when simulation is stalling
 
Build 1088 (Aug 08, 2022)
What's New
- The 2D and 3D physics solvers from v2.0 can now be used instead of the new solvers introduced on v2.1 by selecting 
Legacy Gauss Seidelin theSimulationConfig.SolverType QuantumEditorSettings.DrawColliderGizmos- a way to enable/disable gizmos for Quantum colliders- FrameDiffer now displays the Photon nickname of each diff origin
 
Bug Fixes
- Fixed: 
QuantumFrameDiffernot attaching to CallbackChecksumErrorFrameDump callback in the Editor 
Build 1087 (Aug 05, 2022)
Bug Fixes
- Fixed: Issue in the 2D Physics collision solver that could cause miscomputations in the friction impulses applied during the collision resolution
 
Build 1086 (Aug 04, 2022)
Bug Fixes
- Fixed: 2D and 3D Physics Joints serialization, which could cause desyncs when late-joining using a snapshot
 
Build 1085 (Aug 03, 2022)
Bug Fixes
- Fixed: An issue that could cause static meshes to be baked with inverted normals if the world scale of the GameObject that holds the component has negative scale in an even number of axes
 
Build 1084 (Aug 01, 2022)
What's New
FPVector3.UseableMinand.UseableMax; andFPVector2.MinValue,.MaxValue,.UseableMinand.UseableMax
Changes
QHashSetrequested capacity on allocation is now automatically rounded up to the next prime number. This prevents issues with invalid capacities (<= 0) and improves hash distribution
Build 1083 (Jul 26, 2022)
Bug Fixes
- Fixed: Not working interpolation of Transform2DVertical
 
Build 1082 (Jul 23, 2022)
Bug Fixes
- Fixed: Issue in the 3D Hinge Joint that could cause the hinge axis constraints to not be correctly solved in some conditions, causing the hinge to slowly deviate from its anchor axis
 
Build 1081 (Jul 22, 2022)
Bug Fixes
- Fixed: Race condition in the 2D and 3D Physics Engines when having dynamic bodies with compound shapes and running the simulation in multiple threads, which could also cause desyncs
 - Fixed: Code-generated extention method for DSL flags enum 
HasFlagis now namedIsFlagSet, preventing a fallback toSystem.Enum.HasFlaginstead of the extension method, which should be used to prevent the generation of boxing allocation - Fixed: Missing 
using UnityEnginestatement onQuantumUtils.cswhen using Unity 2019.2 or newer 
Build 1080 (Jul 20, 2022)
What's New
EnterPlayModeOptionsHandlereditor script - clears static fields upon entering Play Mode (Unity 2019.2+)- Support for 
Reload Domainbeing turned off inEnter Play Mode Options 
Removed
QuantumRunner.ClearSimulationStatics
Bug Fixes
- Fixed: Scene not being activated after being loaded in some cases
 - Fixed: Bug introduced on build RC2N 1076 that could cause temporary mismatch in the component counts and assert exceptions in Debug mode when committing remove-component or destroy-entity commands
 
Build 1078 (Jul 19, 2022)
Changes
- By default, 
Frame.ComponentCountoverloads now do not include entries with pending removal, i.e. removing a component or destroying an entity now have an immediate effect over the component count 
Build 1075 (Jul 14, 2022)
Bug Fixes
- Fixed: Compilation errors when activating the 
DISABLE_QUANTUM_ASSET_INSPECTORdefine and introducing a new name for it:QUANTUM_DISABLE_ASSET_EDITORS(the old name will be removed in a later version) 
Build 1074 (Jul 13, 2022)
Changes
- Updated the xml docs NavMeshSignals
 
Build 1073 (Jul 13, 2022)
What's New
ColorRGBAproperty drawer
Bug Fixes
- Fixed: Navmesh related bug introcuded by last build (1072)
 
Build 1072 (Jul 12, 2022)
Changes
- Marking 
ColorRGBAstruct [Serializable] to be editable in the Unity inspector 
Bug Fixes
- Fixed: OnEnabled being called on nested systems when disabling parent
 
Build 1071 (Jul 11, 2022)
Bug Fixes
- Fixed: A couple of 
string.Format()allocation in debug quantum.code.dll - Fixed: An issue with Navmesh Link baking while using 
Quantum_XY 
Build 1070 (Jul 07, 2022)
Changes
- New 2D and 3D KCC config asset instances created will now have the same settings as the respective default configs
 - Default 
QuantumTaskRunnerJobsnow has theSchedulemethod marked as virtual, so custom extensions can be more easily created 
Bug Fixes
- Fixed: Issue in the 2D and 3D physics engines that could corrupt pointers internally when having colliders with compound shapes and expanding the physics entries buffer
 
Build 1069 (Jul 06, 2022)
What's New
QuantumRunner.ClearSimulationStatics- clears all static variables on the simulation side. This is intended to be used when addressing Domain Reloading issues
Bug Fixes
- Fixed: 
DebugSystem._commandExecutednot being defined in Release - Fixed: An issues that could cause Navmesh agents using default KCC3D and traversing a link to have problems detecting the link end waypoint
 
Build 1068 (Jul 05, 2022)
Bug Fixes
- Fixed: QString printers being stripped from iOS and Android builds
 
Build 1067 (Jul 01, 2022)
Bug Fixes
- Fixed: Removed drawn sphere and ray by the 3D KCC in Debug mode that could not be disabled
 
Build 1066 (Jun 30, 2022)
Bug Fixes
- Fixed: Inconsistent line endings for Unity scripts (QuantumProfilingClient.cs, QuantumRunner.cs, UIMains.cs)
 
Build 1064 (Jun 28, 2022)
Changes
- Moved the 
CreateAssetMenuentries of navmesh related scripts to Quantum>Navigation 
Build 1063 (Jun 27, 2022)
What's New
- 2D and 3D KCC 
SetConfigmethods, which can be used to change the KCC config without resetting other fields' values like done onInit 
Changes
- DumpFlag_PrintRawValues dump flag also makes collections print raw pointer values
 
Bug Fixes
- Fixed: An AOT compiler issue that caused a 
ExecutionEngineExceptionduring desync error dumps (QBoolean was stripped) 
Build 1061 (Jun 23, 2022)
Bug Fixes
- Fixed: Handle exceptions on protocol messages gracefully by calling the 
OnPluginDisconnectcallback and destroying the session 
Build 1060 (Jun 22, 2022)
Improvements
- 2D and 3D KCC de-penetration algorithm, preventing overshoots in certain conditions and range of contact angles
 
Bug Fixes
- Fixed: MacOS build freezing when quitting app
 - Fixed: An issue in the navmesh baking that could cause an 
IndexOutOfRangeExceptionduringGenerateTriangleGrid()when triangle vertices are located exactly on the grid edge 
Build 1059 (Jun 21, 2022)
Changes
QuantumEditorSettingstogglesUse XY As 2D PlaneandDisable Modules ...now affect all platforms instead of only the current one
Build 1058 (Jun 20, 2022)
What's New
- Inspector tooltips for 
Mapasset properties 
Build 1057 (Jun 17, 2022)
Changes
- WebGL builds are now forced to run in single-thread, regardless of the Thread Count in the Simulation Config. Clients in other platforms can still run the simulation in multiple threads and cross-play with WebGL clients
 
Build 1056 (Jun 17, 2022)
Bug Fixes
- Fixed: 2D and 3D Physics engines now always reset force and torque on physics bodies, even when they are sleeping, preventing accumulation when 
IsAwakenbyForcesis disabled on the body configs - Fixed: Backslash in string giving error CS1009 on 
LoadbalancingPeer.cswhen WebGL is the target platform 
Build 1053 (Jun 15, 2022)
- Upgraded the version of Photon Realtime shipped with the Quantum SDK to 4.1.6.14
 - Updates to 
quantum.console.runnerandquantum.console.spectatorprojects are not included inupgrade/quantum_code.zip. In order for existing projects to benefit from recent fixes toQuantumJsonSerializerenableAllow unsafe codeand copyQuantumJsonSerializer.csfrom SDK'squantum_code/quantum.console.runnerandquantum_code/quantum.console.spectator 
Bug Fixes
- Fixed: QuantumJsonSerializer in spectator and custom plugin not handling fixed buffers of booleans/chars
 
Build 1052 (Jun 13, 2022)
Bug Fixes
- Fixed: Removed extra empty line in 
CodeGen.csbefore namespace when generating code on Mac - Fixed: 
NavMesh.DataAssetis not disposed after loading the data if the asset is dynamic 
Build 1047 (Jun 01, 2022)
What's New
- Package.json for PhotonRealtime, allowing to move PhotonRealtime out of assets and into a local package
 
Bug Fixes
- Fixed: An issue when performing 3D CCD that could cause triangles in a static mesh to not be checked against
 - Fixed: Added missing profiler define 
QUANTUM_PROFILER_ENABLEDto Debug and ReleaseProfiler configuration to be able to use the Quantum Task Profiler from the code project 
Build 1045 (May 30, 2022)
What's New
- A 
SessionContainercan now be started with a different implementation ofIDeterministicPlatformTaskRunner(defaults to built-inDotNetTaskRunner) 
Changes
- The custom plugin sample now starts the 
SessionContainerwith anInactiveTaskRunner, forcing the server simulation to run in single-thread despite the runtime config (scales better) 
Build 1044 (May 27, 2022)
Bug Fixes
- Fixed: Errors when editing a NavMesh backed by Addressable data asset
 - Fixed: Properties that had 
[HideInInspector]added still taking up inspector space 
Build 1043 (May 23, 2022)
Changes
- 2D Entity Prototypes can now draw the gizmos of custom polygon colliders that inherit from 
PolygonCollider 
Build 1041 (May 18, 2022)
What's New
- Added options to change the default 
SimulationConfig.Navigation.RawPathSizeand Allocation strategy:Fixed= fail to find larger paths,Allocate= grows the raw path array. This replacesNavigation.Constants.RawPathSizewhich has been marked as obsolete 
Bug Fixes
- Fixed: An exception inside the pathfinding for huge paths
 - Fixed: An issue with 
FindPathResult.Path.Indexcausing the triangle indices to occasionally be wrong - Fixed: Drawing green path gizmo dots on top of larger magenta raw path dots
 
Build 1040 (May 16, 2022)
Bug Fixes
- Fixed: Default config assets (e.g. 
DefaultCharacterController2D,DefaultNavMeshAgentConfig, etc) now have their guids correctly reset to default values instead of new random guids if they are found with invalid guids during asset DB generation 
Build 1039 (May 13, 2022)
Bug Fixes
- Fixed: "Retrieving array element that was out of bounds" error when inspecting an empty array in an asset
 
Build 1038 (May 11, 2022)
What's New
- Xml comments for 
Quantum.AssertandPhotonDeterministic.Assertmethods 
Build 1037 (May 10, 2022)
Bug Fixes
- Fixed: DynamicAssetDB fallbacks to static resource manager when disposing asset if possible
 
Build 1035 (May 04, 2022)
Changes
- 2D and 3D physics collider 
Layerfields are now get-set properties and check if values set are within the valid range 
Build 1034 (May 03, 2022)
What's New
- Added 
release-profilerassemblies to make the Quantum Task Profiler available for "release" builds. It needs to be added manually when upgrading Quantum: Add another build configuration (ReleaseProfiler) and referenceassemblies/release-profiler/quantum.code.dll 
Changes
- Removed 
quantum.console.runnerfrom the upgrade filequantum_code.zip, it will still be included in the SDK package 
Bug Fixes
- Fixed: CodeGen: FP constants generation issues on some platforms
 
Build 1033 (May 02, 2022)
Improvements
- Improved the computation of 2D and 3D shape cast hit points by using the witness point of the shape being cast instead of the shape being hit
 
Build 1032 (Apr 28, 2022)
What's New
- Annotating 
Quantum.AssertswithSystem.Diagnostics.CodeAnalysis.DoesNotReturnattributes 
Changes
- Minor changes on the inspector 
PhotonServerSettingsEditor 
Build 1027 (Apr 25, 2022)
What's New
- Added 
SimulationConfigtooltips 
Build 1026 (Apr 22, 2022)
- This version fixes some issues in the avoidance algorithms and could lead to corrected but slightly different agent behavior, please make sure to check your agents still act as expected if you are using the avoidance feature
 
What's New
EntityViewUpdater.AutoFindMapData- controls whetherEntityViewUpdaterwill look for the currentMapDatawithFindObjectOfType(true by default)
Bug Fixes
- Fixed: The navigation agent configuration option 
Avoidance Can Reduce Speedwhich did generate appropriate avoidance candidates but did not actually reduce the agents speed - Fixed: An issue with avoidance that could lead to non-reciprocal avoidance vectors for head-on agent collisions (only one agent did the avoidance instead of both)
 - Fixed: An issue that could cause an exception inside 
Frame.UpdatePlayerData()when running a replay 
Build 1019 (Apr 21, 2022)
What's New
- Debug output which triangles cannot fit into a region
 
Build 1018 (Apr 20, 2022)
What's New
- New optimized overloads for 
Navmesh.FindClosestTriangle()that use the frame object to locate mailbox memory 
Bug Fixes
- Fixed: Possible 
DivideByZeroExceptionwhen performing a circle cast with a very small translation vector 
Build 1017 (Apr 19, 2022)
What's New
GetActorIdsto retrieve all actors currently in aDeterministicServerDraw.Boxand.WireBoxmethods to the debug draw API
Build 1016 (Apr 14, 2022)
Changes
QStringandQStringUtf8types are now Unity-serializable
Bug Fixes
- Fixed: Json.NET-based asset serializer not being able to read/write fixed-size buffers
 
Build 1015 (Apr 12, 2022)
Bug Fixes
- Fixed: An issue in the pathfinder that could lead to slightly less efficient paths than possible
 
Build 1014 (Apr 11, 2022)
Bug Fixes
- Fixed: An issue in 
FindPath()that would result in a straight path through a navmesh region disregarding the region cost if the target is in lineofsight - Fixed: An issue that under some circumstances the navmesh region cost was not correctly applied for pathfinding
 
Build 1012 (Apr 05, 2022)
Bug Fixes
- Fixed: An issue with 2D and 3D Physics CCD that could sometimes cause collisions to not be detected when the objects were overlapping at the beginning of the movement
 
Build 1010 (Mar 30, 2022)
Improvements
- Marking 
Navigation.LineOfSightmethods withAggressiveInlining - Removed Trace logs coming from Debug 
PhotonDeterministicdll, including "Adjusting clock" notifications 
Build 1009 (Mar 29, 2022)
Improvements
- Exposed 
GravityStrengthandGravityNormalizedproperties on 2D and 3D KCC config assets 
Changes
- Removing explicit use of Newtonsoft Json 
TypeNameHandling.Autowhich is not needed and poses a security thread when loading data from an untrusted source 
Build 1008 (Mar 28, 2022)
Improvements
- Added world-space versions of 
FPCollision.LineIntersectsAABBmethods and improved xml documentation 
Build 1007 (Mar 25, 2022)
Bug Fixes
- Fixed: Too many heaps being created for some configuration of replay/checksum intervals
 
Build 1006 (Mar 24, 2022)
What's New
Map.ScenePathandMap.SceneGuid(helpful when implementing custom scene loading)
Build 1005 (Mar 22, 2022)
Bug Fixes
- Fixed: Unused variable warning in Unity scripts
 - Fixed: Missing call to 
DumpFrameUseronFrame.DumpFrame 
Build 1004 (Mar 21, 2022)
What's New
- Proper error messages on missing arguments when running codegen_unity tool (netcore)
 
Build 1003 (Mar 18, 2022)
Bug Fixes
- Fixed: Memory leak on the Frame heap when disposing a 
QHashSet 
Build 1001 (Mar 16, 2022)
Bug Fixes
- Fixed: 
AssetObject.Loadednot being called for assets deserialize from snapshot - Fixed: Loading of dynamic assets from 
AssetObject.Loaded 
Build 1000 (Mar 15, 2022)
What's New
- 2D 
PolygonShapenow carries information about the polygon's centroid - Frame Dumps now include 2D and/or 3D Physics Engine states
 
Bug Fixes
- Fixed: Issue in the serialization of the 2D and 3D Physics Engines state
 
Build 999 (Mar 11, 2022)
Bug Fixes
- Fixed: Issue in 2D and 3D physics scene initialization logic, which could set wrong world settings when initializing from a snapshot (e.g. late-joins, replays)
 
Build 998 (Mar 09, 2022)
What's New
- "Addressables: Use WaitForCompletion" Quantum setting - enabling it adds QUANTUM_ADDRESSABLES_USE_WAIT_FOR_COMPLETION define and let's Quantum use AsyncOperationHandle.WaitForCompletion (Addressables 1.17+) to load Addressable assets synchronously
 
Build 997 (Mar 08, 2022)
Bug Fixes
- Fixed: An error in navmesh steering that was introduced by build Build 969 which resulted in drifting agents
 - Fixed: Server snapshots on the custom plugin sample require to overload 
OnDeterministicSnapshotRequested() 
Build 995 (Mar 07, 2022)
Bug Fixes
- Fixed: Possible div0 exception in Navigation Avoidance calculation
 
Build 994 (Mar 03, 2022)
What's New
- StateInspector: "Clear" button
 - StateInspector: "Remove Other Runners" context menu item
 
Bug Fixes
- Fixed: A couple unused field warnings
 
Build 993 (Mar 02, 2022)
What's New
- StateInspector & FrameDump support for QString and QBoolean pretty-print
 
Bug Fixes
- Fixed: Invalid property path in OptionalAttribute breaking the inspector
 
Build 992 (Mar 01, 2022)
What's New
- An overload of 
MapNavMeshBaker.BakeNavMesh()that usesMapinstead ofMapData 
Build 991 (Feb 28, 2022)
Bug Fixes
- Fixed: Calling 
NavMeshPathfinder.SetTarget()with the same position will now reactivate stopped agents 
Build 990 (Feb 25, 2022)
What's New
- CodeGen: EOL for Unity scripts can now be controlled with "EndOfLineCharacters" DLL config setting. To enforce crlf (Windows style) use 
<add key="EndOfLineCharacters" value="
"/>, to enforce lf (Linux style) use<add key="EndOfLineCharacters" value="
"/> 
Bug Fixes
- Fixed: CodeGen: invalid align/offsets for collection-backing pointers in case of element's align not being equal to 4
 
Build 989 (Feb 24, 2022)
What's New
- CodeGen: Support for namespace-qualified attributes in Qtn
 
Changes
- A warning is emit if Quantum fails to deserialize received frame dump
 - CodeGen: 
Quantum.Ptrfields now use namespace-qualified type name 
Build 988 (Feb 23, 2022)
Bug Fixes
- Fixed: 
Frame.FreeUserbeing called afterFrameBase.Free, which disposes the Heap memory - Fixed: 2D and 3D Physics engines' 
Initmethods now ensure that world and bucket sizes are initialized with valid values, avoidingDivideByZeroException 
Build 987 (Feb 18, 2022)
Bug Fixes
- Fixed: 
Frame.FrameAssetsincorrectSimulationConfigfind method's name - Fixed: Missing serialization of 2D and 3D static colliders' enabled state, which could cause desyncs on late-joins and issues on replays
 
Build 986 (Feb 17, 2022)
What's New
- Support for FP constants in DSL. 
#define FPConst 0.1223will emitConstants.FPConstandConstants.Raw.FPConst 
Bug Fixes
- Fixed: Codegen errors not appearing in 
Errors Listwindow 
Build 983 (Feb 11, 2022)
What's New
- Support to disable Unity modules to reduce the build size. Toggle in 
QuantumEditorSettings.Disable***Moduleor define#QUANTUM_DISABLE_PHYSICS2D,_PHYSICS3D,_AI,_TERRAIN 
Bug Fixes
- Fixed: An issue in 
QuantumRunnerLocalDebug(if QUANTUM_ADDRESSABLES is enabled) that prevented exceptions being logged due to how Unity runs async code 
Build 981 (Feb 10, 2022)
What's New
- FP implicit cast from byte and sbyte
 
Changes
- QuantumCodeIntegration no longer needs 
Properties/AssemblyInfo.csremoved - Quantum Code Integration - quantum.code can be imported into Unity project with Package Manager. Follow instructions in 
tools/codeintegration_unity/README.txt 
Bug Fixes
- Fixed: CodeGen.cs mixed end-of-line characters
 - Fixed: Quantum Code Integration: .NET Standard 2.1 api compatibility is now supported
 - Fixed: Range attribute not working in Unity 2021.2+
 
Build 980 (Feb 09, 2022)
Changes
- Added deterministic 
GetHashCodeoverride for each simulation struct - DumpFlag_PrintRawValues dump flag also makes QDictionary print key hash values
 - QBoolean implements IEquatable
 
Bug Fixes
- Fixed: QuantumCodeIntegration throwing an exception if PhotonQuantumCode.dll is no longer accessible
 
Build 977 (Feb 08, 2022)
What's New
- Warning message when setting a 2D or 3D Physics Collider physics material to an invalid asset
 
Bug Fixes
- Fixed: 
FP.FromStringreturning wrong values when providing strings with more than 14 digits of precision of the fraction part 
Build 976 (Feb 07, 2022)
What's New
- An additional version of the codegen_unity tool compiled as a 
netcoreapp3.1app to work with dlls created fornetstandard2.1(located in tools/codegen_unity/netcoreapp3.1). Please also see readme.txt - Warning/error messages when starting a Quantum game in WebGL and multithreading is enabled (
SimulationConfig.ThreadCount> 1) 
Bug Fixes
- Fixed: FPQuaternion.FromToRotation precision increased
 
Build 975 (Feb 04, 2022)
Bug Fixes
- Fixed: 
FPCollision.LineIntersectsCircleno longer ignores intersections if the start of the line segment is inside the circle. An optional parameter can be set in order to ignore these cases (default to false) 
Build 973 (Feb 03, 2022)
Bug Fixes
- Fixed: A thread-safety issue on 2D and 3D Physics Engines when using joints and sleep detection
 - Fixed: 2D and 3D Shape Cast hit Point being computed at the center of circles or spheres, respectively
 
Build 972 (Feb 02, 2022)
What's New
FPVector3.SignedAngle(), equivalent to Unity'sVector3.SignedAngle()
Changes
Frame.SystemDisable<T>(T system)now always uses the system instance runtime type instead of T (explicit or implicit)- The assembly information of the Quantum dlls now contains Debug/Release information and debug dlls are now also tagged correctly
 
Build 970 (Feb 01, 2022)
What's New
QuantumEditorSettingsnow has options to position the QuantumToolbar (level dropdown)
Build 969 (Jan 31, 2022)
What's New
- NullableNonNegativeFP
 
Bug Fixes
- Fixed: An issue with the properties of 
NavMeshAvoidanceAgent(AvoidanceMask, AvoidanceLayer, Priority) andNavMeshSteeringAgent(Acceleration, MaxSpeed) that were changed after instantiation and overwritten by values from the config duringframe.Set()orNavMeshPathfinder.SetConfig().NavMeshPathfinder.SetConfig()has an optionaloverwritebool that forces the reset of the mentioned properties which is set to true for backwards compatibility reasons. - Fixed: Issues on the 2D Hinge Joint when both joint and connected entity were dynamic rigid bodies
 
Build 968 (Jan 27, 2022)
Changes
EntityViewUpdater.LoadMissingPrefabwill attempt to load a missing view synchronously now
Bug Fixes
- Fixed: Issues on the 2D and 3D Physics engines when the session is initialized with 
RuntimeConfig.Mapas default or invalid - Fixed: QuantumPrefabAsset_Resources resource path not having its extension removed
 
Build 967 (Jan 26, 2022)
- Upgraded Photon Realtime to 4.1.6.12
 
What's New
- WebGL builds are now supported (experimental). Photon WebSocket libraries are included in the SDK.
Important notes when targeting WebGL: - Change 
SimulationConfigThread Count to 1 (browsers/Unity WebGL builds do not support multi-threading) - Recommended Unity version: 2021.2.8f1 (better performance). Minimum version: 2018.4.30f1
 - Tested browsers and platforms: Chrome, Firefox, Edge and Safari, running on PC Windows or Mac
 
Build 966 (Jan 25, 2022)
What's New
- A new optional 
OnBeforeBakesignature that includes theBuildTrigger - 2D and 3D Physics' callbacks API now have 
ResetCallbacks, a way to reset the collision history of an entity, used to compute OnEnter/OnExit conditions - A new optional 
OnBeforeBakesignature that includes the bake flagsQuantumMapDataBakeFlags 
Build 964 (Jan 21, 2022)
What's New
EntityViewUpdater.LoadMissingPrefab- a way to load a view if it missing inEntityViewasset- Experimental Prefab Standalone Assets (.qprefab) - a way to supply the AssetDB with prototype and view assets without hard references to prefabs. This is useful if prefab being loaded along with its nested assets is problematic. To enable for a prefab, select its nested 
EntityViewAssetorEntityPrototypeAssetand follow instructions EntityViewUpdater.LoadMissingPrefab: a way to load a prefab that might be initially missing
Changes
- Print conflicting asset's path if there is a guid/path conflict
 
Build 962 (Jan 19, 2022)
What's New
AssetDB.LoadedAssets- a way to iterate over all loaded assets
Improvements
- Handling of exceptions during deserialization of RuntimePlayer data, now logged as error if in Debug mode
 
Build 961 (Jan 17, 2022)
Changes
- Updated Unity git igrore file to optionally include quantum pdb files
 
Bug Fixes
- Fixed: Quantum State Inspector window being closing in some situations
 
Build 959 (Jan 12, 2022)
Bug Fixes
- Fixed: An issue that could cause an exception to be thrown inside the navigation introduced by Build 957
 
Build 958 (Jan 11, 2022)
Improvements
- Improved the usable range of parameters on 
FPCollision.LineIntersectsCircle, reducing the risk of overflows 
Build 957 (Jan 10, 2022)
Bug Fixes
- Fixed: An issue with 
NavMesh.MovePositionIntoNavmesh()when evaluating grid cells with more then 32 borders inside which could lead to the agent clipping through walls. The navmesh agent optionClamp Agent to Navmeshwas also affected. Please switch to the signature withFramewhen using the method explicitly - Fixed: MemoryIntegrity error for ComponentReference
,EntityPrototypeRef,CompoundShape3DandCompoundShape2D` on some platforms 
Build 956 (Jan 06, 2022)
Bug Fixes
- Fixed: Loaded is called on AssetObject when it's injected into dynamic DB
 
Build 955 (Jan 05, 2022)
Bug Fixes
- Fixed: Physics 
OnExitcallbacks being called when one of the entities involved entered a sleeping state 
Build 953 (Dec 20, 2021)
Bug Fixes
- Fixed: Issues when configuring 2D and 3D hinge joints with negative 
MaxMotorTorque 
Build 951 (Dec 14, 2021)
Bug Fixes
- Fixed: Checksum error dumps showing 
IsVerified=false - Fixed: An issue on the Quantum simulator that could cause assertion exceptions when the 
InputOffsetMinof the config sent by the client differed from the one received from the server 
Build 949 (Dec 08, 2021)
What's New
QuantumGame.SendPlayerDataoverload that does not require the player index to be specified, useful when clients always control only one player
Build 947 (Dec 02, 2021)
What's New
TryGetQueryHitsmethod on 2D and 3D Physics API to try and retrieve the results of a broad-phase query
Bug Fixes
- Fixed: Issues when enabling toggleable mesh colliders that were initialized as disabled, expanding internal buffers in the process, which could corrupt memory and cause crashes
 
Build 946 (Dec 01, 2021)
What's New
Mapproperty on 2D and 3D Physics APIs, to retrieve the map asset currently used on the respective physics scene
Build 945 (Nov 30, 2021)
What's New
- Support to Paint Holes on Terrain static colliders
 
Bug Fixes
- Fixed: Worker threads being able to access an asset before 
Loadedcallback was invoked - Fixed: CodeGen - order of attributes for Unity prototype scripts is more cross-platform now, with 
Systemattributes being emit first 
Build 944 (Nov 29, 2021)
Bug Fixes
- Fixed: 
DivideByZeroExceptiononFPVector3.Slerpand.SlerpUnclampedwhen vector were collinear - Fixed: Instability issues on 3D hinge joints, specially perceptible on rotated hinges with larger mass
 
Build 943 (Nov 26, 2021)
What's New
- Xml documentation to interpolated error correction settings on 
EntityView 
Build 942 (Nov 25, 2021)
What's New
- Added two new navmesh related callbacks to 
MapDataBakerCallback. This change makes the navmesh baking more customizable without having to completely replace it. Either hook intoOnCollectNavMeshBakeData(inject BakeData into Quantum Navmesh baking pipeline) orOnCollectNavMeshes(inject Navmesh objects into Asset serialization) EntityPrototypeContainer.SetDirty. Needs to be called ifComponentsproperty has been modifiedSystemIsEnabledSelf,SystemIsEnabledInHierarchy- Nested systems are enabled/disabled when group is enabled/disabled
 
Changes
OnEnabledandOnDisabledcallback on SystemBase are called based on state of the hierarchy of the grouped systems. Systems update is called when it's enabled in hierarchy
Bug Fixes
- Fixed: An issue with 3D navmesh Delaunay triangulation that caused the navmesh to deform near slopes. Use the checkbox 
DelaunayTriangulationRestrictToPlanesin those cases - Fixed: 
EntityPrototypeContainernot being sorted again if repopulated - Fixed: Update is not called on disabled nested system when group is enabled
 
Build 941 (Nov 24, 2021)
Breaking Changes
- Multi-threaded, built-in system types on 
Quantum.Tasknamespace now have theirOnInitoverride marked as sealed. Inheritors can overrideOnInitUserinstead 
Build 940 (Nov 23, 2021)
Bug Fixes
- Fixed: 
Photon/Quantum/Editor/Generatedscripts being included in the unity upgrade package 
Build 939 (Nov 22, 2021)
Bug Fixes
- Fixed: Misleading 
velocityparameter on 2D and 3D KCC, now renamed todirection 
Build 936 (Nov 18, 2021)
What's New
QuantumGameFlagscode documentation
Changes
DeterministicCommandSerializerwill now log a warning when attempting to register multiple Command factories of the same type
Build 935 (Nov 17, 2021)
Bug Fixes
- Fixed: 
AssertExceptionin Debug mode when performing a component removal, followed by the addition of the same component and then the destruction of the entity on the same frame 
Build 934 (Nov 16, 2021)
Bug Fixes
- Fixed: An issue with 
FPAnimationCurvewhere thePostWrapModewas not being able to be set independently from thePreWrapMode 
Build 933 (Nov 12, 2021)
What's New
- Built-in support to compound Commands through the new 
Core.CompoundCommandtype - Built-in support for Command pooling through the new 
DeterministicCommandPool<T>class, which can also be registered as factory onDeterministicCommandSetup.AddCommandFactoriesUser IDeterministicCommandFactoryinterface, now registered during Command setup to provide instances of Commands for de-serialization
Improvements
- Commands now implement 
IDisposable, which can be overridden on concrete types and used in conjunction with command factories to implement pooling patterns, for example 
Changes
- Default 
BitStreamsize used forRuntimeConfigserialization changed from 1 to 8KB CommandSetup.CreateCommandsis now deprecated. Command factories should be registered through a partial declaration ofDeterministicCommandSetup.AddCommandFactoriesUserinstead, as shown onCommandSetup.User.csavailable on the SDK package (not on the upgrade zip). Command instances can be used as factories of their own type, so instances returned from the deprecated method are still functionalCommandSetup.csfile was replaced byCommandSetup.Legacy.csandCommandSetup.User.cs. The old file's implementation is now deprecated, although still functional. To replace the old file by the new ones, removequantum.code\CommandSetup.csfile from thequantum_code.csprojand copy and addquantum.code\CommandSetup.Legacy.csandquantum.code\CommandSetup.User.csfrom the SDK folder into your project (those files are not inside the upgrade zip).
XML
  <!-- OLD quantum.code.csproj -->
  <ItemGroup>
    <Compile Include="Core\CodeGen.cs" />
    <Compile Include="CommandSetup.cs" />
    <Compile Include="Core\Core.cs" />
    ...
  </ItemGroup>
  
  <!-- NEW quantum.code.csproj -->
  <ItemGroup>
    <Compile Include="CommandSetup.User.cs" />
    <Compile Include="Core\CodeGen.cs" />
    <Compile Include="CommandSetup.Legacy.cs" />
    <Compile Include="Core\Core.cs" />
    ...
  </ItemGroup>
Bug Fixes
- Fixed: Issues with Commands being shallow-copied during de-serialization, caused by shared reference types when de-serializing multiple commands of the same type on the same frame
 
Build 929 (Nov 10, 2021)
What's New
- QHashSet
 TryResolveQCollection methods toFrameThreadSafe
Build 928 (Nov 05, 2021)
What's New
[AllocateOnComponentAdded]- a way to auto allocate lists/dictionaries when component gets added to an entity
Build 927 (Nov 05, 2021)
What's New
- Thread-safe overloads to 
GetStaticDatamethods on 2D and 3D Hit structs 
Bug Fixes
- Fixed: Issues on the 3D KCC penetration correction when steering over triangles on a mesh
 - Fixed: FP precision issue on the penetration correction algorithm of the 2D and 3D KCCs
 
Build 926 (Nov 04, 2021)
What's New
[EntityComponentConfig]attribute. Add it to a partial prototype class and setGenerateLinkingScriptstofalseto preventMonoBehaviourfrom being created for this component
Changes
- Prototype components are no longer emit as 
sealedclasses 
Bug Fixes
- Fixed: FP precision issues on 3D Hinge Joints when the inertia of the joint body reached higher values
 - Fixed: Instabilities on 2D and 3D Hinge Joints when the joint body did not have mass 1 and/or was connected to another dynamic body as anchor
 
Build 925 (Nov 03, 2021)
Bug Fixes
- Fixed: 2D and 3D broad-phase queries giving a 
NullReferenceExceptionwhen resolving against an dynamic entity with CCD enabled 
Build 924 (Nov 02, 2021)
Changes
- Removed verbose assertion error regarding inaccuracies on the 3D Physics CCD algorithm while the issue is being investigated
 
Build 923 (Nov 01, 2021)
Bug Fixes
- Fixed: An issue in the 2D and 3D collision solvers that was cause the angular velocity of kinematic bodies to not affect the resolution
 
Build 921 (Oct 29, 2021)
- Initial RC2 version
 
RC1
Build 920 (Oct 29, 2021)
Changes
- Released 2.1.0 RC1
 
Bug Fixes
- Fixed: CodeGen not printing the missing type's name in 
hasAnyFieldRecurse 
A1N
Build 919 (Oct 28, 2021)
Bug Fixes
- Fixed: Issue that could cause Commands and RuntimePlayer data sent in the first N frames to not be attached to valid frames, where N is the 
DeterministicConfig.InputDelayMin 
Build 918 (Oct 25, 2021)
What's New
- Improved 2D and 3D KCC penetration correction algorithms, specially the behavior on acute corners
 
Bug Fixes
- Fixed: An imprecision in the 2D Circle-Edge collision check that could cause assertion errors
 - Fixed: An issue on 2D and 3D KCCs that could cause the penetration correction to push the character further inside the collider in case the contact point was past the character center in the normal direction
 
Build 917 (Oct 22, 2021)
What's New
- Enums as dictionary keys support. Note that they resolve to 
QEnumDictionary<K, V>rather thanQDictionary<K, V>. To avoid this implementation detail usevar Frame.AllocateListandFrame.AllocateDictionaryoverloads that takeQListPtr/QDictionaryPtrfor auto generic argument deduction. E.g.:var dict = frame.AllocateDictionary(c.DictPtr); c.DictPtr = dict;- Partial support for enums as dictionary keys. If an enum type is used as the dictionary key type in DSL, the QDictionaryPtr that's emit will use the underlying enum primitive type instead
 
Build 916 (Oct 20, 2021)
Changes
- Reduced the 
FP.UsableMaxraw value by 1, in order to prevent overflows in edge cases 
Build 914 (Oct 14, 2021)
Bug Fixes
- Fixed: An issue on 2D and 3D Physics Queries that could cause invalid memory accesses when the query boundaries were partially inside and outside the FP usable range
 
Build 913 (Oct 13, 2021)
- Upgraded Photon Realtime to 4.1.6.9
 
Bug Fixes
- Fixed: An issue on 2D and 3D physics solvers that could cause collision constraints to be ignored when stitching islands due to the existence of joint constraints
 - Fixed: Distance gizmos of 3D Spring Joint
 
Build 912 (Oct 12, 2021)
What's New
quantum.codegen.unity.hostargument: third and subsequent arguments specify additional assembly search paths; useful whenquantum.codereferences external assemblies
Bug Fixes
- Fixed: 
DebugDraw.DrawSpherenot usingDebugDrawmaterial 
Build 911 (Oct 11, 2021)
What's New
FPMatrix2x2operators andInvertedgetterIEntityPrototypeMaterializedListener- an interface that, if implemented byComponentPrototype, will receive entity post-materialization notification
Removed
- Old Physics3D.Joints API, now accessible through the PhysicsJoints3D component
 
Bug Fixes
- Fixed: 2D Spring Joint prototypes now compute spring and damper settings after both the joint and connected entities are materialized (the later is optional)
 - Fixed: Default 
PrototypeMaterializationContextused onComponentPrototype.AddToEntity(Frame, EntityRef)now has theEntityandComponentTypeIdfields set 
Build 910 (Oct 08, 2021)
Changes
QDictionaryindexer set method now inserts a new entry in case the key does not yet exist (same asSystem.Collections.Generic.Dictionary), instead of throwing anInvalidOperationException.
Indexer get method now throwsKeyNotFoundExceptioninstead ofInvalidOperationExceptionif the key is not found- CodeGen: less property drawer types generated. 
PrototypeDraweris a partial class now and can have more types added withCustomPropertyDrawer 
Bug Fixes
- Fixed: Upgrade 
tools_and_assemblies.zipnow containstools/codeintegration_unityfolder 
Build 909 (Oct 07, 2021)
What's New
- CodeGen 
[PreserveInPrototype]attribute. Added to a type marks it as usable in prototypes and prevents prototype class from being emit. Added to a field only affects a specific field. Useful for simple[Serializable]structs as it avoids having to use_Prototypetypes on Unity side 
Bug Fixes
- Fixed: An issue on the client simulator that would cause the input polling for a given frame to be skipped or polled in duplication when the input offset increased or decreased, respectively
 
Build 908 (Oct 06, 2021)
What's New
LayerInfo.GetLayerMaskoverloads that accept 1-3 layer names instead of an array of names, which can generate allocations if used inadvertently
Build 907 (Oct 05, 2021)
What's New
- Frame.TryResolveList/Dictionary and Frame.TryFreeList/Dictionary - a way to avoid having to check pointer for being null or not
 
Build 906 (Oct 04, 2021)
What's New
GetCallbackson 2D and 3D Physics API, allowing the retrieval of the physics callback flags currently set to a given entity
Bug Fixes
- Fixed: 
AssetBasePostprocessorandEntityViewEditornot compiling in Unity 2021.2 - Fixed: UnityEditorInternal.ReorderableListWrapper.Draw exception on editor startup for Unity 2021.1.23
 
Build 905 (Oct 01, 2021)
What's New
- More overloads to add, get or set a (singleton) component using the component index instead of a static type
 
Bug Fixes
- Fixed: StateInspector reflection ambiguity exception
 
Build 904 (Sep 30, 2021)
Changes
- Upgraded Photon Realtime to 4.1.6.7
 
Build 899 (Sep 24, 2021)
Changes
InputProvider.CanSimulatenow returns false instead of throwing anIndexOutOfRangeExceptionin some cases where the requested frame is not in the input buffer
Removed
- Marked 
QuantumRunner.StartParameter.IsRejoinandDeterministicSession.Join()isrejoinparameter as obsolete. It is not required to send this information anymore 
Bug Fixes
- Fixed: 2D and 3D static colliders position offsets not being scaled by the GameObject's transform
 
Build 897 (Sep 23, 2021)
Changes
EntityRef.GetHashCodeis monotonic for sensible range (above short.max, for index and version)
Bug Fixes
- Fixed: 
EntityRef.GetHashCode: results are more spread out 
Build 896 (Sep 22, 2021)
Changes
- Addressables support no longer marked as experimental
 
Build 895 (Sep 21, 2021)
What's New
Sleepmethod on 2D and 3D Physics Body components, to force bodies into a sleeping state
Bug Fixes
- Fixed: An issue in the inertia computation of 3D physics bodies with center-of-mass offset and linked to colliders with compound shapes
 
Build 893 (Sep 20, 2021)
What's New
Quantum.Task.SystemThreadedFilter<T>,SystemThreadedComponent<T>,SystemArrayFilter<T>andSystemArrayComponent<T>: multi-threaded versions of base systems for component and filter iteratorsComponentFilterStruct.Resetmethods and optional offset/count parametersComponentBlockIterator.Resetmethods
Bug Fixes
- Fixed: An issue in the navigation system for 
MovementTypecallback that could cause thedesiredDirectionparameter of theOnNavMeshMoveAgentcallback to be (0/0) for the tick when a waypoint is reached and it could cause the waypoint detection to be inaccurate resulting in overshooting.NavMeshSteeringAgentnow updates it'sVelocityfield in the case ofMovementTypecallback 
Build 891 (Sep 17, 2021)
What's New
- Exposed 
Frame.ComponentCount(int componentIndex)overload, in addition to the existing type-bound method 
Bug Fixes
- Fixed: 
DeterministicConfig.Lockstephelpbox text - Fixed: Full type names not working with 
import structandimport enum 
Build 890 (Sep 16, 2021)
What's New
- 2D and 3D Hit structs now have Get and TryGet StaticCollider/StaticData methods, allowing safe and convenient access to info regarding a static collider hit
 
Build 887 (Sep 14, 2021)
What's New
- Callbacks for Plugin Disconnects to be able to react to errors which will result in the simulation being destroyed (for this the 
IDeterministicGameinterface was slightly modified).
UseQuantumCallback.Subscribe(this, (CallbackPluginDisconnect c) => OnCallbackPluginDisconnect(c.Reason));to be notified about the errors and pending shutdowns in Unity - 2D and 3D Static Colliders can now reference a Unity collider to be used as source
 
Bug Fixes
- Fixed: 2D and 3D Physics Collider prototypes having the 
IsTriggerfield as read-only on Inspector 
Build 885 (Sep 12, 2021)
What's New
- Safe overloads of 2D and 3D Physics' 
AddShapeCastQuery,ShapeCastandShapeCastAllmethods 
Build 884 (Sep 11, 2021)
What's New
- Create basic Static Mesh Collider with Hierarchy menu helper
 
Build 883 (Sep 10, 2021)
What's New
- Documentation of 2D and 3D 
CharacterControllerMovementdata returned by raw queries WithoutandAnyvirtual properties toSystemMainThreadFilter, which can be overridden to define a set a components that the filtered entities should not have or have at least one, respectively- Overloads to Frame 
Add,AddOrGet,SetandRemovethat accept a component index instead of a concrete type 
Build 882 (Sep 09, 2021)
What's New
[PtrSize]attribute - a way to setPtrdata size to a constant (e.g.[PtrSize(10)]) or to a code snippet (e.g.[PtrSize("sizeof(FooComponent)")]or[PtrSize("p->sizeField")]). That way contents pointed to can be serialized without any need for user code
Build 879 (Sep 07, 2021)
Bug Fixes
- Fixed: Usages of 
Photon.Realtime.Playerclass onQuantumMultiClientPlayerare now fully qualified to avoid type ambiguity 
Build 878 (Sep 07, 2021)
What's New
FPMatrix3x3
Bug Fixes
- Fixed: The computed inertia of 3D bodies with center of mass offset
 
Build 877 (Sep 06, 2021)
What's New
SimulationConfig.ChecksumErrorDumpOptions, a way to influence what's in checksum error framedumps- Quantum.Inspector.EnumFlags - a way to force enums to be drawn as flags for Unity < 2021
 - DumpFlag_AssetDBChecksums - print asset db checksums in the frame dump
 - SimulationConfig.ChecksumErrorFrameDumpOptions
 
Changes
EnumFlagsAttributemoved to to quantum.code. OldEnumFlagsAttributestill works, but is now obsolete
Build 876 (Sep 04, 2021)
Breaking Changes
- Static colliders position and rotation offsets are now expressed in the local space of the GameObject's transform instead of in world space
 
Bug Fixes
- Fixed: Drawing of add/remove vertex buttons on 2D static polygons with rotation offset
 
Build 875 (Sep 03, 2021)
What's New
- Frame.DumpFlag_ComponentsChecksum - passed to DumpFrame will print each component's checksum
 - Support for multiple 
FramePrinter.PtrBufferAttributeperPtrfield. Useful if the pointer contains non-uniform data 
Changes
- FrameDump caused by a desync uses Frame.DumpFlag_ComponentsChecksum flag
 - Reduced 
NavMeshPathfindersize to 96 bytes (from 112) 
Bug Fixes
- Fixed: An issue in the 
NavMeshPathfindercomponent that could cause a desync which did not show any differences in the desync UI - Fixed: An issue in the serialization of waypoint link ids, accessible by 
NavMeshPathfinder.CurrentLink(), which caused wrong link ids for late-joiners - Fixed: 
NavMeshPathfinderserializing unused waypoints data - Fixed: Assertion error when allocating an 
UnsafeHashMapstructure in a 32-bit architecture (e.g. ARMv7 on Android) 
Build 874 (Sep 02, 2021)
What's New
- Support for subclassing non-abstract asset types
 
Build 870 (Sep 01, 2021)
Changes
- Made usages of the 
Photon.Deterministic.Nativeclass fully qualified, to avoid clashes between different packages (like with Photon Fusion) 
Build 865 (Aug 30, 2021)
What's New
GetPointVelocityandGetRelativePointVelocityhelper methods to 2D and 3D Physics Body components
Build 864 (Aug 27, 2021)
Changes
- QuantumEditorSettings inspector no longer displays an error if any of 
AssetSearchPathsis not anAssets-based path 
Bug Fixes
- Fixed: AssetDB not supporting assets from Packages
 
Build 863 (Aug 26, 2021)
What's New
Assert.CheckandAssert.Alwaysoverloads that accept a string format and/or parameterized values, avoiding allocations on the method calls
Build 862 (Aug 25, 2021)
Bug Fixes
- Fixed: Changing pdb type to portable for Quantum release dlls
 
Build 861 (Aug 23, 2021)
What's New
- Safe overloads to 2D and 3D PhysicsBody 
AddLinearImpulseAtPositionandAddForceAtPosition 
Bug Fixes
- Fixed: An assertion thrown in 
ThreadLocal.AllocateMailboxBuffer()that was caused by aNavMeshPathfindercomponent being set toActivewithout having associated a navmesh usingSetTarget()before 
Build 860 (Aug 20, 2021)
Bug Fixes
- Fixed: 
QList.GetEnumeratorno longer generates box allocation 
Build 859 (Aug 11, 2021)
Bug Fixes
- Fixed: Inspector's ReorderableListWrapper exception for early Unity 2020.2 versions
 
Build 858 (Aug 05, 2021)
What's New
- FP.MulTruncate - truncating multiplication, rounding towards negative infinity
 - Added a variable for 
EmptyRoomTTLInSecondsto thePhoton Sever Settingsscript - The option to configure the server input buffer and history sizes when running a custom plugin
 - Spectator class (quantum.console.spectator) now can use local snapshots during reconnecting attemps
 DeterministicPluginandDeterministicServernow have access to EmptyRootTTL
Changes
- Converting exeptions during the LUT initialization on the custom plugin SDK to meaningful error messages
 - FP.ToString - each FP has a unique string representation and has a minimal string length (within precision range)
 - Spectator class (quantum.console.spectator) 
Run()method can now be can be canceled with a CancellationToken - Spectator class (quantum.console.spectator) can pass an optional start parameters (e.g. LoadBalancingServer object) into the 
Run()method - Using 
DeterministicPluginas logger interface when initializing the static Quantum log wrapper - The time window for accepting local snapshots (was fixed to 10 seconds) is now adapting to the EmptyRoomTTL (capped to 2 min)
 
Bug Fixes
- Fixed: The behaviour of setting 0 for 
NavMeshAgentConfig.AngularSpeedwhich now disables setting any rotation on the transform by the agent steering (set to 200 or more to keep the rotation but disable the angular acceleration) - Fixed: An issue in the Spectator class that could cause the reconnection logic to delay or not run at all
 - Fixed: An issue in the Spectator project where 
DisconnectAsync()would cause an unwanted exception when the connection is already disconnecting - Fixed: An issue in 
SessionContainerwhere the allocator was shared between sessions which could cause problems with the custom plugin SDK when closing sessions - Fixed: An issue that could cause fast reconnecting players fail to start the simulation if they are also selected as a snapshot provider
 
Build 852 (Aug 04, 2021)
Changes
- Array returned in 
SystemSetup.CreateSystemscan have null elements - they are filtered out before any processing. This was already the behavior ofCommandSetup.CreateCommands - DebugCommand now registers a dummy system and a dummy command in the Release configuration. This is to ensure replays can be used regardless of configuration. Define QUANTUM_DEBUG_COMMAND_DISABLED to fully disable DebugCommand
 
Bug Fixes
- Fixed: Replays not being compatible across Debug and Release configurations due to DebugCommand's system and command being registered only in Debug builds
 
Build 851 (Aug 02, 2021)
Changes
- QuantumAutoBaker visibility to public
 
Bug Fixes
- Fixed: Removing the NavMesh borders < 16384 limitation
 - Fixed: FixedCurveDrawer using property name instead of display name
 
Build 850 (Jul 31, 2021)
What's New
- Gravity Scale attribute to 2D and 3D Physics Bodies, which can be used to disable, scale and/or invert the direction of the applied gravity on each entity
 
Build 849 (Jul 29, 2021)
Changes
- Remove/Destroy commands metadata are now stored in multiple memory blocks that expand and shrink on demand.
This fixes issues with the heap page max size and reduces memory consumption when the usage of these commands is not uniform throughout the session 
Build 848 (Jul 28, 2021)
Bug Fixes
- Fixed: An issue with 3D Physics Bodies with Box shape that caused added angular impulses to not be integrated and added torques to be partially integrated
 - Fixed: 
PhysicsBody3D.ClearTorquenot clearing accumulated torques, only angular impulses 
Build 846 (Jul 24, 2021)
Breaking Changes
Quantum.Physics2Dand.Physics3Dclasses were converted to namespaces of the same name, respectively. Access to the API and wrapped types should not be affected
What's New
- DSL support to 2D and 3D Physics types: 
Hit,Hit3D,Shape2D,Shape3D,Joint,DistanceJoint,SpringJointandHingeJoint - Serialization code to 
Physics2D.HitandPhysics3D.Hit3D 
Changes
- Increased max Systems count from 256 to 1024
 - Increased max Tasks count from 128 to 1024
 
Build 844 (Jul 21, 2021)
What's New
- 2D Physics Joints API documentation
 
Bug Fixes
- Fixed: StackOverflowException when using cyclic references in DSL. Name of the reentered type is printed in the error message instead
 
Build 843 (Jul 20, 2021)
What's New
PhysicsJoints2D.Capacity,.RemoveAt,.RemoveAtUnorderedand.GetIterator
Bug Fixes
- Fixed: Unity codegen issue: generic asset types no longer require 
[AssetObjectConfig(GenerateLinkingScripts = false)]attribute - Fixed: Unity codegen issue: generic asset types can be derived from
 
Build 835 (Jul 18, 2021)
What's New
- 2D 
SpringJoint.GetStiffness, which converts spring and damper capacities to frequency and damping ratio, complementing the existingSetStiffnessmethod 
Bug Fixes
- Fixed: Missing serialization for FPMatrix2x2
 
Build 834 (Jul 16, 2021)
What's New
- New 2D Physics Joint System: includes Distance, Spring and Hinge joints
 - Exposed scheduled TaskCount in the frame TaskContext
 
Changes
- Modifications to the frame 
PhysicsSceneSettingswill now only affect the physics simulation from the following frame onwards, instead of having immediate effect 
Removed
- Old Physics2D.Joints API, now accessible through the PhysicsJoints2D component
 
Build 833 (Jul 09, 2021)
What's New
- Implicit casts from UInt32, Int16 and UInt16 to FP
 - QuantumStallWatcher - a script that can crash the build and produce a call stack, in case a simulation stalls. Needs QUANTUM_STALL_WATCHER_ENABLED define symbol to be enabled
 
Build 832 (Jul 08, 2021)
Bug Fixes
- Fixed: Quantum.codegen performance for large projects
 
Build 831 (Jul 07, 2021)
Bug Fixes
- Fixed: Type mismatch between 
BitStream.WriteStringGZipand.ReadStringGZipserialization code that could corrupt the de-serialized data 
Build 830 (Jul 06, 2021)
Bug Fixes
- Fixed: An issue whit Filters of a single component type returning entities that had said component removed while the removal was not committed in memory
 
Build 829 (Jul 02, 2021)
Changes
- Upgraded Photon C# Client Library to 4.1.6.3
 
Bug Fixes
- Fixed: An error in the Unity Quantum asset pipeline that was thrown when scene object were processed inside the 
Resources/DBfolder 
Build 824 (Jul 01, 2021)
Changes
- Inverted the 
.gitignoreproposal from excluding generated Quantum files (.cs and .dll) in the Unity project from version control to including them - Improved 3D Shape Cast algorithm to reduce the chances of FP overflow when working on a scaled simplex
 
Build 821 (Jun 28, 2021)
Bug Fixes
- Fixed: Warning in MenuShortcuts.cs on Mac
 
Build 820 (Jun 25, 2021)
What's New
FPVector3.SlerpandSlerpUnclamper, equivalent to their Unity counterparts- FPMath.Exp
 
Bug Fixes
- Fixed: Inconsistent line endings warning for CodeGen scripts on macOS
 
Build 819 (Jun 24, 2021)
Bug Fixes
- Fixed: EntityViewUpdater creating/activating view instances without transform components at zeroed position/rotation instead of the default values defined on the EntityView object
 
Build 818 (Jun 22, 2021)
Changes
- Attempting to retrieve Broad-phase query results using an invalid index will now throw an exception instead of logging a warning on Debug
 
Build 817 (Jun 21, 2021)
Bug Fixes
- Fixed: AssetRefDrawers needing to be reset before assignment if using assets sub classes
 
Build 816 (Jun 18, 2021)
Changes
EntityViewUpdater.DestroyEntityView(QuantumGame, EntityView)is now declared asprotected virtualand can be overridden in custom EVU implementations
Build 815 (Jun 17, 2021)
Changes
- Upgraded Photon Realtime to version 4.1.6.2, please read 
Assets/Photon/PhotonLibs/changes-library.txtandAssets/Photon/PhotonRealtime/Code/changes-realtime.txtfor changes 
Removed
Assets/Photon/PhotonLibs/WebSocketfolder please delete it manually. Websockets are included in the netstandard libraries- Old sample 
Assets/Photon/PhotonRealtime/Demos - Old Relatime changelog 
Assets/Photon/PhotonLibs/release_history.txt 
Bug Fixes
- Fixed: Quantum simulation trying to advance even if the runner was Paused (e.g. waiting for a snapshot), which caused callbacks like 
UpdateViewandPollInputandSimulateFinishedto get called 
Build 814 (Jun 16, 2021)
Bug Fixes
- Fixed: A typo in EntityView.ManualDisposal
 
Build 811 (Jun 14, 2021)
Breaking Changes
- Frame.CalculateChecksum() uses a shared serializer by default, which means no allocs, but it is no longer safe to call the method from worker threads for frames from the same simulation. To disable this behaviour, pass QuantumGameFlags.DisableSharedChecksumSerializer in QuantumGame.StartParameters.Flags. Alternatively, use Frame.CalculateChecksum(bool) overload
 
What's New
- Frame.CalculateChecksum(bool), where the parameter controls whether the shared serializer is used (not thread safe) or not (thread safe)
 
Changes
- Frame.CalculateChecksum can now use shared frame serializer - pass "true" as the first parameter to enable this feature (not thread-safe)
 
Bug Fixes
- Fixed: Collections of structures no longer allocate on serialization
 - Fixed: Memory allocation resulting from collections using non-static delegates
 
Build 808 (Jun 11, 2021)
Changes
- 2D and 3D Physics Engines will log a warning and not run if the frame Map asset is null or invalid
 
Build 807 (Jun 10, 2021)
Bug Fixes
- Fixed: 
QuantumStatsprefab adding a newUnityEngine.EventSystemeven if one already exists in the scene, causing a spam of warnings on newer Unity versions - Fixed: QuantumStats prefab displaying the outgoing traffic in the 'Network In' field, instead of the incoming, and no value in the 'Network Out' field
 - Fixed: An issue in the Quantum Navmesh off-mesh link auto correction when importing a Unity navmesh which caused the correction to be unreliable
 
Build 798 (Jun 08, 2021)
Breaking Changes
- We upgraded the 
PhotonHivePlugin.dllused by the Quantum plugin to version 1.1.0.24499. For Quantum Cloud customers nothing changes but Enterprise customers that want to run this new version need to upgrade their private cloud to Photon Server v5 RC1 (https://doc.photonengine.com/en-us/server/current/plugins/plugins-whats-new#plugins_api_version_upgrade) 
What's New
- FPQuaternion.SlerpUnclamped, Slerp version that does not clamp the interpolation factor
 - Added .gitignore file templates to the SDK package
 
Changes
- Updating Quantum Custom Plugin SDK to Photon Server Plugin SDK v5-0-12-24499-rc1
 
Bug Fixes
- Fixed: FPQuaternion.Lerp is now equivalent to Unity's Quaternion.Lerp, i.e. it interpolates towards negative 'target' if the dot product between the quaternions is negative
 
Build 793 (Jun 07, 2021)
Changes
- QuantumEditorGUI performance improvements
 
Build 792 (Jun 03, 2021)
Changes
- QuantumToolbarUtilities disabled for Unity 2021.1 until a way to fix it is found
 
Build 791 (Jun 02, 2021)
Bug Fixes
- Fixed: Unity 2020.2 disappearing Compound Shapes array workaround
 - Fixed: Gizmos error when MapData is addressable
 - Fixed: A typo in tools/codeintegration_unity/README.md
 
Build 790 (Jun 01, 2021)
What's New
- FP and FPVector property context menu to copy Raw values into the clipboard
 
Changes
- Console.Runner and Console.Spectator project now depend on the quantum.code project and the Quantum dlls from the assemblies folder instead of the Unity dlls. If the Create Spectator button in Unity fails try replacing SolutionDir variable in the quantum.code.csproj PostBuildEvent
 
Bug Fixes
- Fixed: Issues in the continuous collision detection of Physics Bodies with Compound shapes
 
Build 789 (May 31, 2021)
Changes
- FP property drawers usage of PropertyScope improved
 
Bug Fixes
- Fixed: An issue that was causing Physics Bodies with Compound shapes to have only half of gravity and applied forces integrated into the body velocity
 - Fixed: MapNavMeshRegion Cost property not being editable
 
Build 788 (May 27, 2021)
Changes
- Removed the initialTick parameter from the  
DeterministicSession.Join()signature, because it is already passed into the constructor as part of theDeterministicSessionArgs 
Bug Fixes
- Fixed: An issue that could lead to 
NavmeshPathfinderagents become stuck at the last waypoint before the target - Fixed: An issue that could result in the 
NavmeshSteeringAgentjumping between 3D platforms when using the movement typeTransformand the vertical positioning typeNavemesh 
Build 787 (May 26, 2021)
What's New
- Frame.Unsafe GetPointerSingleton and TryGetPointerSingleton taking System.Type argument instead of being generic
 - Frame.RemoveSingleton(System.Type)
 
Build 786 (May 25, 2021)
Breaking Changes
- The class 
SessionContainerhas been refactored. Adapt changes by fixing theobsoletewarnings and use explicit start methodsStartReplay()orStartSpectator()or use theSessionContainerclass from theQuantum.Legacynamespace 
What's New
- Quantum Spectator project - a headless connected Quantum simulation. Read the quantum_code/quantum.console.spectator/readme.md file how to use and set up
 
Changes
- Setting LoadBalancingPeer.SentCountAllowance by default to 9, which plays better with the timeout detection in Photon Realtime 4.1.6.0
 - Removing all Debug.Draw code from release dlls
 - Updated Photon Realtime Version 4.1.6.0 (19. May 2021) (please delete the old chm file (4-5-1) by hand)
 
Bug Fixes
- Fixed: The initial clock guess when running Spectator mode and making the offset configurable by DeterministicSession.SpectatingOffsetSec
 
Build 785 (May 21, 2021)
Bug Fixes
- Fixed: An issue in the navmesh steering agent waypoint detection axis that prevented it to work properly in Quantum 2.1
 
Build 783 (May 21, 2021)
Bug Fixes
- Fixed: An issue on the map data baking of 2D static polygons with rotation
 
Build 781 (May 21, 2021)
Bug Fixes
- Fixed: An issue in the collision detection of 2D and 3D entities with CCD enabled that could cause ghost collisions and callbacks
 
Build 776 (May 19, 2021)
Bug Fixes
- Fixed: An issue when detroying the entity owner of the callback flags during its OnExit physics callbacks
 
Build 770 (May 18, 2021)
Bug Fixes
- Fixed: An issue that could cause a crash inside the 
Navmesh.LineOfSight()method due to an infinite loop 
Build 769 (May 17, 2021)
Bug Fixes
- Fixed: AssetRef drawers don't fallback to Asset Base when an abstract asset is used
 
Build 768 (May 13, 2021)
Bug Fixes
- Fixed: Lacking of support to FPBounds3 in the code-gen interpreter and BitStream serialization
 - Fixed: Issues in the serialization of FPBounds2 and FPBounds3 structs
 
Build 767 (May 11, 2021)
Changes
- Increased component limit from 192 to 256
 - Triangles in QuantumStaticMeshCollider3D are now marked as non-serializable. Gizmos for static meshes are now drawn from the map triangle data
 
Build 766 (May 10, 2021)
What's New
- Support to 2D and 3D toggleable Static Colliders (all types), configurable on the Editor and toggleable in runtime with 'SetStaticColliderEnabled' in the respective physics API. Breaking
 
Changes
- Rebake all maps to upgrade existing 3D toggleable mesh/terrain colliders
 
Bug Fixes
- Fixed: An issue in the collision check against 3D trigger meshes that was causing false-positives
 
Build 765 (May 08, 2021)
What's New
- 2D and 3D KCC components now can use Broad-phase queries by calling 'AddBroadPhaseQuery' from a system running prior to the Physics
 - Support to 2.5D Vertical Transform to the 2D KCC methods
 - Support to Continuous Collision Detection on 3D Physics Engine, which can be enabled on the SimulationConfig and the PhysicsBody3D Config flags. Rebake all scenes to upgrade existing Body prototypes' version
 
Changes
- Reduced the default Hard and Soft Shape Cast Tolerances to 0.01 and 0.05, respectively, reflecting improvements in the algorithm
 
Bug Fixes
- Fixed: 3D Shape Casts hitting mesh triangles' back face
 
Build 764 (May 07, 2021)
Bug Fixes
- Fixed: An issue in the 2D CCD algorithm that could cause tunneling when the objects were already overlapping at the beginning of the time-step
 - Fixed: DumpFlag_PrintRawValues to enable raw printing, not the other way around
 
Build 762 (May 06, 2021)
What's New
- DumpFlag_PrintRawValues: pass it to Frame.DumpFrame to avoid FPs being pretty-printed
 
Build 759 (May 05, 2021)
What's New
- BitSetSIZE.Length property (returns bit capacity)
 
Changes
- BitSetSIZE can now be checked/modified with instance methods (Set, Clear, IsSet, ClearAll), all the static methods have been deprecated
 - Added BitSet instance methods
 
Bug Fixes
- Fixed: An issues with the delta angular velocity applied at 2D Physics' AddLinearImpulseAtPosition and AddLinearImpulse with relative point
 
Build 753 (May 04, 2021)
Changes
- QuantumEditorGUI.DefaultIncludeChildrenInGetPropertyHeight to true to match UnityEditor.EditorGUI default parameter values better
 
Bug Fixes
- Fixed: 2D and 3D Compound Shapes giving ArgumentOutOfRangeException on the Unity Inspector
 
Build 752 (May 03, 2021)
What's New
- Navmesh generation can now automatically correct the navmesh link positions to the closest triangle (toggle on LinkErrorCorrection)
 - QuantumRunnerLocalDebug.PreloadAddressables - demonstrates a way to preload to preload addressable assets, if Sync Addressables are not an option
 
Changes
- Reduced allocations during navmesh baking
 - Navmesh bake mode visual order in the dropdown list
 
Build 751 (Apr 30, 2021)
What's New
- More CCD settings are now exposed on the SimulationConfig
 
Bug Fixes
- Fixed: Frame Differ dumping the local Session/Runtime configs when a checksum error occured, instead of the instances received from the server and actually used on the simulation
 
Build 750 (Apr 29, 2021)
Bug Fixes
- Fixed: An issue with the normal and penetration computation of 3D Box-Box collisions
 
Build 749 (Apr 28, 2021)
Changes
- Optimized the Broad-phase AABBs of 2D Static Polygon entries
 
Build 747 (Apr 27, 2021)
Changes
- Layers static class and its methods are now obsolete. All functionalities should now be accessed through the Frame.Layers property instead
 
Build 746 (Apr 26, 2021)
Bug Fixes
- Fixed: An issue with the view interpolation on lockstep simulations (e.g. replays), where the previous verified state was not provided
 
Build 745 (Apr 23, 2021)
Changes
- 2D Static Polygons now have their baked Position on the map as its Centroid position in world space, and its baked vertices are translated to this reference (re-centered)
 
Build 733 (Apr 21, 2021)
Changes
- Created EntityViews are now parented under EntityViewUpdater.ViewParentTransform (if one is provided) on CreateView() instead of on CreateEntityViewInstance() to improve division of responsabilities
 
Build 731 (Apr 17, 2021)
What's New
- API documentation for the 2D and 3D Hit structure of physics queries
 
Changes
- Renamed 2D and 3D Hit.CastDistance field to CastDistanceNormalized, that better represents its functionality
 
Bug Fixes
- Fixed: 2D and 3D ShapeConfig.UserTag field being displayed as read-only on Editor when initialized from a Unity collider source
 - Fixed: An issue with 2D Shape Casts involving Circles that could cause hits to be missed
 - Fixed: 2D and 3D Ray and Linecast queries now populate the Hit.CastDistanceNormalized field
 
Build 730 (Apr 16, 2021)
Changes
- Importing Unity Navmesh progress bar cancel-able
 
Bug Fixes
- Fixed: An issue that cause the navmesh generation to fault with an overflow exception when importing degenerate triangles
 - Fixed: An issue that could make the Unity navmesh importing hang on "Fix Triangles On Edges"
 
Build 729 (Apr 15, 2021)
Bug Fixes
- Fixed: Unity 2020.3+ issue where when using QuantumCodeIntegration new generated asset/component scripts would not be referenceable until the next re-import
 
Build 727 (Apr 14, 2021)
Bug Fixes
- Fixed: Issues when Physics Entries or HitCollection internal buffers needed to be expanded and Broad Phase Queries have been added
 - Fixed: An issue in FPCollision.CircleIntersectsAABB that would cause circles with radius 0 (point) inside boxes to not be considered as overlapping
 
Build 726 (Apr 13, 2021)
Bug Fixes
- Fixed: 2D Physics Bodies having their X velocity being reset when the Y velocity is below the Min Linear Velocity Integration threshold
 
Build 725 (Apr 11, 2021)
What's New
- 2D Polygons with invalid normals are now shown red on the editor and give warnings when baked
 
Build 724 (Apr 07, 2021)
Changes
- Codegen header to use 
tags  
Build 723 (Apr 06, 2021)
What's New
- Transform2D.TransformPoint, TransformDirection and their respective inverse operations
 
Build 722 (Apr 06, 2021)
What's New
- Support to Continuous Collision Detection on 2D Physics Engine, which can be enabled on the SimulationConfig and the PhysicsBody2D Config flags. Rebake all scenes to upgrade existing Body prototypes' version
 - Derived structs get decorated with DerivedStructAttribute and implement IDerivedStruct
attribute  
Build 721 (Mar 31, 2021)
Changes
- Custom plugin project will init PhotonDeterminstic logging (in addition to Quantum logging)
 
Build 720 (Mar 27, 2021)
Bug Fixes
- Fixed: 2D Physics's collision manifolds not being ignored if an involved entity has its collider disabled during a physics callback
 
Build 719 (Mar 25, 2021)
Bug Fixes
- Fixed: BitSet.ClearAll methods for sets greater than 64 bits not resetting the entire buffer
 - Fixed: Generated code for BitSets with a size that is greater than and not multiple of 64 not having a correctly sized fixed buffer
 - Fixed: Joining a session with Spectate mode resulted in exceptions, now the mode will set the local player count to 0
 - Fixed: Debug log of duplicated asset paths
 
Build 718 (Mar 24, 2021)
What's New
- Quantum.StartParameters now have explanatory comments
 
Bug Fixes
- Fixed: QuantumEditorGUI for Unity 2021.1
 - Fixed: Missing 
MemoryLayoutVerifier.Platforminitialization (MemoryLayoutVerifier.DefaultPlatform()) inside SessionContainer.Start() 
Build 717 (Mar 22, 2021)
Bug Fixes
- Fixed: Custom plugin simulation stalling if the session tryied to advance the clock more than it had inputs for
 
Build 716 (Mar 19, 2021)
Bug Fixes
- Fixed: InvalidOperationException on the Frame Differ when trying to differ the dump of a single frame, which can also happen while other clients' dumps have not been received yet
 - Fixed: ArgumentNullException on console runner if no checksum file is provided
 
Build 713 (Mar 17, 2021)
What's New
- [EmitFixedArray] attribute - can be applied to array
[N] fields to force the FixedArray proxy properties being generated, even for integer types  
Bug Fixes
- Fixed: Custom Plugin sample, now disposing the session container in OnCloseGame instead of in BeforeCloseGame, so the simulation is still available during EmptyRoomTTL
 
Build 711 (Mar 15, 2021)
What's New
- XML API documentation files alongside core and PhotonDeterministic dlls (assemblies folder). If you don't want them to be copied into the Unity Quantum assemblies folder add this line to each configuration property group (debug, release) in your quantum.code.csproj 
<AllowedReferenceRelatedFileExtensions>.pdb</AllowedReferenceRelatedFileExtensions> 
Changes
- AssetDB is now exposed in the Frame Context
 
Build 710 (Mar 13, 2021)
Bug Fixes
- Fixed: NullReferenceExceptions when a client gets disconnected by the server after his local session is created and before it is started
 - Fixed: 2D and 3D physics bodies not being awakened in a collision if no impulse was necessary to solve it
 
Build 709 (Mar 12, 2021)
- Updated release history format
 
Bug Fixes
- Fixed: 2D and 3D physics bodies not having their linear and angular velocities reset when put in a sleeping state
 
Build 707 (Mar 11, 2021)
Changes
- FixedArray indexer now returns a reference, so explicit copies or GetPointer are no longer needed to modify a nested field
 
Build 706 (Mar 10, 2021)
- Upgraded Photon Realtime to version 4.1.5.1
 
Breaking Changes
- The new Realtime version restricts access to the auth token. As a guideline reconnecting after losing the connection object should always pass through the name server again
 
What's New
- A system to track the player connection state (add PlayerConnectedSystem to your SystemSetup.cs) to trigger PlayerConnected and -Disconnected signals
 - BitSet static class with IsSet, Set, Clear and ClearAll overloads for each BitSetSIZE
 - Local frame snapshots during reconnecting in the demo menu
 - StartGameTimeout to QuantumRunner params (optional). This can be used to mitigate issues when players late-join or reconnect while there is no other client or server to provide a snapshot
 
Changes
- BitSetSIZE IsSet, Set, Clear and ClearAll are now generated as obsolete
 - The demo menu scene UIConnect class by moving code into helper classes to make the connection flow more clear
 
Bug Fixes
- Fixed: A typo in QuantumToolbarUtilities code preventing the toolbar from working
 
Build 705 (Mar 09, 2021)
What's New
QuantumMapDataBakeFlags.ClearUnityNavMeshto optionally reset the Unity navmesh after baking. This solves issues with wrongly converting the Unity scene asset to binary using ForceText asset serialization
Build 703 (Mar 08, 2021)
Changes
- Events raising methods now return an event instance (or null, if the event has been culled). This makes setting fields added to events with partial classes easier
 - List, dictionaries and Ptr fields are now nullified on component being removed (after ISignalOnComponentRemoved
has been invoked). This includes fields that nested structs and arrays a component might have. To avoid this apply [DontClearOnComponentRemoved] attribute on a field  - Ptr is now serializable
 
Bug Fixes
- Fixed: Issues with debug drawing Draw.Circle() when using QUANTUM_XY, enabled drawing 2D shapes with 3D positions
 
Build 702 (Mar 05, 2021)
Bug Fixes
- Fixed: Events not being pooled and allocating with each raise
 - Fixed: Frame.Heap.AllocateAndClearPtr returning non-null Ptr values in case it failed to allocate the requested size on the frame heap
 - Fixed: Redundant prompts to reload solution when using code integration
 
Build 700 (Mar 04, 2021)
Bug Fixes
- Fixed: 3D Physics colliders that have a shape with center offset sometimes missing collisions with triangles in a mesh
 - Fixed: The centroid computation of 3D compound shapes (also affected dynamic compounds' center of mass)
 - Fixed: False-positive component override message and a subsequent crash when materialising a prototype that forces entity pool to grow
 
Build 699 (Mar 02, 2021)
Bug Fixes
- Fixed: An issue on 2D and 3D regular first-hit-only raycasts and linecasts that could cause the wrong hit to be returned
 
Build 698 (Mar 01, 2021)
Build 696 (Feb 26, 2021)
What's New
- DotNetTaskRunner for simulation processing on the plugin and console runner
 - QuantumMultiClientRunner.InitialPlayerCount - a way to kick-start multi-client runner with a number of players
 
Changes
- Core and PhotonDeterministic dlls paths of the custom plugin solution now point to the Unity folder, this way changing between debug and release dlls on the local plugin project is possible by recompiling the code solution
 - Events are now confirmed/cancelled in the order they have been raised. Non-synced duplicated events (i.e. raised from the same tick, with the same parameters) still have their handler and confirmation/cancellation invoked once - for the first instance
 
Bug Fixes
- Fixed: An issue with Photon Server Settings Editor that did not save changes to PlayerTTL only
 - Fixed: QuantumToolbarUtilities occasional error on startup
 
Build 692 (Feb 24, 2021)
Changes
- QuantumEditorSettings.EntityComponentInspectorMode default value to InlineInEntityPrototypeAndHideMonoBehaviours
 
Build 691 (Feb 23, 2021)
Changes
- EntityPrototype and EntityView editors - more consistent with other editors when dealing with prefabs
 
Build 688 (Feb 22, 2021)
What's New
- DSL keyword enum_count: enum_count
can be used as a constant (for an array size etc.)  - FrameSerializer.PointerResolve(Ptr*, int) that can be used to resolve pointers used in components
 
Bug Fixes
- Fixed: QuantumStaticMeshCollider3D & QuantumStaticTerrainCollider3D are now properly marked dirty after a bake
 
Build 687 (Feb 19, 2021)
Changes
- Quantum Inspector can now edit multiple objects
 
Bug Fixes
- Fixed: Systems inside SystemMainThreadGroup or SystemGroup not having OnInit/OnEnabled callbacks called
 
Build 686 (Feb 18, 2021)
Bug Fixes
- Fixed: An issue on the inertia matrix computation of 3D bodies with compound shapes that could cause them to not rotate on collisions
 - Fixed: The missing GenerateAssetDB flag when running Bake All Scenes Map Data from the Quantum Unity menu
 
Build 683 (Feb 17, 2021)
Changes
- The default name for the asset db to db.json (was assetDB.json) for the replay and savegame shortcuts
 
Bug Fixes
- Fixed: 2D and 3D collision solving of dynamic colliders with compound shapes
 - Fixed: Unresolved pointers error when deserializing a frame with compound shape buffers tracked for disposal
 
Build 678 (Feb 15, 2021)
What's New
- [FreeOnComponentRemoved] attribute initial work
 
Bug Fixes
- Fixed: ArrayLengthAttribute did not work in some cases
 
Build 673 (Feb 12, 2021)
Changes
- The implementation of FPCollision.ClosestDistanceToTriangle to support queries for tiny and huge triangles by reducing the precision for them
 
Bug Fixes
- Fixed: An accuracy issue in the 2D Box-Circle narrow check that could result in false positives with slightly negative penetrations, throwing assertion errors in Debug mode
 
Build 672 (Feb 11, 2021)
What's New
- FrameBase.Set method overloads accepting AssetRefEntityPrototype
 
Changes
- QuantumAutoBaker better error handling
 
Bug Fixes
- Fixed: An issue where adding [Serializable] attribute in DSL resulted in compile error
 - Fixed: An issue with FPCollision.ClosestDistanceToTriangle that could cause a div by zero exception on tiny triangles
 - Fixed: Displaying name of Config flags field of PhysicsBody components on entity prototypes
 - Fixed: QUANTUM_ADDRESSABLES properly stripped from a package
 - Fixed: Removed BOMs from merged scripts
 
Build 668 (Feb 10, 2021)
Changes
- FrameBase.Set(EntityRef, EntityPrototype) and FrameBase.Set(EntityRef, EntityPrototype, out ComponentSet) now invoke ISignalOnEntityPrototypeMaterialized
 - Unity QuantumCallbacks' constructors have been made public
 
Bug Fixes
- Fixed: An issue QuantumStateInspector would not refresh GUI when stepping frame-by-frame
 - Fixed: Inertia computation of sphere bodies that could cause issues when rotating on the Z or X axis
 
Build 667 (Feb 09, 2021)
Changes
- Warning when FindAsset encounters an asset type mismatch
 
Bug Fixes
- Fixed: 2D and 3D PhysicsCallbacks and PhysicsJoints components printing the full internal buffers on the State Inspector or on frame dumps instead of only the used count
 - Fixed: ArrayLength attribute gets applied on arrays even if a field is hidden
 - Fixed: Navmesh gizmo triangles and Pathfinder Gizmos from the QuantumEditorSettings for QUANTUM_XY
 
Build 665 (Feb 05, 2021)
Bug Fixes
- Fixed: Issues with using cached physics static data when starting an online game from a local snapshot that uses a different Map than the one the simulation starts with
 
Build 664 (Feb 04, 2021)
Bug Fixes
- Fixed: An issue where having singleton components on scenes would raise occasional exceptions. Singletons can be removed/destroyed and then created again without committing frame commands
 - Fixed: Possible DivideByZeroException on raycast-sphere checks when the ray length is too small
 - Fixed: QuantumStateInspector issue where components filters were not applied on script recompilation
 - Fixed: QuantumStateInspector issue where exceptions thrown by the state object inspector would mess up the entire UI
 - Fixed: QuantumStateInspector issue where lists with elements removed were triggering an assertion
 - Fixed: Wrong info on physics callbacks when an entity was involved in multiple OnEnter/OnExit conditions in the same frame
 
Build 660 (Feb 03, 2021)
Changes
- Upgrade_instructions to clear up the instructions about changes in the Unity project editor folders
 
Build 659 (Feb 02, 2021)
- Improved QuantumStaticMeshCollider3D.Bake() by reducing the number of Unity Mesh property calls
 
What's New
- Custom Quantum Plugin API documentation
 
Changes
- There's an implicit limit of max allocation (64kB), regardless of the page size. Improved exception message if that error is reached
 
Bug Fixes
- Fixed: Possible null ref exception on custom plugin
 
Build 656 (Feb 01, 2021)
- Removed AssignEntityRefs prototype creation step. From now on entities are mapped during Materialization step
 
What's New
- ComponentTypeNameAttribute to handle component type selection more easily in the editor
 
Changes
- ComponentTypeSetSelector and ComponentTypeSelector use component type name instead of Assembly Qualified Name. The old field has been made obsolete, but still works
 - JsonAssetSerializerBase detects if a type is from quantum.code assembly and uses a short name in that case
 - Dictionary inspector for prototypes. An error icon is shown if there are duplicate keys. Keys are inlined and made read-only for folded elements
 
Bug Fixes
- Fixed: Emit custom attributes for dictionaries
 
Build 653 (Jan 29, 2021)
Bug Fixes
- Fixed: 2D and 3D Physics Solvers' accumulative impulse when colliding with several entries
 
Build 651 (Jan 28, 2021)
- Removed PhysicsSandbox.qtn missing file from the SDK package (DEV only)
 
What's New
- Embedded asset db file loading to the custom plugin (will be documented in upcoming plugin docs revision)
 
Changes
- Generated Asset scripts fully qualify the type of their Settings field to avoid possible conflicts. Cherry pick of 72fdb0af48b6e2080c1663c1b79dfbc84ebd925e
 - RangeDrawer to RangeAttributeDrawer
 - Removed special version information from the custom plugin project references
 
Build 650 (Jan 27, 2021)
- Removed quantum.console.runner project from the Quantum code solutions, it's still inside the SDK though
 
What's New
- Overloads to 2D Physics API that accept a persistent HitCollection* instead of allocating a temporary one
 - Overloads to 3D Physics API that accept a persistent HitCollection3D instead of allocating a temporary one
 
Bug Fixes
- Fixed: 3D Shape Queries with position offset when resolving against the 3D Scene Mesh
 - Fixed: CircleCast->Circle and SphereCast->Sphere checks when the casted shape had position offset
 - Fixed: Line endings in Quantum AOT
 
Build 649 (Jan 26, 2021)
- Removed Navigation.Contants.VelocityObstacleTruncationFactor and moved it to the navigation part in simulation config
 
What's New
- Print support for dictionaries
 - Prototypes are correctly generated for types containing dictionaries (Unity inspector is a bit lackluster at the moment)
 - Partial method UnityDB.LoadAssetResourceContainerUser - a way to change where AssetResourceContainer is loaded from. If not implemented, it is loaded as a Resource from QuantumEditorSettings.AssetResourcesPathInResources). Renamed: UnityDB.ResourceManager to UnityDB.DefaultResourceManager (the old property is still available, but made obsolete)
 - QuantumEvent/Callback.Subscribe overload that takes an array of game modes
 
Changes
- AutoMenu to start the map right away if there is only one to chose from
 
Bug Fixes
- Fixed: Warning in Quantum Unity scripts emitted from UnityInternal
 - Fixed: Issue on the trigger detection between physics colliders with compound shapes and trigger static meshes
 - Fixed: Unity 2020.2.2 reflection error for LayerMatrixGUI.DoGUI
 
Build 644 (Jan 21, 2021)
Bug Fixes
- Fixed: An issue where [Reorderable] array would not expand in Unity 2020.2
 
Build 637 (Jan 18, 2021)
- Initial release
 
Bug Fixes
- Fixed: Inspector for arrays in Unity 2020.2: reorderable lists are simply not compatible with Quantum Editor GUI and hence have been disabled for Quantum types for now