User Interface

The DCoreWars program MUST provide at least one client program that provides a visualization of the game state at all time points. The program team MAY also provide additional support programs, at their discretion. For example, the assembly/disassembly functionality MAY be provided by the DCoreWars program itself, or it MAY be provided by an auxiliary support program.

The main DCoreWars program MUST provide at least the following user interface elements. It MAY also provide additional UI functionality. The specific ways in which the UI is implemented is up to the design group, but part of the evaluation of the program will be on the quality and intuitiveness of the user interface.

  1. Ability to specify the number of players and a name for each.
  2. Ability to specify uniprocessor or distributed versions of the game. This MAY be implemented via a GUI element, a command-line option, or a by providing separate client programs for UCoreWars and DCoreWars.
  3. For the full, distributed DCoreWars game, the ability to specify the number of RVMs and the CPU speed and memory size for each.
  4. Ability to load assembled RedCode files from an arbitrary file for any user.
  5. Ability to single-step a single RVM, all RVMs, or to run all RVMs in free-running mode. In free-running mode, the run-speed of the game (i.e., the number of milliseconds per CPU cycle for the fastest RVM) should be a dynamically selectable, user-controlled parameter.
  6. Display of the full memory state of any single RVM at any timestep. This display MAY be raw hex or MAY be disassembled RedCode contents or the UI MAY allow the user to toggle between them. This display MUST have some way to indicate which user owns each memory location and which memory locations are unowned.
  7. Ability to switch the above display to any RVM.
  8. Display of the current score for each player on the currently displayed RVM and, optionally, on all RVMs.
  9. Display of the number of PROCESSES currently alive for each player on each RVM.
  10. Display of current network activity between any pair of RVMs.
  11. Ability to cleanly quit the program, stop a current game without quitting, pause/resume a game without stopping, and start a new game.

The program MAY support a configuration file format to load items (1)-(3), above, but MUST also support some way to enter that data through the user interface.

The ability to assemble and disassemble RedCode programs MUST be provided but it MAY be provided by a separate program with its own UI/command-line behavior.

The program MAY provide command line switches to modify its behavior as well. All such switches MUST be documented in the user documentation.

Terran Lane 2004-03-29