NRobot

NRobot is an autonomous robot fighting game. By "autonomous" I mean that instead of directly controlling a robot, the human playing the game must write a program that acts as the "brain" of the robot. The robot will then be dumped into the game arena and must attempt to survive on its own. Other similar projects include IBM's RoboCode (written in Java); I've also heard that there was a very old BBC microcomputer game with a similar premise where robots were written in BASIC.

NRobot 0.21 was released on July 8, 2005. Download it via the development site at Gna.

By contrast, NRobot is written for the ECMA CLI. It's been tested on Mono (http://www.go-mono.com/) and on Microsoft's .NET framework - there are separate GUI frontends for these two environments due to differences in toolkit maturity, but the backend code is common. The use of the CLI means that (in theory at least) many languages are available for implementing robots in. NRobot ships with sample robots written in C# and Java (using IKVM) and I am actively courting developers of other CLI languages to obtain more.

Currently, NRobot is functional and "playable". It comes with sample robot implementations, so that "out of the box" you can watch a game. It's short on documentation and the GUI frontends have some rough edges, but none that affect basic gameplay.

NRobot includes a security architecture which ensures that robot code runs in a "sandbox" which cannot access your files or damage your computer. This architecture builds on the CLI's Code Access Security (CAS) infrastructure. Unfortunately Code Access Security is not yet fully implemented in Mono, and IKVM does not support writing sandboxed code so robots written in Java require the sandbox to be disabled. In these cases robot code executes with full privileges. Thus, it's recommended that if you are running on Mono or passing the -insecure flag to disable the sandbox, and have any robots from untrusted sources, NRobot is run under a user account with no privileges over files you care about.

NRobot is licensed under the GPL, but also carries an explicit disclaimer that robots written for it are not considered derived works. This is to preserve the competitive aspect of the game - it isn't expected that the robots themselves will have public source code, in most cases. While I strongly believe in both the ethics and practical benefits of Free Software, I don't think they apply to robots developed for NRobot: a robot is specifically designed to compete with other robot implementations and reflect the skill only of its author, rather than being cooperatively developed to achieve the best possible result.

Other Software Required:

A Windows GUI, and "project" files for Microsoft's Visual Studio .NET, are also provided, but these are not required. The GTK# GUI has the same functionality as the Windows one, and most Free Software developers seem not to use IDEs anyway. I work on NRobot entirely from the commandline in GNU/Linux, using the GTK# front end, and all functionality is fully present.