The GameServer is in charge of running an instance of a Scenario. It moderates the official game clock and ensures that events occur in a timely manner. It aggregates the scoring from the various components of the system.


The CLI becomes available to the users during run-time operation, after the program has successfully initiated and completely read the instance file. The CLI provides a very simplistic user experience. The objective of the CLI is to allow the user to retrieve basic status information and to perform basic challenge actions such as Run, Pause and Stop a challenge. The CLI is intended to be used only by moderators of a cyber challenge.

Web services

A RESTful web service API is exported by the game server to enable extension of the game servers capabilities. The API exported by the game server provides access to (1) the information parsed by the game server from the instance file, (2) run-time information and (3) the ability to affect changes in the game servers execution. This interface is exposed through RESTful HTTP transactions. This allows external applications flexibility when interacting with the game server and allows them to extend the functionality offered through other interfaces.

Adding Native Event Types

Each event as described within an XML block must specify the handler that is used to parse the event. The handler provides two functions parse-event() and run(). The parse-event() function is passed the XML block description of the event. It is the responsibility of the parsing function to decode the XML of the block and instantiate the concrete event class that it describes.

The handler also provides the run() function that is used to execute the event. The function is passed the instantiated event object containing all the information decoded from the XML block as well as a handle to the application. The programmer of the handler decides how the event should be run, additional function calls to be made, or external applications to interact with. The return value of the run function is not monitored by the game server and it is the responsibility of the programmer to handle any errors. The application handle that is passed to the function is used to communicate with the rest of the application. Using this handle the programmer can send score results and log messages.

GameServer Startup Sequence

GameServer Development Roadmap

  1. Application - Master/Slave negotiation (federated version only)
  2. Native Metasploit event provider module, populate event cache
  3. Enhance web services API to control GameServer
  4. Produce web front-end for Public API