top | item 6748289

Code robots in Python. Fight other players. Climb to the top

158 points| yasyfm | 12 years ago |robotgame.org | reply

44 comments

order
[+] petercooper|12 years ago|reply
This isn't specifically about this implementation, but I've noticed perhaps almost ten similar projects (virtual, programmed PCROBOTS descendants) on HN over the past year. There seems to be a real interest in this area (I made one myself on a hack day a few years ago ;-)) but a lot of reinventing the wheel.

Are there are any particularly popular open source projects of this sort that people interested in this area could perhaps collaborate around?

[+] jacques_chester|12 years ago|reply
The Urgame for this seems to be RobotWar:

http://en.wikipedia.org/wiki/RobotWar

Which I'm aware of because it inspired Robot Battle:

http://www.robotbattle.com/

Which inspired RoboCode:

http://robocode.sourceforge.net/

Which seems to have inspired a lot of others.

(Reads a bit like the Old Testament; all that begetting.)

One problem is that almost all of them are language-specific. Robot Battle implemented its own language, RoboCode uses Java, this game is in Python.

One game in the genre is RealTimeBattle, which instead allows bots to communicate with the game simulator via standard IPC. So, in theory, robot programs can be written in a variety of languages.

http://realtimebattle.sourceforge.net/

[+] aymeric|12 years ago|reply
I have open sourced terrarium.js: http://terrariumjs.wiselabs.net

You program herbivores and carnivores and try to invade other people's terrariums.

Your creatures can see, move, attack, defend, reproduce, eat.

[+] jtfairbank|12 years ago|reply
Every year the UofI ACM puts on an AI programming game competition. I've competed and worked on the 2012 game, its a lot of fun. If you're a student or corp in the midwest, take a trip down in October. And the game is usually language agnostic.

Did I mention there's also a whole conference with a bunch of tech talks, student parties, etc?

https://en.wikipedia.org/wiki/MechMania

[+] LoneWolf|12 years ago|reply
My first thought went to http://aichallenge.org/ it's a shame there is still no new competition.
[+] _xhok|12 years ago|reply
I saw AI Challenge earlier! It looks really fun. I might steal one of their ideas and of put five or so teams of robots in a bigger map and see what happens.
[+] alexchamberlain|12 years ago|reply
This is how we should teach kids programming; the goal is simple, the API is simple and they can play against their friends... This has got me thinking...
[+] phreeza|12 years ago|reply
Heh this reminds me of a game I wrote a while back, also python: https://github.com/phreeza/cells In fact I would guess the API is perhaps inspired by the cells API.

Writing a web frontend is something I have been wanting to do for this a long time, nice to see someone implement that!

[+] pavel_lishin|12 years ago|reply
I really wanted to play with that, but it ran far too slowly without PyGame, and I couldn't get PyGame to run on my mac, so I abandoned it :/
[+] alexchamberlain|12 years ago|reply
It seems a large part of the previous discussion surrounded sandboxing Python; anyone know where the author is with that? I find it hard to believe it would be very hard if you just embed the players game in a C++ engine.
[+] _xhok|12 years ago|reply
Well, it turns out you can't sandbox Python at the language level. So now each user's code is run (a) in a separate process (b) in a chroot jail (c) as user nobody (d) with umask set to 0 (e) with a time limit of 300ms.
[+] _xhok|12 years ago|reply
Also, with network connections firewalled via iptables.
[+] ElongatedTowel|12 years ago|reply
I always get a maximum recursion depth exceeded exception in game.py using the rgkit. The exceptions aren't very helpful and only point to problems in the runner, not the bot. I'm not even sure what is triggering it. The only rg method I'm using is locs_around.
[+] ElongatedTowel|12 years ago|reply
Seems to happen whenever I use locs_around. I think I'll replace that method with my own. Half my robots are guarding because this function is hitting recursion limits every god damn time.
[+] joosters|12 years ago|reply
Why python? The API could have been a simple textual one (or maybe JSON, or whatever) and piped to/from the robot programs. That way, robots could be written in whatever language the authors like. It would also help sandbox the robots from the game server.
[+] wiremine|12 years ago|reply
My guess is one of the project's goals it to reach programming. If that is the case, Python is a great language.

If the goal was simply to make fighting robots, something more agnostic would be cool. That said, the system enforces a 300ms response time per robot, so compiled languages would have a big advantage.

[+] mabbo|12 years ago|reply
Not sure what I'm doing wrong, but nearly every robot I write compiles, and then does nothing when run.

The only time I got it to do something else was by taking the sample code, raw copy-pasting it in, and running that.

[+] imdsm|12 years ago|reply
This would be better if there were more in-depth docs. I want to know if my a bot is on my team? But how? Let's check the docs..oh wait..they're incomplete.

Promising but not ready yet.

[+] _xhok|12 years ago|reply
Yeah, I do need to make the docs friendlier. As for your question, though:

    if bot.player_id == self.player_id:
        # they're on your team!
[+] QuasiAlon|12 years ago|reply
Anybody aware of a similar game to ~teach~ python? I remember seeing a thread that used a war game to teach java, was hoping there's one for python too cheers
[+] abus|12 years ago|reply
Please use <title> so I can tell the tabs apart.
[+] _xhok|12 years ago|reply
Good idea, thanks for the suggestion.