Postina: A Publish/Subscribe Middleware Designed for Massively Multiplayer Games

I have just submitted my master thesis! Now, I have completed everything for my Master of Science in Computer Science, that is I have finished my studies!

In my project I developed Postina, a new network layer for Mammoth (an MMOG). Everything about Postina (including sources) is available online at

The abstract is:
Postina is a network middleware designed for massively multiplayer online games (MMOG). It combines publish/subscribe functionalities with direct messaging, a feature of critical importance for MMOGs.

In MMOGs, numerous messages such as state updates are sent to different clients. While some messages must be multicast to a large group of clients, other messages are private and sent to a single client only. Using a traditional client-server approach limits the number of simultaneous players, a property that is undesired in MMOGs. A potential solution would be to use publish/subscribe systems which are designed for scalability. Pure publish/subscribe systems, however, do not provide any possibility to send a message directly to a single client as the peers do not have any knowledge of the network topology.

In this thesis we first study different publish/subscribe systems and the features they offer to choose an appropriate middleware providing the required functionalities for MMOGs. Additionally, we design Postina, an API for network layers in MMOGs that offers a convenient interface combining publish/subscribe and direct messaging. We then implement a version of Postina using Scribe, a topic-based publish/subscribe system built on top of the distributed hashtable Pastry. To fulfil the requirements of MMOGs, we add extra features such as reliable direct messaging and the capability of issuing subscriptions for other clients. This version of Postina is then integrated into Mammoth, the massively multiplayer game research framework developed at McGill University. Finally, the efficiency of the new network layer is tested to determine the maximum number of simultaneous players.