State of UE4 server for mmo-like games in 2019

What happened to the Atlas MMO framework that was under development back in 2014 and has the advice for mmo-like features for Unreal evolved since that time?

For context:

I believe the Atlas MMO framework was targetted for UE3 and according to Tim Sweeney the framework inspired some changes and features in UE4. At the time, the advice for mmo-like games using UE was:
*1. Implementing a completely custom MMO back-end framework handling all gameplay logic including object movement, and interfacing it with UE through networking: The client purely runs in UE, and the server purely runs outside of UE, and they are coordinated through a custom networking layer using either UDP or TCP. This approach is generally best for MMOs looking to support thousands of players per server, where UEā€™s high-precision approach to player movement and collision are overly-expensive compared to tile maps and other simplified techniques.

  1. Using UEā€™s built-in functionality for implementing both the client and server components of an MMO, and extending the networking and level streaming code to support new features such as simultaneous connections to multiple servers responsible for separate streaming levels, and coordination between servers to allow seamless movement of actors between them.*

How has that advice aged with time?

What solutions are there aside from third parties like Photon or SpatialOS?

What hard limits are there for the UE4 server that keep it from being suitable for mmo-like games? I know, for example, that the UE4 dedicated serverā€™s uptime is measured in hours, not days, partly due to some things like using floats for some time calculations. Does anyone have other examples like this?

Pretty much every modern MMO from Asia is using UE4 now. A bunch on mobile, even. But you wonā€™t be making full blown MMOs out-of-the box with the launcher version, it requires customizing the engine depending on your design.

The multi-channel design is still prevalent.
(multiple UServer exe running instances of same map, travel portals)

Thanks for the responses!

Itā€™s interesting that you use the word ā€œprevalentā€ because everything Iā€™ve read thus far suggests such an approach is non-trivial. If it was prevalent, then I would expect more complete examples and documentation in the community.

In fact, I think the reason these sort of questions get asked so regularly is that itā€™s unclear just how much hacking is required to modify the UE4 server to support this sort of gameplay. With the level of effort weā€™re discussing, it seems like the safer route is to just write your own game server infrastructure. I expect most teams approaching this problem have the budget and experience to do so.

As such, Iā€™m just curious if others have done the calculus of this approach or if thereā€™s a clear best practice emerging from the community.

Bringing Unity to any discussion about multiplayer game developmentā€¦ yeah, right. Go check their docs about making MMOs and tell us back how easy it is. Donā€™t forget to visit their networking forums and see the how happy users are with their current network support.

ClavosTech: those links were great. Thank you.

I started the thread looking for a best practice or at least an update in the advice since 2014 and it doesnā€™t appear to me that a best practice has emerged.

The tried-and-true advice appears to be *write your own *when it comes to anything that departs too much from UE4ā€™s single-map, session-based dedicated server model. At least in that case, you know you can build a system that supports your gameplay use case.

Nevertheless, thereā€™s a number of folks who suggest that modifying the UE4 server to support these advanced modes. Despite the prevalence of such advice, Iā€™m not sure I see the evidence for it. The development effort appears to be non-trivial, requiring introducing multi-server connections, smooth transitions between servers, fixing up odd bits here and there like how time or position is stored, and likely quite a bit more. At that point, Iā€™m not sure the advantage of sticking with UE4 as a starting point is worth it.

So Iā€™m just trying to square the apparent discrepancy between the advice that I see posted in forums.

In terms of ā€œMMOā€, both Unity and Unreal werenā€™t made for it. they are just ā€œrenderersā€, you shouldnā€™t use builtin networking to make this kind of games.
What happens is many studios already have MMO proprietary frameworks built for Unreal 3, some happen to convert those frameworks to Unreal 4.

My problem is with pulling the ā€œbut Unityā€ card in a thread about developing MMOs, a topic that is difficult in any engine (and, IMO, doubly so in Unity, but I digress).

Simply put, online multiplayer is already hard as it is and MMOs are exponentially so. There are very few developers writing MMO tech and tacking MMO problems who arenā€™t burdened by an employersā€™ NDAs so they can write blogs and tutorials about it. Even GDC talks about core MMO tech and solutions are a rare thing. So good info on how to tackle multi-server, massive single worlds and whatnot is going to be hard to find, no matter the engine.

Same goes for ā€œbuilt-inā€ support for MMO features. Itā€™s very unlikely Epic, Unity or Crytek can come up with something that can compete with battle tested custom solutions and serve the diverse needs of all kinds of different MMO games. And even if they do, the effort would be wasted if the big MMO companies ignored it and kept using their own in-house stuff. I mean, look at SpatialOS and the effort they have to do to get people on board.

