A Glimpse into the Development of a Persistent MMO Back-end

We have been hard at work bringing you the exciting strategic, build and battle experience to your mobile device, that is the game BloxWars. Because we know you are a busy person and not one to sit around for long. As most work has focused on the back-end, we will show another glimpse into the MMO backend for those interested.

A major concern for all online games is the susceptibility to hacking for the purpose of gaining an unfair advantage over other players. The only method to fully eliminate this is to never trust the client or what it says, and to assume it has been compromised. The inventory system is especially prone to hacking and an obvious place for hackers to attempt to cheat the system. To this end, the only message the server can trust from the client, are requests to carry out actions which are then verified by the server.

As an example, here is a simplified, high level diagram which shows the player or client requesting the movement of an item from one slot to another. The server is designed to only process move commands and never a message where the player says place an item X into the inventory, as this message can be easily manipulated.

Inventory System


For a comparative view against a single player game, the diagram shows the scope and extra overhead involved with a multiplayer persistent world. For even the simplest function in the game, features can easily require three times longer to implement, as you have extra communications, server-side implementations and persistence systems to implement, debug and handle.

Hopefully the glimpse under the hood has satisfied the curiosity of those interested and not bored others of the technicalities too much. Stay tuned for more interesting posts and news as we edge ever so closer to the early access release.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>