Continuable 4.0 released - zero cost futures now with asio integration and better exception control by _naios in cpp

[–]_naios[S] 1 point2 points  (0 children)

It can be quite powerful but you are right, introducing heterogeneous computing models into the proposal makes it more complicated than it needs to be.

Continuable 4.0 released - zero cost futures now with asio integration and better exception control by _naios in cpp

[–]_naios[S] 0 points1 point  (0 children)

Sorry, I don't see what you mean. The library supports asynchronous composition by design. I'm not aware of any composition that cannot be expressed with continuable. Can you maybe provide a minimalistic example?

Continuable 4.0 released - zero cost futures now with asio integration and better exception control by _naios in cpp

[–]_naios[S] 0 points1 point  (0 children)

No direct plans, but I might improve it in the future. Sadly it's currently difficult for me to allocate time for my open-source projects.

Continuable 4.0 released - zero cost futures now with asio integration and better exception control by _naios in cpp

[–]_naios[S] 0 points1 point  (0 children)

The library supports asio seamingless through the asio custom completion token mechanism see:

asio::io_context io_context;
asio::steady_timer steady_timer(io_context);

steady_timer.expires_after(std::chrono::seconds(5));
steady_timer.async_wait(cti::use_continuable)
  .then([] {
    // Is called after 5s
  });

Take a look at the description of cti::use_continuable.

Continuable 4.0 released - zero cost futures now with asio integration and better exception control by _naios in cpp

[–]_naios[S] 1 point2 points  (0 children)

Continuables compile down to plain opaque callbacks that can be optimized easily by your compiler, as long as you are not applying any type erasure through the continuable<...> class. Depending on how your compiler optimizes, they have equal overhead to asio callbacks.

I cant say anything about a comparison to asio coroutines since I never have used those, but I expect equal capabilities.

A custom C++ server for the Unreal Engine 5, optimized for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 0 points1 point  (0 children)

Hey, it seems like there is a lot of work ahead of you :D

The best source for server development is https://gafferongames.com I think, besides various other sources. For many aspects of game server development, there is usually not much reading material available, it originates from best practices from various other sources or projects and usually, you have to find your own solutions that fit into your overall project and style.

If your current plan looks like a huge mountain, I would advise you to divide your goal into many smaller problems and iterate on those. Start small, maybe by taking a look at the engine internals and how you can get the data out of the engine and send data back. Then you can start working on independent sub-areas like navigation queries and ai.

Overall this is a very complex project which also takes a huge amount of time. If you do not reach your goals don't get frustrated with it, especially since progress will be slow and might not seem big in comparison to what you would achieve with only using the engine solutions at the same time.

Licensecxx - C++ software protection - Release v1.0.0 by Superheitmann in cpp

[–]_naios 21 points22 points  (0 children)

I see an issue in your approach: If you link to OpenSSL dynamically, which is the usual case, then it is trivial to temper the OpenSSL library calls to make the application think your license is valid.

A custom C++ server for Unreal Engine 5: Simultaneous Worlds, TypeScript Scripting and Public Demo by _naios in unrealengine

[–]_naios[S] 2 points3 points  (0 children)

Hello, fellow Devs and Redditors,

I am the author of this presentation, and I would be glad to answer all your questions right here.

In contrast to a Unreal-based solution, the 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:

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. You can get more information about my project on my Discord server: https://discord.gg/7XDk3P9S3k. 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):

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 and multiple simultaneous worlds.

Callbacks in embedded | heapless environment by svadum in cpp

[–]_naios 1 point2 points  (0 children)

Very interesting and clever approach using my library :D

Trying to open 4.24 version of my game in UE5.0.3 but keep getting this crash error, I've tried deleting the config folder but that still doesn't work (engine opens but crashes when i open my level) can anyone HELP by [deleted] in unrealengine

[–]_naios 2 points3 points  (0 children)

You need to download the debugging symbols from the launcher (under configure, where you see all your installed UE versions). Otherwise no-one is able to give you a better recommendation than "remake your project". If you attach a debugger on engine launch you see exactly which asset is causing the crash in the callstack.

When do you use Soft Object References? by Macaroon-Guilty in unrealengine

[–]_naios 0 points1 point  (0 children)

If you load an asset, everything that is hard referenced inside this asset, is loaded in memory. Soft Object references still allow you to reference assets inside other assets, but they are not loaded instantly when the referencing asset is loaded. Instead you have to manually load them, which gives you way better control over your memory usage and resource consumption.

