The Blitz Engine is by far the biggest Java project that AllGoFree has ever worked on; it is a MMORPG server engine. The project is composed of three main components:
Below is more detail about each component.
The shared libraries consist of many different components, including two networking libraries (Apache MINA and Netty), dd-plist, and my own shared library that includes many classes shared between the two server components. It also includes a network abstraction layer, that lets the server choose between using Apache MINA, Netty, Java NIO, and regular Java IO, all with the same networking code.
The Authentication Server is somewhat of a master server for all of the game servers. This enables multiple instances of the game server to be running in order to handle larger player loads, while maintaining global information between the servers. It maintains a global list of online players to prevent one player from logging in to multiple game worlds, and it also broadcasts this list to all the game worlds to enable friend’s list features on the game. It also provides an API for the game worlds to send messages directly between each other, or broadcast messages to each other for purposes such as updates.
The Game Server is the main component of the engine, as it is the actual game engine itself. It provides access to the powerful networking provided in the shared library, and runs the networking and game code on separate threads to take advantage of multicore systems and to prevent the networking from slowing down the game logic. It is a highly modular engine that scales to thousands of players, and uses an event based plugin system to allow rapid content development. This also makes it extremely easy to enable and disable specific content, and to create different game servers featuring different content by enabling and disabling plugins.
This is a video of a stablity test with 2,000 clients connected to the engine, running a private server.
There is also a second video demonstrating the same thing.