Awesome Game: Screeps!

I’m here to briefly rave about this game I’ve been playing called Screeps. This real-time MMO AI programming strategy game has managed to get me to spend the last 4 hours writing and tinkering with my own game AI, code, which is deploayed into a substantial persistent universe populated with every other player in semi-competition. A brilliant concept, made by these dudes in Russia.

It’s the best experience I’ve ever had playing around with JavaScript (which, I’ve actually been wanting to work with again for my next project… the last one having been a simple WinJS app back in the WIndows 8 days…). and like software development, a highly satisfying experience when things just work, and an agonizingly annoying one when things don’t work. But whatever your JavaScript skills are today, this game will make you better. (The “CPU” and “memory” quota limitations imposed by the game encourages efficient code.)

Out of my time with this game, I hope to practice development patterns for autonomous agents and to start working with swarm AI behaviors. And of course, as a side benefit, practice JavaScript, which I’ll be using with node.js in a future project! At some point, I hope to apply some of what i learn here in practice in the real world, possibly as we develop drones for defensive purposes.

Now, onto the game…

Simple interface, but insane freedom

The game itself features a simple 2D GUI that can be run in a window or from the Screeps website, where it renders in a browser. You can actually view the world without being a member, but to participate in the persistent universe, there is a paid subscription of around $8 / month (I haven’t decided if I’m going to continue after the first month). It’s cheap though, and as long as it provides me entertainment, I’ll continue to play. The game in the browser scales incredibly well – I even managed to get it loaded on my phone, though the touchscreen didn’t lend to a good experience.

Since you don’t control the units via the GUI, but rather, through code, the bulk of your time is going to be spend in the IDE, tinkering around with your unit and colony behaviors via Javascript code. Finally putting my Game AI programming concepts to use!

I’m pretty proud of my little colony so far; it’s like managing my own colony of ants. Brings back old memories of playing SimAnt as a kid.

The competitive aspect is perhaps the coolest part; very evident even within our own group of “novice” players that there those which are more engaged than others. While their code isn’t visible to you, being an open world MMO RTS, you can see every other player and room. For a few of the more advanced empires, I’ve been trying to reverse engineer useful behavior algorithms to see how to create a general purpose empire expansion code base. AI programming indeed!

Procedurally-generated rooms, mostly. Some substantially better than others. Each symbol denotes a different player’s territory. Because We’re in the “green” novice zone, the massive empires looming just outside can’t touch us. Yet…

I’ve always loved learning with an objective, and the framework of this game is an excellent way to focus on logic. The survival element encourages experimentation, and though I’m still early in the game, I decided to break the peace and send out a few of my “defender” units. You’re competing with every other player in real-time–basically your code vs. theirs, so I figured that I’d want to hone my little empire’s abilities to eventually advance beyond it’s “novice” borders. I went into the nearest player’s base and annihilated their walls, workers, resource storage, and “spawn” (which is where new units are created). This leaves the control point to slowly decay, until my own colony units area able to take over.

Attack!

Such slaughter is the cold work of empire building, though, it looks like, to survive, I’m going to need to know how to fight and grow beyond my own box.

AS for the scale of the game’s persistent univserse, so far, it is massive. The below screenshot is just a tiny segment of the scroll-able space, so it’s a huge amount of virtual territory, though of course, it would have to be, since it includes every other player in this single instance. I can’t tell how much further it will scale though, since right now, the game seems to crawl at around 5-10 seconds / tick. They’ve shared their infrastructure details, which is actually a fascinating read, though, perhaps, they could do something to speed the game up, maybe 2-3x.

My “empire” is but a tiny colony among a massive ocean of empires. Better get coding..