Matchmaking server

Developing an online multiplayer game is hard. Not only do you need to develop your game, you also need to think about networking, create a communication protocol and develop server software. On the other hand, "Matchmaking" doesn't do anything else: It's not a game engine and gives you complete freedom in how you create your game.

Furthermore, you can use any game engine that you want to create your game or write your game from scratch. This project is far from being finished, but it is already in a usable state. You can therefore go server and download the server software to start experimenting with it, but keep the following in mind:.

Development is still in progress and precompiled artifacts are not yet available but will be available soon, though.

Navigation Menu

You therefore need to build the server yourself as described below in server section "Building from source". The standalone launcher can simply be launched with tis command:. To do so, please follow your container's instructions on how to deploy a war file and deploy the file called matchmaking.

There will be a docker image which you can use to run the matchmaking, but that is a huge work in progress. You matchmaking be greeted by a welcome message. Building the server from source is actually quite simple and matchmaking requires the following to be installed:. Once the build has finished, you will find the compiled artifacts at the following places:.

Good news! We will be providing a client for you once we finished development, obviously ;so you can focus on your game. Again, it's not yet finished, so hang tight :. If your article source is not a JVM-language, you will have to write your own client and implement the communication protocol yourself. Consider submitting your implementation through a pull-request if you wish to share it with the public.

Servers and Matchmaking

All requests must be sent to. The server doesn't care too much about what headers you send, just two rules that you should follow:. Requests always follow this pattern:. The className property specifies the type of the request. The className of a request always starts with com. Matchmaking responses given by the server follow the same pattern as requests, except that the className starts with com. In addition, the server uses HTTP status codes to indicate the nature of the response.

During the communication, the client will have to send multiple requests matchmaking the server. Unfortunately, HTTP does not provide a reliable way for the server to recognize clients. Hence, the very first request that a client needs to send is a GetConnectionIdRequest which always looks like this:. The server will then assign a connectionId and a password to the client and return those credentials using a GetConnectionIdResponse which will look like so:. The client is expected to remember the connectionId and the password for later communication.

Players who are playing together are grouped in rooms. There can be multiple rooms at the same time and each room is completely independent of other rooms. That means:. Once a room server created or joined, the client can request additional information about the room it was assigned to using a GetRoomDataRequest :.

Skip to content.

Use saved searches to filter your results more quickly

You matchmaking in with another tab or window. Reload to refresh your session. You signed out in server tab or window. You switched accounts on another tab or window. Dismiss alert. Notifications You must be signed in to change notification settings Server 7 Star A simple matchmaking server for any game License Apache Notifications You must be signed in to change notification click to see more. Branches Tags. Go to file. Folders and files Name Name Last commit message.

Last commit date. Latest commit. History Commits. Project maturity. Running the server. Standalone server launcher. Running in a Servlet container. Docker image. Verifying that your server is running. Matchmaking from source. How it works. Other languages. The communication protocol. General things. API endpoint. HTTP headers. HTTP body and general request format. Server responses. Initializing a connection. Creating or joining a room. Retrieving information about a room.

About A simple matchmaking server for any game Resources Readme. Report repository. Releases 1 tags. Packages 0 No packages published. Contributors 3. Latest commit History Commits. View all files. Specifies what operation shall be done.

JoinOrCreateRoom will cause the player to join a room if an applicable room is found or create a new room if no matching room was found. JoinRoom will do the same except that nothing will happen if no applicable room can be found. CreateRoom will server the creation of a new room. The human-readable user name that was picked by the user. Specifies how userList shall be treated.

Whitelist : Only users mentioned in userList will be allowed to join the matchmaking. Blacklist : Users mentioned in userList will not be allowed to join the room. Ignore default server userList will have no effect. Any integer value above or equal to 0.

Should be above or equal to minRoomSize. The sending client's password as assigned by the server in the GetConnectionIdResponse. The id of server room that was created or that the player joined. This id can later be used to retrieve information about the room or to modify the room's contents.

Object which contains matchmaking about the requested room. See below for an explanation of Room-objects.