I'd love to be involved but I'm learning Ruby myself right now so I don't know how much I'd be able to contribute. I'm more then willing to assist in anyway I can though.
If helping build a training tool like this helps me learn then I'm all for it.
Jim -- Jim Menard, jim.men...@gmail.com, j...@io.com http://www.io.com/~jimm "Don't let what you can't do stand in the way of what you can." -- John Wooden
Does robocode allow the user to compete against a bot ? Could be a nice feature to allow it, might even enable the user to train a neural net or somethin. SDL ?
On 11/9/05, Jim Menard <jim.men...@gmail.com> wrote:
> Sounds like a good Ruby Quiz to me.
> Jim > -- > Jim Menard, jim.men...@gmail.com, j...@io.com > http://www.io.com/~jimm > "Don't let what you can't do stand in the way of what you can." -- John > Wooden
Yes, that is the premise. You build bots and put them into an arena where they compete against each other.
It's such a neat concept, there was the last time I checked a pretty large community around RoboCode with lots of users writing tutorials details different AI approaches.
Re: Equvialent of RoboCode and/or Terrarium for Ruby?
Does robocode allow the user to compete against a bot ? Could be a nice feature to allow it, might even enable the user to train a neural net or somethin. SDL ?
On 11/9/05, Jim Menard <jim.men...@gmail.com> wrote:
> Sounds like a good Ruby Quiz to me.
> Jim > -- > Jim Menard, jim.men...@gmail.com, j...@io.com > http://www.io.com/~jimm > "Don't let what you can't do stand in the way of what you can." -- John > Wooden
Heh, I've thought about building stuff like that many times ... the problem is, I'm a geek so I always gold plate it with user-definable weapons, etc .. smart weapons ... etc. But it would be cool. And we should build a gui front end for it. Good example project for people. j.
On 11/9/05, kh...@comcast.net <kh...@comcast.net> wrote:
> Yes, that is the premise. You build bots and put them into an arena where > they compete against each other.
> It's such a neat concept, there was the last time I checked a pretty large > community around RoboCode with lots of users writing tutorials details > different AI approaches.
> -K
> ---------- Forwarded message ---------- > From: Reyn Vlietstra <reyn.vliets...@gmail.com> > To: ruby-t...@ruby-lang.org (ruby-talk ML) > Date: Wed, 9 Nov 2005 13:07:02 +0000 > Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby? > Does robocode allow the user to compete against a bot ? > Could be a nice feature to allow it, might even enable the user > to train a neural net or somethin. > SDL ?
> On 11/9/05, Jim Menard <jim.men...@gmail.com> wrote:
> > Sounds like a good Ruby Quiz to me.
> > Jim > > -- > > Jim Menard, jim.men...@gmail.com, j...@io.com > > http://www.io.com/~jimm > > "Don't let what you can't do stand in the way of what you can." -- John > > Wooden
Although I'm just starting to learn Ruby and really don't know much about AI programming I think this would be something really fun to contribute and be a part of.
What would we need just to start? Who's interested?
-----Original Message----- From: Jeff Wood [mailto:jeff.darkli...@gmail.com] Sent: Wednesday, November 09, 2005 2:51 PM To: ruby-talk ML Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby?
Heh, I've thought about building stuff like that many times ... the problem is, I'm a geek so I always gold plate it with user-definable weapons, etc .. smart weapons ... etc. But it would be cool. And we should build a gui front end for it. Good example project for people. j.
On 11/9/05, kh...@comcast.net <kh...@comcast.net> wrote:
> Yes, that is the premise. You build bots and put them into an arena > where they compete against each other.
> It's such a neat concept, there was the last time I checked a pretty > large community around RoboCode with lots of users writing tutorials > details different AI approaches.
> -K
> ---------- Forwarded message ---------- > From: Reyn Vlietstra <reyn.vliets...@gmail.com> > To: ruby-t...@ruby-lang.org (ruby-talk ML) > Date: Wed, 9 Nov 2005 13:07:02 +0000 > Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby? > Does robocode allow the user to compete against a bot ? > Could be a nice feature to allow it, might even enable the user to > train a neural net or somethin. > SDL ?
> On 11/9/05, Jim Menard <jim.men...@gmail.com> wrote:
> > Sounds like a good Ruby Quiz to me.
> > Jim > > -- > > Jim Menard, jim.men...@gmail.com, j...@io.com > > http://www.io.com/~jimm "Don't let what you can't do stand in the > > way of what you can." -- John Wooden
> Although I'm just starting to learn Ruby and really don't know much > about AI > programming I think this would be something really fun to > contribute and be > a part of.
> What would we need just to start? Who's interested?
> -----Original Message----- > From: Jeff Wood [mailto:jeff.darkli...@gmail.com] > Sent: Wednesday, November 09, 2005 2:51 PM > To: ruby-talk ML > Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby?
> Heh, I've thought about building stuff like that many times ... the > problem > is, I'm a geek so I always gold plate it with user-definable > weapons, etc > ... smart weapons ... etc. > But it would be cool. > And we should build a gui front end for it. Good example project for > people. > j.
> On 11/9/05, kh...@comcast.net <kh...@comcast.net> wrote:
>> Yes, that is the premise. You build bots and put them into an arena >> where they compete against each other.
>> It's such a neat concept, there was the last time I checked a pretty >> large community around RoboCode with lots of users writing tutorials >> details different AI approaches.
>> -K
>> ---------- Forwarded message ---------- >> From: Reyn Vlietstra <reyn.vliets...@gmail.com> >> To: ruby-t...@ruby-lang.org (ruby-talk ML) >> Date: Wed, 9 Nov 2005 13:07:02 +0000 >> Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby? >> Does robocode allow the user to compete against a bot ? >> Could be a nice feature to allow it, might even enable the user to >> train a neural net or somethin. >> SDL ?
>> On 11/9/05, Jim Menard <jim.men...@gmail.com> wrote:
>>> Sounds like a good Ruby Quiz to me.
>>> Jim >>> -- >>> Jim Menard, jim.men...@gmail.com, j...@io.com >>> http://www.io.com/~jimm "Don't let what you can't do stand in the >>> way of what you can." -- John Wooden
If you just want a port of robocode, I'd say a good approach would be to take the existing robocode source code and replace existing classes with Jruby. Once you've got the majority in Jruby, refactor that around to make it more rubyish.
I'd imagine straight porting of the majority of the code would be a fairly simple matter - it would only be once you started porting the GUI that you'd be into hard stuff.
I'd also imagine that instead of running the code in a sandbox, you'd instead expose something over dRB/some other sort of connection for clients to connect to and fight it out. This would allow you to write an adapter than would allow an existing robocode robot to enter the fray (which would be a great kick-start, and also a great way to test). Alternatively, you could just eval client code with appropriate $SAFE levels (which would probably restrict cheating more). Or you could do both.
Otherwise, you'd need to hash out a plan for a new environment for AI's to play in - Maybe some sort of random maze to fight in? - Maybe a capture the flag game?
Another fun AI thing to do is to write AI's for simple board/card games (ie Ruby Quiz #51), although watching computer players play isn't usually that much fun, it's much easier to insert a human into the game that is turn-based, and it's usually not that hard to play in a text-based environ. Poke around boardgamegeek and find something you like and build a two player version with a nice interface and then send it out for people to write AI's for. If you go this path, write your game rules in a server program and have all the capturing of input and displaying of things in client programs - this will normally you a decent interface to build an AI on. Something like Carcassone has extremely simple rules, but can provide a real challenge to win.
Even figuring out the winning rules to solo games such as Solitaire or Sliding Puzzles can be a challenge, but more fun is had when there unknown is in the form of another player (rather than just figuring out statistics, which solves most solo games).
> -----Original Message----- > From: Lyndon Samson [mailto:lyndon.sam...@gmail.com] > Sent: Thursday, 10 November 2005 4:47 PM > To: ruby-talk ML > Subject: Re: Equvialent of RoboCode and/or Terrarium for Ruby?
> Somebody should register something on rubyforge...
########################################################################### ########## This email has been scanned by MailMarshal, an email content filter. ########################################################################### ##########
Running everything over TCP would mean language independence, which may or may not be a requirement/good thing.
I think set_trace_func would be usefull in limiting timeslices for the AI/codelets.
The safest ( and most complicated ) method would to have one OS process per AI, with some IPC ( shared mem etc ) method for communication. But that sounds like architecture astronauticals... :-)
It seems to be all but gone now, it and maybe CoreWars (?) were some of the originals of these.
One thing that was interesting about Robowar was that you had a limited set of hardware to choose from for your bot, and you could choose things like a faster processor that let you execute code more quickly than other bots.
Just a thought, but how would you avoid letting people cheat and reprogram the rules from their bots? Run each one in SAFE=1 or what not?
On 11/10/05, Daniel Sheppard <dani...@pronto.com.au> wrote:
> Otherwise, you'd need to hash out a plan for a new environment for AI's > to play in - Maybe some sort of random maze to fight in? - Maybe a > capture the flag game?
I've not used RoboCode (by the time I heard of it I was already happily Java-free), but I have done some AI agent programming in Ruby. I've also thought about writing a game world but never got around to it.
First, another existing project to check out is realtimebattle. I think you could write something in ruby for that.
Jacob and I wrote ruby agents for an AI class using TCP sockets to the capture the flag game server which has probably been retired since they now do BZFlag agents instead of the shoddy CTF server we used then. But the premise was simple enough: you talk to the server over a tcp socket. You get precepts and send actions. I think this is far and away the best approach. Yes, then someone can use any language they like, and I think this is a good thing. It certainly helps not to get in the way of its growing popularity.
The questions then go to what precepts and what actions. It is my opinion that most people will be coming into a game like this wanting to do something interesting as early as possible. Otherwise it will not be fun and there will be a lot of half-written bots and few real ones. So simplicity is key. If it were a serious AI tool you'd probably want to make the precepts and so on configurable, but I say let it evolve there if driven to.
A rough description of the game world I decided would probably be the most fun follows.
The world is a 3D sphere in space. No gravity sources of consequence are nearby. The agents are spherical (cow-shaped) pods with yaw, roll, and pitch thrusters, and a front-mounted laser. When you shoot another pod, the pod is frozen (can't fire thrusters or lasers) until a teammate unfreezes it in the same manner. Flags are magnetic and so when you get close enough, if your magnetic field is on, you have the flag. You win by bringing the enemy's flag back to your base (a predefined spherical region). Two teams. Each pod has an omnidirectional limited range radar (does such a thing exist in the real world? I have no clue), which is the only means for observing objects. For simplicity (maybe this would be taken out for expert mode) you are told your precise position when asked. If you try to go out of bounds, you just don't. (e.g. you keep your momentum in other directions, but just stop going outwards).
The server wouldn't be too hard, the hard part would be the vector stuff (e.g. did that laser hit anyone?) and being time-independent from the network stuff.
The clients would be easy, but since you're dealing with 3D and limited information it is still an interesting AI problem.
The real hard part (from my perspective, probably not from someone else's) is the graphical part that lets us humans watch and/or participate.
I think such a game would be a lot of fun to write bots for, and if a good UI is made has the potential to be a fun game for humans to play too (both against bots and other humans).
> Running everything over TCP would mean language independence, > which may or may not be a requirement/good thing.
That's definitely the way I would go if I was trying to port robocode or another existing framework, as it should be easy enough to build adapters wherein the players written in the original language still think they're within the original framework... which means you'll have a great big pile of players to play against from day one.
########################################################################### ########## This email has been scanned by MailMarshal, an email content filter. ########################################################################### ##########
Alternatively if you just wanted to make something for ruby, you could probably just use drb, might make things a lot easier.
Good concept for a game. I think with a simple concept, more interesting mechanics can arise.
As far as the gui and such, it shouldn't really be that hard I think. Pretty easy to do in OpenGL, at least a primitive implementation, someone could make a fancier one later ;) .adam
Would be nice to have a server to which different renderers could connect, that way we could have international battles with alot of spectators, does robocode allow this ?
I'm also for an opengl implementation, guess using sdl for the first renderer would make sense so that things are cross platform.
Using drb/tcp makes sense if we'd like people to battle it out without giving the other party their precious robot code.
So my call would be for a cross platform opengl/sdl implementation connected to a seperate server which uses drb (porting other robots should be easy enough)
On 11/12/05, Adam Sanderson <netgh...@gmail.com> wrote:
> Alternatively if you just wanted to make something for ruby, you could > probably just use drb, might make things a lot easier.
> Good concept for a game. I think with a simple concept, more > interesting mechanics can arise.
> As far as the gui and such, it shouldn't really be that hard I think. > Pretty easy to do in OpenGL, at least a primitive implementation, > someone could make a fancier one later ;) > .adam
I feel that recreating RoboCode, is a bit much for a Ruby Quiz. (If you disagree, I welcome you to send me a complete solution showing how easy it was.)
However, I'm very interested in a quiz to right the robots if someone gets an engine together...
> Would be nice to have a server to which different renderers > could connect, that way we could have international battles > with alot of spectators, does robocode allow this ?
> Using drb/tcp makes sense if we'd like people to battle it > out without giving the other party their precious robot code.
It would be a little problematic to combine both of these goals - if clients were connecting via TCP, and there was a view of the game available to multiple clients via TCP, suddenly clients have the ability to see the 'spectator' view of the gameboard. Probably wouldn't be a problem if the spectator view was on enough of a delay to make the information useless (either by prerecording the whole game and playing it out (which I guess would be nice for passing around prerecorded games), or having the delay on the scale of over a minute).
########################################################################### ########## This email has been scanned by MailMarshal, an email content filter. ########################################################################### ##########
Sorry, Why would it be bad/problematic for "clients to have a spectator view of the board game" ? The robot would use the information to plan it's next move and the renderer would diplay the current state, or am I missing something ? I guess if latency is an issue then the game would perform very badly.
On 11/14/05, Daniel Sheppard <dani...@pronto.com.au> wrote:
> > Would be nice to have a server to which different renderers > > could connect, that way we could have international battles > > with alot of spectators, does robocode allow this ?
> > Using drb/tcp makes sense if we'd like people to battle it > > out without giving the other party their precious robot code.
> It would be a little problematic to combine both of these goals - if > clients were connecting via TCP, and there was a view of the game > available to multiple clients via TCP, suddenly clients have the ability > to see the 'spectator' view of the gameboard. Probably wouldn't be a > problem if the spectator view was on enough of a delay to make the > information useless (either by prerecording the whole game and playing > it out (which I guess would be nice for passing around prerecorded > games), or having the delay on the scale of over a minute).
> ########################################################################### ########## > This email has been scanned by MailMarshal, an email content filter.
Presumably a spectator view would provide information that is beyond that which the bot should be able to obtain from his "in the world" viewpoint. Knowing the bad bot with the BFG is just round the corner removes some of the anticipation :)
A delay of several minutes between the game and the spectator is a common mechanism of addressing this problem.
On 14/11/05, Reyn Vlietstra <reyn.vliets...@gmail.com> wrote:
> Sorry, > Why would it be bad/problematic for "clients to have a spectator view of the > board game" ? > The robot would use the information to plan it's next move and the renderer > would diplay > the current state, or am I missing something ? > I guess if latency is an issue then the game would perform very badly.