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.
- Ability to specify the number of players and a name for each.
- 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.
- For the full, distributed DCoreWars game, the ability to specify
the number of RVMs and the CPU speed and memory size for each.
- Ability to load assembled RedCode files from an arbitrary file
for any user.
- 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.
- 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.
- Ability to switch the above display to any RVM.
- Display of the current score for each player on the currently
displayed RVM and, optionally, on all RVMs.
- Display of the number of PROCESSES currently alive for each player
on each RVM.
- Display of current network activity between any pair of RVMs.
- 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