This article is aimed at easing the migration of projects from CRYENGINE 5.3 to CRYENGINE 5.4 and it focus's on the changes made to CRYENGINE's source code format.
Over time, and as we introduce new features we will deprecate the older ones and plan to remove them in future Engine releases.
For 5.4.0, the following features have been deprecated:
Additionally, the following features were already deprecated and have been removed from Engine source code and thus will no longer function:
Finally, the OpenGL Renderer is no longer supported. Source code is still shipped with the Engine, however Vulkan is considered an effective replacement.
The project system has been refactored to automatically generate the CMake setup (CMakeLists.txt) whenever the 'Generate Solution' option is used.
This is done by automatically detecting .cpp and .h files inside the Code directory, and adding them to the solution. This means that any customizations you have made in CMakeLists.txt will be removed upon generating solution, because of this we strongly recommend backing up this file before upgrading.
It is still possible to customize the CMakeLists file using the BEGIN-CUSTOM and END-CUSTOM helpers:
#BEGIN-CUSTOM
# Custom changes in here
#END-CUSTOM
Anything contained between the custom helpers will be automatically migrated to the newly generated CMakeLists.txt file.
It is additionally also possible to use pure CMake workflow by not using the 'Generate Solution' option beyond the first generation, and then running CMake GUI directly.
It is not recommended to migrate existing projects to the preview build, as it is not a full release build and many aspects of it still contain (sometimes serious) bugs.
If you are using any of the macros listed below, then you will have to update your code to reflect the changes that we have made in the Engine code.
Old Macro (up to 5.4 Preview) | New Macro (5.4 onwards) |
---|---|
CRY_ENTITY_COMPONENT_CLASS | CRY_ENTITY_COMPONENT_CLASS_GUID |
CRY_ENTITY_COMPONENT_INTERFACE | CRY_ENTITY_COMPONENT_INTERFACE_GUID |
CRYGENERATE_CLASS | CRYGENERATE_CLASS_GUID |
CRYGENERATE_CLASS_FROM_INTERFACE | CRYGENERATE_CLASS_FROM_INTERFACE_GUID |
CRYGENERATE_SINGLETONCLASS | CRYGENERATE_SINGLETONCLASS_GUID |
CRYINTERFACE_DECLARE | CRYINTERFACE_DECLARE_GUID |
_ENFORCE_CRYFACTORY_USAGE | _ENFORCE_CRYFACTORY_USAGE_GUID |
You will need to replace all occurrences of the old macros with their new form - this also requires you to update the parameters. The old macros took two unsigned 64-bit integers, whereas the new ones expect a CryGUID
. Converting your integers into the corresponding CryGUID
is fairly straightforward providing you know the hexadecimal representation and can be done as follows:
Assuming that your integer values were 0x0111111123334555
and 0xabbbcddddddddddd
, the new CryGUID
looks like this: "01111111-2333-4555-abbb-cddddddddddd"_cry_guid
.