Also covered and discusse on reddit.
In June, I first presented you my implementation of a custom C++ server for the Unreal Engine (https://www.reddit.com/r/unrealengine/comments/v3rvrq/a_custom_c_server_for_the_unreal_engine_5/). Since there was a lot of interest in this topic, I decided to share the current progress with you again.
My presentation shows a custom server for Unreal Engine 5 that I implemented as a side project. Unlike an 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.
The outstanding features in this particular presentation are the introduction of a fully ECS-driven client layer that makes it possible to spawn many headless player (bot-driven) clients for benchmarking and testing, that work without the Unreal Engine. This presentation shows this on the example of 100 spawned player bots that gather resources automatically.
Dynamic and replicated meshes are automatically placed as instanced static meshes by our custom NetDriver whenever possible. In this presentation around 4000 replicated randomly spawned resources are shown in one scene. The NetDriver then converts an instanced static mesh to an Actor automatically if required (e.g. through interactions).
Additionally, this presentation shows smaller gameplay-related features, like an inventory system, equipment system and progression trees.
My presentation includes:
- Overview of the full UE ECS Rewrite
- Scriptable Player Bots
- UI Window container system
- TypeScript & Reloableable React UIs
- Inventory & Character Equipment
- Skills & Progression Tree system
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: Presentation of the latest progress of my own C++ server backend for Unreal, that is optimized for MMO(RPG)s. Scriptable player bots and standalone client-layer. Presentation of other gameplay-related features, like an inventory system, equipment system and progression trees.