A journey through multiplayer games engineering

Multiplayer RPG Series - Introduction

Here we are: look at the title, rub your eyes, look at the title one more time! :) Yeah, yeah, I know what you are going to say: “finally”. And you are right: finally! After a lot of time, finally I decided to start this blog series: who followed me certain remembers that I announced this multiple times, but for various reasons I always delayed the starting of this project. Not this time, not anymore: I forced myself to do this!


As you certain know I love RPGs: this game genre is my favorite one. Probably because of its complexity, probably because it was the first genre I was addicted to (as player, but also as developer: I learned a lot by looking at their source code). And I love networking too, a lot. I love to create multiplayer environments, persistent worlds and see how these worlds evolve under players’ influence.

These two things – combined – represent one of the most challenging to develop game genre in the industry: multiplayer RPGs. I already spoke multiple times about this topic in the past: optimizations, definitions, specific arguments, etc.

In my previous experience I worked on a MMORPG as lead server developer. It was extremely funny and it taught me a lot of interesting stuff. Sadly this project has never been released for various reasons I will not explain in this post. But of course you can imagine my disappointment: I loved that project, that job.

But – as I said – it taught me a lot. And I don’t love to waste time or knowledge, so I want to take profit from concepts I learned. So I decided to create something based on this knowledge; I want to create something valuable for me and for others.


I want to develop a framework to create a multiplayer RPG and make a game with it. I will focus of course on multiplayer part: so networking, entities synchronization, game services, etc. I want to learn, so another important thing is: I will try to force myself to use new technologies, approaches, patterns and practices I didn’t use before in my previous experience. This just to make it more interesting!

I want to keep track of my experience with blog posts. In this way we can learn and improve together. Also I will create a nice resource for developers who will face this challenge in future. Yeah, yeah: thank me layer! :D


Well, at this point I didn’t decide yet what to use and for what. Basically I am a C# developer and I love .NET environment, so probably you will see a lot of C# here. I would like to create something with .NET Core, so probably it will be our starting point. But recently I am studying some new technologies such as Rust. Don’t be surprised if I will find a way to play with it too during this journey. That’s about server side. On client side I will play with Unity3D, because I am already familiar with it (and I usually develop plugins for it): in this way I will receive more quickly a visual feedback from what I code on server side.

Of course this project is huge, it is massive. It will not be completed in few weeks. It will require a lot of efforts and time, because I use it to learn and to improve myself. I don’t know how this will evolve, but I would like to know your opinions about this. So let me know!

Also, if you appreciate what I am doing and it is useful for you in some way, feel free to buy me a coffee:

Well, what to say more? I hope you will enjoy this and we can learn a lot together!

Stay tuned!