6
\$\begingroup\$

I am working on online multiplayer FPS on UE 4 with up to 16 players. I am now at the making architecture model, stage.

I am doing research on possible server architecture model with respect for future scalability, bandwidth support etc. However I could not find any good information on how UE 4 networking work and what it's architecture. In order to know whether it will suit my needs and whether I will be able to modify it

\$\endgroup\$
  • 1
    \$\begingroup\$ Did you read the documentation? "UE4 multiplayer is based around the client-server model.". It's not really clear what else you need to know about the architecture. We can't tell you what the future scalability or bandwidth support will be like. \$\endgroup\$ – MichaelHouse Aug 19 '15 at 13:24
  • \$\begingroup\$ Yes I read it already. But want I want to know is more low level stuff, including where will the server be instantiated (after game deployment) - on our machine or on Epic server. Besides there is no good practical examples \$\endgroup\$ – VolodymyrNaz Aug 20 '15 at 7:14
  • \$\begingroup\$ @VolodymyrNaz You should then create a question about where the servers will be instantiated, another about the lol low level details you want to know... \$\endgroup\$ – Coyote Oct 3 '15 at 6:55
4
\$\begingroup\$

I believe UE4 network architecture is roughly the same as in prior versions of Unreal Engine, perhaps with minor refinements, and goes back to the very first version of Unreal Engine.

This is a client-server system with very little difference between Unreal server and clients. They run the same game simulation code, potentially even the same executable with configuration deciding whether the instance will be client or server or both; however, a "headless" server, a game executable with rendering completely removed, is usually provided for convenience. It was customary in early games to have one player be the server and the rest clients; however, this became more difficult with NAT home router proliferation, and nowadays you may end up running the servers. Epic games certainly aren't going to run the server for you.

The clients and server run the same game logic. Some variables are designated as replicated, and will be sent by server to all clients, overriding every client's representation "in the past" based on the timestamp when the network packet was generated, and having the client predict the result forward to current frame. Not all state needs to be replicated, gameplay-irrelevant state is usually omitted if local prediction is good enough. There is also an RPC system that allows to call a function on an entity across all network nodes. Obviously the system must be two-way, all communication facilities that are present on the server must also be present on a client. However, to prevent the client from commanding everyone's state unfairly, there is an ownership system.

Having Unreal Engine 4 source at your disposal and a system which foresees rich and flexible network semantics, you can implement a different network architecture if you so desire. I can not assess the practical difficulty of doing so, however.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.