As I eluded to yesterday I am working on an awesome new project that may or may not ever see the light of day. I have has a long standing love for competitive robot AI programming – and you thought your hobbies were niche. My favorite bot building game was RoboWar 5. It had a lot of fun options available such as reading your opponents registers and a variety of weapons. However I felt its main shining point was how it handled the language of the bot’s themselves. Many games in this genre use modern languages and some basic OS controlled timing on thread scheduling which is only vaguely accurate and vastly different on different machines and operating systems. What RoboWar 5 really did right for me was the concept of your bot’s CPU power. Each operation took the same amount of time, and depending on how many points you spent into your bot’s CPU you would have different amounts of operations per ‘chronon’, which are roughly equivalent to a frame. So there was not only a strategy and logic element, but a very strong optimization slant on robot coding.
Recently I found myself wanting to program some more bots, like I had so many times before. However I was upset to find that the windows distribution of RoboWar 5 was not 64bit OS compatible and for a while I was strongly considering porting it for modern systems. Then I started thinking, maybe I could extended it if I ported it, how neat it could be to add new features into the game. Starting to think on the project as a whole I realized that in a modern language, the game could be written very simply and could probably have a proof of concept ready with a weekends worth of work.
So at this point, we all know what I spent last weekend working on. I now have a very shiny start to a game in the very niche and unknown genre or competitive robot AI programming. I developed the whole thing in python2.7 with no 3rd party libraries needed. I kept the simulation and rendering completely separated with a state-log of every frame in the simulation. The current render engine is a hacked up Tkinter canvas. But any language or drawing libraries could potentially read in and use the replay like state-logs. The bot language itself is a simple stack langue using reverse polish notation and borrows much from RoboWar 5’s language. So adding a new operator is as simple as defining its name, a function that manipulates the stack or the bot, and a dictionary entry mapping the two together. I worked on the game tonight for about 2 hours and managed to add in 9 new instructions. I am poised to make rapid changes in little time for as long as I keep getting good feedback from my users or my creative juices keep flowing.
If you have read this far you are probably wanting to try this game out for yourself. As of right now I am waiting on red tape with EA legal to be able to freely and publicly distribute the game. I can continue to work on it and privately distribute it .If you know me personally, and lets be honest most of you do, ask me for a copy. For a nice download link on this page, I will need approval that this little niche python script will not overthrow the gaming market as a whole and muscle out EA’s market share. Should be an easy sell.