UPDATE: The system below has been replaced with Open World Server 2 (OWS 2), an open source project that received an Epic Megagrant: https://www.openworldserver.com/
I spent the last 6 months building this system for a game I am working on and just wanted to see if anyone else would be interested in using this system.
RPG MMO Server System for UE4
Why do I need this system?
UE4 does not currently support large MMO worlds out of the box. The are many components UE4 is missing, such as world origin shifting, user/login management, and persistent storage.
How it Works
The system is powered by three different software components. The Login / Management Server, the World Server(s), and the UE4 C++ classes that communicate with the servers.
The Login / Management Server is a SQL Server with a JSON Web API that communicates directly with your UE4 clients. When a player opens your UE4 game it connects to the Login / Management Server. This server communicates with the Login map that contains the UI elements for a user to login with the email / username and password. The character data for that email / username is accessed and sent back to your UE4 client for your game to use. The SQL database provides persistent storage to record where a player is in the world at all times and keep tracking of character related data for your game. Here are a few of the fields that are tracked in the persistent storage system: Character Name, Email, Password, Current Map, Current Location on Map (X/Y/Z), Character Level, STR, DEX, CON, INT, WIS, CHR, Character Statuses, Armor and Weapons Equipped, and dozens more. If the map that your character needs to load is not currently running, then a request is sent to one of the world servers to boot up that map (or another copy of it if the current map is full).
The World Server software component can be loaded on one or more servers. This system is responsible for loading and unloading UE4 dedicated server instances as needed. This software responds to requests from the Login / Management server and then lets the server know when the map is ready for player to join.
The UE4 C++ classes contain a GameMode and Character class that you can inherit from to gain the base functionality needed to communicate with the server system.
How can I build my game with this system?
All you do is inherit your Game Mode from my RPGGameMode base class and your Character from my RPGCharacter base class. All of the functionality above is now available for you to use.
Can I use Blueprints or do I need to use C++?
If you start with my project template the C++ is already compiled for you and you can do all of your game building with blueprints. If you want to add the functionality to your existing game you may need to install Visual Studio 2015 on your PC and follow some simple instructions to set up the C++, but you do not need to know how to code in C++. Even if you know nothing about C++, I still recommend that developers always have Visual Studio installed along side UE4 as it opens up a lot of options for you.
How Large of a World can I Create?
Each map is run on a specific IP and port that is managed by the Login / Management server. Then these maps together create your larger game world. During development I often run a dozen maps on one PC without any noticable performance issues. Each map can be multiple km in size and with enough servers your could support 100’s of maps. So you can create as large a game world as you want.
What are the limitations of this system?
You are limited in how many players can connect to one map instance at a time, but you can load multiple versions of that map to support more players; they just won’t all be able to see each other. It is up to you to decide how large each map is depending on your game design and performance considerations. The transition from one map to another is not seamless, but it is fairly quick (1 or 2 seconds).
What kind of hardware do I need to run this system?
For development I can run all of the components on my development PC. For deployment you can run all of the server components on one Windows hosted server or your can split it up into a large web-farm. For my game with a very limited number of players I run the Login / Management server on a Windows server (Virtual Host with 4 MB RAM) at 1and1 web hosting and then have one of the players (myself) run the world servers along with my UE4 client. The code runs on Microsoft .NET and uses the free edition of Microsoft SQL.