I finally got around to bundling up the last few months worth of work on
NRobot,
checking it in and calling it a release. There are a bunch of new
features, but the most important is that if you're running under .NET
robots are run in a sandbox - they are no longer given complete control
over your system. This means that it's actually reasonable to download
a robot written by someone you don't know or trust, and attempt to
shoot the crap out of it - as long as you don't pass the "-insecure"
option on the command line.
Another significant improvement in 0.20 is that it now ships with a
sample robot written in Java. This isn't actually an improvement in
NRobot at all, but an improvement in IKVM. As of IKVM 0.14 it is now
possible to apply custom attributes to Java code, which was the only
remaining feature required for use in NRobot. So at last I'm posting
something on my blog that's actually vaguely on topic for Planet
Classpath ;) All you Java programmers, go download it and start writing
robots ;)
Unfortunately there are a couple of catches.
Currently Mono's security support is not complete enough for me to
confidently guarantee your safety if you are running untrusted robot
code in it. Work is ongoing on adding this support and I'm confident
that it will eventually be safe, but if you're running NRobot under
Mono today, I recommend using a user account with restricted
permissions.
The other big catch is that IKVM can't currently generate code that
will run inside a sandbox. Jeroen has done some work proving that this
isn't impossible in theory, but will require very careful auditing of
IKVM code to be certain that no security holes have been introduced. So
for now, you must pass the -insecure option in order to run robots
written in Java - in which case you again ought to run NRobot under a
user account with restricted permissions.
Oh, the other big improvement in 0.20 is a feature that was actually
requested - the ability to fine-tune the strengths and weaknesses of
your robot. You can adjust 8 different properties (roughly categorized
into 4 offensive and 4 defensive) to be either "better", "worse" or
"neutral", but you must be sure that your choices balance out. That is
to say, for every property you make better, you must make another one
worse.
Here's
my own robot DLL. Unzip it into the Bots/Win or Bots/Mono
directory (as appropriate) of your NRobot installation. Naturally,
unless you trust me implicitly, you shouldn't do this if you're running
under Mono or with the -insecure flag unless you've taken other
precautions to safeguard your system.
So what the heck does "Wa Eebots Peas!" mean? Well, Alexa loves
watching games of NRobot play themselves. If she sees me working on my
laptop, she'll come over, stare at the screen, and say her best
impression of "Want Robots Please!".