Porting Monaco 2 to PlayStation 5 and Xbox Series

A custom engine, a strict build pipeline, and two next-gen platforms. Here’s how we got Monaco 2 ready for PlayStation 5 and Xbox Series.

Monaco 2 is a fast-paced, top-down heist simulator from Pocketwatch Games, built on their proprietary engine – a purpose-built C++17 system designed for maximum cross-platform consistency. The engine is monolithic, with a tightly scoped platform abstraction layer and a custom content pipeline. It uses minimal third-party code and turn-key builds.

The team at Pocketwatch had already brought Monaco 2 to PC, with PlayStation 5 support partially implemented. Our role was to complete the PS5 port and build the Xbox Series version from the ground up, aligning with Pocketwatch’s engineering approach of clean abstraction, minimal dependencies, and consistent platform logic.

Porting Scope

  • Integrating console SDKs and build tools into their custom Premake5-based build system
  • Finishing AGC (PS5) and adding D3D12 (Xbox Series) support to the engine’s RHI
  • Porting and extending platform-layer APIs: input, threading, file I/O, virtual memory, timing, system errors
  • Implementing session manager, native lobbies, invitations, friends, achievements (Xbox), trophies and activities (PS5)
  • Integrating Epic Online Services (EOS): authentication, lobby system, Title Storage, Reports

Constraints

The structure of the game engine wasn’t intended to be changed outside of the platform code, but the initial abstraction did not meet all the requirements of the target platforms. We made minimal, necessary adjustments, without disrupting the core architecture.

Third-party code remained limited and tightly scoped. Build rules followed existing patterns. All platform additions were made in line with Pocketwatch’s preferences and architecture.

Technical Implementation

Console SDK Integration

We upgraded to the latest EOS SDK and integrated console-specific EOS SDKs for PlayStation and Xbox. This included platform initialization, authentication and full Connect/Login flow.

To meet specific TRC/XR requirements, we also incorporated EOS Title Storage and EOS Reports. The integration followed existing platform build rules and was aligned with the current architecture.

We extended the internal online interfaces to bridge console-native lobbies with the cross-platform EOS lobby system, ensuring seamless interoperability.

Platform-Layer Porting

We implemented and extended:

  • Threading, file I/O, virtual memory, including extension of PS5 file access and memory management routines where necessary
  • Input events, system timing, system error handling
  • Achievements (Xbox), Trophies and Activities (PS5)
  • Session manager, native lobbies, invitations, friends
  • DirectStorage support on Xbox and APR-based disk IO on PS5
  • Adapted the save system to support slot-based storage
  • Expanded native UI support, including dialogs and memory handling
  • Integrated platform-specific tools: DirectXTex for texture processing, D3D12MemoryAllocator for memory management on Xbox

Graphics API Port

We completed the AGC backend on PS5 and implemented D3D12 support for the RHI.

Results

  • Monaco 2 builds cleanly and consistently across PS5 and Xbox Series
  • Platform-specific features are fully functional and aligned with target certification requirements
  • All platform logic lives inside the existing abstraction layer
  • EOS is fully functional and integrated on both consoles

We didn’t change how the engine works. We finished what was started, extended what was needed, and brought Monaco 2 to next-gen platforms without adding weight or complexity.

Monaco 2
Website