I’m the author of Game Machine, which is an open source server platform specifically designed for running large scale games. I’ve mainly targeted Unity up to now but have been wanting to support UE4.
But I’m not at all sure what the best integration path is.
Game Machine treats the networking layer as being dumb. It implements things like reliable messaging at a higher level of abstraction. The entire protocol is message based (protocol buffers).
I’m thinking that the best approach is to just provide my own library, and not try to integrate seamlessly with the UE4 networking. Partly because I have some specific techniques for space optimization that I think would be problematic to integrate into the UE4 way of doing things. For instance we take all floats and convert them to integers over the wire, using a presumed decimal precision. This enables the efficient varint bit packing in protocol buffers. We also have a system for only sending delta’s for floats, temporary id substitution that turns strings into integers, and a few other tricks. Running games like massive pvp mmo’s with lots of players is one of our primary focuses, so we heavily optimize in this area.
The server uses the actor model and is entirely message based. The Unity client sets up a message handler class that designates which message types it wants to receive, and there is a simple router that then routes messages to the correct message handlers. The server has a routing system also, and from the client you send messages to server side plugins by the route name.
So what sounds like the best integration path? I’d like it to fit with the UE4 way of doing things as much as possible, but have to balance that with the time required to implement.
Thanks in advance.
Chris