Also covered and discussed on reddit
In contrast to a Unreal-based solution, my server is able to host multiple worlds (levels/shards/layers) at the same time, with a low consumption of resources. In addition, the server is able to update many independent worlds and their content in parallel, thus making the best use of modern multi-core systems to potentially support a larger number of clients. In addition, my dedicated server plugin works with the standard Unreal Engine that is distributed through the Epic Marketplace and does not require a source build.
This presentation in particular covers runtime-reloadable C++ and JavaScript/TypeScript AI scripting and the first presentation of multiple simultaneous levels.
Last year I published two presentations for my custom C++ Unreal Engine server already:
- https://www.reddit.com/r/unrealengine/comments/y08vw0/scriptable_headless_player_bots_and_independent/
- Reddit - Dive into anything
My previous presentations were well received and many people suggested that the server could be turned into a usable plugin eventually. Therefore, I shifted the direction from a standalone experiment to trying out whether making a usable custom server plugin would be theoretically possible. I am not sure yet, whether I would like to continue on this project, which also depends on your response.
The server is in a very experimental state and not meant for any productive use.
My presentation covers in detail:
- Overview
- Architecture, Benefits and Limitations
- Plugin Installation
- Demo Level and First Session
- Entities and Exporting
- NPC creation and spawning
- Items (creation and related systems)
- Spells, Auras & Skills (capabilities)
- C++ Extensions (building and usage)
- Typescript/JavaScript Scripting (transpiling and usage)
C++ libraries used (incomplete list):
- 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. The presentation includes runtime-reloadable C++ and JavaScript/TypeScript AI scripting, multiple simultaneous worlds and an introduction to the first demo.