I’ve been developing for over a decade, and I’m currently working on my second MMO back-end. I wrote this because its something I wish I could have found when I was getting into multiplayer open world game development. This took me years to learn on my own. A LOT of googling sessions and late night research over the years are in this blog.
No comments? No questions? Surely someone out there knows of a possible improvement?
I guess not many people are making MPOGs since Unreal isn’t suited for more than maybe 50 players and working around that is difficult. I am working on one and the solution for us was to separate the game server completely from UE and write it as a separate process. There is an Unreal server that handles the spatial data and it works as a slave for the Master server. Of course we had to use another network system since Unreal’s is not good for this scenario, so I know it is quite complex. You have to be either a huge corporation or a very dedicated indy with years of time on your hand. It’s nothing you can do in your spare time while working at a daytime job
Isn’t suited for more than 50 players? I think that depends on your programmers. PUBG handles 100 players at once just fine, and Tera has been going strong for a while. Feels like you guys are over engineering.
50, 100 what’s the difference? A multiplayer game must handle 100s of players
100 player PER INSTANCE, you can have unlimited players. Just plug in more servers. Or just build a bigger server. CCP has a super computer to run Eve Online. Its got like 4000GB of Ram lol. How many on a server or how many total can play at once isnt bound by UE4 at all.
Any future tutorial request or should I go deeper in a topic?
Just saw this thread and I just wanted to say how awesome your blog is. I’m still reading through your first few posts. But as a graduate programmer looking to get into the server side of unreal this is an invaluable resource.
So dont stop posting and writing content! Ill comment here once I have something of a request for you!
thank u for spreading ur knowledge - ur awesome
Thanks guys Glad it helped someone.
How did you guys go about writing your API and integrating it with your server? Im looking to create a arena based game and I want to design it properly for scaling.
We have a .Net Core JSON API, but there is tons of ways to make a web-server send/receive JSON. Then you can use the free VaRest plugin or others to send http request to your API. Your API should be STATELESS with NO STATIC variables. If you dont break these rules you can spin up as many API servers as you need to handle data between users, server, and the database. Because no matter which API server your request goes to, it’ll run the same logic. But if you had a static variable in your logic, each API server would have its own variable value. Those are not shared across instances. Just avoid static code all together if you can. I’m not sure if that answers your question, but maybe helps?
It does actually thank you! The hardest part is learning good practices which is exactly what your blog seemed to dictate!