We are delighted to announce that CRYENGINE 5.6 is now available from www.cryengine.com and also via the CRYENGINE Launcher. This major release packs in over 1,000 changes and includes production-proven features which have been used to deliver Hunt: Showdown. Everyone at Crytek would like to thank the entire CRYENGINE community for all the feedback and suggestions that have helped to shape the development of this release. This Engine is for you and we couldn’t have done it without you.
CRYENGINE 5.6 is designed to put more power in your hands and make game creation quicker and easier. We’re sure you’ll agree that it marks a big step forward for the Engine. As you know, work doesn’t stop and we’re already looking at the roadmap for CRYENGINE 5.7. Make sure you keep your thoughts and feedback coming - it really does make a difference.
To celebrate the launch, we have put together a CRYENGINE 5.6 technology showcase. Check it out below;
Contributors
We would like to say a massive thank you to the following for their valuable contribution in the making of this 5.6 release of CRYENGINE.
For more information, see the Important CRYENGINE 5.6 Data and Code Changes article.
The Sandbox Editor now controls project creation and management, making getting started with a new CRYENGINE project faster and giving developers more flexibility with this new streamlined and improved workflow.
This new feature advances the visual reproduction of metals and gives more artistic control over the creation of a range of materials. By describing materials as a stack of layers of varying thickness, each with different optical properties, users can, for instance, model a wet surface by defining a slightly absorptive layer on top, and spatially or temporally varying the thickness of that layer.
Area lights deliver a better representation of how light behaves than traditional punctual light sources. CRYENGINE’s new implementation makes use of pre-computed textures, which will calculate and model area lights far more accurately. It also allows for more flexibility when defining different kinds of light shapes. As of right now, the area lights are a part of the Point Light Component, so if you have point lights in your scene, you can easily change them to area lights
The Render Ribbons feature has a new option called Tessellated. This enables the graphics card’s tessellation stage to smooth the joints in ribbon particles by generating new polygons in a curved shape which is also adaptive to distance. This feature benefits ribbon effects, including trails from flying objects and organic objects like worms or vines.
This feature is designed to create gears, but also has other functions. It allows users to manually specify which entity will ‘own’ the constraint point, and since each constrained entity can have its own constraint point in place, it’s possible to create objects like belts with this feature.
Closed cloth shapes can now have internal pressure based on the current shape volume in this extension to the existing cloth entity.
Ropes can now use bones and skinning and can be built from custom *.cgf meshes, repeated several times. This enables a chain ‘rope’ to be created from a single link and allows for the rapid creation of vines or complex cables that fit naturally in the environment.
Ragdoll IK is a physics-aware, energy-based, full-body IK, which tries to satisfy constraints imposed on the physics skeleton with minimum effort energy-wise. The effect is similar to applying physics impulses to characters, except the results are computed instantly, without the physics thread running.
CRYENGINE is audio middleware agnostic, and we’re proud to integrate support for CRIWARE ADX2, a comprehensive and easy-to-use audio system. If your team is already familiar with ADX2, the transition to CRYENGINE is simple. Discover more about CRIWARE ADX2 at https://www.criware.com/en/products/adx2.html.
The new Behavior Tree UI is a GUI interface which enables users to quickly create complex behavior trees for AI, bringing NPCs and enemies to life. This tool was developed by the Hunt: Showdown team, bringing yet more production-proven technology to the Engine.
Users can now preview a middleware event in the right pane of the Audio Controls Editor, and without the need to firstly connect it to a corresponding trigger, so improving CRYENGINE’s audio pipeline with instant feedback.
We hope you enjoy using CRYENGINE 5.6, and we look forward to your ongoing feedback. Keep your thoughts coming through the , or via Facebook, Github Issue Reporter and Twitter, or join the community and our CRYENGINE development team over on our official CRYENGINE Discord channel.
"Cannot generate a Visual Studio solution for projects outside the Engine installation folder when the Engine is installed in a path that contains the following characters: '[](){}#%^' due to a CMake bug."
When using the "Generate Solution" option on .cryproject files. If you encounter the error message above, then follow the work-around steps below.
Work-Around:
You should now be able to successfully generate solution files for your project.
VR: VIVE Head rotation lag when rotating using the VIVE Headset.
New: Added blending between pendulum & spring attachment simulation and animation.
New: Added staticity setting for CharacterInstances - enables some additional optimizations.
New: Added CVars to configure the default memory consumption of CModificationCommandBuffer.
New: Added new character loading flags for physical proxy setup.
New: (3DEngine) Removal of static geometry (CCGFAttachment) and character instance (CSKELAttachment) attachment rendering logic from CryAnimation in favor of offloading them to the 3DEngine scene graph. This is achieved by registering such attachments as separate IBrush and ICharacterRenderNode instances, respectively.
New: (Character Tool) Shipping out support for rendering wireframe edges of character attachments.
New: Added surfacetype property to physicalized character rope attachments.
New: Support a separate set of physics proxies for ragdolls/optimized physics info memory usage.
New: Graph Dijkstra algorithm unit tests.
Refactored: Split serialization of character definition.
Refactored: Cleaned up naming and coding style for ExpandWildcards method.
Refactored: Added an enum type for an undocumented uint32 flag return type.
Refactored: Refactoring Vcloth.
Optimized: Prevent StartAnimationProcessing from starting jobs that exit immediately (in the case of culled animation updates).
Fixed: Silhouette rendering in front of objects.
Fixed: Issue with software skinning not releasing acquired IRenderMesh streams properly.
Fixed: Silhouette not affecting character attachments.
Fixed: A Vcloth bug in CClothPiece::WaitForJob() which refereed to incorrect JobManager::SJobState object when attempting to synchronize against software skinning jobs.
Fixed: Introduced missing assignment of SRendParams::pInstance unique identifier into CCharInstance::RenderCHR().
Fixed: Incorrect check for IMG loading flags.
Fixed: Removed a cycle of owning references between CSKINAttachment and IAttachmentSkin - in certain scenarios this has led to dangling attachment instances on level unload.
Fixed: Crash in cases when higher .skin LOD is not available while lower LODs exist.
Fixed: Edge cases of system.camera changes - caused by MFC tools with separate Viewports.
Fixed: Issue with the ERF_HIDDEN render node flag not being propagated by the attachment system.
Fixed: Character physics aware of entity slot offset.
Fixed: Possible cause of regressions, where in some cases FinishAnimationComputations might not be called if bImmediate is set.
Fixed: Avoid GPU readbacks from Vcloth Initialization.
Fixed: Crash related to animation jobs, i.e. removing attachments while job is running.
Fixed: Set correct Editor flags for character instance in importers DialogCAF and MainDialog. Renamed flag CA_CharacterTool to CA_CharacterAuxEditor to indicate general usage in different tools.
Fixed: Shipping out a workaround for multiple regressions caused by insufficiently robust propagation of render node state across attachment hierarchies.
Fixed: Corrected order of submitting and finishing render item lists from tools.
Fixed: Gizmos (rotate, scale) in Character Tool.
Fixed: 3D Audio in the Viewport is affected by the Character Tool - audio will be played in the wrong position if the Character Tool is running.
Fixed: (Character Tool) Anim_fx doesn't switch to audio (audio_trigger).
Fixed: (Character Tool) 'Hidden by default' infobox is missing when hiding Vcloth attachments.
Fixed: Restored character ropes 'disabling if invisible' optimization.
Fixed: Engine-side handling of 16bit (half) UVs.
Fixed: Issue where listing .i_caf files in an AnimList would generate an invalid assert when the Resource Compiler failed to create the corresponding compressed .caf. Let .i_caf files.
Fixed: Viewport issues in Mannequin - after calling Qt-dialogs from MFC.
Fixed: Added a CVar for Engine-side handling of audio animation events - historically, these have been always handled by game code. Note: this is still the default behavior to avoid breaking existing game code.
Fixed: Bug in CAnimSequence where entities that should've been pre-cached were not pre-cached.
Fixed: Crash on starting Mannequin.
Fixed: (Vcloth) Avoid integration of attached particles in sub-steps.
Fixed: Disabled Engine-side handling of audio animation events.
Fixed: (Character Tool) Added surface type (via sub-material idx) to CT-authored proxies.
Fixed: Issue with ragdoll physics geom refcounting.
Fixed: (Character Tool - Vcloth) Checkbox for NNDC switches to disabled after reloading.
Fixed: (GameSDK) Floating weapons for AI characters after players death and respawn.
Fixed: (Rendering) Compute Skinning.
Fixed: Issue loading certain types of AIM data.
Fixed: Attachments (for e.g. pistol and shotgun) are wrongly attached if compute skinning is used.
Fixed: Issue with the animation update not reusing its memory pools when no level is loaded - resulting in perpetual growth of memory usage when working with external tools such as Character Tool, Mannequin, etc.
Fixed: (Mannequin Editor) Loading another level (after loading a preview setup) causes the Editor to freeze.
Fixed: Audio event which was added to an animation in the Character Tool is not played in Editor/Game Mode.
Fixed: CppCheck errors.
Fixed: CppCheck warnings.
Tweaked: Tweaks to adhere to cppcheck.
Tweaked: Removed all instances of unused variables and removed the compiler warning suppression to prevent their reintroduction.
Tweaked: Added API examples for pose modifiers and motion parameters.
Tweaked: Added Mannequin API examples.
Tweaked: Introduced API example for ISkeletonAnim::StartAnimation.
Tweaked: Default to loading animations from *.caf.
Tweaked: Removed attachment shadow geometry merging functionality (ca_DrawAttachmentsMergedForShadows).
New: Removed all references to the SkeletonList and SkeletonAlias.
New: Introduced copy and paste support to Events Timeline.
Optimized: Hide physics proxies when exiting proxy edit mode.
Optimized: Renamed proxy purpose "ragdoll" -> "main physics" for disambiguation.
Fixed: Assert in attachment physics serialization.
Fixed: Solved problem where Events Timeline would not receive hotkey actions.
Fixed: Crash when opening the Character Tool.
Fixed: Bug where blendspace annotations weren't being serialized correctly.
Fixed: Attachment proxy disappearance on save, bad default values on new proxies.
New: Shipping out support for editing the "BlendOutDuration" fragment attribute (which controls the timing of IAction::OnActionFinished() runtime call).
Fixed: Compilation error that surfaced with the VS2019 16.1.0 update.
Fixed: A rare crash in the Mannequin Editor.
Fixed: Issue where switching layouts in Mannequin would cause a crash.
Fixed: Issue where the fragment tags file selector in the Fragment ID Editor dialog would sometimes not be populated properly, leading to an assert being triggered upon pressing 'OK'.
Fixed: UI issue where modifying the fragment tree would result in that part of the tree collapsing.
Tweaked: Shipping out several improvements to the Sequence Editor, mainly scrolling and time range adjustment related.
New: Added new versions of NavMesh snapping and raycast functions that use a 'PointOnNavMesh' structure.
New: INavMeshQueryFilter::IsSampeType() is now public so it's possible to check whether two filters are of the same type.
New: (UDR) Expiration duration of live render-primitives.
New: (UDR) Update Loop.
New: (UDR) Split UDR Engine Module into Module and System.
New: (UDR) Added Timestamps and Frame Numbers.
New: Log clean up, Warning - Can't open file... /Scripts/AI.
New: Property of Navigation area for removing Inaccessible triangles of NavMeshes on level load.
New: Added support for NavMesh areas traversable by agents with lower height.
New: 'Not Triangulate' and 'AI Exclude From Trianglulation' properties renamed to 'Exclude From Navigation' and made them work with NavMeshes.
New: Added collision avoidance public interface.
New: Warning displayed when - loading a level via Launcher and when some parts of a NavMesh might be outdated.
New: CVar (ai_MNMDebugDrawTileStates) for debug drawing 'update states' of the NavMesh tiles.
New: (AISystem, Sandbox) 'Regenerate Pending Changes' option in the Sandbox Editor menu - for updating NavMesh with changes made while the regeneration was disabled.
New: Clean up, replace Plain id types (triangleId, tileId) with type-safe wrap types (TNavigationID type).
New: Create an alternative way to Update each of the AI sub-systems independently.
New: Global NavMesh filter is used when no filter is provided in navigation system functions.
New: Implement NavMesh Query Manager.
New: Added NavMesh snapping metrics which can be used in functions in Navigation System for specifying ranges for querying triangles.
New: Implement Hunt behavior tree intro CRYENGINE.
New: Prototype a comment decorator behavior tree node.
New: Make it possible to hide the behavior tree node type names in the Editor.
New: Provide more drop-down lists for Behavior Tree Editor that now uses string fields.
New: Various improvements to improve usability.
New: Refactor built-in signals.
New: Make use of refactored signals in IBT.
New: IBT Load Grunt from GameSDK tutorial.
New: Add option to hide deprecated and/or built-in signals.
New: Refactor pre-processor directives.
New: Updated Lua scripts in GameSDK to use new (refactored) signal system.
New: Support automatic migration and patching from hunt in the IBT.
New: Conditional debugging of IBT through CVars.
New: (UDR) Move into the Engine as a core module.
New: AI System global raycast queue tracks, more debug stats.
New: Marking and possibility to remove inaccessible regions in NavMesh.
New: MovementSystem: Extended the public interfaces to allow game code to implement its own movement planner (for building custom plans using its own movement blocks).
New: MovementSystem: Exposed IPlanner to CryCommon.
New: NavMesh queries can use query processing function object to process triangles when visiting them.
New: Added MNMDebugMeshBorders for debug drawing NavMesh borders.
New: Pathfinder has been modified to provide a failure reason. This failure reason is used in the PathfinderComponent to send the required signals.
New: BehaviorTree execution stack logger: now also shows each node's current status to easily spot transitions.
New: Islands connectivity is taking navigation annotations into account.
New: Debug draw functions are getting NavMesh query filter from NavigationComponent with name "MNMDebugQueryFilter".
Refactored: AI Console Variables.
Refactored: AISignal sender parameter type is changed from tAIObjectID to EntityId.
Refactored: Remove AI Object dependency from Flowgraph AI Sequences.
Refactored: Improved precision of slope parameters and NavMesh generated (based on them).
Refactored: OffMesh navigation refactoring.
Refactored: (CryAction)(GameSDK) Moved AI using deprecated AI features from CryAction to GameSDK.
Refactored: Clean/Move NavMesh Queries to Query Manager.
Refactored: CAISystem update to call private function to update each sub-system.
Refactored: NavMeshQueryFilter for the possibility to compare them.
Refactored: Moved NavMeshQueryFilters to separate headers.
Refactored: Deprecated Navigation System functions that use hard-coded ranges for querying triangles.
Refactored: NavMeshTestRaycastHit function returns ERayCastResult instead of just bool.
Refactored: Removed Smart objects dependency from OffmeshNavigationManager.
Refactored: Some reorganization of navigation headers.
Refactored: Optimized and refactored islands connectivity checking.
Refactored: All functions in Navigation System are properly taking NavMesh origin into account. Added helper function for converting coordinates from/to NavMesh space. Renamed positions parameters in NavMesh functions to localPosition.
Refactored: Added NavMesh query filter to all functions (from Navigation System) that need it.
Refactored: Removed unused CVars.
Refactored: NavMesh snapping - adding ranges to SnappingRules and using default values when ranges aren't set.
Refactored: Makes DebugHistoryManager usage optional in the AI System.
Optimized: NavMesh generation performance optimization, reducing size of spans allocation chunk.
Fixed: Crash when creating a new map (while AI fighting each other on the current map) triggered a pure function call and crash (CryAISystem.dllehaviorTree::Shoot::OnTerminate).
Fixed: Assert when enabling Physics/AI (after placing dozens of enemy and friendly AI in a navigation area) triggers an assertion failure (CollisionAvoidanceSystem.cpp.
Fixed: Incorrect NavMesh voxelization creating redundant voxels.
Fixed: (BTE) States under tree root is marked as duplicate field.
Fixed: Cuts in NavMesh when triangles with special annotation were next to tile boundary.
Fixed: Starting a game triggers an assert (CAISystemUpdate.cpp.
Fixed: Islands connectivity was wrongly updated after changing annotation of NavMesh triangles.
Fixed: Editor crashes when setting up an AI CMNMUpdatesManager::SwitchUpdateRequestState().
Fixed: MNMPathfinder requests don't get updated when there's a NavMesh regeneration.
Fixed: MNMPathfinder add comments, rename aStarOpenList and add debug info.
Fixed: Starting with CVar ai_debugDraw=1 failed with nullptr.
Fixed: NavMesh raycast wasn't always computing correct results - when the end location was on the edges of triangles.
Fixed: Puppet malfunction when jumping into game on VR_demo and then loading airfield and jumping into game twice.
Fixed: AI doesn't attack (CSignal.cpp).
Fixed: Bug that caused tree loader not to find built-in events.
Fixed: Loading process to print a message and fail when the tree is using events that are not previously declared. Note: this only happens in runtime mode and not in the Editor mode, therefore the tree can still be opened and errors fixed in the Editor.
Fixed: SendTransitionEvent to as it was before (always returns running, never succeeds or fails) to make sure that tree root never fails or succeeds.
Fixed: (Sandbox) AI movement simulation target position in Physics/AI simulation mode when snapping to terrain is enabled (snapping is ignored).
Fixed: Crash hitting AI with an axe and then hitting the ground causes a crash (CryAISystem.dll!SOBJECTSTATE::Serialize(CSerializeWrapper<ISerialize> ser)).
Fixed: Crash playing through woodland then respawning causes a crash (CryAISystem.dll!SOBJECTSTATE::Serialize(CSerializeWrapper<ISerialize> ser)).
Fixed: Crash (assert) when setting up an enemy and friendly AI in a NavMesh, jumping into game, the Engine will crash after the assert. CAISystem::SendSignal().
Fixed: nullptr crashes.
Fixed: Assert (warnings) AI doesn't attack. In addition improved loading strategy to be more tolerant and reduced log warnings.
Fixed: Bug that caused timestamps to show errors when using the exclusiveTo field.
Fixed: Bug when loading that caused half of the tree to be omitted in the Editor - when there was an error in a state machine/case priority.
Fixed: Added to code all signals coming from Lua.
Fixed: Behavior Trees now register game signals on start and de-register them on stop.
Fixed: Added Editor UDR to Sandbox.
Fixed: NavMesh raycast returning invalid result when start and end positions are on different layers.
Fixed: Compilation error in VS2017 15.7.2 (Behavior Tree Files).
Fixed: Friendly AI dies after a few seconds of enabling Physics/AI or jumping into Game Mode.
Fixed: Assert on custom level when enabling Physics/AI.
Fixed: Crash in NavMesh annotation updating with NavMesh level data mismatch.
Fixed: Array out of bounds access in MNM tile generator.
Fixed: Enabled NavMesh regeneration on all platforms.
Fixed: Added concept of Movement Plan Monitors to allow individual movement blocks to monitor for changes and custom conditions throughout the whole movement plan. FollowPath blocks now monitors for NavMesh changes by itself.
Fixed: Bug in IMNMCustomPathCostComputer::EComputationType enum values definition.
Fixed: Crash when loading Lobby with the null TPS system.
Fixed: BehaviorTree ExecutionStackFileLogger: no longer writing the trailing '\0' to the text file.
Tweaked: Spans in debug visualization of NavMesh tile generation (using MNMDebugLocator) are drawn in checker pattern.
Tweaked: Removed all instances of unused variables and removed the compiler warning suppression to prevent their reintroduction.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: It is possible to request path-find without providing entity.
Tweaked: CAIEntityComponent is now invisible to the user.
Tweaked: Removed Helicopter Behavior tree nodes with Fly helpers.
Tweaked: Removed Hidespots.
Tweaked: Removed redundant IMNM.h header.
New: Live query history can now be serialized asynchronously via the new "UQS_DumpQueryHistoryAsync" console command.
New: Added new console command "UQS_PrintQueryHistoryStatisticsToConsole" to print information about the size and memory usage of the live and de-serialized query history.
New: Replaced all assert() calls with CRY_ASSERT() as the former might potentially not trigger in uber profile-builds.
New: Added concept of logging arbitrary messages and warnings in a live query to the history via the new IDebugMessageCollection.
New: Added new interfaces for inspecting currently running and finished queries.
Refactored: SQueryBlackboard renamed to SQueryContext to better convey its purpose.
Refactored: CQueryManager: now detects the biggest performance-offending query in case of time budget excess and will 'penalize' it by giving all other queries precedence and pausing the offender. Statisticical information now distinguishes between 'elapsed frames' and 'consumed frames' to indicate when a query was paused (due to being a performance offender).
Refactored: CVar uqs_timeBudgetExcessThresholdInPercentBeforeWarning renamed to uqs_timeBudgetExcessThresholdInPercent as it's now also used to interrupt the running queries - in case of a performance issues.
Refactored: CTimeValueUtil removed since Split() is now part of CryCommon's CTimeValue class.
Optimized: CQueryHistoryInGameGUI: Large performance improvement by no longer re-building the whole list of historic queries.
Optimized: CQuery_Regular: Phase 5 slightly optimized by copy/pop idiom of the vector of remaining working-data.
Fixed: Compilation error due to missing <Cry_Color.h> #inclusion when UQS_SCHEMATYC_SUPPORT was disabled.
Fixed: Crash in Query Manager when notifying of a finished child query.
Fixed: Editor plugins were no longer building after 32bit-support was dropped.
Fixed: Query History was no longer able to serialize the item-debug-proxies.
Fixed: History Inspector: Crash upon loading a query history when a 'live' one was already actioned.
Fixed: CVar uqs_timeBudgetExcessThreshold name confusion.
Tweaked: Query Editor: Added message boxes to ask for confirmation before deleting a query document from disk.
Tweaked: Rewrote update logic of child queries to circumvent 1-frame latencies in hierarchical queries.
Tweaked: Implemented the concept of query prioritization on top of the round-robin update mechanism.
Tweaked: Query Manager: Changed main update loop to a round-robin implementation to mitigate potential congestion and to guarantee a certain degree of responsiveness.
Tweaked: Query Manager: Relaxed detection of performance offenders (they now need to violate the time budget policy 3 times before counter measures come into force).
Tweaked: Added more performance markers.
Tweaked: QueryBlueprint names in log messages now also show up for child queries (with a suffix that makes it easy to spot the individual child).
Tweaked: Generators, Functions, Evaluators now also get access to the IQueryBlueprint they were instantiated from and to the query name for better debugging verbosity.
Tweaked: CQueryHistory: Removed m_itemDebugProxyFactory.
Tweaked: More precise information about time-budget excess.
Tweaked: CTextualQueryBlueprint: Now defaults to 1 item in the result to make it less error-prone when building new queries.
New: Implement middleware specific callbacks.
New: Implement multi-listener support.
New: Added Audio:Parameter flownode.
New: Preview of middleware events in ACE.
New: ADX2 implementation.
New: Localization for SDL Mixer.
New: Localization for Port Audio.
New: Localization support for FMOD Studio implementation.
New: (SDL Mixer) File import for external audio files into ACE.
New: View dist ratio for clip volumes.
Refactored: Removed unused async loading of triggers.
Refactored: Clean up SDL Mixer implementation files.
Refactored: Clean up Port Audio implementation.
Refactored: Clean up Wwise implementation.
Refactored: Clean up FMOD Studio implementation.
Refactored: Audio system event triggers to be value types.
Optimized: (ACE) Optimized backup and restore of selected and expanded treeview items.
Optimized: Filtering in debug draw for AFCM and contexts.
Optimized: Removed obsolete platform properties in preload and setting controls.
Optimized: Construction of trigger instances.
Optimized: Removed obsolete standalone file feature.
Optimized: (ADX2) Handling of pending cue instances.
Optimized: Memory optimizations of STriggerInstanceState.
Optimized: (FMOD) Handling of pending event instances.
Optimized: Audio propagation processor to use less memory.
Optimized: Now do an object nullptr check before executing/setting a control, instead of per connection in impls.
Optimized: Update of active objects.
Optimized: Memory layout of audio objects and their propagation processors.
Optimized: Remove events from audio system.
Optimized: Several 'blocking' audio requests issued on level load and unload are now done in an asynchronous manner.
Optimized: Omitting data (which is only used during production) from objects in release builds.
Optimized: Made absolute and relative parameter controls as well as all internal triggers global.
Optimized: Made the global object truly global.
Optimized: Smoother scrolling and faster expanding of treeview items in ACE.
Optimized: Event Manager now stores event pointers in a vector instead of a list.
Fixed: Where localized files that were aborted during loading did not properly reset the loading flag, which in turn prevented changing the language.
Fixed: Rtpc flownode was setting its value on initialization.
Fixed: ACE could create a false control from an invalid XML tag.
Fixed: Finished signal was not sent when Trigger Component was not set to auto play.
Fixed: Destructing a Trigger Component would not stop a playing sound if auto play was not set.
Fixed: (FMOD & ADX2) Localized flag was not saved for placeholder items.
Fixed: (FMOD) Implementation initialization failed when masterbanks don't exist.
Fixed: Cppcheck error where in a class hierarchy members collided.
Fixed: Audio system did not compile if INCLUDE_AUDIO_PRODUCTION_CODE pre-processor define was unset in non-release type configurations.
Fixed: AutoPlay variable was set too late for initialization of audio Trigger Component.
Fixed: Occlusion values didn't update when trigger was executed on an audio object.
Fixed: Crash where the audio system crashed on invalid event impl data.
Fixed: SDL Mixer implementation now reports an error if a channel couldn't get played.
Fixed: Crash where invalid default controls were accessed if the middleware didn't provide a setup for them.
Fixed: Don't delete listeners and objects during impl release, but rather during destruction of their respective Managers - this fixes a crash when middleware(s) were swapped out.
Fixed: Crash Wwise shutdown crash, where an AK_EndOfEvent callback accessed invalid data - with this change the now obsolete CryAudio::Impl::IImpl::OnBeforeShutDown interface method has been removed.
Fixed: (FMOD) Sounds could not be played if they were in the masterbank.
Fixed: Absolute and relative object velocities not being updated when position optimization was turned on.
Fixed: A non-thread-safe member variable of audio objects was accessed in a multithreaded fashion, this is now not the case and the member variable is accessed by the main audio thread only.
Fixed: Set Rtcp parameter in Audio Component at the correct proxy before triggering.
Fixed: Wwise implementation did not load the convolution reverb plugin properly.
Fixed: Audio listeners now update their name if the owning entity's name was changed.
Fixed: Crashes and memory tramples happening when running the Port Audio implementation.
Fixed: Wwise's global audio object wasn't properly released.
Tweaked: Updated to ADX2 SDK 2.19.00.
Tweaked: Updated to FMOD Studio 2.00.03.
Tweaked: Updated to Oculus spatializer 1.39.0.
Tweaked: Updated to Wwise SDK v2019.1.2.
Tweaked: ADX2 implement multi platform support.
Tweaked: Marked Audio:Rtpc flownode as obsolete.
Tweaked: Added Audio:SwitchState flownode.
Tweaked: Marked Audio:Switch flownode as obsolete.
Tweaked: Added SwitchState Component.
Tweaked: Replaced scopes with contexts. Note: Multiple contexts can be active at the same time.
Tweaked: Added console commands s_ActivateContext and s_DeactivateContext.
Tweaked: Added s_DrawDebug u to show active contexts.
Tweaked: Added CVar s_PoolAllocationMode.
Tweaked: Renamed CVar s_AudioImplName to s_ImplName.
Tweaked: Object name can be used to filter debug draw for position spheres, distance and occlusion info.
Tweaked: Renamed CVar s_AudioObjectPoolSize to s_ObjectPoolSize.
Tweaked: Renamed CVar s_HideInactiveAudioObjects to s_HideInactiveObjects.
Tweaked: (ACE) Added file import for system controls panel and connections panel.
Tweaked: Renamed CVar s_DrawAudioDebug to s_DrawDebug.
Tweaked: Added s_DrawDebug option 'l' to toggle drawing of occlusion collision spheres.
Tweaked: Changed s_DrawDebug option 'Draw global object info'. from 'I' to 'm'.
Tweaked: Changed s_DrawDebug option 'Draw middleware specific info for active audio objects' from 'm' to 'n'.
Tweaked: (ACE) Added support for executing modified triggers.
Tweaked: (ACE) Added option to execute trigger connections in the connections panel.
Tweaked: Removed AFCM size limit except for Xbox One.
Tweaked: CVar s_FileCacheManagerSize is now Xbox One exclusive.
Tweaked: Added CVar s_TriggerInstancePoolSize.
Tweaked: Renamed CVar s_SetGlobalParameter to s_SetParameterGlobally.
Tweaked: Renamed CVar s_SetGlobalSwitchState to s_SetSwitchStateGlobally.
Tweaked: Added s_DrawAudioDebug 'l' to draw debug info of global object.
Tweaked: Added CVar s_OcclusionInitialRayCastMode to define how many rays are used for the first occlusion check after executing a trigger.
Tweaked: Renamed CVar s_ListenerOcclusionPlaneSize to s_OcclusionListenerPlaneSize.
Tweaked: Renamed CVar s_AudioObjectsRayType to s_OcclusionGlobalType.
Tweaked: Renamed CVar s_AccumulateOcclusion to s_OcclusionAccumulate.
Tweaked: Renamed CVar s_SetFullOcclusionOnMaxHits to s_OcclusionSetFullOnMaxHits.
Tweaked: Removed unused CVar s_FullObstructionMaxDistance.
Tweaked: Set ACE file version to 4. Mark libraries as modified if their file version is lower than the current ACE version.
Tweaked: Re-trigger controls after refreshing the audio system.
Tweaked: Due to the resource hungry nature of the audio occlusion feature, added CMake option to allow users to disable it if they don't use it.
Tweaked: Added info in debug draw if an object is to be released.
Tweaked: Introduced a CVar to manipulate the speaker channel setup in Wwise.
Tweaked: Removed CVar s_FmodSecondaryPoolSize.
Tweaked: Added option to set the occlusion ray offset per audio object in the Occlusion Component. Removed CVar s_OcclusionRayLengthOffset.
Tweaked: Added flownode Audio:DefaultTrigger.
Tweaked: Added Default Trigger Component.
Tweaked: Removed the redundant 'Audio' prefix from several audio data structures.
Tweaked: Added CVars s_LoadRequest and s_UnloadRequest to load/unload preload requests.
Tweaked: ADX2 implementation added 'Setting' control, component and flownode to load/unload DSP Bus Settings.
Tweaked: Removed the not needed ATL.h and ATL.cpp and moved their content to AudioSystem.h and AudioSystem.cpp.
Tweaked: Exposed AutoPlay variable in properties and removed obsolete SetAutoPlay node of Audio Trigger Component.
Tweaked: Implement streaming for FMOD Studio.
Tweaked: Removed no longer required includes from CryAudioSystem's stdafx.h and moved remainders to Common.h - this fixes issues with the UnitTest system including the CryAudioSystem). Further, have split data from Common.h into newly introduced Managers.h and DebugColor.h.
Tweaked: Removed numerous no longer required/obsolete includes from the audio system.
Tweaked: Removed absolute and relative velocity tracking switches and added Velocity Tracking Component as a substitute.
Tweaked: Removed the occlusion type switch and introduced a dedicated interface method on objects to set occlusion.
Tweaked: Removed no longer required ATLUtils.h.
Tweaked: Made all Managers and unique control containers global.
Tweaked: Fixed incorrect logging if a parameter or trigger wasn't found and it was either set or executed on an object.
Tweaked: Moved the global system pointer to Common.h.
Tweaked: Decreased audio system creation time by preparing the system in an asynchronous manner.
Tweaked: Removed the system event listener from CryAudioSystem.cpp and moved event cases to the already existing system event listener in AudioSystem.cpp.
Tweaked: Removed unused return types from object interface methods.
Tweaked: Implement additional CVars for Wwise init settings.
Tweaked: Audio Listener Component received the parent entity's name (this confused people), so it has been renamed to just Audio Listener. However, the underlying listener object still holds the following naming format for debugging reasons audio_listener_<entityname>_<entityId>.
Tweaked: Removed Switch Component.
Fixed: When DRS is not used, could not load dialog file gamek02\Libs\DynamicResponseSystem\DialogLines/dialoglines.dialog (not loading initial dialog when drs_dataPath is empty).
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
New: SmallFunction flat callable wrapper class.
New: UIFramework now has an exclusive listener which receives layout events first and can decide to abort broadcasting.
New: stl::void_t and stl::is_detected.
New: Added stl::optional.
Refactored: Removed eKI_XI_Connect and eKI_XI_Disconnect - instead use eKI_SYS_Connect and eKI_SYS_Disconnect.
Refactored: SFunctor removal plus code improvements.
Fixed: deviceNames array size.
Fixed: Dangling pointers re. console commands causing crash on exit.
Fixed: Update CDurangoInputDevice::m_deviceId on game-pad reconnection.
Fixed: Wrong data type being used to store thread id's.
Fixed: Refcounting mismatch in certain cases of SamplePhysEnvironment.
Fixed: C++17 compilation errors.
Fixed: Prevent nullptr access crash when issuing assert.
Fixed: Yasli bug that fails to detect the compiler version - causing crash when getting the type name string.
Fixed: A leak for SmallFunction when assigning a raw function pointer or reference to a non-empty SmallFunction.
Tweaked: Code standard compliance: interfaces should be structs.
Tweaked: MSVC enabling error: 4101 - unreferenced local variable.
Tweaked: MSVC enabling error: 4189 - local variable is initialized but not referenced.
Tweaked: Removed unused variables.
Tweaked: Merged clean up from //ce/task_sandbox_color_grading: removed unnecessary semicolons, added missed virtual dtor, #pragma once and removed old comments.
Tweaked: Added missed virtual dtors, removed unnecessary semicolons, spellchecks, #pragma once instead of c-guards.
Tweaked: Removed all instances of unused variables and removed the compiler warning suppression to prevent their reintroduction.
Tweaked: Added missing virtual dtor, spellchecks, removed C-style guards, removed double declarations.
Tweaked: Clean up - #pragma once instead of guards, spellchecks and redundant header comments removed.
Tweaked: Changed the default value of camera near plane distance from 0.25f to 0.1f.
Tweaked: Clean up - extra semicolons removed, spellchecks and declarations without implementations removed.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Made the CCryName CNameTable threadsafe.
Tweaked: Rectified VS2017 15.8 compatibility.
Tweaked: Added more unit tests covering SmallFunction features.
Tweaked: Rectified markdown formatting of FAQ.md.
Tweaked: All -Wswitch and -Wreorder warnings.
Tweaked: Usage of max.
Tweaked: Prevent freeing empty string header - as static memory cannot be freed (Linux-GCC warning).
Tweaked: Removed texture based Sky box flownode.
Tweaked: Removed script for downloading SDKs - this is now handled directly by CMake.
New: Added xmodule_ptr, an alias of unique pointer with polymorphic deleter (meant for usage by cross-module resources). For ease of use also added a make_xmodule factory function.
New: Clean up CryCommon header inclusions.
New: CryAPIExamples module to compile Doxygen snippets.
Refactored: Make SFileVersion's array protected.
Refactored: Support constexpr SFileVersion.
Refactored: Added CTimeValue user defined literals.
Refactored: Added Doxygen internal markers to support hiding complex types from technical documentation.
Optimized: Support restricted references on MSVC.
Optimized: Threading: Minor CryFastSemaphore optimization.
Fixed: String removed from interface (that is in CryCommon folder).
Fixed: Added correct escaping to texture debug strings - %ENGINE% was causing problems with the c-style string interpolation (#542).
Fixed: Changed report mode to "assert" of vsprintf call when using MSVC - to prevent silent failures when interpolation parameters receive invalid data (#542).
Fixed: SFileVersion::operator> was implemented as operator>=.
Fixed: Transparent object rendering.
Fixed: Invalid memory access to removed surface type names.
Tweaked: Removed all instances of unused variables and removed the compiler warning suppression to prevent their reintroduction.
Tweaked: Clean up leaky inclusions in platform.h.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Added meta-tests to ensure CryGUID can be created at compile time.
Tweaked: Removed non-existing files.
Tweaked: Changed local player entity id to 2 - ensuring that by default entity id >3 and above are all available.
Tweaked: Added 64bit atomic increment (needed for atomic time-value accumulation).
Tweaked: Added regression unit test for DynArray constructor with initializer lists.
Tweaked: Revert a failing unit test case for ToUnixPath where it doesn't reflect the function's contract.
Tweaked: Moved Mannequin interfaces to CryCommon for Doxygen support.
Tweaked: Added default values to the SFogVolumeProperties structure.
Tweaked: IStatObj not using correct Doxygen style comments.
Tweaked: INetContext, IRenderer and IPhysicalWorld not having Doxygen pages generated.
New: Expose ISO 639-1 code of the active language.
New: Added sys_bp_frames_required_label to BootProfiler.
New: Disabled ThreadIsAlive checks on SCE - as the SDK does not provide any means to probe if a thread is alive.
New: Improved FrameProfiler memory tracking modes. Profile 9 now tracks accumulated memory per function, profile 10 tracks delta memory. CryMemoryGetThreadAllocatedSize() returns thread-local memory counter for accurate tracking. Display both positive and negative memory values and sort by abs value.
New: Added CVar 'memReplayRecordCallstacks' to allow disabling callstack recording.
New: Show number of allocations and average size in context tree view.
New: Added runtime CVar overriding to allow having & running multiple projects in the same solution without having to recompile.
New: Compiled Resource Cache support in CryPak.
New: (Linux) Detect if an instance of the application is already running and create a new logfile.
New: CVar for initial window size ratio relative to monitor resolution.
New: (JobSystem) Regression feature test for a JobSystem crash when turned off (sys_job_system_enable 0).
New: CryPak support for Compiled Asset Cache.
New: Allow plugin loading from a global registry.
New: Added TCVar<T> wrapper.
New: CVar's can be limited to a range or a fixed set of values.
New: JobSystem unit tests.
New: Added CTimeValue: Split().
New: Update to SDL 2.0.7.
New: Allow overriding CVar default values from game code.
Refactored: Clean up plugin loading code.
Refactored: Simplify SimpleThreadBackoff.
Refactored: Backoff more defensively - to avoid too aggressive a spin lock in high contention scenarios.
Refactored: Moved registering of physics CVar's from Systems to Physics.
Refactored: Clean up ISystem.h interface dependencies.
Refactored: Remove 32-bit support.
Refactored: Remove Cry_platform_{32/64}bit macros - we assume and now require 64-bit support.
Refactored: (JobSystem) Remove old lambda job implementation and switch to the unified lambda job.
Refactored: Replace threadlocal with C++11 thread_local - all platforms (Win, Linux, iOS, Mac, Android, Xbox, Orbis) have now unlocked the support in the relevant compilers (MSVC, Clang, GCC).
Refactored: Remove unused fallback backend from JobSystem.
Refactored: (JobSystem) Refactor job delegate and job declaration, reduce boilerplate code and unify lambda job with normal job interfaces.
Refactored: Don't differentiate between int and float in CVar overrides.
Refactored: (JobSystem) Rename 'sys_job_system_active_wait_enabled' to 'sys_job_system_worker_boost_enabled'.
Refactored: (JobSystem) Reduce temp worker dependency on the job state and simply active and deactivate an extra worker if needed.
Refactored: (JobSystem) Greatly increase the job queue size for each prio (this will consume ~4mb more).
Refactored: (JobSystem) Add Assert when job queue size is not sufficient.
Refactored: (Windows only) Store and expose OS and CPU information - was only logged before.
Optimized: Integrate MemReplay improvements for Xbox.
Optimized: Added Windows allocation hooks.
Optimized: Reduce overhead of Memstat_Context by writing static context names only once.
Optimized: Replaced complex SProfilerThreads structure and per-thread CFrameProfilers with simple thread-local profile stack and shared CFrameProfilers. Now displays multi-threaded profilers' thread name as 'multi' and now tracks actual profiler overhead in CFrameProfilerSection. Removed inaccurate overhead estimation - greatly reduced overhead when not profiling by early outing if CFrameProfilerSection.
Optimized: Removed outdated Main and RSX columns in context tree view.
Optimized: Reduced number of kernel-calls per-frame.
Optimized: CVar registration macros expanding to forced in-lines (resulting in extremely long build times for CVar registration functions due to attempts at inlining hundreds of function calls).
Optimized: Avoid interlocking between FOpen/FClose and other file operations on files inside *.pak archives.
Optimized: Ensure that code checking gEnv->IsEditor() is optimized.
Optimized: Ensure that code checking gEnv->IsClient() is optimized for dedicated server.
Optimized: (JobSystem) Added CVar sys_job_system_active_wait_enabled (default: enabled).
Optimized: Spawn an extra JobSystem worker thread when waiting for a job state on Main or Render Threads.
Fixed: sys_spec value override (for consoles) not being set in the CVar. Updated sys_spec description.
Fixed: Log backup assert on Durango and refactor log path handling code.
Fixed: *.cfg file search not looking in the Engine folder.
Fixed: (ASAN) alloc-dealloc-mismatch in CryPak.
Fixed: Removed dysfunctional command memResetAllocs.
Fixed: Time demo playback for V4 file format files, fixed profile system deadlock during playback.
Fixed: (JobSystem) A potential race condition and dead lock.
Fixed: Crash accessing Memory Manager when memreplay detours enabled - due to static initialization order.
Fixed: Plugin load order (so statically linked plugins still follow the order specified in the cryproject).
Fixed: Crash on multiple calls to ISystem::Quit.
Fixed: CVar overrides for const float CVars.
Fixed: Crash after loading woodlands on Xbox One.
Fixed: Asserts on setting sys_firstlaunch.
Fixed: Wrong fatal error.
Fixed: Reference CVar override template overload resolution failure.
Fixed: Durango release compilation - allowed *.dmp in release configuration for Durango.
Fixed: Crash .dmp output for Xbox.
Fixed: 'Exec' CVar does not execute the CVars in its *.cfg file.
Fixed: XConsole includes for non PCH.
Fixed: An invalid string bug for debug call stack.
Fixed: Shutdown crash related to CVar name. For optimization switched CVar container from std::map to std::unordered_map. Refactored CXConsole iterators and code style. Fixed renderer CVarUpdateRecorder to use case insensitive CVar names.
Fixed: Remove #ifdef _dll causing CreateSystemInterface() to not be exported on Linux.
Fixed: Failing assertions caused by mismatching CVar type access.
Fixed: (JobSystem) Bug where jobs are not immediately called (when the JobSystem is disabled).
Fixed: (JobSystem) JobSystem filter not working properly.
Fixed: In AI/Physics mode, RenderBegin was called twice - incrementing FrameId, but Render only once, causing improper particle video buffer access. Now RenderBegin is only called once.
Fixed: Monolithic build.
Fixed: CVar change callback dangling index bug.
Fixed: sys_keyboard_break to pseudo-crash with dump even if no debugger is attached.
Fixed: (JobSystem) A race condition when shutting down Job Manager.
Fixed: Compilation with Not_Use_Cry_Memory_Manager active.
Fixed: (JobSystem) A shutdown crash for JobSystem unit test.
Fixed: (JobSystem) Shutdown bug for thread backend helper workers.
Fixed: (JobSystem) Shutdown bug for blocking backend threads.
Fixed: Resolution AutoDetect now uses the correct monitor and monitor size.
Fixed: (Global UI) Interaction of the UI elements are misplaced (don't match with cursor position) when the resolution is set to 1920x1200.
Fixed: CryMathText.Vector tests by re-initializing random generator each run and adjusting tolerances.
Fixed: (Screenshot Grabber) 3 race conditions and allow multiple consumers.
Fixed: Thaw Render Thread and do not enforce exclusive log access for crash screenshot.
Fixed: Use ::PostMessage instead of ::ShowWindow illegaly from non-owning thread for window minimization.
Fixed: Inability to use 'exec' command from .cryproject file.
Fixed: Crash handler added ILog::GetFilePath, changed ILog::GetFileName to return file name instead of path.
Fixed: Log files being created in the Engine root instead of Project Directory.
Fixed: INumberVector.NormalizeSafe assignment to this requires cast to final type.
Fixed: Ensure system clock calls to timeBeginPeriod and timeEndPeriod match.
Fixed: Windows path not being retrieved correctly.
Fixed: Boot profiler missing last stage of level load due to listening to the incorrect system even for level load end.
Fixed: DynArray initalizer_list ctor.
Fixed: (Client) Crash can sometimes occur on session connect.
Fixed: (K02 Localization) [Error] <Localization> No localization files found.
Fixed: (PS4) Startup issue - disable plugin load from disk if shared libraries are unsupported.
Fixed: (JobSystem) Race condition where lambda constructor and destructor were executed from multiple threads - leaving the lambda in an invalid state.
Fixed: CXmlNode shutdown crash that fails a unit test.
Fixed: Mouse cursor visible on alt tab. Fixed double cursor visible on startup.
Fixed: Visual Studio compilation with the new/permissive compile option.
Fixed: (Schematyc) (Xbox One) Log file backup.
Fixed: Alt tab mouse cursor window lock.
Fixed: Invalid memory access to removed CVar name.
Fixed: Detect up to 64 CPUs for any 64-bit platform (not just Windows).
Fixed: Use shutdown before close when stopping RemoteConsoleServer thread.
Fixed: Looking up CVars with "?something" showed non-whitelisted CVars.
Fixed: CVars that could be changed by Game Project in Debug/Profile and not existing in release are incorrectly marked as VF_CHEAT.
Fixed: CVar Whitelist not working.
Fixed: DebugCallstack crash on Windows dedicated server.
Fixed: Log files not being stored in .cryproject folder (when running project from a directory other than the Engine).
Fixed: CRYENGINE compilation with C++17 Visual Studio compiler.
Fixed: No-uber compilation (stdafx.h include in DiskProfilerWindowsSpecific.cpp).
Tweaked: Save replay recordings into the Project Directory, rather than the Engine root. Can be turned off by CVar memReplaySaveToProjectDirectory.
Tweaked: Added memreplay markers for jobs.
Tweaked: Enable MemReplay recording on Linux.
Tweaked: (Win32) No need to alternate methods in backoff lock (since XP Sleep(0) has the behavior required).
Tweaked: Added max polygons and drawcalls CVars for display Info.
Tweaked: Added position offset for software mouse cursor to support different icon style on Xbox (where position should be center point).
Tweaked: Reduce log file buffer size from 2MB to 256KB.
Tweaked: Make CDurangoLogThread platform independent (log_UseLogThread on by default on consoles only).
Tweaked: Removed all instances of unused variables and removed the compiler warning suppression to prevent their reintroduction.
Tweaked: Disabled memory profiling by default in FrameProfileSystem.
Tweaked: Improved system last error message (always print the error number along with the error message).
Tweaked: Make floating point exception (FPE) support optional via CMake option and USE_FPE define.
Tweaked: Remove unnecessary FPE code.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Optimize ConsoleHelperGen categories.
Tweaked: Added profile marker in CSystem::PrePhysicsUpdate().
Tweaked: (JobSystem) Removed unnecessary inclusions.
Tweaked: (sys_spec) Only limit the global sys_spec CVar to platform values (1-4 on PC, special values on other platforms) and let individual sys_spec_* configuration files be more flexible with these values (required for the latest changes in how vram is calculated for use in the texture pool).
Tweaked: Apply override keyword on virtual method in CXmlBinaryDataWriterFile and update variable names to the coding standard.
Tweaked: Simplified console and CVar header dependencies.
Tweaked: Clarified ICVar::Set(const char*) && ICVar::SetFromString usage assert.
Tweaked: (JobSystem) Job Manager init and shutdown (stress) unit test.
Tweaked: (JobSystem) Reset init flag after shutdown.
Tweaked: (JobSystem) Fixed job callback const correctness and other standard conformance.
Tweaked: (JobSystem) Disabled profile maker to avoid spamming profile 1.
Tweaked: Added test command for loading a level.
Tweaked: Introduce CMake option OPTION_REMOTE_CONSOLE to control availability of the remote console.
Tweaked: Introduced sys_bp_level_load_include_first_frame CVar to include the first frame's profiling events into level load profiling (to catch FG misc:start triggers and more specifically to catch game code authored layer switches).
Tweaked: Use 'isnan' instead of redefining it to '_isnan', since the former is always available.
Tweaked: When outputting error log without symbols, print module+offset instead of raw addresses.
Tweaked: Fixed a failing unit test for ArchiveHost SerializeJson where the test wrongly assumed the result is a null-terminated string.
Tweaked: Restore gEnv->noAssertDialog Boolean to suppress showing of the assert dialog box while keeping the rest of the assert handling intact.
Tweaked: Clean up TConsoleVariable since most of it's functionality is already in XConsoleVariable.
New: Added CVar to en/disable proximity trigger system and partition grid.
New: Added a flag for custom ViewDistRatio on entity slot level.
New: Added es_logAreaDebug to dump debug info into log.
New: Added scoped layer set switch to allow for finer grain control of layer activations and simplify Flowgraph handling of such matters.
New: Added feature test to validate entity layers correctly being loaded in Launcher.
New: Added salt buffer array and entity iterator unit tests.
New: Added support for Entity Components in Flowgraph.
New: Added debug drawing for Entity Components, hierarchies and links.
New: Added es_profileComponentUpdates=3 option for profiling entity event costs on a per-frame basis.ntity System.
Refactored: Remove separation of static (loaded from level) and dynamic entity identifiers, using the full entity id space for both.
Refactored: All debug draw CVars into a single CVar to improve usability.
Refactored: Debug functionality will no longer be compiled into release builds.
Refactored: Change IEntityComponent::GetEventMask return type to use CEnumFlags for type safety.
Refactored: Add support for increasing number of bits used for entity index - instead of 50/50 split between index and salt in identifier. Allows for easy tweaking of maximum entity count for a project.
Refactored: Timer events to be unique per component instead of per entity - ensures that timer identifiers can be made unique from game code and eliminates the need for in-Engine iteration on map to find a unique identifier.
Refactored: Add experimental constant Entity Event Listener storage (disabled by default).
Refactored: CEntityPhysics and CEntityRender to receive events through direct calls (instead of adding 30+ listeners for each entity in the world).
Optimized: Change delayed cloth attachment to first use OnRender and only switch to timer if rendermesh still hasn't been streamed in.
Optimized: Re-implement support for tracking max used entity index - eliminates the need to iterate all 65k entities when sending many events.
Optimized: Remove O(N) back to front static entity identifier path - now always uses the O(1) path, excluding reserving of entity ids.
Optimized: Load parameter storage not being reserved during level XML parsing (instead reallocating vector multiple times).
Optimized: Remove redundant look up for entity layers in CEntitySystem::EnableDefaultLayers.
Optimized: Fix unnecessary copy of Event Listener set when doing binary search on sets.
Optimized: Save 64 bytes per entity instance in the world.
Optimized: Speed up CEntityPhysics::OnTimer when timer has to be re-added, then re-use same id.
Fixed: Entity Component created by its interface doesn't have properties serialized in Sandbox.
Fixed: Bug with cloth delayed attachment.
Fixed: Stop at local grids when computing parent for attachment (i.e. the topmost physicalized parent).
Fixed: Add additional checks for CVar es_UseProximityTriggerSystem.
Fixed: LoadGeometry working incorrectly when a compound statobj already exists in slot 0.
Fixed: Possible crash by physicalizing entity slot.
Fixed: LightProbes not recognized as regular deferred lights (just because their texture was missing).
Fixed: Static entity network identifiers mismatching when entities failed to spawn or were skipped - resulting in failed network connections.
Fixed: Warning for failed entity load never being output.
Fixed: Case where entities would not be created from level.
Fixed: CEntitySystem::GetEntityFromID not correctly supporting extending entity index bit count.
Fixed: Loading screen not ticking during entity spawning from disk.
Fixed: Exported entities (in layers) hidden by the "Loaded in Game" option still being unhidden on level load in pure game mode.
Fixed: Incorrect copying of flags when moving physics to a different entity.
Fixed: Component doesn't get instantiated when created with base type id.
Fixed: In-game entities being removed too early when exiting Sandbox Editor Game Mode.
Fixed: (Animation) Character physics ownership wrt deletion.
Fixed: Timer crash after save game deserialization - due to timer listener not being re-set.
Fixed: Removed unnecessary assert on proxy serialization.
Fixed: Re-physicalization of linked objects.
Fixed: Loading custom map triggers assertion (AreaProxy.cpp).
Fixed: Saving custom map triggers assertion (AreaProxy.cpp).
Tweaked: Improve es_layerdebuginfo to show more layer entries on screen and reorganize debug entries for better overview.
Tweaked: Remove all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Entity iterator implementation (storing direct iterator to entity array instead of index).
Tweaked: Remove Entity_Flag_Never_Network_Static - no longer needed as we correctly identify items loaded from level, instead of assuming that anything spawned during load time is static.
Tweaked: Fix a failing feature test.
Tweaked: Add profile labels for default layer activation.
Tweaked: Remove unused Entity Events.
Tweaked: Add API examples for Preview Rendering.
Tweaked: Introduce API examples for IEntity::Load* functions.
New: Ported LocalGrid Entity to a Schematyc Component (enable grids by default).
Fixed: Possible nullptr access in the Advanced Animation Component.
Fixed: Right shoulder button doesn't work.
Fixed: Some default values of RigidBody Component.
Tweaked: Exposed max time step and sleep speed in RigidBody Component.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Add missing shadow settings to Light Components.
New: Check if device is plugged in prior to installation.
New: Uninstall package prior to installation - if same package with different signature is already present.
Refactored: Sync plugins and 3rd Party libs.
Refactored: (Win) Update WAF related files.
Refactored: Fix VS solution generation.
Optimized: Avoid root cry_waf.exe invocation when compiling from VS and use cry_waf.exe in Code/Tool/... instead.
Fixed: QT compilation to allow replacing "\\" with "/".
Fixed: Fix SWIG compilation to allow replacing "\\" with "/".
Fixed: Handle incredibuild inability to process "\\" in strings when using response files.
Fixed: Bug incredibuild not able to parse clang.exe commands correctly.
Tweaked: Sync WAF with CMake.
Tweaked: Set minimum Android SDK platform version to 24.
Tweaked: Update supported Windows SDKs.
Tweaked: Remove hardcoded SDL2Ext from WAF.
Tweaked: Sync *.waf_files.
Tweaked: Update *.waf_files to follow CMakeList.txt file order.
Tweaked: (Android) Add Sysincpaths to env to ensure system includes are placed after Engine and project includes.
Tweaked: (IB) Clang builds no longer require a dev tools acceleration licence.
Tweaked: Update WAF projects.
New: Use gcc from bootstrap.
New: Use a bootstrapped ninja binary on Linux.
New: Use bootstrapped Clang.
New: Use a CMake include in tools on Linux.
New: Added Option_Release_Logging.
New: Upgrade to CMake 3.14.5.
New: Added VC++ 2017 support to scripts.
New: Hunt monolithic build, fix LTCG option and added monolithic Engine with game as dll option (for Hunt). Removed UQS_xxx_shareable projects (shared project generated if needed).
New: (CMake, Renderer) Including DXC option in CMake when DX12 and vk are the target dlls. Also, copying the compiler file to the bin folder.
New: Added the option for profile-guided optimization.
New: Replace ../../SDKs to ${SDK_DIR} in all CMake files.
New: Support for specifying Linux Clang compiler to be taken from the bootstrap folder.
New: Support building API examples without the Engine for auto compilation.
Refactored: Don't force C standard version for *.c files.
Refactored: Clean up PS4 toolchain executable and include paths.
Refactored: Significantly simplify Android setup for Ninja builds and use the correct CMake variables.
Fixed: Option Engine not working with projects outside of the Engine root folder.
Fixed: Compilation for project templates.
Fixed: Xbox One so that correct include and library paths are being setup.
Fixed: Consoles can run bootstrap before setting themselves up.
Fixed: PS4 uses the correct SDK path during configure and generation steps.
Fixed: Variable name mismatch in Xbox toolchain files.
Fixed: Compilation with OpenSSL.
Fixed: RTTI-related crash due to inconsistent compilation options.
Fixed: C files are now compiled with C11 standard instead of forcing them to c++ compilation.
Fixed: Durango monolithic, with game, as dll building.
Fixed: Linking error to DXC.
Fixed: Monolithic builds when a lib is linked into a shared lib and a dll.
Fixed: LTCG. Did not define /GL for compiled object files.
Fixed: Added /OPT:REF and /OPF:ICF for release builds.
Tweaked: Make profile and release use their own output folders.
Tweaked: Set import library (lib&ilk) directory for the executable (Launcher) project back to default so it outputs to the solution directory and not the bin.
Tweaked: Updated minimum required version from 3.6.2 to 3.14.5 (CMake).
Tweaked: Show normal text for enabling PCH message (rather than a warning text).
Tweaked: Enable precompiled header for unity build and use PCH for Sandbox moc files.
Tweaked: Clean up Clang compilation settings file.
Tweaked: Fix build warnings that arose from specifying conflicting options.
Tweaked: CMakeList.txt files to point to *.waf_files to allow WAF conversion scripts.
Tweaked: Fix minor errors in CMakeLists.txt files.
Tweaked: Allow Engine directory to be overridden in projects (to allow scripted external builds).
Tweaked: Switch default Windows SDK to 10.0.16299.0.
Tweaked: Ensure VS2017 will force/permissive (if actual Windows SDK is too old).
Tweaked: Rename "WIN32" to "WINDOWS" for symmetry with other platforms.
Fixed: More robust camera proxy position update (allow Physics:Params nodes to be triggered by non-0 in-place inputs).
Fixed: Issues with set physics params nodes - old params not working with schematyc ents, constraint frames not vectors on new params).
Fixed: Incorrect parameters passed to Entity_Event_Script_Event.
Fixed: PlayAnimation node ignores StayOnLastFrame option.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Tweaked: Allow recording of time demos for games not using the Actor system.
Fixed: Crash in EntityNode delete on PS4.
Fixed: Crash when loading levels without the renderer being present.
Tweaked: Removed all occurrences of unused variables and removed the '-Wno-unused-variable' compiler flag to protect against accidental reintroduction of such.
Fixed: Inability to setup templates for Multiplayer mode without the user making large changes and match rolling ball network setup with other templates.
Fixed: Issue in the First Person template where the character would permanently turn.
Fixed: Linux compilation by adding target guards around ncurses and using CRYENGINE_DIR in the toolchain file.
Tweaked: Clean up code for clarity.
Tweaked: Removed unused variables.
Tweaked: Compilation fix for Linux.
Playstation