Since this is the first progress update post, I am going to introduce what has been done up to this point.



This project is a MMO base for indie and solo developers.

If you want to know more about it click here.

Communication between Server and Clients

One of the challenges of developing a MMO is the communication between server and clients, and deciding how to handle it.

Godot has a really nice and clean way of dealing with symmetric server and client code, but on a MMO it is a really bad idea share the same code between the server and client, so I cannot use this approach.

So the the communication has to be tailored for this project specifically, with this challenge comes the old question of picking between TCP and UDP to send messages, Websockets was the answer, with websockets it should be easy to port the game to any platform and it is good enough for most cases.

Movement

With the Communication Layer done, I was able to make multiple players access the same world at the same time, with the server dealing with collisions and the simulation.

Server Architecture

Right now there are 3 different servers:

Data Server

Used to store persistent data.

Used to store persistent data. Web Server

Used for player registration and management.

Used for player registration and management. Simulation Server

The game server, this is what players connect to.

Data Server

This is where the persistent data is kept, it is also responsible of authentication, MongoDB was chosen to store the data, since it fits the needs of a game structure, it can change and adapt to the developer needs. Both the Web Server and the Simulation Server access this server to read and store data.

Web Server

A simple http server to let players register to the game and this sort of stuff.

Simulation Server

This is the heart of the game, players connects to this server so they can get the state of the game, like moving players and inventory management.

Extra

If you got to this point, thanks for reading this blog post, feel free to ask me anything about this project either here on tumblr or on discord.

Twitter | Discord | Github