| This program is free software; you can redistribute it and/or modify it under
| the terms of the GNU General Public License as published by the Free Software
| This program is distributed in the hope that it will be useful, but WITHOUT
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
| FOR A PARTICULAR PURPOSE. See the file LICENSE for more details.
Marauroa is Arianne's Multiplayer Online Engine Server, that you can use to build
you own online games using Marauroa as a Content Management system.
Marauroa is completly written in Java using a multithreaded server architecture
with a UDP oriented network protocol, a mySQL based persistence engine and a
flexible game system based on open systems totally expandible and modifiable
by developers and that is able to run scripts on Python for the game's rules.
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, allowing a great freedom to create whatever type of game
You can find the latest version of Marauroa at:
Marauroa is a GPL project.
Version > 0.90 support Stendhal: a multiplayer Zelda like game using Java and Java2D
Version > 0.90 support JMapacman: a multiplayer pacman game using Java and Java2D
Version > 0.33 && < 0.90 support mapacman: a multiplayer pacman game using the Python rules.
Version > 0.20 && < 0.33 support a simple Gladiators game using the Marauroa engine.
You need to grab game package in order to be able to play it.
To actually compile Marauroa you will need:
- Java SDK 1.5 http://java.sun.com
- Ant 1.6 http://ant.apache.org
In order to get it working with MySQL you will also need:
- MySQL Connector/J http://www.mysql.com/downloads/api-jdbc-stable.html
NOTE: Unfortunatelly, Marauroa uses some SQL features that make its code
slightly incompatible with other DBMS. Join us and help to port SQL code
to a real standard complaint DBMS.
First, install Java, Ant, and Jython
NOTE: Do not install Jython on a directory path that contains spaces.
Second, set log4j, jnlp.jar and jython.jar on the classpath.
Third, move to the marauroa directory.
cd C:\marauroa (Windows)
cd /foo/bar/marauroa (UNIX)
Fourth, run ant jar.
ant -Dlibdir=./dependencies jar
Where dependencies is a directory that contains all the libraries, you can omit
it if you have correctly configured your classpath.
NOTE: This may not work on in the current version or possible on Windows??
BUILD SUCCESSFUL Total time: 3 seconds
You will have a marauroa-<version>.jar file in the lib folder. Nice, isn't it?
Last, run ant docs to generate the API documentation.
Ok, you have compiled Marauroa. Now what to do?
Well, if you have built a Marauroa server it is because you
want to play with the server either because you want to run your own
game server or because you are a developer wanting to develop your own game.
If you don't understand the above it is prone that you are looking for
Once we have build Arianne the next step is to setup the configuration file.
Each game features a configuration file that will configure the server to run
that particular game.
To create a configuration file just use marauroa.server.generateini application
Answer all the questions and you will have a configuration file generated.
Once you have it configured just run the server by doing
java -classpath marauroa.jar;mysql-connector-java-3.0.7-stable-bin.jar marauroa.server.marauroad -c <game.ini> -l
This will make the server to start
-- Creating accounts
Before anything else happens you MUST create accounts for your players. The idea
is simple enough to you can even wrap it with a webpage much like we did with
<game>.<game>createaccount -u <user> -p <password> -c <character> -e <email>
ˇ games.stendhal.server.stendhalcreateaccout -u root -p pazzw0rd -c MaSSive -e firstname.lastname@example.org
ˇ mapacman.mapacmancreateaccount -u root -p pazzw0rd -c MaSSive -e email@example.com
Each game has a different number of parameters, check it with the -h parameter.
Read instead the clients pages at http://arianne.sourceforge.net
- fixed a bug which prevented disconnection of players on second login if the username mismatched on case
- disable java built in dns cache (as this required the client to be restarted after server ip change)
- new client side method to detect disconnected tcp-streams
- fixed a problem with may cause logging of game events to fail
- moved persistence handling in unsinged webstart from Stendhal to Marauroa
- Singleton pattern for RPWorld
1.32 Jul 16, 2006
- Added experimental support of TCP.
- Fixed a cpu-intensive debug-message while creating zone-based perceptions
- Improved createaccount method to return information about the cause of the failure.
1.31.1 Mar 24 2006
- Bug at create account
1.31 Mar 21, 2006
- Allowed database replacement by games.
1.30 Feb 26, 2006
- Reworked Perception system.
- Removed useless method at PlayerEntryContainer.
- Use less memory.
1.22 Jan 30, 2006
- Fixed memory leak because incorrectly handled JDBC Connection.
- Added threaded network client.
- Fixed messing messages because repeated signature.
1.21 Jan 14, 2006
- Added game events support
- Fixed a bug at RPSlot
- Fixed a bug at NetworkClientManager that made wrong signatures.
1.20 Dec 21, 2005
- Added capacity to RPSlot
- Changed serialization form of RPSlot
- Incompatible with previous releases
- Added invisible attributes and private attributes
- Added RPSlot to RPClass definition
- Added invisible rpslots and private rpslots
- Changed way of signing messages
- Changed protocol version.
- Improved logger output to handle RPClass syntax problems.
- Allow creation of accounts from within server.
1.12 Oct 26, 2005
- Fixed ConcurrentModificationException at ariannexp.loop
- Ported createaccount to Log4J logging system
1.11 Oct 23, 2005
- Added capacity to slots
- Fixed a bug at RPSlot.assignValidID that blocked server
1.10 Sep 24, 2005
- Added log4j as logging platform
- Fixed isContained, getContainer methods.
1.03 Jul 02, 2005
- Fixed a bug in RPObject.applyDifferences
- Fixed a bug at slots
- Added isContained method to RPObject
1.02 Jun 09, 2005
- Compressed Server info message so we save bandwidth.
- Changed statistics from int to long
- Fixed a bug at JDBCPlayerDatabase.storeRPObject
1.01 Jun 05, 2005
- Added storable/volatile attributes
1.00 May 30, 2005
- Fixed a bug at Perception system that shows objects of other zones.
- Reduced Perception size.
- Send only hidden attributes on player
- Fix a bug on a disconnected player that login again
- Store connected players on server shutdown
- Updated Python wrapper
0.97 May 20, 2005
- Added client version check at Server
- Added has method to RPWorld class
- Refactored Statistics system
0.96 May 12, 2005
- Fixed a bug that make clients not to notice of timeout players
- Improved speed by making conditional logging on NetworkClientManager
0.95 Apr 28, 2005
- Fixed a bug related to database connection being closed.
- Fixed an exception at Secure login.
- Fixed a bug because of Transaction model at MySQL (http://dev.mysql.com/doc/mysql/en/innodb-consistent-read-example.html)
- Added outOfsync method to ariannexp
0.94 Apr 17, 2005
- Fixed createaccount to use a parameter based .ini instead of hardcoded configuration file.
- Fixed cosmetic issues at generateini
- Fixed exception classes
- Fixed a bug at JDBCPlayerDatabase that didn't allowed RPObjects to be removed correctly.
- Added secure login procedure
0.93 Apr 08, 2005
- Added VERY_LONG_STRING data type
- PacketValidator will now correctly create the missing SQL tables.
- Logger allowed and rejected are now set at configuration file
- Fixed a problem at ariannexp related to ignoring some packets in some conditions.
- Downgraded to single thread NetworkServerManager because a bug that made it to use 100% CPU usage
0.92 Apr 05, 2005
- Change nextTurn method for beginTurn and nextTurn
- Replaced onApprovedActions by onActionAdd for simpler action validation
0.91 Mar 03, 2005
- Added generateini application
- Simplified README file
- Fixed a bug at multizone
- Fixed a bug to RPWorld that breaks the multizone feature
- Fixed a bug at NetworkServerManager that blocked the server
- Fixed a bug at PlayerEntryContainer that happens because of content streaming.
0.90 Feb 19, 2005
- Major code refactoring
- Added multizones feature
- Added content streaming feature
- Changed package structure
- Created a new Logging facility
- Added a client framework: ariannexp
- Jython is optional
- Filter banned IP packets
- Removed games code, now each game package will contain its own server and client code.
- Updated this README
0.41 Jul 13, 2004
- Cleaned code
- Added javadocs comments
- Fixed a bug at RPZone where modify modified objects not belonging to that zone.
- Improved mapacman script
- Added out of sync logic on clients
- Fixed a bug related to out of sync at server.
0.40 Jul 05, 2004
- Added score to ghost to count players killed
- Changed the calling order in RPAImanager
- Added classes of RPObjects: RPClass
- Improved the speed feeling on the game by a change on RPServerManager
- Added per player synchronization
- Fixed horrible bug at delta^2 perception system
0.36 Jun 04, 2004
- Database modified to stored hashed passwords
- Fixed the two turns delay on actions
- Compressed RPMap message
- Added command line support for nullClient
- Improved mapacman support
- Fixed bug that happens when client exits on timeout
0.35 May 25, 2004
- Changed RPMap message
- Client can try to resync using old perceptions
- Fixed bugs at mapacman_script.py
- Reused PythonRPRuleProcessor
- Added command line help to server
- Removed simplegame
0.34 May 17, 2004
- Added out of sync message
- Improved perception creation
0.33 May 01, 2004
- Static part of the perception, that one that doesn't change depending of the player is precomputed.
- Added Python RP rules system.
- Added mapacman game.
- Added messages timestamps so that it is more reliable on bad UDP connections.
- Factorized createaccount method, each application has now to modify a very small part of it.
- Updated documentation about Marauroa.
- Added proper shutdown procedure.
- Fixed the bug that allows players to vote several times.
- Added RPMap message
0.32 Apr 21, 2004
- Fix a bug that happens when an object is added and deleted on the same turn from a slot.
- Added modification of the network protocol to send our RPObject only when changed
- Fixed a path related problem with create account
- Fixed an issue that rejects the creation of database on the first run.
0.31 Apr 14, 2004
- Added Delta-delta perception so now only diffs between actual and previous object is send.
- Change attributes name to save even more bandwidth
0.30 Mar 26, 2004
- Added persistent objects
- Added transactional database support
- Fixed zlib compression problem due to incorrect deserialization
- Send less TOTAL perceptions so it improve bandwidth usage
- A ton of little bugs/features fixed/added
0.25 Mar 06, 2004
- Added zlib compression
- Added Buy item and Buy gladiator
- Added completely access to our gladiator inventory
- The rest of Players has their gladiators and items hidden.
- Fixed a bug that make HP not to be restored if you logout before request fame ends
0.24 Mar 02, 2004
- Fixed SQL bug that can cause a denial of service on server
- Fixed bug on Fame to be assigned to winner
- Fixed correctly the no-winner situation
- Fixed test cases to correctly pass the PlayerEntryContainer
0.23 Feb 15, 2004
- Added chat
- Added statistics
- Added W3C Events Log format
- Fixed synchronization bug
- Fixed a bug that makes arena to not be able to exit from fight state
0.22 Feb 06, 2004
- Fixed JDBC problem with accounts
- Fixed stupid problem on createaccount
- Combat does end now
- Fame is added now to winner
0.21 Jan 31, 2004
- Fixed security problem at JDBCDatabase
- Fixed delta perception
- Add a commandline tool to add new players
- Improved Gladiators server logic
0.20 Jan 26, 2004
- Implemented Gladiators
- Fixed several problems at server
- API stabilized
0.11 Dic 21, 2003
- Maraurorized simpleGame
- Fixed several logical bugs in simpleGame
- Fixed bugs
0.10 Dic 16, 2003
- simpleGame working.
- sound support
- First steps of Gladiators
0.04 Dic 11, 2003
- Fixed FATAL bug at NetworkServerManager and JMarauroa
- Added ServerInfo message
0.03 Dic 09, 2003
- Delta Perception
- Full RPZone and RuleProcessor
- Full test cases
- Multipacket UDP communication protocol
- Updated documentation
- Fixed bugs
0.02 Nov 30, 2003
- Added Perception message
- Added JDBC Database
- Added RP Code: Hacked and Slashed
- Fixed bugs:
- Fixed Traces output
0.01 Nov 22, 2003
- Initial release
- Complete Network Protocol
- Memory Database
Marauroa(c) is copyright of Miguel Angel Blanch Lardin, 2003-2005
arianne_rpg at users dot sourceforge dot net