What is Marauroa
Marauroa is an open source multiplayer online games framework and engine to develop turn based and real time games. It provides a simple way of creating games on a portable and robust server architecture. The server is coded in Java and can use Python for your game description, provides a MySQL or H2 backend and uses an TCP transport channel to communicate with dozens of players. Our reference clients are coded using Java and the C language in order to achieve maximum portability and use open technologies too.
Marauroa is based on a philosophy we call Action/Perception, on each turn a perception is sent to clients explaining them what they percieve and clients can ask server to do any action in their names using actions. Marauroa is totally game agnostic and makes very little assumptions about what are you trying to do.
Marauroa's basic principles are:
- Clients communicate with the server, and vice-versa, using a TCP portable network protocol with reliability in mind to allow a stabler experience when online game lag occurs.
- To play a game every player needs an account on the server that is identified by an username and a password.
- Players use their account to login into the server and then choose a 'player' stored under their account to play with. The server then checks the login information using the MySQL or H2 backend and loads the player into the game using the persistence engine.
- Players send actions to the server. The action system is totally open and has nothing hard-coded so you can edit it totally to your game style. The server sends at regular intervals, called turns, a perception to each player to inform them about the state of the game and any relevant state modifications. Marauroa's perception system is based on the Delta^2 ideology: simply send what has changed.
- The server executes some code each turn in order to move the game status on. Using this hook it is simple to code triggers, timeouts, conditions and whatever kind of behavior you need.
- The server transparently and automatically stores players and game status modifications on the persistence engine, and also information decided by the game developer using their game definition scripts.
- The server side game rules can be written in Python to allow simple and rapid development without needing to recompile the rules engine and without having to know anything about Marauroa's internals. Games rules can also be coded in Java.
- The server generates statistics of usage which are stored in the database (so you can later generate fancy statistics from them). Or in case you don't require them, they can be disabled to save CPU cycles and disk space. Marauroa features a modular structure that means modules can be changed and disabled without affecting the operation of other modules.
- Both the server and clients are fully and wisely documented, with documentation about specification and design in addition to the ordinary API documentation.