By Tech Elevator Instructor Matt Eland
Programming is fun. Making things that work and iteratively building and improving things can be a very engaging experience. In fact, programming can be every bit as fun as gaming – or more. Programming and gaming can have a lot more in common than many people think. In fact, many developers get into programming after growing up playing games. The same skills and tools you’ll learn to earn a paycheck as a developer can be applied to hobbyist (or paid) work on games using modern game engines like Unity.
As a software engineering instructor at Tech Elevator’s 14-week programming bootcamp and someone who learned to love programming as a kid through playing games I’ve had an urge to share my thoughts on the relationship between games and learning programming for some time now.
In this article, I’ll share a non-exhaustive list of some of the many games out there that tickle the same muscles as solving programming problems. If you’re already a programmer, there’s a good chance you’ll enjoy many of these titles. If you’re not a programmer yet and are curious to see if it’s a good fit for you, these titles may be a way to dabble with some of the same muscles.
I’m focusing primarily on games intended for entertainment, not games intended for education, though I’ll close by highlighting some of those. Instead, I’ll identify groups of related games that trigger the same types of muscles. For each group of games, I’ll briefly describe it, then discuss how the game relates to programming.
Let’s get started!
At the very top of my list is a trio of games that many might not originally think of as programming-related at all.
Factorio is a wildly popular top-down factory automation game about setting up a growing network of conveyor belts, factories, and mines as you seek to automate the extraction of resources, production of components, and assembly of more and more advanced things – all while fending off native alien life that doesn’t like your factory very much.
What I love about this game is that your creations rapidly devolve into “spaghetti” with conveyor belts snaking everywhere around your factory. Things start out simple, then become hard to maintain – leading to improvements, refactoring (changing the shape of something without changing its behavior) and showing you the maintenance cost of innovation.
All of this is very applicable to building growing programs: we learn how to build good programs by seeing what doesn’t work trying to build many smaller programs. The same holds true for Factorio.
Dyson Sphere Program
Dyson Sphere Program is essentially a 3D inter-planetary version of Factorio. It’s amazing and triggers all of the same reactions that Factorio does, though it does so without the constant alien nuisance attacking your factories. What’s more, Dyson Sphere Program subtly encourages you to think about a large system as a collection of smaller subsystems by introducing the idea of one factory per planet and allowing planets to transport resources between each other. This helps you see how different components in a larger system can interact and support each other.
Dyson Sphere Program is currently in early access, but is already a very well-polished game.
Learning Factory just recently launched on early access game, and can best be described as Factorio, but with cats and artificial intelligence theming. As of the time of this article’s writing, this game can best be thought of as a playable demo, but it already has a lot of promise and is rapidly growing.
Your factory gets a steady queue of cats looking to purchase specific products in a store. You must manufacture and supply these products to the store using traditional conveyor-belt mechanics.
Where this gets interesting is that different cats want different things and at different prices, so you want to try to optimize your income by setting prices accordingly.
The machine learning themes come in with the game providing you with linear regression machine learning modules and related nodes to connect to individual stores. With these components, you can watch the algorithms at work trying to predict the price demand of things and calibrating their prices accordingly.
What’s impressive to me about this one is that it tries to teach you a broad set of Artificial Intelligence / Machine Learning (AI/ML) concepts in a fun way, and even includes a lot of educational links about related topics.
Light Coding Games
Okay, those were fun, but now let’s get a little closer to programming.
Autonauts is a resource management and automation game about building a colony capable of supporting humans. You craft and program a series of robots to mine, chop down trees, transport, and assemble materials. This is done using a visual script editor that’s very closely related to actual programming commands.
Like Factorio and related games, this highlights how things can become hard to understand as they get bigger, but the additional presence of programmable logic allows you to make more complex things as well as robots that work well together.
Human Resource Machine
Human Resource Machine is a cute game with dystopian undertones. In Human Resource Machine you focus on building sequences of commands to accomplish an arbitrary task.
This is a good game for understanding how programs think in terms of individual methods. However, the style of code it encourages is more akin to what programming was like 40 years ago than what it is today. Still, it remains a fun puzzle game that incrementally teaches programming concepts in an entertaining and incremental way.
7 Billion Humans
7 Billion Humans is the sequel to Human Resource Machine and focuses more on algorithms that coordinate work between multiple agents whereas its predecessor focused on controlling a single person. The difficulty curve doesn’t accelerate as quickly as its predecessor, and the skills learned are arguably more applicable to modern program design.
Automachef is a different sort of game. You act as a designer of a robotic kitchen needing to construct increasingly complex meals in a timely manner for a growing queue of guests. While it is light on programming compared to some other titles on this list, it does act as a challenging game about time and energy optimization, making things work together, and doing what you can with a fixed amount of space, energy, and time.
Lateral Thinking Games
This is a list I could only come up with a single game for – it’s that different of a game.
Baba is You
Baba is You is a lateral thinking game about redefining the rules of the game world.
This is a puzzle game about pushing words around to form declarative sentences such as Wall is Stop or Star is Win. Your goal is to change the rules of each level to allow you to meet the Win condition. The art style is minimal and retro, but the gameplay is so uniquely like the abstract thinking we do in programming that I strongly recommend you check it out.
These games emulate what it is like to type commands into the terminal and see things happen, then use these skills to intelligently target and try to breach imaginary computer networks and systems.
Disclaimer: This author and Tech Elevator does not advocate for any malicious use of programming skills, including using skills to hack or attempt to hack into systems. Intentionally trying to compromise systems that do not belong to you is an offense that is punishable within the legal system.
Hacknet is a stylized game about breaking into networks, stealing files, and erasing all traces of your presence. That said, a lot of the concepts it represents are somewhat accurate from this author’s limited understanding of that world. Playing Hacknet will help you think more about network and system security and get you more comfortable running commands in the command line.
I have not played Grey Hack as much as I have played Hacknet, which is an obvious inspiration for Grey Hack, but Grey Hack looks to be a more authentic version of the same concept – down to having a fairly well-implemented Linux command line interface built into the game.
I would argue that Grey Hack might be the best game out there for getting familiar with the command line, and it contains both a single player mode as well as an online multiplayer mode.
Some games are not content enough to have programming themes or problem solving in them. Some games insist on using programming as their central mechanic. These games are awesome, but they tend to use programming languages that are no longer as actively used as modern programming languages.
Shenzhen I/O is probably my favorite programming game of all time. In this game you install microprocessors on circuit boards and program assembly instructions into these processors, allowing them to communicate with other microprocessors and send some output signals.
The game is incredibly well polished and makes the dreaded task of programming in assembly a fun and entertaining experience. Space on each circuit board is limited, as is space on each microprocessor which forces you into tradeoffs between space and performance.
This is a different flavor of programming, but by forcing you to think about the individual microprocessors, the game teaches you the concepts behind different methods or functions in programming languages as well as the interaction between hardware and software.
TIS-100 was made by the same creators of Shenzhen I/O and is awesome for many of the same reasons. While it doesn’t have the same aesthetic value that Shenzhen I/O does, the gameplay remains fun and entertaining and the focus is even more on the code and the individual “methods” or blocks that the user interacts with.
EXAPUNKS takes on a slightly different tone and focus than the others in this category. The goal of this game is to write programs that can work with swarms of bots and fulfil tasks that appear to be simple on the surface. I think of Exapunks as a blend between 7 Billion Humans and Shenzhen I/O where you write assembly-like code to control a swarm of little bots.
This is one I’ve not played in as much depth as I would like to, but the polish is very nice and the algorithm and programming concepts are spot on.
Artificial Intelligence Games
Now we shift gears a little to talk about games strongly related to artificial intelligence (AI) and machine learning (ML) concepts.
Gladiabots is a game built around behavior trees.
Behavior trees are an artificial intelligence technique found frequently in game design and are essentially a hierarchical list of prioritized tasks. If an AI agent cannot perform a specific task given its current context, it looks at the next qualifying task. In code, these are represented as if statements, but in a behavior tree, they look like a hierarchy of conditions and tasks read top to bottom, left to right.
Gladiabots uses behavior trees as nearly the sole way that the player interacts with the game. In Gladiabots, you pick which class of combat bots you want to go into battle for you and assign each one a behavior tree to execute. It is your responsibility to build that behavior tree in an intelligent and responsible way that helps your robots win fights against pre-programmed enemies or those defined by other players.
while True; learn()
while True; learn() is an interesting game that almost appears to be the result of what happens when someone says “What if we made a game to teach people about the various flavors of artificial intelligence / machine learning (AI / ML) that are out there today?”.
The core gameplay is around arranging components that will take in a series of inputs and sort them into the appropriate output slots in a timely manner. Along the way, the game teaches you about various classification methods, scalability / parallelization, genetic algorithms, neural nets, and where to learn more about every component it introduces.
This game is clearly a labor of love towards AI / ML topics and very much worth checking out – as well as its sequel, Learning Factory which was mentioned earlier in this list.
Programming Management Games
Now that we’ve looked at the code side of things, let’s talk more about the management aspects of programming.
Startup Company is a game about launching web applications and then scaling up to larger markets. You start small with just one employee, but as you launch a website and then add in more features to it, you add developers, lead developers, marketers, artists, DevOps professionals, recruiters, and more.
The actual gameplay involves individuals cranking out a queue of assigned tasks to generate components which you can then use to improve, optimize, or add new features to your products. As you build out your products and your usage grows you need to focus more on optimization and opening your own data center, then expanding the web, database, and cache capabilities of that application.
All of this is very much like the real world. For me, the game is most interesting in the first half of the life of a company, but Startup Company is a fun game that will get you thinking about software organizations and growth.
Software Inc. is a much more detailed simulation of software development organizations as you launch new products and technology changes over time. This is very much a business management simulation mixed with a building simulator as you focus on providing facilities for your growing team. The graphics feel a bit crude at times and you may need a tutorial to get started, but the depth is there if you can get past the learning curve.
Mad Games Tycoon 2
Mad Games Tycoon 2 released just recently and hits a “sweet spot” of an attractive and appealing game without a huge learning curve and with a decent degree of depth. This is focused on game design first and foremost but has a decent bit of depth as a management simulator.
This game won’t get you thinking like a programmer, but this will help you understand the context of programming and games in a fun way.
The last category of commercial games I’d like to talk about is the “sandbox” style building games that incorporate aspects of programming concepts.
Oxygen Not Included
Oxygen Not Included is a 2D colony management simulator set inside an asteroid. Your colonists arrive inside of an asteroid and must find ways of growing food, recycling / purifying air, managing waste, providing clean drinking water, preventing germ outbreaks, and managing the extreme heat and extreme cool from areas around the asteroid.
What’s really interesting about this game is the simulation of gasses and liquids and how certain gasses will rise and sink accordingly and slowly cause problems for your colony.
Oxygen Not Included also includes aspect of automation, power, and other systems that should appeal to programmers.
This is a game with a high learning curve and a lot of interacting systems, but figuring out those systems and managing them touches on something very close to programming larger projects.
Stationeers is a game that has remained in early access for the last few years, but still manages to shine. You play as an astronaut on a planetary body of your choosing (start with the moon or Mars) and you must work to build yourself a habitat where you can grow food before you starve. You must manage heat, oxygen / CO2, and power as you try to stay alive in a complex environment.
There is a heavy emphasis on electrical wiring (including worrying about voltages), pressurization, pipes, filtration, and logic circuits to control automation. The game even has an integrated circuit editor which acts as an in-game assembly-style script editor.
While the game is very hard, that can make mastering technology in order to survive even more rewarding.
Minecraft is what you make it. While there are plenty of educational uses of Minecraft, I want to highlight the modding community and particularly the folks at Feed The Beast (FTB) who have been assembling high-quality packs of related mods for Minecraft for over a decade now.
Feed the Beast takes high quality and stable mods and packages them together into a single game that is known to be free of configuration issues. Essentially, they take the best of the best mods out there in Minecraft, help the mods work together, and bundle it together is a comprehensive pack for users.
Inside of these packs you can do whatever interests you – build an automated ore refinement, processing, and storage system, create a vast electrical power generation system to power your factories, automatically plant and harvest crops, etc. There are even mod packs out there that emulate real computer systems with complete scripting languages. I’ve actually found myself writing code in Lua inside of an airship in a Minecraft world.
Modded Minecraft is all about identifying your biggest current pain, finding an automated solution for that, observing what new problems may have arisen, and then solving those problems:
I need more ore? Okay, let’s build an automated mining drill. Okay, the drill is eating up all of my electricity? No problem, let’s create a wind turbine farm to power it. Great, now the drill is working, but I’m getting all these other resources that are clogging up my storage systems and I don’t know what to do with. What can I use this for?
This is a game that will suck you in, but if you love iterative development and refinement of systems, this might be the game for you.
Educational Programming Games
Finally, I should mention a few of the many fine games out there intended to teach a specific programming concept. These are games aimed at new developers trying to learn specific concepts, and every one of them is worth checking out.
• Code Romantic – A story-based introduction to C# code
• CSS Diner – An introduction to CSS selectors
• Flexbox Froggy – An introduction to CSS flex layout
• Grid Garden – An introduction to CSS grid layout
• Cube Composer – An introduction to functional programming concepts
Although this list was long, I’m sure I left plenty of good games off of it. I’d love to hear what you’d add to it. Please chime in in the comments or hit me up on Twitter at @IntegerMan.
If you are a programmer already and enjoy aspects of your job, there is a good chance you’ll like at least some of these games.
If you are not a programmer yet, give some of these a try; they may help you decide if this is something of interest to you. Don’t worry if you can’t beat these games or progress too far; Some of them are hard even for professional programmers and programming is a constant learning and growing journey.
If you think programming might be for you, Tech Elevator offers a free online aptitude assessment as well as in-person and remote 14 week programs to help you formally skill up and get into the field if you’re interested in pursuing programming as a profession. We also have a number of learn to code resources available for free, including a workshop / tutorial series I authored on getting started with C#.
And, if you love games and want to write your own, you can use these same skills to create or modify games. Many Minecraft mods are written in Java and Unity game development is typically done in C#.
These skills can also be used to build web, desktop, and mobile applications to empower individuals and communities. What you want to learn and what you want to build is up to you.