I played Factorio a fair bit before Space Age came out, it's awesome. I played it for ages with my kid, and it's a great tool for having him think about software decisions.
However I hit a wall with the game that has a relation to how AI has upended the programming world.
Basically, I got bored, and it might be because of the automation.
In the early game, you are running around with an axe, manually putting down inserters and assemblers, manually crafting items. You eventually make some assembly lines to automatically build stuff, and the outputs then go into more and more complex recipes for which you need to organize the flow of resources.
Along the way, you gain the ability to build trains to move goods from faraway places. Along with a number of other mechanics that are introduced, this creates a bit of novelty, because you discover some slightly different requirements and you get to exercise your brain in how to connect things together.
But then at some point, you learn how to make robots. Robots can place factory components as well as just moving goods around. You make a blueprint, plonk it down, and then the robots get all the necessary pieces, and place them down for you. This completely alters the game, because a blueprint can have a huge number of pieces while still being modular. There are people with libraries of square tiles encompassing every aspect of the game, that can simply be snapped together like legos.
I got to a point where I was assembling libraries and caring more about building a good set of components than actually wiring things together into a factory. I got an auto-placement mod, which I figured was a bit like predictive text in an IDE, it saves you from having to put down inserters and turn them, that kind of micro thing that can mess up your factory if you screw it up, but is actually tedious.
Armed with my new library of everything and my auto-placement mod, I destroyed my enjoyment of the game, somehow.
I had played the game enough times to understand what was needed, and so I got to a place where I just needed to place down a mall (a special kind of factory that mainly makes components) along with the bus (assembly lines of outputs), and things kinda couldn't go wrong. I didn't do any more of the typical early-game fiddling with making ad-hoc designs, because I knew what would work, and I didn't want to do the micro. I just satisfied myself that a few belts and rail lines would be enough to glue my libraries together, and that was that.
What does this have to do with AI? Well, I hear a lot of people's complaints with AI is that they were no longer actually coding. Without the need to type out anything, the micro is gone. People were already glueing libraries together, but at least there was some delight in writing the little bits of knitting. Now, you can just execute your architecture with a prompt, and the LLM will just do it all for you. There's still a necessity of checking what comes out, but the character of the work has changed.
I very much doubt the fun was found in the physical act of placing units. Instead I’d wager it was in the immediacy of the chaos, and correction of it, as you dealt with the smaller problems — and the micro-optimizations you could apply being involved with every minor detail of the system.
When you switch to blueprints, you move up the abstraction chain; there’s still some optimization in constructing blueprints but largely you’re now just plumbing… chaining together higher level components, simply ensuring inputs == output, and all the microoptimizations are hard to justify because they disrupt your blueprints. The patterns and structures have reduced to only what you’ve specified in your library (where previously you were discovering them out of the many operators the game provides).
But the literal act of placing objects wasn’t the point, yet that’s all the game has become.
Factorio is an unreasonably good metaphor for software engineering. I think what you experience is a simulation without a penalty for increasing entropy and complexity too much, something that isn’t possible in the real world: The more you tower up layers of abstraction and increase complexity, the more the failure rate increases, so you’re incentivised to actively lower it or avoid some approaches entirely. In addition to that, you’re bound by natural resources, and money, in a way that you are not in the game. Finally, and that might contribute to the drain: You’re solely responsible for maintaining all the abstraction layers.
>Armed with my new library of everything and my auto-placement mod, I destroyed my enjoyment of the game, somehow.
it takes a very long time to build a library of everything now with the DLC. and then there are high quality overhaul mods with far more convoluted production chains.
When I start a new game of Factorio, I want the run-around-and-chop-down-trees Minecraft-esque beginning to be over as quickly as it can be. I race to get bots and logistics going as soon as possible. Being limited to only building things that are near my character is something I find very tedious, and bots relieve that tedium almost entirely.
And that lets me focus more on the stuff that I do like to work on in the game.
Figuring out a universal assembler that keeps a list of mundane odds-and-ends in-stock. Working out that shipping from the bottomless seas of Fulgora to Vulcanus where oil is expensive can be a net positive, even though many assume that it must be a bust. Sorting out the unusual steel barrel management problems this creates. Tweaking asteroid collection, and conversion, and eventually working the kinks out of the huge space casino ships that start becoming essentially inevitable.
And the best part of those space factories: Once I have a design that is finished, I can copy and paste it. Replication is simple.
There's other parts that I avoid, like: Main buses. They're efficient, but I tend to lean towards organic spaghetti belts because that's more funner-er for me.
Or trains. I don't use them much. They're cool and all; they just don't usually scratch my itch. They promote vast expansion, but when interplanetary logistics and the space factories are going full-swing then my need to expand on any one planet dwindles considerably.
Lots of people play the game differently than I do and that's perfectly fine. Some people like to program in assembler, and some people might prefer to work in Python.
Others can't even get the syntax right. When they need software written, they can get help from a friend, hire someone to write the code for them, or (with enough of the right kinds of supervision) get a bot to do it instead.
Some people enjoy running around and chopping trees.
It's OK to operate at a very low level. It's also OK to work at a very high level. If the results are rewarding, then chances are good that they're doing it right.
(Anyway, the birds are singing again.)
Very easy to optimise the fun out of Factorio. I have a hard rule: no blueprints carried forward between saves. It's more fun for me to figure out what I can design quickly that kinda works and kinda supports scaling. A lot of the time I'll just build something as a repeatable unit cell and then use copy/paste, skipping the blueprints. I think it's worth trying this out.