Group Project Assignment: Event-driven massively-multiplayer gaming platform


Ok, so we’ve now been assigned our group projects. We have roughly 3 months to complete the project, with an estimated 8 weeks coding time.

The group is:

  • Me
  • Jack
  • Jee
  • Marten
  • Sean

The “brief” for the project so far is:

Nutshell: build a massively-multiplayer game, from scratch, using a pub/sub network as a foundation. Build a simulator to study its performance and scalability.

Background:

In a massively-multiplayer interactive game, thousands of players around the internet interact in a shared, virtual environment. For this experience to be truly “immersive”, interactions between players need to be rendered accurately within a few tens of milliseconds. The goal of this project is to explore a decentralised approach to achieving this, by building on top of a “publish-subscribe” network. The pub/sub network infrastructure delivers events about the state of game agents to other agents on a “need-to-know” basis; an agent subscribes by specifying the class of events in which it is interested. Players only subscribe to events from agents whose behaviour is visible or might affect them. The objective of this project is to build the experimental infrastructure to explore performance issues in such a game, and in particular, to explore the performance issues involved in the pub/sub routing infrastructure – in fact, we aim to produce a pub/sub benchmark program. Which is also hopefully a motivating, even entertaining, game.

Breakdown:

This project has a number of elements:

  • Client game engine (actually it would be fine to use an existing engine here, preferably open source and cross-platform.
  • World/level generator. We need to be able to generate non-trivial virtual worlds algorithmically, so that we can automatically scale the size of the game and the number of players.
  • Virtual player AI. As well as human players we need robot players, both to make the game interesting and to be able to run automatic performance tests with large numbers of simulated players.
  • Publish/subscribe message routing infrastructure. We need a simple design that can be made very very fast – but which is extensible to include game-specific event filters (such as level-of-detail [“he’s too far away to see or hit me”], or clipping [“he’s behind a wall”]).
  • Network simulator. We need to evaluate the scheme using a large network, together with robot players and servers, to study the performance of the game – to show message volume and interaction delay increases with number of players (and world size etc). I suggest an event-driven simulation harness that coordinates execution of client, broker and server code running as separate processes.

This is a big project, so our objective is to simplify as much as possible – and to structure it so there are several partially-separable parts. It has the potential to be quite a lot of fun.

Leave a Reply