Overview

The goal is to build a distributed dungeon crawling game for Growl, Inc. This includes building and delivering a server component which will manage the games and allow human player clients, as well as remote AI adversaries. For this purpose, both a GUI client component and at least one example AI enemy will be delivered with the server software.

Software Components

The high-level description provided by the management suggests the following components.

Player

A player needs to be able to

  • Choose a tile to move to
  • Receive information about their current state in the game, including what they can see and if they are still in the level

Adversary

An automated adversary needs to be able to

  • Choose a tile to move to
  • Receive information about their current state in the game, including what they can see

We will need to implement at least 1 adversary to verify the interface is usable.

Game Manager

The game software needs to have components for the following

  • the level, which in turn needs to represent rooms and/or hallways
  • a random level generator that produces a level from a random seed
  • some idea of the valid non-entity objects in this game
  • representation of the game’s current state and its rules
    • Includes a level
    • Enemy and player placement
    • Object placement and status of the exit
    • Players that have exited vs. ejected

Observer

Various stakeholders, such as the management at Growl, Inc. or eventual administrators, might need to be able to observe games in progress. For this purpose we will provide an observer component. This component will be also useful for debugging during the development of the game.

Thinking about the tournament, we need some manager to let players sign up and play the games.

Players will need to be able to observe various games in the tournament. We should implement some observer interface to allow others to view.

Building it

We will build this in three phases.

  • Build a prototype that can demo a local player going through a level of Snarl with fixed enemies. It needs the following components built in this order:
    • The level and its visual representation
    • The game state component
    • The game manager to check validity of the game states
    • Random level generator of the game manager
    • Observer
    • A player client with a graphical or textual user interface for users to interact with the game
    • An automated enemy. We will implement at least one automated adversary as well.
  • Advance to a prototype where the players or adversaries are networked. We will do this with remote procedure calls to communicate over TCP.
  • Finally craft a tournament manager to run various games of Snarl with user-submitted adversary AI