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

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ก.ย. 2024

ความคิดเห็น • 27

  • @mateusmoreira2898
    @mateusmoreira2898 2 ปีที่แล้ว +2

    This is fantastic! Well done😃

  • @PaulMenefee
    @PaulMenefee 2 ปีที่แล้ว +1

    This is fantastic!

  • @gamedev_expert
    @gamedev_expert 2 ปีที่แล้ว +3

    Great job! Any chances that you tell us more about component replication, and how you beat built-in replication from epic. Did you heard about their replication graph? And is your framework it easy to use for you? I do same stuff, but what i do is not very generic for now, interesting how you feel about usage

    • @Naioos
      @Naioos  2 ปีที่แล้ว +2

      Currently, the replication system is straightforward and does not support interest partitioning as of now (neither it currently beats the current UE replication system, however, it has the potential to do so). This demo focused more on client prediction and the protocol itself, e.g. replicating by using a custom NetDriver and protocol. The replication graph documentation states that they want to provide a system with "100 connected players and about 50,000 replicated Actors". However, for an MMO server, which should scale well over 2000 players, and where the application domain is known, other solutions can be applied, in contrast to a general solution like the UE replication graph or the UE general replication system. Implementing a custom server makes it easier to experiment with such solutions. The replication system is currently not my highest priority but will be optimized in the future, it is simply not required for a prototype, but the server is prepared for an efficient replication implementation (interest partitioning) in the future.

    • @gamedev_expert
      @gamedev_expert 2 ปีที่แล้ว

      @@Naioos sorry i misunderstood you. I will wait for your next videos :)

    • @3sgamestudio
      @3sgamestudio ปีที่แล้ว

      @@Naioos 2000? on a single server? well... damn... that's new world / wow numbers.

    • @Naioos
      @Naioos  ปีที่แล้ว

      @@3sgamestudio 2000 is not possible yet because I have not implemented interested partitioning (as of now), but I'm sure this number can be reached per executable instance if the players are not directly in the same area and somehow distributed across the world. The server supports now to host multiple maps per instance (also instances of the same map), which makes arbitrary partitions by region, dungeon instance or shard possible to split load. Higher numbers than 2k would probably require a cluster of server instances.

    • @dadobettacars4childrens
      @dadobettacars4childrens ปีที่แล้ว

      @@3sgamestudio ever heard of lineage 2 ? built with unreal engine 2,2.5 and can host thausands of ppl

  • @Sepphirex
    @Sepphirex 2 ปีที่แล้ว +3

    Do you have any intention of selling it on UE Marketplace?

    • @Naioos
      @Naioos  2 ปีที่แล้ว +1

      I did not think of a UE Marketplace release yet, mainly because the codebase is quite complicated and not easy to setup. In which parts of the project would you particularly be interested in?

    • @tacolover619
      @tacolover619 2 ปีที่แล้ว

      @@Naioos The UE5 client and server C++ networking components

  • @Naioos
    @Naioos  ปีที่แล้ว +1

    This presentation now has a third part: th-cam.com/video/FsGowQGObX0/w-d-xo.html

  • @李阳-w9u
    @李阳-w9u ปีที่แล้ว

    Perfect job! I just started using ue5, Not very clear, Did your server use the blueprint and GAS?

    • @Naioos
      @Naioos  ปีที่แล้ว

      Sadly the server cannot use any UE specific code or systems because I wanted to let it stay completely independent from the UE codebase. Normal UE Blueprints are possible for client-side behaviour like client-side ability scripts but do not work server-side for obvious reasons. Abilities and status effects are expressed in a system comparable to GAS, but the system is also completely independent from UE and therefore does not make use of GAS. Abilities and temporary states are expressed through data-only blueprints. As said the server cannot execute blueprint code directly, however it is possible to express contron flow/behaviour in blueprint code and it gets serialized and executed on the server. Currently the serialization of specific blueprint nodes only work for the selection of ability targets, but I plan to fully extend this to make it possible to script entire NPCs from blueprints - the useable blueprint subset will be limited to specific nodes provided for the use on the server. I might add support for Gameplay Ability Tags at least in the future. Implementing my own ability system for this server makes it possible to synergize way better with the used underlying entity component system than GAS could do. My, ability system, for instance, supports partial rollbacks and animation stretching by default, also I think about adding full network rollback to it in the future (useful for e.g CC, stuns, teleports).

    • @李阳-w9u
      @李阳-w9u ปีที่แล้ว

      @@Naioos I see, Thanks for your reply very much!

  • @Naioos
    @Naioos  ปีที่แล้ว

    This presentation has a second part now: th-cam.com/video/yGlZeopx2hU/w-d-xo.html

  • @craigf5773
    @craigf5773 2 ปีที่แล้ว

    🤭 p͎r͎o͎m͎o͎s͎m͎

  • @rabbirt
    @rabbirt 2 ปีที่แล้ว +1

    Really impressive work, love the presentation and how you show code

  • @nawySAUCE
    @nawySAUCE 2 ปีที่แล้ว +1

    ooo this would be amazing if you uploaded it to github :)

    • @Naioos
      @Naioos  2 ปีที่แล้ว +2

      I do not have any plans to release this for public use.

  • @redgeciccone8218
    @redgeciccone8218 ปีที่แล้ว

    it is still supported ? how about WoldPartition how manage streaming proxy ?

    • @Naioos
      @Naioos  ปีที่แล้ว

      The plugin works with streaming proxies client side, currently the server loads the entire level on startup and therefore streaming does not happen on the server side.

  • @ivanm.612
    @ivanm.612 ปีที่แล้ว

    hi isnt using playfab (or similar )a better solution? Thanks 😊

    • @Naioos
      @Naioos  ปีที่แล้ว +1

      Very good question. In the end this replaces the unreal default server. You still want to host this server on an auto-scaleable solution like playfab or AWS. However, hosting an unreal server requires way more resources than this server currently, especially per map or shard, because this server can host many maps at the same time per instance. So this server might provide a cheaper solution to host, compared to the default unreal server. Mainly because it does not provide full spatial awareness like required for complex collision support. Also the server provides many MMORPG related features out of the box.

    • @ivanm.612
      @ivanm.612 ปีที่แล้ว

      @@Naioos Thanks for your answer. Playfab offers also dedicated server via the GSDK Plugin. At least I understood it like that. Or am I wrong? Also it may be good to tell people that you need the UE source build from Github to be able to ship a dedicated server ;)

    • @Naioos
      @Naioos  ปีที่แล้ว

      @@ivanm.612 As far as I know GSDK directly builds on top of the Unreal default server and networking protocol and therefore requires the UE source to ship a dedicated server. The server I present here, does not require a source build at all, in fact I'm using the default UE release distribution that Epic ships over the marketplace. The server is split into three parts, a shared part that provides all fundamentals and shared code for the server and client. A client UE plugin and a separate server that can be built with CMake as usual, without any UE installation required.