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: [EMAIL PROTECTED]

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 information:

*) 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
projects?

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
http://www.netreach.com/

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to