Also covered and discussed on reddit.
My presentation shows a custom server for Unreal Engine 5 that I implemented as a side project. Unlike a Unreal-based solution, the server is capable of hosting multiple maps (levels/shards/layers) at the same time, with low resource consumption.
In addition, the server can update many independent maps and their contents in parallel, making optimal use of modern multicore systems.
A notable feature of our server is the ability to script AIs using C++20 coroutines. By using an entity component system, the server is potentially safe from crashes, as dangeling pointers and other lifecycle issues almost never occur.
Implementing a custom NetDriver for Unreal gave me a lot of insight into its networking architecture. Although the UE network and replication driver is highly optimized for real-time action games such as Fortnite, I am skeptical of its application in MMO(RPG)s.
My presentation includes:
- A technical overview of the server
- Replicated movement & player interaction
- Combat, AI & NPC interaction
- Data export from UE to the server
- Server navigation mesh & physical materials
- Physical material based random spawning.
C++ libraries used (incomplete list):
- GitHub - Naios/idle: Idle is an asynchronous and hot-reloadable C++ dynamic component framework
- GitHub - Naios/continuable: C++14 asynchronous allocation aware futures (supporting then, exception handling, coroutines and connections)
- GitHub - Naios/function2: Improved and configurable drop-in replacement to std::function that supports move only types, multiple overloads and more
- GitHub - skypjack/entt: Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
- GitHub - google/flatbuffers: FlatBuffers: Memory Efficient Serialization Library
TL;DR: I have implemented my own C++ server backend for Unreal that is optimized for MMO(RPG)s. Lots of working features: replicated movement, C++ AIs, combat and navigation mesh support.