Games for Programmers (and Learners)
Games taught me all sorts of things: time management, fast typing, interpersonal skills, dealing with money and economy in general, and even how to read and write. Since I found out how exciting coding was, I turned my attention to the ones that can actually teach programming - and are still fun. Turns out solving puzzles using a made-up programming language inside a video game is as satisfying as solving a real coding challenge in a real environment, and best of all: the skills are transferable!
Compiled here is a list of my favorite programming games alongside a mini-review, in no specific order, for those who code - or would like to learn.
From Tomorrow Corporation, the creators of World of Goo and Little Inferno - which although far from being about coding are very much worth checking out -, comes Human Resource Machine and its sequel, 7 Billion Humans.
In Human Resource Machine, you control office workers that pick up and drop off little green boxes with data on them. To make them do stuff, you write Assembly programs (with cute blocks and graphics), with every level teaching you new tricks and giving you more toys to play with. It does start pretty basic, but later levels can pack quite a punch. Oh, and you name your variables by scribbling on a post-it note, and comments work in the same way.
The big change for the sequel? More people! You now have to command your own swarm of workers, as if you were programming a parallel computer! Naturally, there’s also a bunch of new functions and triggers for added complexity and fun.
The art style follows the same recipe as the other games from Tomorrow Corporation, as does the humor, both on point. The soundtrack does its job, but it can get repeating after a couple hours of play. Overall, Human Resource Machine and 7 Billion Humans are a great starting point for anyone learning or practicing programming logic, no matter the age or skill level.
Any list of programming games has to contain at least one of Zachtronics’ amazing titles. I do encourage you to check out all of them, but I’ll be listing my two favorite ones here. Probably the most “serious” games on this list coding-wise, most of them require you to actually study - PDF manuals in the game files detailing some computer architecture and its language syntax - so you are able to progress through the first level, and later ones can be a challenge to even veteran programmers. They all mostly follow the same recipe, with some spice added to it: learn a new Assembly language; write programs with it that do cool stuff; optimize it as much as you feel like it; share your solution with friends. Also, RTFM.
Exapunks is about hacking stuff to earn money so you’re able to buy medicine and survive. You write code to control EXecution Agents, the EXAs: small robots that are able to get into networks - and even your own body -, and fulfill contracts to “improve” candy production from the nearby factory, change someone’s bank account balance or hijack a highway digital billboard to show neat stuff. Be ready to dive deep into magazines from the 90’s detailing secret functionalities and specific language syntax. Arguably the easiest of the Zachtronics collection, so a great one to start with.
TIS-100 tasks you with powering up your deceased uncle’s old computer, the Tesselated Intelligence System, a “massively parallel computer architecture comprised of non-uniformly interconnected heterogeneous nodes”. Fancy. Write small snippets of Assembly code into separate CPUs that are able to communicate only with the ones adjacent to it. Learn about blocking and non-blocking operations and many other parallel programming quirks, and figure out the machine’s secrets while you’re at it.
A spiritual successor to 2001’s Uplink, Hacknet is at its core a hacking simulator. Of course, it’s quite far from the reality of real pentesters and infosec experts, but it does have some roots on real UNIX commands, ports, firewalls and networks.
You won’t learn much real programming here, but the amazing atmosphere, deep immersion and great storytelling are all there, supported by the greatest soundtrack across all games on this list - it’s on Spotify as well! Moral dilemmas, secret organizations and cool graphics are all just icing on the cake.
Hacknet’s main storyline can be played from start to finish in around 5 or 6 hours, and my recommendation is to free up a night in your schedule to go through the whole experience in a single session. It’s been 3 years since I have done exactly that I still get chills when listening to the last mission’s theme.
The best way to describe this game in one sentence is that it is the closest thing humankind got to a time machine. See, it’s Sunday night, you just had dinner, bought the game, played for what looked like 40 minutes and suddenly the sun is up, class started an hour ago, your friends are calling to check on your whereabouts and Steam says you’ve been playing for over 10 hours straight. No, of course that wasn’t me, why do you ask?
Factorio is a game about automation and logistics. Start small, stranded in a foreign planet with not much more than a pickaxe, a gun, and determination to build a rocket and launch a satellite. Then, craft resources by hand and build machines that can do the crafting for you. Design factories with increasingly complex parts and recipes, avoiding bottlenecks and maximizing output, all while controlling power consumption and protecting your base from alien attacks. Also, nuclear power. Also, trains.
So, where’s the coding? Factorio’s circuit network is Turing complete, much like Minecraft’s classic redstone mechanics, and people are able to do crazy stuff with it, but that’s not the reason for its inclusion on this list. The main game mechanic and goals have a lot in common with real-world programming: you have to plan before you build (code?), and you better modularize it. Otherwise, technical (construction?) debt is real - although, surprisingly enough, tearing down all the work done in the past few hours and rebuilding it, now bigger and better, is way more fun than it sounds. Not coincidentally, the intersection between Factorio players and programmers is fairly big.
As you may imagine, the learning curve is pretty steep (isn’t that true for most of the games here, though?), but learning the basics by yourself instead of watching a bunch of tutorials is absolutely worth it. Once you get into the “just one more thing and I’m done” loop, you’re set.
The game is still in Early Access (Update Aug. 14, 2020: Not anymore! Trailer above updated as well.), but don’t be fooled by it: Factorio is one of those rare exceptions where that is a big plus instead of an excuse. Also, the dev team maintains a development blog with weekly updates, often diving deep into technical details. A favorite of mine is FFF #317, which explains in detail the enemies’ pathfinding algorithm.
You have been warned: it’s crazy addicting, and the replayability is insane. The factory must grow.
Being the most recent title in this list, Satisfactory is, in a nutshell, a 3D Factorio. Still in Early Access (like, real early) and so it lacks many features that would make it deep, but the environments, buildings and creatures are gorgeous and the developer’s community engagement is great. As it’s 3D, it does require a beefier computer than any other game listed here, limiting the factory complexity to a way lower degree compared to Factorio (unless you are this guy). Satisfactory is already a beautiful and fun game and does look very promising. I will be sure to take a second look at it in a few updates.
Programming Games Backlog
Those are the ones that I haven’t immersed myself in enough yet to write a paragraph of opinion about it, but are right at the top of my big backlog of games that I want to get through. They are full of positive reviews all around the internet and so I felt like listing them here as well.
Else Heart.Break(): a mix of RPG, open-world and point-and-click adventure, with a story of love and friendship behind the programming curtain.
Baba is You: a game about logic and thinking outside the box. Not sure why, but it does tickle my fancy in the same way coding does.