Well thereā€™s MIT options out thereā€¦
That however doesnā€™t mean the workload is small in anyway tho.

For example, if you donā€™t mind dealing with Kanji weirdness, some backend engines like this come and go from time to time:
https://www.comblockengine.com/

I made a video showcasing my MMO system in its current state.

I do not have a solution for instancing seamless maps but my main approach is take everything noncrucial off the dedicated server build and put it onto rails web apps.

You would still want to restart your servers every 24 hours just for sanity and safety.

UE4ā€™s major downfall when it comes to creating an MMO is the seamless world and character count that a single dedicated server can handle which is limited to your code, level size, and hardware on your server really.

The majority of client side issues has been solved with the milestones worked in mainly due to fortnites popularity.

You can design your world and levels around this and create portals/choke points where players will have to hit a load screen to load onto the next area(server).

You will also need a persistent data system like I showcased above to handle the data transfer between servers.

You can join up on my studios discord where we discuss all things related to dedicated servers:

I watched the video and it seems like quite an interesting system. I definitely would be interested in utilizing it either as a service or self hosted, so hopefully you decide to release it. Do you currently have any more screenshots/videos/demos of the system?

most of my content is either on my youtube or twitch channel. You can also join the discord to have direct discussion about the application. I will start a chat channel on the discord specifically for the online sub system.

I currenty develop an open source dedicated server for MMORPGs spesificaly for UE4.
It is not a complete solution. Just sending data for now and try to figure out the recieving/convert to blueprint events part.
But a lot of work has been done while I used Unity3D for client.
You can see some videos on it at https://www.youtube.com/watch?v=iQPzHTy7uz0&list=PLNuit1aMUWTDRll1MGF7Cqn_lX-BqKpZn&index=5

The UE4 developemnt goes really slow and there are no other people involved so far, but I do not abandon it.
When I manage to make some basic stuff, maybe more people will join.

It is frustrating to say the least. But it is obvious that any multiplayer solution other than steam (according to any multiplayer video that is available) is discouraged. And if by chance you do come across any video tutorial, that says otherwise, it is not something you would never use in production of any serious game. It is hard to balance the knowledge that no two games are alike and trying to find Unreal info on how to best proceed with the game you want to create without being truly disappointed. While Unreal documentation and tutorials are so widely available, there is just no way to cover all the bases and we understand that. We have even looked at community based solutions for open world multiplayer games, and while they are good for most games, again not all games are the same or have the same expectations or goals to meet.

We actually decided to give Unreal another look after discovering you could run more than one map on a server, but still disappointed that there is so much that is still lacking. Granted, with source, you can create your own network manager and server backend to handle asynchronous updates from rpc of player info (non sql), but then we have to justify using an engine that is not only limited due to itā€™s design, but will also limit the prospective players (due to requirements) *Granted Fortnite has a good player base, but the numbers would be so much greater if so many were not restricted due to not having the latest computer to play it. I have players that tell me they would love to play Fortnite on their computer, but their computer wonā€™t handle it (it keeps them on my servers so no problem there). *But letā€™s be honest here, having a limit of 100 players to a server completely rules out the ā€œMassiveā€ in MMO and so it should be just MO at that point. There is no way to compete in the market like that.

Also, if Unreal was ā€˜just a rendererā€™ it would be called a framework, just like the other renderer frameworks out there and not an engine.(I donā€™t know of any renderers that have level editors)

If you need to restart your servers every 24 hours, something is wrong, and do not release your game to the public. Your only going to ā– ā– ā– ā–  off your players who just want to play interrupted. Everytime you restart your server, you are essentially kicking your players out of your game and giving them the opportunity to go somewhere else. The market is hard enough to compete in as it is. Players come and go as it is, donā€™t give them a reason.

For a decade now, we have been using the 90s technology for our games and while it works great and we run over 60 maps on a single dedicated server with hundreds of players, it doesnā€™t compare to todayā€™s graphics. We hope to bring our next game out with the latest graphics without limiting our team or our players in what can be done.

While Unreal is not ready yet to be a true MMO/open world multiplayer platform today, we do look forward to Unreal becoming the go to engine for developing these platforms in the future.

2 Likes

Unreal egine and activism work on it as soon as they react, the mmo community on UN 4 becomes huge
https://atavismonline.com/ take a lock

but why not reverse engineer the Ultima Online Sphere.exe server exactly? Sphere held 5000 players with 56k of internet on a machine that is much less than half of my smartphone without lagging in 1997 all on the same map :slight_smile:

Activism and UN 4 are working on the all-inclusive MMO package so we must be ants making smaller graphics and Blueprints while waiting for the server relese