From February 2021, the OEngine development team was progressively deployed on a major project: porting the engine to the new consoles of Sony and Microsoft released a few months earlier.
Made in parallel with the development of the game The Smurfs – Mission Vileaf, the initial goal of this port was to allow the game to be released on PS5 and Xbox Series. But this port will also benefit all current and future games made with OEngine, which can be published on these consoles!
This enormous task allowed me to get my hands in many facets of engine development: configuration and generation of Visual Studio projects, implementation of TRCs (technical requirements checklist), and even some rendering programming.
- Welcome to the 9th generation
- Rendering programming
- Implementation of platform-specific TRCs and APIs
- Spring cleaning
Welcome to the 9th generation
From November 2020, I had fun (understand, nobody asked me to) compiling OEngine for the first time with Visual Studio 2019 and its vc16 compiler: we were using Visual Studio 2015 (vc14) until then. This change has drastically reduced compilation times, and it was also an opportunity for me to put my nose into our solution generation tool, which had to be modified to support generation for the v142 toolset.
A good exercise, because when porting time came in February 2021, I was entrusted with the initial mission of compiling OEngine for the first time for PS5 and Xbox Series, like a lone adventurer clearing an unknown land.
This mission can be summarised in 2 thematic parts:
- The update of our solution generation tool to be able to generate Visual Studio solutions for Prospero (PS5) and Scarlett (Xbox Series) platforms.
- The progressive compilation of the engine, layer after layer, from the kernel to the gameplay code. This includes, for example: the implementation of the main(), the sharing of code between platforms (PS4 code reusable on PS5, etc.).
Once these preliminary steps were completed, the serious things started for the whole team. For my part, I took care especially of the following subjects:
Rendering programming
- Implemented DirectX 12 shader compilation and reflection for Windows and Xbox Series.
- Implemented AGC shader reflection for PS5 and refactored GNM shader reflection for PS4.
- Switched OEngine PS4 GPU memory allocator to 64 bit so that it can be used on PS5 without limitation.
- A little help to integrate 4K and VSync support on PS5 and Xbox Series.
- sRGB support for PS5 textures.
Implementation of platform-specific TRCs and APIs
- Integration of the Microsoft Game Development Kit (GDK), initially done in cooperation with Alban Guéret from Passtech Games, with a double objective: publish Curse of the Dead Gods on the Microsoft Store, and implement the Xbox Series TRCs for The Smurfs – Mission Vileaf.
- Implemented save on PS5 and Xbox Series, and refactored the save code on PC, PS4, and Nintendo Switch.
- Implemented PS5 trophies and activities.
- Support for ‘suspend‘ and ‘resume‘ on Xbox Series.
- Detection of controllers and inputs on Xbox Series.
- Detection of the Xbox Series model (X or S), for performance purposes.
Spring cleaning
- Dusting of the FMOD Studio implementation, and integration on PS5 and Xbox Series.
- Update of some SDKs (FBX, …).
- Removal of unused libraries.
I also spent some time implementing an Xbox One port of the engine compiled with the GDK. This allowed us to share the same code as the one implemented for the Xbox Series (rendering, inputs, TRCs, …), while getting rid of the old XDK-based engine implementation. Although this task was completed too late for the release of the Xbox One version of Smurfs, it will be very useful for future projects developed with OEngine wishing to be published on this console.