Release Notes 2.1
2.1.9
Stable
Build 1561 (Oct 01, 2024)
Bug Fixes
- Fixed: An issue on the plugin sdk that causes server snapshots in empty rooms to fail with
ERROR# 15
Build 1529 (Jul 17, 2024)
What's New
- Support to physics
QueryOptions
andCallbackFlags
types 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.Materialize
overloads that receive anchor references instead of aPrototypeMaterializationContext
QuantumGameFlags.InitSystemsBeforeCallbackGameStarted
- passing it start parameter'sGameFlags
in will invokeCallbackGameStarted
callback after systems are initializedRuntimeConfig.GetUserByteArrayCapacity
- partial method that allows to override the default byte array capacity used inToByteArray
AssetBase.AssetRefT
- a property that always returns the underlying AssetObject as the most derived type instance. Helps to avoid casting the result ofAssetBase.AssetObject
if asset type hierarchies are used- Added a
save
button 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<T> is now reduced after component-remove signals are invoked instead of before
- Frame Heap now throws an
OutOfMemoryException
when it fails to allocate - The
QuantumLoadBalancingPeer
setLoadBalancingPeer.ReuseEventInstance
by 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
PrototypeMaterializationContext
constructor is now publicQuantumRunnerLocalDebug.RecordingFlags
is set toNone
by default- A warning message is logged if decompressing checksum error frame data fails
- Disabled prefab variant workaround for Unity 2021+
AssetDB.LoadedAsset
is 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:
LayerMatrixGUI
error 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
FixTrianglesOnEdgesHeightEpsilon
for 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 forcingInit
on 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
ResetMap
in 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
LayerInfo
is now exposed inFrameThreadSafe.Layers
property, similarly toFrame.Layers
Session.IsDestroyed
andQuantumGame.IsSessionDestroyed
properties 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
QuantumGame
asvirtual
(e.g. OnGameStart(), OnSimulate, ..) - Added the optional paramter
arrayCapacity
toRuntimeConfig.ToByteArray(RuntimeConfig config, int arrayCapacity = 8192)
andRuntimePlayer.ToByteArray(RuntimePlayer player, int arrayCapacity = 8192)
ColorRGBA.Lerp
and.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.ImportSettings
calledFixTrianglesOnEdgesHeightEpsilon
, 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.IsSubsetOf
not computing the returned value correctly - Fixed: An issue that caused
Frame.GetPlayerData()
to return valid data before theOnPlayerData
callback 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.DrawGizmos
due to math LUTs not being loaded - Fixed: An issue in pathfinding that caused the
OnSearchFailed
callback 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
FPAnimationCurvePropertyDrawer
that ignored theWeightedMode
for 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.StaticColliders3DTriangles
is now aSortedDictionary
instead 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.cs
script 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
EntityPrototype
components whenEntity Component Inspector Mode
is 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:
QuantumPrefabAsset
not 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, Enum
constraints - 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
AddShapeCastQuery
query options parameter (optional) havingComputeDetailedInfo
as 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.StaticColliders2D
and.StaticColliders3D
tooltips - 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 theAssetBase
script'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 theEntityComponentBase
script'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 usingMergeWithVisualStudioSolution
option will addRelease
configuration to the generated solution, if missingEndOfLineCharacters
option 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_PATH
andQUANTUM_CODE_INTEGRATION_DOTNET_PATH
env variables
Improvements
QuantumTaskRunnerJobs
now 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,
dotnet
command line tool will be used to run Unity code generation
Bug Fixes
- Fixed:
AssetBase
generated forSimulationConfig
is now suffixed with ".Partial" to avoid name clashes in Unity 2022.2.x - Fixed:
EntityComponent
scripts for some built-in components are now merged intoAssetTypes.Partial.cs
to 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.ComponentCount
if Commit Commands Mode is set toOnFrameSimulationBegin
in 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
ArgumentOutOfRangeException
is thrown if attempting to allocate more than 4GB - Default
CustomQuantumServer
now wraps the session container servicing logic in a try-catch and destroys the container if an exception is thrown Transform3D.Rotate
methods 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
SimulationConfigAsset
editor - Fixed: "Do not use ReadObjectThreaded on scene objects!" error when importing scenes (.unity) in any of
AssetSearchPaths
locations - Fixed: Unity crash due to size overflow in allocator when trying to allocate or clear more than
int.MaxValue
bytes (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
NavMeshAvoidanceObstacle
velocity 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
AllowCCD
and enabling it in runtime - Fixed: An issue on
QuantumRunner
that 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_FIX
to 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 sampleQuantumGameFlag
that 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
MassInverse
properties, 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
GetHashCode
methods 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
PhotonQuantum
andPhotonQuantumEditor
assembly 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_AI
andQUANTUM_ENABLE_TERRAIN
- Unity 2018 - Addressables packages references are not automatically added when toggling
QUANTUM_ADDRESSABLES
define
Bug Fixes
- Fixed: Code-gen issue that could cause an
IndexOutOfRangeException
if a large enough number ofGetHashCode
instances 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:
EntityViewUpdater
not performing smooth prediction error correction inSpectator
mode (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
MaxSpeed
if the currentVelocity
is in the opposite direction of the intended movement - Fixed:
TooltipAttribute
being ignored forFPAnimationCurve
fields - Fixed: Quantum shortcut Unity window error message spamming
2.1.1
Stable
Build 1122 (Sep 26, 2022)
What's New
- Added
USER_CODE.txt
files 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
EntityView
prediction 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
QuantumEditorSettings
and 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
DivideByZeroException
on 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
PhotonQuantum
andPhotonQuantumEditor
assemblies 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 ofPhotonQuantum
assembly, types from global assembly can't be used andAssembly Definitions References
list needs to be updated to access types defined in other assemblies. If the transition proves problematic, removingPhotonQuantum.asdef
andPhotonQuantumEditor.asmdef
will 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:
QuantumInstantReplay
has been reworked and simplified. If your code depends on the old implementation, useQuantum.Legacy.QuantumInstantReplay
instead. - Unity:
Map
andNavMesh
assets no longer create extra binary files to be loaded withIFileLoader
. They useBinaryData
assets instead. Rebake all your maps withQuantum/All Scenes
orQuantum/All Enabled Scenes
. Old binary files will be removed in the process. - Unity: Removed
QuantumEvent
/QuantumCallback.Subscribe
parameterexcludeGameMode
. UsegameMode
andexclude
parameters instead. AssignEntityRefs
prototype materialization phase has been removed.EntityRef
fields are now resolved during theMaterialize
stage. This means that any changes toEntityRef
fields performed inISignalOnComponentAdded
signal or inMaterializeUser
partial 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 debugMapNavMeshDebugDrawer
instances (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
Obsolete
attribute. - 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
SessionContainer
class has been refactored and will showobsolete
warnings. Use the class from theQuantum.Legacy
namespace 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.dll
used 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
Enabled
property, 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.FindAsset
accepting 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.code
has been built inDebug
mode. - Native Strings
QString<N>
andQStringUtf8<N>
DSL types withN
being 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
&server
event keywords added. Events marked withclient
are culled immediately when simulation is running as a server plug-in. Marking withserver
has the opposite effect. - DSL:
FreeOnComponentRemoved
attribute: 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.code
project source files can now be entirely moved to the Unity project. Readtools/codeintegration_unity/README.md
for details.BinaryData
: an asset hosting binary data with a support for lazy decompression.- Math:
FPMath.SinCos
(much faster than callingFPMath.Sin
and thenFPMath.Cos
). - Math: Logarithms (
FPMath.Log2
,FPMath.Log10
,FPMath.Ln
,FPMath.Log
,FPMath.Log2FloorToInt
andFPMath.Log2CeilingToInt
). - Prototypes: Inspector support for dictionaries.
AssetGuid.TryParse
EntityRef.TryParse
RNGSession.NextInclusive
andRNGSession.Peek
.FrameContextUser.ConstructUser
andFrameContextUser.DisposeUser
partial methods.Frame.Serialize
overload 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
,QuantumJsonSerializer
andQuantumUnityJsonSerializer
auto-compression ofBinaryData
(CompressBinaryDataOnSerializationThreshold
andDecompressBinaryDataOnDeserialization
properties)- Unity:
BinaryDataAsset
: a wrapper for BinaryData assets. Supports compression and can point to a TextAsset as their data source. - Unity:
QuantumMapDataBakeFlags
:BakeMapPrototypes
andBakeMapColliders
flags can be used to enable/disable baking of prototypes/colliders to speed up the auto-bake process. - Unity:
QuantumEvent/Callback
: an optionalDispatchableFilter
argument toSubscribeManual
- Unity:
QuantumEvent/Callback
: an optionalonlyIfEntityViewBound
argument toSubscribe
(makes sure the handler will only be invoked ifEntityView
on the listener hasEntityRef
assigned.GetComponentInParent
is used to get theEntityView
instance) - Added
PositionOffset
andRotationOffset
to most of the Quantum static collider scripts (these offsets are baked into the map) - Added support for the
Inspector.Reorderable
attribute 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.Normalize
andFPVector2.Normalize
speed up and precision increased - Physics: First-hit-only Raycasts' performance improvements
- Synced events are culled immediately when a frame is predicted
quantum.codegen.unity
now 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
FreeOnComponentRemoved
are decorated with a reminder that they need to be freed manually. - Removed
IFileLoader
and all its implementations AssetGuid.ToString()
format changed to 16 digit hexadecimal number in brackets, e.g.[0012345789ABCDEF]
EntityRef.ToString()
format changed toE.IIIII.VVV
format (I - index, V - version), e.g.E.00123.001
FPSinCos.bytes
replaced bothFPSin.bytes
andFPCos.bytes
; since Unity packages can't handle file removal,FPSin.bytes
andFPCos.bytes
are now 0-sized and can be safely removed- Removed
PROFILER_REPORT
define constant from thequantum.code
project (QUANTUM_REMOTE_PROFILER
on Unity's side remains) - Unity: Scene loading has been reworked and is now controlled with
SimulationConfig.AutoLoadSceneFromMap
enum.UnloadPreviousSceneThenLoad
is the new default. TheLegacy
way of loading scenes can still be selected but due to bugs it is discouraged. - Unity: We added a new menu item
Export Asset DB
and 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 inEntityPrototypeAsset
andMapAsset
have 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.QualifiedName
andComponentTypeSetSelector.QualifiedNames
still work, but have been made obsolete. Use ComponentTypeName/ComponentTypeNames instead.JsonAssetSerializeBase
uses 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
Good
orBest
(toggle onDrawPathfinderRawPath
in 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
Cost
in theMapNavMeshRegion
scriptNavMeshAgentConfig
- 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
AvoidanceCanReduceSpeed
toggle (default is off) - Added
VerticalPositioning
selection to the steering section
- Removed
SimulationConfig.Navigation
- Added
HeightThresholdForAvoidance
to filter out agents that are too far from each other (only required for 3D navigation) - Added
HeightThresholdForWaypoints
to 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
minDistanceToBorder
parameter - Changed Int32
findValidTargetCellRange
to FPautomaticTargetCorrection
- Now returns a
FindPathResults
object which gives more information about what went wrong (see below) or uponSuccess
gives 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
FPVector3
inputs - 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
NavMesh
MovePositionIntoNavmesh()
removedagentRadius
and removedradiusThreshold
FindTriangle()
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
docs
folder 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_REPORT
define constant from the quantum.code project (QUANTUM_REMOTE_PROFILER on Unity's side remains) - Removed
DebugGizmoSize
from 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
QuantumRunnerLocalDebug
now hides theSave and Reload
GUI button by default (toggleDisplaySaveAndReloadButton
to change)
Bug Fixes
- Fixed: The bake flag
QuantumMapDataBakeFlags.ClearUnityNavMesh
now 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
OnReleased
overridable 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
Unsequenced
which 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()
withAutomaticTargetCorrection
disabled. 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
IgnoreTrigger
property 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
,.Warn
andError
methods that explicitly accept 1-3 arguments and can avoid the implict allocation of arguments' array - Quantum codegen tools now support
--help
command to list their usage and--version
Build 1101 (Aug 24, 2022)
What's New
- Frame
IsCullable
method to check if an entity can be culled during predictions if out of a defined prediction area
Changes
FrameContext.InPredictionArea
is now marked asvirtual
and can be overriden with a custom implementationSchedule
method 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. IfautomaticTargetCorrection
is set tofalse
no correction is attempted anymore., which not recommended for 3D navmeshes
Build 1099 (Aug 22, 2022)
Bug Fixes
- Fixed: Static colliders'
Settings
field 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
AssertException
inside theAvoidanceBroadphase
when using world positions > 500
Build 1095 (Aug 16, 2022)
What's New
Log.Info
,.Warn
and.Error
overloads 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
None
shape
Bug Fixes
- Fixed: Local simulation (offline) stalling if feeding the simulator with a delta-time greater than rollback-window (usually triggered when using
Default
asSimulationConfig.DeltaTimeType
) - Fixed: An issue that could cause errors on the navigation broadphase when
AvoidanceRanges
were 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.Physics
that 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.Transform
andVerticalPositioning.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
,StaticColliderGizmoStyle
andJointGizmosStyle
Changes
GizmoUtils.Draw()
methods do not change the color alpha anymore,selected
will add a brightness highlight effect instead which is configurable byQuantumEditorSettings.GizmoSelectedBrightness
- Meaning of
DeterministicSimulator.FramesPredicted
changed 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 Seidel
in 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:
QuantumFrameDiffer
not 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.UseableMin
and.UseableMax
; andFPVector2.MinValue
,.MaxValue
,.UseableMin
and.UseableMax
Changes
QHashSet
requested 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
HasFlag
is now namedIsFlagSet
, preventing a fallback toSystem.Enum.HasFlag
instead of the extension method, which should be used to prevent the generation of boxing allocation - Fixed: Missing
using UnityEngine
statement onQuantumUtils.cs
when using Unity 2019.2 or newer
Build 1080 (Jul 20, 2022)
What's New
EnterPlayModeOptionsHandler
editor script - clears static fields upon entering Play Mode (Unity 2019.2+)- Support for
Reload Domain
being 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.ComponentCount
overloads 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_INSPECTOR
define 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
ColorRGBA
property drawer
Bug Fixes
- Fixed: Navmesh related bug introcuded by last build (1072)
Build 1072 (Jul 12, 2022)
Changes
- Marking
ColorRGBA
struct [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
QuantumTaskRunnerJobs
now has theSchedule
method 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._commandExecuted
not 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
CreateAssetMenu
entries of navmesh related scripts to Quantum>Navigation
Build 1063 (Jun 27, 2022)
What's New
- 2D and 3D KCC
SetConfig
methods, 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
ExecutionEngineException
during desync error dumps (QBoolean was stripped)
Build 1061 (Jun 23, 2022)
Bug Fixes
- Fixed: Handle exceptions on protocol messages gracefully by calling the
OnPluginDisconnect
callback 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
IndexOutOfRangeException
duringGenerateTriangleGrid()
when triangle vertices are located exactly on the grid edge
Build 1059 (Jun 21, 2022)
Changes
QuantumEditorSettings
togglesUse XY As 2D Plane
andDisable Modules ...
now affect all platforms instead of only the current one
Build 1058 (Jun 20, 2022)
What's New
- Inspector tooltips for
Map
asset 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
IsAwakenbyForces
is disabled on the body configs - Fixed: Backslash in string giving error CS1009 on
LoadbalancingPeer.cs
when 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.runner
andquantum.console.spectator
projects are not included inupgrade/quantum_code.zip
. In order for existing projects to benefit from recent fixes toQuantumJsonSerializer
enableAllow unsafe code
and copyQuantumJsonSerializer.cs
from SDK'squantum_code/quantum.console.runner
andquantum_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.cs
before namespace when generating code on Mac - Fixed:
NavMesh.DataAsset
is 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_ENABLED
to 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
SessionContainer
can now be started with a different implementation ofIDeterministicPlatformTaskRunner
(defaults to built-inDotNetTaskRunner
)
Changes
- The custom plugin sample now starts the
SessionContainer
with 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.RawPathSize
and Allocation strategy:Fixed
= fail to find larger paths,Allocate
= grows the raw path array. This replacesNavigation.Constants.RawPathSize
which has been marked as obsolete
Bug Fixes
- Fixed: An exception inside the pathfinding for huge paths
- Fixed: An issue with
FindPathResult.Path.Index
causing 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.Assert
andPhotonDeterministic.Assert
methods
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
Layer
fields 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-profiler
assemblies 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.runner
from 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.Asserts
withSystem.Diagnostics.CodeAnalysis.DoesNotReturn
attributes
Changes
- Minor changes on the inspector
PhotonServerSettingsEditor
Build 1027 (Apr 25, 2022)
What's New
- Added
SimulationConfig
tooltips
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 whetherEntityViewUpdater
will look for the currentMapData
withFindObjectOfType
(true by default)
Bug Fixes
- Fixed: The navigation agent configuration option
Avoidance Can Reduce Speed
which 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
DivideByZeroException
when performing a circle cast with a very small translation vector
Build 1017 (Apr 19, 2022)
What's New
GetActorIds
to retrieve all actors currently in aDeterministicServer
Draw.Box
and.WireBox
methods to the debug draw API
Build 1016 (Apr 14, 2022)
Changes
QString
andQStringUtf8
types 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.LineOfSight
methods withAggressiveInlining
- Removed Trace logs coming from Debug
PhotonDeterministic
dll, including "Adjusting clock" notifications
Build 1009 (Mar 29, 2022)
Improvements
- Exposed
GravityStrength
andGravityNormalized
properties on 2D and 3D KCC config assets
Changes
- Removing explicit use of Newtonsoft Json
TypeNameHandling.Auto
which 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.LineIntersectsAABB
methods 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.ScenePath
andMap.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
DumpFrameUser
onFrame.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.Loaded
not being called for assets deserialize from snapshot - Fixed: Loading of dynamic assets from
AssetObject.Loaded
Build 1000 (Mar 15, 2022)
What's New
- 2D
PolygonShape
now 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 usesMap
instead 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.Ptr
fields now use namespace-qualified type name
Build 988 (Feb 23, 2022)
Bug Fixes
- Fixed:
Frame.FreeUser
being called afterFrameBase.Free
, which disposes the Heap memory - Fixed: 2D and 3D Physics engines'
Init
methods now ensure that world and bucket sizes are initialized with valid values, avoidingDivideByZeroException
Build 987 (Feb 18, 2022)
Bug Fixes
- Fixed:
Frame.FrameAssets
incorrectSimulationConfig
find 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.1223
will emitConstants.FPConst
andConstants.Raw.FPConst
Bug Fixes
- Fixed: Codegen errors not appearing in
Errors List
window
Build 983 (Feb 11, 2022)
What's New
- Support to disable Unity modules to reduce the build size. Toggle in
QuantumEditorSettings.Disable***Module
or 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.cs
removed - 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
GetHashCode
override for each simulation struct - DumpFlag_PrintRawValues dump flag also makes QDictionary print key hash values
- QBoolean implements IEquatable<QBoolean>
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.FromString
returning 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.1
app 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.LineIntersectsCircle
no 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
QuantumEditorSettings
now 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 optionaloverwrite
bool 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.LoadMissingPrefab
will 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.Map
as 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
SimulationConfig
Thread 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
OnBeforeBake
signature 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
OnBeforeBake
signature that includes the bake flagsQuantumMapDataBakeFlags
Build 964 (Jan 21, 2022)
What's New
EntityViewUpdater.LoadMissingPrefab
- a way to load a view if it missing inEntityView
asset- 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
EntityViewAsset
orEntityPrototypeAsset
and 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 Navmesh
was also affected. Please switch to the signature withFrame
when using the method explicitly - Fixed: MemoryIntegrity error for ComponentReference
,
EntityPrototypeRef,
CompoundShape3Dand
CompoundShape2D` 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
OnExit
callbacks 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
InputOffsetMin
of the config sent by the client differed from the one received from the server
Build 949 (Dec 08, 2021)
What's New
QuantumGame.SendPlayerData
overload 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
TryGetQueryHits
method 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
Map
property 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
Loaded
callback was invoked - Fixed: CodeGen - order of attributes for Unity prototype scripts is more cross-platform now, with
System
attributes being emit first
Build 944 (Nov 29, 2021)
Bug Fixes
- Fixed:
DivideByZeroException
onFPVector3.Slerp
and.SlerpUnclamped
when 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 ifComponents
property has been modifiedSystemIsEnabledSelf
,SystemIsEnabledInHierarchy
- Nested systems are enabled/disabled when group is enabled/disabled
Changes
OnEnabled
andOnDisabled
callback 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
DelaunayTriangulationRestrictToPlanes
in those cases - Fixed:
EntityPrototypeContainer
not 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.Task
namespace now have theirOnInit
override marked as sealed. Inheritors can overrideOnInitUser
instead
Build 940 (Nov 23, 2021)
Bug Fixes
- Fixed:
Photon/Quantum/Editor/Generated
scripts being included in the unity upgrade package
Build 939 (Nov 22, 2021)
Bug Fixes
- Fixed: Misleading
velocity
parameter on 2D and 3D KCC, now renamed todirection
Build 936 (Nov 18, 2021)
What's New
QuantumGameFlags
code documentation
Changes
DeterministicCommandSerializer
will now log a warning when attempting to register multiple Command factories of the same type
Build 935 (Nov 17, 2021)
Bug Fixes
- Fixed:
AssertException
in 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
FPAnimationCurve
where thePostWrapMode
was 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.CompoundCommand
type - Built-in support for Command pooling through the new
DeterministicCommandPool<T>
class, which can also be registered as factory onDeterministicCommandSetup.AddCommandFactoriesUser
IDeterministicCommandFactory
interface, 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
BitStream
size used forRuntimeConfig
serialization changed from 1 to 8KB CommandSetup.CreateCommands
is now deprecated. Command factories should be registered through a partial declaration ofDeterministicCommandSetup.AddCommandFactoriesUser
instead, as shown onCommandSetup.User.cs
available 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.cs
file was replaced byCommandSetup.Legacy.cs
andCommandSetup.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.cs
file from thequantum_code.csproj
and copy and addquantum.code\CommandSetup.Legacy.cs
andquantum.code\CommandSetup.User.cs
from 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
TryResolve
QCollection 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
GetStaticData
methods 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 setGenerateLinkingScripts
tofalse
to preventMonoBehaviour
from being created for this component
Changes
- Prototype components are no longer emit as
sealed
classes
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
NullReferenceException
when 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.AllocateList
andFrame.AllocateDictionary
overloads that takeQListPtr
/QDictionaryPtr
for 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.UsableMax
raw 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.host
argument: third and subsequent arguments specify additional assembly search paths; useful whenquantum.code
references external assemblies
Bug Fixes
- Fixed:
DebugDraw.DrawSphere
not usingDebugDraw
material
Build 911 (Oct 11, 2021)
What's New
FPMatrix2x2
operators andInverted
getterIEntityPrototypeMaterializedListener
- 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
PrototypeMaterializationContext
used onComponentPrototype.AddToEntity(Frame, EntityRef)
now has theEntity
andComponentTypeId
fields set
Build 910 (Oct 08, 2021)
Changes
QDictionary
indexer 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 throwsKeyNotFoundException
instead ofInvalidOperationException
if the key is not found- CodeGen: less property drawer types generated.
PrototypeDrawer
is a partial class now and can have more types added withCustomPropertyDrawer
Bug Fixes
- Fixed: Upgrade
tools_and_assemblies.zip
now containstools/codeintegration_unity
folder
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_Prototype
types 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.GetLayerMask
overloads 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
GetCallbacks
on 2D and 3D Physics API, allowing the retrieval of the physics callback flags currently set to a given entity
Bug Fixes
- Fixed:
AssetBasePostprocessor
andEntityViewEditor
not 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.CanSimulate
now returns false instead of throwing anIndexOutOfRangeException
in some cases where the requested frame is not in the input buffer
Removed
- Marked
QuantumRunner.StartParameter.IsRejoin
andDeterministicSession.Join()
isrejoin
parameter 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.GetHashCode
is 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
Sleep
method 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.Reset
methods and optional offset/count parametersComponentBlockIterator.Reset
methods
Bug Fixes
- Fixed: An issue in the navigation system for
MovementType
callback that could cause thedesiredDirection
parameter of theOnNavMeshMoveAgent
callback 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.NavMeshSteeringAgent
now updates it'sVelocity
field in the case ofMovementType
callback
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.Lockstep
helpbox text - Fixed: Full type names not working with
import struct
andimport 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
IDeterministicGame
interface 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
IsTrigger
field as read-only on Inspector
Build 885 (Sep 12, 2021)
What's New
- Safe overloads of 2D and 3D Physics'
AddShapeCastQuery
,ShapeCast
andShapeCastAll
methods
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
CharacterControllerMovement
data returned by raw queries Without
andAny
virtual 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
,Set
andRemove
that accept a component index instead of a concrete type
Build 882 (Sep 09, 2021)
What's New
[PtrSize]
attribute - a way to setPtr
data 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.Player
class onQuantumMultiClientPlayer
are 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
EnumFlagsAttribute
moved to to quantum.code. OldEnumFlagsAttribute
still 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.PtrBufferAttribute
perPtr
field. Useful if the pointer contains non-uniform data
Changes
- FrameDump caused by a desync uses Frame.DumpFlag_ComponentsChecksum flag
- Reduced
NavMeshPathfinder
size to 96 bytes (from 112)
Bug Fixes
- Fixed: An issue in the
NavMeshPathfinder
component 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:
NavMeshPathfinder
serializing unused waypoints data - Fixed: Assertion error when allocating an
UnsafeHashMap
structure 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.Native
class fully qualified, to avoid clashes between different packages (like with Photon Fusion)
Build 865 (Aug 30, 2021)
What's New
GetPointVelocity
andGetRelativePointVelocity
helper methods to 2D and 3D Physics Body components
Build 864 (Aug 27, 2021)
Changes
- QuantumEditorSettings inspector no longer displays an error if any of
AssetSearchPaths
is not anAssets
-based path
Bug Fixes
- Fixed: AssetDB not supporting assets from Packages
Build 863 (Aug 26, 2021)
What's New
Assert.Check
andAssert.Always
overloads 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
AddLinearImpulseAtPosition
andAddForceAtPosition
Bug Fixes
- Fixed: An assertion thrown in
ThreadLocal.AllocateMailboxBuffer()
that was caused by aNavMeshPathfinder
component being set toActive
without having associated a navmesh usingSetTarget()
before
Build 860 (Aug 20, 2021)
Bug Fixes
- Fixed:
QList.GetEnumerator
no 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
EmptyRoomTTLInSeconds
to thePhoton Sever Settings
script - 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
DeterministicPlugin
andDeterministicServer
now 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
DeterministicPlugin
as 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.AngularSpeed
which 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
SessionContainer
where 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.CreateSystems
can 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.ClearTorque
not clearing accumulated torques, only angular impulses
Build 846 (Jul 24, 2021)
Breaking Changes
Quantum.Physics2D
and.Physics3D
classes 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
,SpringJoint
andHingeJoint
- Serialization code to
Physics2D.Hit
andPhysics3D.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
,.RemoveAtUnordered
and.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 existingSetStiffness
method
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
PhysicsSceneSettings
will 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.WriteStringGZip
and.ReadStringGZip
serialization 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/DB
folder
Build 824 (Jul 01, 2021)
Changes
- Inverted the
.gitignore
proposal 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.Slerp
andSlerpUnclamper
, 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 virtual
and 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.txt
andAssets/Photon/PhotonRealtime/Code/changes-realtime.txt
for changes
Removed
Assets/Photon/PhotonLibs/WebSocket
folder 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
UpdateView
andPollInput
andSimulateFinished
to 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:
QuantumStats
prefab adding a newUnityEngine.EventSystem
even 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.dll
used 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
NavmeshPathfinder
agents become stuck at the last waypoint before the target - Fixed: An issue that could result in the
NavmeshSteeringAgent
jumping between 3D platforms when using the movement typeTransform
and 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
SessionContainer
has been refactored. Adapt changes by fixing theobsolete
warnings and use explicit start methodsStartReplay()
orStartSpectator()
or use theSessionContainer
class from theQuantum.Legacy
namespace
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 <auto-generated> 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<T> 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.Platform
initialization (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<T>[N] fields to force the FixedArray<T> 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.ClearUnityNavMesh
to 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<T> 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<EnumType> 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