Overview

CRYENGINE 3.8.1 is here and it is packed with features that we know many of you have been extremely eager to get your hands on for quite some time. A culmination of all the work we've been doing since the CRYENGINE 3.7.0 release, this is one of our biggest releases yet.

You'll find the top level features highlighted below, including our brand new OpenGL renderer which we use on Linux and Android platforms. We've added support for Oculus VR which has been a joint effort between the CRYENGINE team and the VR team working on our newly announced Robinson: The Journey game, and you can expect much more to come in this area over the next few releases! We've got Voxel-based rendering updates including Volumetric Fog with support for point lights, shadows, probes and more. GameZero is our brand new, stripped down, lean & mean GameCode sample package which makes creating a game on CRYENGINE much cleaner and simpler without all of the additional Crysis-related game code which you may not need for your title. This and a ton of other great improvements are available for download right now!

Release Highlights

OpenGL Renderer

Our brand new OpenGL Renderer running on Linux:

VR Support

Support for Oculus Rift has been integrated and we're rapidly adding more features and functions to help you get the most out of your Virtual worlds. We've included a small demonstration level, aptly titled the "VR_Demo" level. This showcases some information on how you can approach setting up your levels for VR, some of the implications and the immersive benefits of using VR.

Voxel Based Volumetric Fog

With CRYENGINE 3.8 we introduce an all new voxel-based volumetric fog system. The system supports illumination from deferred lights, respects clip volume boundaries and works consistently with transparent objects including particles. It is also possible to inject particles directly into the fog volume to simulate some turbulence.

Comparison of Light Entities, contributing into the Volumetric fog On / Off

Cascaded Shadow Cache

Cached shadows (formerly: static shadow map) have been extended to multiple cascades, covering several kilometers view distance out of the box. Cache updates are now handled under the hood but can still be manually tweaked via flow graph.

Reverse Depth for Increased Z-Buffer Precision

CRYENGINE stores depth values in a reversed range now. In combination with a floating point depth buffer, this helps to greatly increase depth precision and allows users to put the near clipping plane a lot closer than before without running into z-fighting problems.

Left shows an exaggerated setup with near plane distance set to 0.1cm to showcase Z-fighting. Right is the exact same setup with Reverse Depth enabled.

Efficient POM Self-Shadowing

POM self-shadowing is back now and working efficiently with deferred shading, allowing the sun to cast shadows from the heightmap used for POM.

8-Weight GPU Vertex Skinning

Skinning of complex animated meshes that use more than 4 vertex weights (up to 8 weights) can be performed directly on the GPU now which can significantly reduce the CPU load.

Voxel Based Global Illumination (Experimental)

The latest Release adds the prototype of a voxel-based global illumination system that can be used to render large-scale ambient occlusion with an optional indirect light bounce. Please note, the feature is highly experimental and not ready for production, it is just provided for testing and early feedback at that point.

Many Rendering Quality Improvements

The overall SSDO quality got improved, especially the quality of the specular occlusion.

Deferred decals are more consistent with standard decals and don't suffer from excessive aliasing any longer.

Caustics got some quality upgrades and are working with tiled deferred shading now.

Auxiliary viewports like for the character tool have greatly improved shading quality.

Smoothness is authored using a more perceptually linear distribution.

Normal-variance filtering produces cleaner results.

3ds Max 2016, Maya 2016, MotionBuilder 2016

Added support of 3ds Max 2016, Maya 2016, MotionBuilder 2016.

GameZero

The GameSDK project is a full blown game example. It demonstrates how most of the CRYENGINE features can be utilized. Based on Crysis 3, its size and complexity can be overwhelming for first time users. Furthermore prototyping games other than first person shooters can be tedious as the game project would have to be simplified to its core functionality first.

GameZerooffers a minimalist approach to CRYENGINE. It allows first time users to get a quick overview of using the engine’s core functionality. It can be used as starting point for creating several types of games.

Road Tool

The Road Tool now comes with the ability to erase vegetation along the road which can rapidly speed up and simplify your level creation.

Some new parameters have been exposed, such as EraseVegWidth which lets you define how far from the road edges to cut vegetation.

There is also EraseVegWidthVar which gives a variation multiplier for the EraseVegWidth value. This allows you to create a more natural look with some sections being more overgrown than others.

SceneRoot in Maya

