Before I get started I would like to point out that our team is not attempting to create the next “MMO” or anything special like that. We’re simply working on a game with fast-paced skill-based combat that has an open world and some simple game-play mechanics. If you would like an example of our combat system, I would take a look at BDO as this is type of of skill-based arcade fighter style we’re going for. Our problem however is that we’re concerned about the networking limitations of Unreal Engine’s built in networking. Which from quite a bit of reading I’m under the impression it uses a P2P setup, which is not at all ideal. There’s a few tutorials on setting up a dedicated server in Unreal Engine which are pretty straightforward.
I’ve thought up a few solutions for our game which I’m not really sure what would work best in practice, because I’m not at all sure about the limitations of the Unreal Engine 4 networking implementations. I’m aware that there’s a lot of thigns that some games replicate across the server which can be made local which would take a load of stress off of the networking implementation, our idea is to only have our AI and Players replicated over the UE4 networking and everything else would be accessed through a third party server socket.
I should add that we want to have about 1,000 player maximum cap on a server, but expect no more than 500 players to be on each. Our world is massive and there’s a lot of room for players to be spread out.
Idea 1: (Leaning towards this one)
- UE4 networking ONLY handles Player & AI replication across entire world.
- Replication should be limited based on a replication distance, so items on the other side of the world aren’t sent over the network.
- TCP server handles Authentication, Questing, User Inventory, Character Progression.
- UDP server handles synchronizing player location (With TCP fallback).
Idea 2: ( Easy enough, less bandwidth intensive, higher hardware requirement)
- Split game up into different regions, and have each region handled by it’s own UE4 networking instance.
- TCP server used as a hand-off between different regions, so the client can connect to the correct server during a seamless server transition.
- TCP / UDP servers for the same stuff as Idea 1.
We want to make use of the Unreal networking for player movement and combat, because of the complexity involved with the high-speed combat system. Synchronizing all of these states and not being able to use the server-side physics from Unreal would really set us back several months in development, and as a small team this isn’t ideal.