Articles > Version 0.13

Version 0.13

This version add 2 new gameplay features: The bank and the party system!



Lets start with the bank system. As any classic MMORPG it allow a player to store its hardly harvested resources in a safe place. You can store/retrieve money and items. Bank accounts are shared with all the characters on your account.

Currently it contains as many slot as the inventory. On a next update I plan to increase its size so you could store as many items as you wish but for now it is not necessary as there is not that many items available in game.



The party system allow up to 5 players to team together:




Being in a party give you a 10% bonus, per party member, on the experience acquired when fighting monsters. You will also be able to see your comrade life on the party side bar located at the top left of the screen even when you are not on the same map or game instance:




At the moment the system is very basic but I put all my efforts to have a clean architecture and I will be able to add new features easily very soon.


The party system is the first one that involve a synchronization between 2 servers: the world and the game. Basically, since I plan to have multiples game server in the future (to scale the game traffic) I needed a way to ensure the party consistency even when two players are not in the same game instance. Since there will always be a single instance of the world server it was the right candidate to control the party state.


It is responsible for handling the incoming party invitations, checking that they are valid, dispatching them to the corresponding players and handling an eventual response. Once a party invitation is accepted by a player, the world server update its party state and notify the game server to do the same thing.

Since the game server has the player data (skin, hp, etc.) it has the responsibility to send these informations to the clients.


On the client side it is fully transparent because it is only connected to the proxy server so it doesn’t know anything about how the data has been processed.



I am very proud of this feature because the code is pretty small for such a complex system approximately 1000 loc (servers and client UI included), it is very readable, maintainable in the long term, it work perfectly and I implemented it in a very small time frame (2 weeks while working on a full time job). I even allowed myself to unit test a part of the system.

I really feel that my efforts into the architecture are paying off.



On the other hand I have delayed the development of the trading and crafting systems because I want to clarify my vision on the experience I want to give to the players with these features. I learned from my previous mistakes and I won’t start developing until I figured out exactly what I need otherwise I will end up redoing things.


Regarding others smalls improvements, I added a black background behind the entities names to make it more readable:




I improved the look of some UI element including the friend list:








I am still not a 100% satisfied with the look but it is still much better now.


Lastly I took some time to document myself about docker. I heard about it first back in 2015 but haven't tried it since. The motivation to use it was to be able to deploy a new platform very quickly if I had a new server.

So I decided dive into it and I “dockerised” the entire project. It took a few weeks to grasp the docker philosophy and to do the setup (image and compose file).

At the end, I realized that I would need to either subscribe to a docker repository provider or to host my own in order to serve all my images. These weren’t satisfying options for me at the moment so I decided to not change anything for now.


Also my current workflow is already pretty nice: after the server first server configuration (dependency, firewall, etc.) I can deploy a new version in a single command line from my workstation. To automate the server first configuration I will learn more about Ansible because it perfectly meet this use case.


Regarding the android version, I still haven’t deployed it to the play store because I think it is too soon. I would like to polish the game a bit more since it might find an audience there and I don’t want to spoil my entrance.


On another note I still plan to write more technical articles to reflect on all the issues I encountered while developing this game and how I resolved them but I haven’t found the time yet.


That's it for now, see you next time!




Published on: 25/11/2020 in News