Announcement

Collapse
No announcement yet.

Master Server with Unreal Engine 4 Plugin

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    [PLUGIN] Master Server with Unreal Engine 4 Plugin

    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

    Version
    16.7.02

    Changelog
    16.7.02
    Divided time by two to get one way trip time as opposed to round trip, and further improved accuracy (is now very good on accuracy, with 6-15ms added for processing the request)
    Modified time-out for ping request to 1 seconds, and 10 seconds for a standard request.
    Removed some debug code that was left in 16.7.01
    16.7.01
    Modified HttpProcess so it is now being called on Tick, instead of by a Timer. Improves latency accuracy and consistency.
    Last edited by RyroNZ; 07-16-2015, 03:56 AM.

    #2
    I was just about to start writing something like this!

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

    Comment


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

      Comment


        #4
        Originally posted by IanBreeg View Post
        Cool stuff, man! Now add some sort of database support into it and it's going to be a hit 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.

        Comment


          #5
          Originally posted by IanBreeg View Post
          Cool stuff, man! Now add some sort of database support into it and it's going to be a hit Working on the simillar thing myself currently.
          Are you referring to a client-side database? the server uses peewee ORM with SQLite database.

          Comment


            #6
            Originally posted by RyroNZ View Post
            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.

            Comment


              #7
              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?

              Comment


                #8
                Originally posted by RyroNZ View Post
                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.
                Last edited by Neur0t1c; 06-22-2015, 11:55 PM.

                Comment


                  #9
                  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.

                  Comment


                    #10
                    Originally posted by RyroNZ View Post
                    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.

                    Comment


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

                      Comment


                        #12
                        Very nice work! Going to follow this!
                        JcInventory, a Jigsaw Grid based Inventory designed in UMG and blueprint

                        Comment


                          #13
                          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.

                          Comment


                            #14
                            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)

                            Comment


                              #15
                              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

                              https://github.com/RyroNZ/UE4MasterServer
                              Last edited by RyroNZ; 06-25-2015, 04:44 AM.

                              Comment

                              Working...
                              X