Master Server with Unreal Engine 4 Plugin

Edit: This has been updated to be an Online Subsystem for ease of use. Check it out!
Example Video: https://puu.sh/EkmSl/d85c851ec2.mp4

This is a plugin for Unreal Engine 4 that adds super simple server registration, deregistration, etc with a master server.

This is not mean’t as a complete Online Subsystem, just as a way for people with a need of getting an up to date serverlist they can serve up to clients and adapt it to their own needs (I am open to suggestions of functionality you want included by default!).

Once the plugin has been installed you will be able to use this to receive server lists of all active servers with their IP, Port, Name, Game Mode, Map, Current Players, Max Players, and anything else you wish to add as it is free to use and modify in your projects. :).

This is quite basic at this stage, but I will be updating this in the coming weeks to include more features such as pinging servers received on the serverlist, and some functions to get the public IP from the adapter, and possibly expanding it to Unity

Please go to the GitHub page for instructions on running the server, and installing/using the plugin.

GitHub: UE4MasterServer

2 Likes

I was just about to start writing something like this!

You just saved me a tonne of trouble! Cheers mate!

Cool stuff, man! Now add some sort of database support into it and it’s going to be a hit :slight_smile: Working on the simillar thing myself currently.

Why? It doesn’t need databases. It does its job already. I’ve already merged it into my code rather than a plugin. Works a wonder since I set it up to ping and keep its own data updated.

Are you referring to a client-side database? the server uses peewee ORM with SQLite database.

From looking at his thread, I think he means a USER database. For an MMO-esque login.

oh, ok. I think that could be expanded quite easily with what I have provded (create user model with peewee, and add some various functions), but that is not what I am hoping to achieve with this. This is more like a Arma 3 / standard FPS serverlist where a person can host a server and have other people find it.

If you don’t mind me asking how did you go about setting up the ping, and requesting data from the client?

I think your minimalistic approach is great.

A similar approach to how you currently send/get to the master server. In this case though, I just send it off to a page on my website, that pings the IP it gets sent and returns it.

Could be done a lot better, but for what I needed, it works fine.

I thought about that approach, but the ping wouldn’t have been relative to the client. If it works for you though, that’s great! I might try get something implemented so we can ping each of the clients that are received on the list in the coming week.

You’re right. It’s not relative to the client. It’s relative to the webserver. So I guess back to the drawing board.

I’ll figure a solution for that one in a couple of days when I get some time.

Very nice work! Going to follow this!

You should make the IP in registration auto-assign.

I managed to get it grabbing my public I.P, but that causes issues when trying to join a LAN match. Might see how the subsystem does it.

yeah that’s the plan, would not be too hard to just setup the default reply of the webserver being the requester IP (or just setting it directly based on connection request IP and don’t give the client the ability pass a different IP across)

I have just updated to include the above, will work on ping next. I guess it almost adds a bit of authentication by only being able to register / de-register your IP :slight_smile:

https://github.com//UE4MasterServer

v25.6.02 - Included pinging clients (should be ± 30ms accuracy, could possibly be improved in a the future, but is a good starting point).
Please refer to documentation on GitHub page for implementation.

Great work
:smiley:

Thanks :slight_smile: FYI if anyone wants to test their client implementation without running the server themselves, I will always be hosting the latest master server on ryanpost.me:8081.

Quick but hopefully simple question. Can this be used with UE 4.7.6?

I’d test it myself but I’m not in the position to at the moment.

Cheers and thanks.

Yes, everything should work fine with 4.7.