I am currently working on a real time strategy coding game where players develop an artificial intelligence (AI) and can compete against the AIs written by other programmers. It is intended on one hand for beginner/intermediate level programmers who already know most of the basics and are looking for a fun and engaging way to gain further practice, but also for anyone else who enjoys coding and is interested in gaming or AI. There are a lot of great programming games out there already, but I haven’t found one which quite does everything I want. Specifically, I have the following goals:
- Easy to get started with: Writing a simple but fully functioning AI should require only basic programming skills and a few dozen lines of code.
- Stimulate creativity: Rather presenting the player with restrictive goals that allow only very specific solutions, there should be many different ways to improve your AI and advance to the next level. It should also be possible to make a lot of progress without the application of deep mathematics or complicated algorithms.
- Strategic depth: While I want the game rules to be relatively simple, they should still allow for varied and complex strategies that make the game itself appealing and interesting in the long term.
The game will feature game mechanics similar to RTS games such as StarCraft. The players spawn in a 2D world with some initial amount of resources, which can be used to construct new units. Those units may collect additional resources, fight your opponent or perform some other supporting function. Each unit will be composed of several modules. Each module will equip the unit with some specific attribute or skill. The initial design will include modules for firing projectiles, transporting resources, building new units, boosting unit speed and absorbing enemy projectiles. This will still change as I test out different ideas and get feedback from users. The main goal is to find minimal set of modules that gives a simple API and still allows for many meaningfully different units and rich strategies.
The players will interact with the game by writing a program that uses a high level API. All in game units can be controlled by giving them commands such as moving to a certain position, firing weapons at a target, harvesting a resource etc. The game will execute all the commands and then send messages on all events that occurred during that timestep (i.e. some object enters the sight radius, a unit is hit/dies). My implementation uses Scala, so the API will initially be for Scala/Java only, but I want it to be possible to write wrappers for other languages as well.
The game will include a succession of levels, each of which features an increasingly sophisticated AI as an opponent. I am also planning to have a multiplayer mode, where you can compete against the AIs of any other players. The players will run their AIs locally without modification, but the commands will automatically be sent to a server which maintains the world state and sends events back to the players.
So far I have been working mainly on the game graphics, which are based on OpenGL. That part is already largely finished, and will be presented in my next post. Expect to see a large number of screenshots!