Factorio, A Practical Teaching Tool

Victor J
Vicas Likes Games
Published in
5 min readJan 2, 2017

So this is a bit of a late entry into the list, considering that I bought Factorio on a whim Christmas day, and realized it might be useful on my 7 hour plane flight for vacation.

I was, in fact, correct.

Factorio is a sandbox game about starting with nothing but your bare hands and crafting your way up to a spaceship, fending off alien attacks and making sweet train lines. The depth lies in its fully automatable craft system: literally everything in the game can be made by assembling machines, assuming you can get the proper materials to it. And have a place to put the finished items afterwards, so the machine doesn’t back up. And your iron-gear machine doesn’t eat up all your damn iron plates halfway across the factory, making it impossible to make these goddamn circuits, fuck.

Rather than being a perfunctory tack-on that simulates progress, Factorio’s crafting system is its entire game. If you want to make green science, the second tier research material required for the majority of techs in the game, you’ll need a piece of conveyor belt and an inserter machine. Conveyor is easy; it just requires some iron plates and iron gears, made directly from plates. Inserters, though, require iron plate, iron gears, and electronic circuits, which themselves are made from iron plates and copper cable, which is made from copper plates.

You can craft a green science by hand in about 9 seconds, assuming you have enough iron and copper plates on you, and that’s fine if you only need 10. But what if you need 100? Or 500? Or 1000? You need assembling machines for each of those parts I listed above, not to mention enough furnaces to pump out the 5.5 iron plates required for a single green science. Maybe you automate it in a hacky way and it gets you through the first few techs, but you slowly realize your implementation can’t possibly scale, and you’ve already built around it and really can’t expand here, so you build a completely new section and run 3 miles of conveyor belts to connect them, but now you aren’t making enough copper to keep up and the whole section you just built is useless, argh.

Playing Factorio for the first time is about making decisions you can’t possibly foresee the consequences of, when you don’t even know what you’ll be required to make as you go along. Sometimes you need to completely blow up your current setup because something else needs to expand really badly. Sometimes your setup is so entrenched that trying to redo everything feels like an impossible effort, so you expand into another area, making everything a little more awkward and difficult, or just bear with your current setup even though it’s slow.

And really, this is where Factorio’s roots in programming become obvious. Anyone who has had to design a decently sized program has seen a function or process that worked fine on a toy example fall completely apart when you try to plug it into the bigger piece, and realized that their entire workflow for the program is flawed long after it’s too late to really change it. The parallels are impossible to ignore, but at the same time the lessons it teaches are applicable in much wider contexts than just programming. Large projects in any field have a natural tendency towards chaos, and especially the application of band-aids that make life a little bit worse every day for the people who maintain the product.

Anyone who has worked at a job with a deeply entrenched system that no one likes but everyone puts up with can feel this situation deeply. Factorio is a game about how complicated systems fall apart as their requirements expand, and how holding everything together takes an extreme amount of effort and foresight very early on, because every mistake compounds every other mistake and just doing your job turns into an awful slog.

You were thinking of this https://www.youtube.com/watch?v=N9-7uLg-DZU, don’t lie

What I really love about Factorio is how carefully it builds up these systems. When you unlock railroads you add a completely new layer of complexity to your factory, and oil requires comprehensive pipe systems that don’t allow you to just pick up spare materials, making every single pipe placement matter. Each new system is completely different from the last, and the only way you can possibly juggle them all (just like in software development) is by developing good first principles, trying to plan space ahead of time, trying to see in your mind how your various sub-systems will link up with the next sub-system in the chain and also how they’ll link to each other. After all, if your setup requires a super-specific input that dead-ends every conveyor belt going into it, how do you expand when you need to produce more?

Factorio forces you to make extremely practical decisions about when it’s right to just do your work by hand (I have this wood in my inventory, might as well make these electric poles by myself), when you should set up a simple process outside of your full-blown workflow for something (I need 2o engines for this diesel locomotive, but I’ll only need 2 or 3 of those for now), or when you truly need to make a tested, peer-reviewed system that you can let run forever without your input because it will be the backbone of your entire system (I am literally drowning in electric circuits, please send help, I’m going to die). As a programmer this is literally my job, and Factorio is really good at training me to make these decisions in a safe, playful environment.

On a bit of a side note, I really like that the free-play mode has a set goal, to launch a satellite into space, which essentially requires you to interact with most systems in the game but gives you complete freedom to do it in any way you want. I tend to be really bad at setting my own goals in a totally free game, like Minecraft, but having that big picture goal to aspire to is great motivation for setting smaller goals and planning exactly how I’ll get there. I’m a very good problem solver, but very bad at finding my own problems to solve, so even a slight nudge like “launch a rocket” is enough to spur me onward throughout the entire game.

If you want to teach yourself how to better organize complex projects, scale up your neat little ideas to something others can use, and just plan ahead, Factorio is a great helper. If you’re somewhat familiar with programming and want to get better at modularization and other good software design techniques, this game reframes those problems in an extremely fun and engaging way. While technically still in Steam Greenlight, it is already a complete game that is constantly having features added. It’s a great game to get lost in, and even feel like you’ve accomplished something as your production lines get tighter and more robust. Can’t recommend it enough.

--

--