This article is aimed at easing the migration of projects from CRYENGINE 5.3 to CRYENGINE 5.4 and it focuses on the changes made to CRYENGINE's source code format.
Over time, and as we introduce new features, then we will deprecate the older ones and they will be removed 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, however source code is still shipped with the Engine - Vulkan is now considered as 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 achieved 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 the solution, and 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.
Additionally, it is also possible to use pure CMake workflow by not using the 'Generate Solution' option beyond the first generation and then running CMake GUI directly.
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, this 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
.