Summary

It's a hard network out there. A program's gotta fight just to keep its clock cycles, not to mention holding down its own bit of memory real estate from interloping programs that would like nothing better than to snatch that prime bit of RAM away and consign the program to the great bit bucket in the sky...

In this project, the design team will develop a game engine for the ``distributed CoreWars'' game. CoreWars is a game of conquest in cyberspace. Each player writes an assembly language program in the special-purpose assembly language RedCode. All players' programs are loaded into the memory of a RedCode Virtual Machine (RVM) engine and attempt to wipe out other programs by overwriting the memory in which they live. The winner is the last program left running, or the program ``owning'' the most memory when the time limit for the game expires.

This project includes two variants of this game: a ``uniprocessor'' version (similar to the standard CoreWars game) in which all processes live in a single virtual machine (the RedCode Virtual Machine, or RVM) and a ``distributed'' version in which there are multiple virtual machines along with a virtual network for communicating among them. In this version of the game, processes can copy themselves across the network onto other RVMs, and the goal is to take over the entire network.

Because this game is quite complex, a critical component of this project is building a good graphical user interface (GUI) to visualize and control the game. The project will be assessed, in part, on the quality and intuitiveness of this UI.

Terran Lane 2004-03-29