The jOTServer project is a re-implementation of the OpenTibia server project in Java. While the project is now abandoned it still showcases several interesting technologies including aspect oriented programming using AspectJ, asynchronous networking using Apache MINA, and the Maven build system. It also happens to be the only one of my spare time projects where I have maintained even a partial JUnit test coverage.
The project consists of nine modules. They are all located in their own folder under the project root folder. The most interesting modules are protocol.game, model and model.io. The aspect oriented programming in the project is mainly used to send updates to the clients whenever there is a relevant action performed on one of the model classes. This allows for a very convenient separation of concerns between the protocol/networking code and the game logic.
There are several dependencies to files and file formats developed for the original OpenTibia servers in the project. Sample versions of the most important such files are included in the project. Apart from that the server application (represented by the server module) also requires three configuration files (as a minimum). Sample versions of these are also included.
When the project was abandoned it was in a working state where many of the core features were already implemented and functioning properly. Some features worth mentioning are: support for multiple worlds, loading of OTBM map files, player log in handling, character controls, inventory management, in-game chat including public chat channels, path finding for autowalking. protocol support for most actions including map transfer and floor changing.
Version 0.9 [2012-05-08] - First public snapshot.
The project is developed in Java and uses and SQL database for storage, AspectJ, JUnit, Apache MINA, StripesFramework, Maven.