Maya scripts for creating SceneRoot were added (the scripts are accessible through Maya's Crytek toolbar). See Character Authoring in Maya,

Fixed: (CE-6288) Removing a node from a RandomTrigger node no longer breaks the functionality of the Randomtrigger node.

Fixed: (CE-5142) Refactored entity iterator Flowgraph nodes.

Fixed: To prevent confusion, functions ToString(SFlowSystemVoid&) and ToString(TFlowInputData&) were changed so they return "unknown" as it was in the past, instead of returning "SFlowSystemVoid" and "TFlowInputData".

Fixed: EntityFaceAt node: Fixed undesired roll added to the transformation and bad initial state requiring designers to activate all inputs manually. Note: An input was renamed on the EntityFaceAt flowgraph node.

Prefabs

New: Added custom pivot points for prefabs. Can be manually moved with mouse or aligned to prefab objects.

Fixed: Panels delete didn't work properly on multiple selection.

Fixed: Optimization in the way objects update their properties when their inside prefabs. Now only the changes are reflected, which hugely speeds up working with prefabs.

Fixed: Copying/Deleting/moving 10+ flowgraph nodes within a prefab causes it to lag.

Fixed: Editing large numbers of objects inside a prefab cause it to lock up.

Fixed: When the user changes an object, which is part of a prefab only the object and its changes gets propagated to all the other prefabs of the same type (previously all the prefabs of this type were getting destroyed and recreated from scratch).

Fixed: (CE-1263) Changed post-processing parameter blending to not average with the param default value any longer which caused issues for the saturation parameter; for debugging r_PostProcessParamsBlending 2 can be used to restore previous behavior.

Fixed: (CE-6085) Call SetStopped on the compute vertices job in CRenderer::PrepareParticleRenderObjects rather than after the last job. The previous implementation can cause the main thread to wait indefinitely if no job is started within CRenderer::PrepareParticleRenderObjects but m_ComputeVerticesJobState[threadList] has been set as running. SetStarted and SetStopped already use a counter and AddJob increases this counter so there is no need for the previous job tracking code.

New: Added an option (enabled with DXGL_MERGE_CONSTANT_BUFFER_SLOTS, on by default) to merge the mapping of constant buffer slots to uniform block locations for different stages when they are compatible.

New: Added loader for GL_EXT_shader_image_load_store.

New: Added some GL extensions for future use.

New: Enabled dxgl_streaming_constant_buffer_persistent_map by default as it works on Foster too; added dxgl_streaming_constant_buffers_sorting mode to reduce overhead of CContext::FlushConstantBuffers in the average case.

Fixed: (HLSLcc) Replaced cross-dependency compilation with a preprocessor-based symbols that are dynamically resolved by the application; this allows to translate offline single shaders without knowledge of parameters such as attribute interpolation in the vertex shader or tessellator partitioning and output primitive in domain shader, or other pipeline state such as depth clamp emulation.

Fixed: (HLSLcc) Changed binary format for offline shaders to an extension of DXBC. Moved format parsing and writing code to hlslcc_bin.hpp so that it can be shared with the application.

Fixed: (HLSLcc) Fixes #version header position problem with strict drivers which require it to be as the first line in the shader.

Optimized: Delete xinput1_3.dll, it cannot be redist like this since it has an DX9 OS-side dependency. Only installation with end-user runtime for DX 9.0c is supported (or DXSDK), since COM registration is required.

CryEntitySystem

New: Allow querying rope length via ScriptBind.

Fixed: Out of memory crash during BspTree creation: Fix for infinite loop and made creation non-recursive.

Optimized: (Pipeline) Now using original tifflib and zlib (located in 3rdParty folder) instead of using multiple versions of source files (sometimes modified) and precompiled libraries scattered in Code; removed some unused PS3 code.

Optimized: Removed old code in the audio Proxy for playing at head position.

Optimized: Increased audio object pool size for PC (fixes dead lock when too many objects are created during level load).

Optimized: SubtitleManager is now using the new audio callbacks.

Optimized: The old dialog system does not pass along native pointers as user data for the audio callbacks, but IDs instead. This is probably the much safer variations if other systems (subtitles?) are interested in events from that system.

Optimized: Removed 'velocity' from the ATLWorldPosition struct.

Optimized: Direction of audio sources and listeners is normalized when needed, so that the user of the audio system does not take care of this.

ACB (Renamed to ACE: Audio Controls Editor)

New: (CE-5787) Created common project for the interface between the ACB and the implementations.

New: Support for localized soundbanks with the same name as global soundbanks.

New: External controls are colored different when not connected, can also be filtered.

New: Can remove connection with context menu now.

New: Added new default controls.

New: MSBuild project for the SDL Mixer Editor.

New: Doc-o-matic documentation for the ACB dll interface.

New: Trigger preview in the resource selector dialog.

New: Added the ACB to the dialog toolbar.

New: New preload panel.

New: First pass at automatic updating of the wwise panel.

New: Added function to retrieve middle-ware name.

New: Changing name to Audio Controls Editor. More accurate for its functionality.

New: ACB adapts to changing audio middleware.

Fixed: (CE-5634) Bug with new states not being saved to file.

Fixed: (CE-6190) Fixed bug with duplicate connection being added.

Fixed: (CE-6174) When creating a folder it will check that the name is valid before creating.

Fixed: Only one connection is added when dragging in an external control.

Fixed: Connected status of middleware controls is updated when connections are deleted.

Fixed: UI spacing for SDL Mixer.

Fixed: Connected control colours for SDL Mixer.

Fixed: Don't create the default_controls folder if controls are already in the project.

Fixed: Find localized controls when reading connections from XML.

Fixed: Don't filter switches if its name matches, even if all their children don't.

Optimized: Separation of the tree layout and the controls data for simplification.

Optimized: Removed custom mime data.

Animation

CryAnimation

New: LimbIK handles can now be longer than 8 characters, and become case-insensitive (technically, the LimbIKDefinition Handle type now uses lowercase CRC32).

New: Activated physical hit reactions and Fall&Play. Toggle it on/off using ca_physicsProcessImpact. This will work out of the box in the GameSDK sample, as the 'hit' handling passes along impulses to the animation system already.

New: Blend Spaces: Added more generic blendspace parameters, eMotionParamID_BlendWeightX. If you are using AnimatedCharacter you can use the new function SetBlendWeightParam to set these parameters. (next to the usual low level function ISkeletonAnim::SetDesiredMotionParam)

Fixed: Hinge-constraints didn't show the projection direction for rotations.

Fixed: Directional projections not activated after loading.

Optimized: Reorganized simulation parameters in the attachment panel.

General

New: "Save unsaved changes" dialog when closing character tool.

New: "Save As" context menu action.

New: Support for deletion of assets.

New: Added "Edges" display option to render edges on top of the character.

New: Added warning about missing animsettings file.

New: Added abstract anim event player interface (IAnimEventPlayer) which is used to play anim events in character tool. You can implement and register your own IAnimEventPlayer in your game code to preview game specific events. Created separate anim event player implementations for ATL, MFX and Particles. Those also act as examples in case you want to implement your own. See AnimEventPlayers.cpp.

New: Added "Reset Character" button to display options. It resets the character to the origin and stops playing animations.

Mannequin System

New: (CE-5174) CActionController::PruneQueue() will now also print all the queued actions when the queue overflows.

Fixed: (CE-5148) Fixed CryAction and GameSDK so the ComparePriority implementation in custom mannequin actions behaves similar to before 3.7. This impacts AI, item animation, replay actors, turrets and playback in the mannequin editor. As explained in Mannequin Actions.

Fixed: (CE-6285) ProximityTrigger's "IsInside" output renamed to "NrOfEntitiesInside" to match area trigger (and to more closely reflect what it does). This output is now always 0 when the trigger is disabled.

Fixed: (CE-6426) USE_BLEND_FROM_RAGDOLL was not defined resulting in AI not getting up once knocked over.

Fixed: Fixed fall-and-play not triggering when you slide into or jump onto an AI.

Fixed: Path for Ironsight model in Precache lists.

Fixed: Spread scale not working for hold breath function.

Fixed: Updated weapon scripts for new rifle assets.

Fixed: Formatting/alignment of some i_debug_ text.

Fixed: Moved gametokens reset to the start of the loading game process (flowgraph were using it before it was initialized).

Optimized: Cleaned up multiplayer config to lessen some log spam. Removed some unnecessary entries which are using default values from code. Removed whitespace between CVar and value. Removed audio entries which are no longer valid CVars.