[Mono-list] ANN: NRobot 0.12 released

Stuart Ballard sballard@netreach.com
Mon, 19 Apr 2004 14:28:27 -0400

NRobot 0.12 has been released.

Homepage: http://home.gna.org/nrobot/
Download: http://download.gna.org/nrobot/
Development: https://gna.org/projects/nrobot/
Mailing List: nrobot-list@gna.org

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.

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. Currently I believe that C# is the only language 
with a mature Free Software implementation capable of writing robots in, 
but this is likely to change as Mono's implementations of VB and 
EcmaScript improve, and the IKVM (http://www.ikvm.net) Java 
implementation gets more support for CLI features (currently, it lacks 
"attributes" which are required for use in NRobot, but support for them 
is planned for the future).

This is the first public release of NRobot, coinciding with the move to 
public development at https://www.gna.org/. Currently, NRobot is 
functional and "playable". It comes with three sample robot 
implementations, so that "out of the box" you can watch a game. One 
important missing feature is a security architecture: robot code 
executes with full privileges. Thus, it's recommended that if you are 
running any robots from untrusted sources, NRobot is run under a user 
account with no privileges over files you care about. It's also short on 
documentation and the GUI implementations have some rough edges.

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 (when running under Linux):

     * Mono (http://www.go-mono.com/)
     * GTK# (http://gtk-sharp.sourceforge.net/)

A Windows Forms 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. Having said that, future releases may 
include MonoDevelop project files.

Paulo suggested that software announcements should include the following 

*) was the product developed to run on mono or is it a port of an app
that also runs on he MS CLR?

NRobot was developed for both platforms in parallel.

*) how was the porting and/or developing experience (did you find many
bugs/unimplemented features/stumbling blocks)?

Not that I can remember. I had a few problems with the changing API/ABI 
for GTK#, but those were easily solved. I did notice that (last time I 
tried) mono was unable to load DLLs compiled by .NET's compiler, and 
vice versa. This was a few releases ago, though, so the situation may 
have improved since.

*) how is the end result (stability, speed)?

There's no obvious difference in performance or stability between Mono 
and .NET with regard to the performance of NRobot.

*) what do you expect from the next mono releases as it relates to the

The biggest thing missing from NRobot today is a security architecture: 
robot code runs with full privileges. NRobot doesn't even try to limit 
this yet, but my understanding is that Mono doesn't completely implement 
all the security features of the .NET framework that would make it 
possible. Similarly, NRobot doesn't yet use AppDomains to load the robot 
code, but I'd like it to in future, to support unloading robots and 
loading a newer version without closing down the GUI. In order to make 
this work, Mono will need working AppDomain.Unload functionality. By the 
way, patches or advice on how to implement these things from anyone who 
understands AppDomains and .NET security would be much appreciated. 
Because right now, I don't really understand how to begin.

Stuart Ballard, Senior Web Developer
NetReach, Inc.
(215) 283-2300, ext. 126