[Mono-list] ANN: NRobot 0.12 released
Mon, 19 Apr 2004 14:28:27 -0400
NRobot 0.12 has been released.
Mailing List: firstname.lastname@example.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
(215) 283-2300, ext. 126