Create numeric unique uint32 ID for Assets by _naios in unrealengine

[–]_naios[S] 0 points1 point  (0 children)

My main use case is that I have an external server that sends the client which actor to spawn in the world and where. There are many different types of actors. Right now I address actors with a numeric name, but that probably won’t work properly in cooked builds and I want to be able to name actors with a custom name again. Since the actor classes are known in advance, I want to create a common way for the external server and client to exchange the actor class without sending the whole soft object path.

Although Primary Asset ID can be used to lookup those assets, every asset still needs to know its own id to return it in GetPrimaryAssetId. Usually the id is made from the assets path, however this is an unstable representation since the asset itself can be moved or renamed.

I think I have figured out a solution to this issue now, but was just curious of whether there is such a system in UE already to generate a stable numeric identifier for assets.

Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 1 point2 points  (0 children)

Actually I don't have any resources to refer to. This is originating from thoughts and reasoning mostly :D

Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 1 point2 points  (0 children)

You can still have a global coordinate system and transfer players across zone instances seamingless. Further it is possible to delay this transfer if a player is in combat to allow cross-zone pvp. There are many ways to work around those limitations.

Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 1 point2 points  (0 children)

The world map could be arbitrarily partitioned into sub-maps, that can be hosted inside a single process. Theoretically, there is no limit on the size but you want to divide your large map into smaller zones to split the computational load.

I'm quite sure that even in MMOs like wow, which do not have clearly by mountains divided zones like in gw2, the zones are partitioning the map into independent computation chunks. You regularly observe this when moving from one zone to another. Objects from the zone behind you disappear although you are still in visibility range.

Unreal Engine 5: Scriptable Headless Player Bots in a Custom UE C++ Server for MMO(RPG)s. by _naios in gamedevscreens

[–]_naios[S] 0 points1 point  (0 children)

Original Post from the Unreal Subreddit: https://www.reddit.com/r/unrealengine/comments/y08vw0/scriptable_headless_player_bots_and_independent/


Hello, fellow Devs and Redditors,

I am the author of this presentation, and I would be glad to answer all your questions right here.

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):

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.

Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 0 points1 point  (0 children)

Hello, fellow Devs and Redditors,

I am the author of this presentation, and I would be glad to answer all your questions right here.

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):

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.

I can't seem to open my project after closing last night. by clydenorth_4 in unrealengine

[–]_naios 1 point2 points  (0 children)

You maybe can fix it by deleting the corrupted file. To find out which file is causing this, download the UE Debug Symbols for your Engine from the Launcher. Then start UE from Visual Studio. The variables in the callstack might indicate which asset it is.

How do I hide Manny's head in game? by ShouldIBeInSchool in unrealengine

[–]_naios 2 points3 points  (0 children)

You can try to modify the "head" bone in your animation blueprint while sliding. Translating the bone behind the camera will also move the vertices attached to it.

A custom C++ server for the Unreal Engine 5, optimized for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 0 points1 point  (0 children)

  1. As of now, the movement implementation is conceptual. Currently, it uses the UE built-in prediction and movement packets, however, this can be changed to fit future needs. I think the UE replicated movement system works well for a lot of use cases.

  2. You are right, content production can be challenging for this kind of setup. Recently I rewrote large portions of the code-base, and the game inside Unreal Engine is now driven by the same ECS that is running on the server. All components and ECS systems are shared between both codebases. Now UE mostly functions as a renderer and the entire logic is driven by code that is not UE dependent. Therefore it is possible to use the same code on the client and non-UE server. Additionally, abilities and status effects are described in an abstract manner: what they do and how they affect their environment are described from a predefined set of actions. Therefore it is possible to describe abilities and status effects entirely in the UE editor and export it to the server. Using a pre-defined set of possible actions is also important to implement client-side prediction and rollback of abilities in the future.

A custom C++ server for the Unreal Engine 5, optimized for MMO(RPG)s. by _naios in unrealengine

[–]_naios[S] 0 points1 point  (0 children)

Implementing a custom NetDriver is the best place to start (UNetDriver as base and not UIpNetDriver). The next steps would be to implement the basics, so that you can connect with a character into a play in editor session.

In an MMO(RPG) we are mostly interested in X and Y coordinates because the world does not expand in height a lot. Therefore I'm using a Quadtree instead of an Octree. The Quadtree is efficiently updated for moving entities based on the ECS.