
Factorio and Software Engineering - nindalf
https://blog.nindalf.com/posts/factorio-and-software-engineering/
======
kentonv
> a certain component (electronic circuits) was being produced in 4-5 places.
> I eventually replaced them all with one centralised production array to
> simplify the factory.

Nah, electronic (green) circuits are high-volume but low-complexity to build.
They are a good example of something that should _not_ be produced centrally,
because if you do, you have to invest a lot in high-volume transport to get
them where they need to go. Much better to build dedicated electronic circuit
factories wherever they are specifically needed.

Silly analogy to programming: Microservices. It makes sense to have a
microservice to perform, say, user authentication, which is complex and only
needed occasionally. It does not make sense to have a microservice to
implement printf formatting, because you'll be calling it way too often and
it'll waste a ton of network bandwidth. Better to import a string formatting
library into each service.

~~~
cortesoft
Nah, as others have pointed out, green circuits are used everywhere. Since
they meet that requirement, the only thing else to ask is, "Do the materials
take up more or less space than the item produced?"

For green circuits, it takes less transport to move the green circuits than to
move the materials to make them, so you should make them centrally and
distribute the circuits.

Copper wire, on the contrary, is used in many things but takes up more space
than copper plate, so you should make it locally.

~~~
kentonv
If belt networks were only about capacity, sure. But you can't put two
different kinds of things on the same belt lane without creating some serious
trouble. So, the more different kinds of things you want to transport by
belts, the more parallel belts you need. Plus, you need those parallel belts
early on, even before any of them are running at capacity.

I find it much easier to lay down just iron/copper belts and upgrade them as
needed -- upgrading speed in cases where adding parallel lanes is
inconvenient.

~~~
cortesoft
Sure, but this is only an issue if you need less than a full belts worth of
green circuits... if you remove that belt of green circuits, you are going to
have to replace is with MORE than one belt of raw materials.

~~~
llukas
On full scale it is about trains worth of green circuits.

------
avalys
This week I’ve both been playing Factorio, and writing code for a new
application. So, lots of figuring out interfaces, architecture and modularity,
and how things will work together.

When I change from one of these activities to the other, I have the distinct
mental impression that I’m not switching activities at all. When I switch from
Factorio to my text editor, it’s such a seamless transition, as if I’m just
scrolling to another part of my factory.

Not a sensation I’ve had with any other game, or any other pair of distinct
activities, really.

I figure it _must_ mean Factorio makes me a better coder. I better get back to
it, then!

~~~
Shorn
This is one of the reasons I _don 't_ play Factorio, or games like it. The
point of playing games for me is escapism and rest/recuperation. I feel like I
only have so much programming time in me - I think playing these types of
games makes me less likely to do some real work.

Plus the "achievement high" is much less; at the end of the day, when you
win/do well - you know you're supposed to feel that way, the game was designed
for you to win.

I like to sometimes just browse around in my side-project's UI or even
codebase and appreciate what I built. Of course, you have to be in the right
mind-frame for that. You don't want to go looking for your achievement high
and end up thinking "Wow, all that effort and this is all you have to show for
it?"

~~~
avalys
I tend to agree with you - but actually I love programming itself and I could
do it all day without getting tired. The things that tire me out about work
are poor documentation, inconsistent requirements, team politics, other
people’s mistakes, compiler errors, version conflicts, the stress of having to
deliver by a deadline or having other people depend on me, etc.

Factorio has none of that, it’s just a constant stream of positive mental
stimulation.

~~~
Shorn
I guess there's a few parts to it, for me.

There's "the itch" \- the desire to program, to build something. Which I do
find coding-style games tend to satisfy (so there's the fear I will have
lessened motivation to work on my side project).

Then there's the "focus" side - I still love programming (and consider myself
blessed for that). By "only have so much programming in me" I meant more "I
have a limited ability to deeply focus within a given day/week". So I don't
want to be thinking too hard when I game - I want to lose myself in the flow
specifically without having to concentrate too hard (I find books/movies and
playing hockey are great for this too).

Please note, I'm not arguing with anyone here - I guess I'm just talking out
loud. It's not my intention to denigrate Factorio-style games in any way.

------
cortesoft
Some of the areas the article leaves out are around throughout and
bottlenecks... you are often limited by particular resources, and the ability
to get them to the end of your factory line (I.e. the belts are saturated at
the start of the line, but empty by the time they get to the new section of
the factory)

Another interesting thing you learn is about a form of 'buffer bloat'
(although it behaves differently than traditional network buffer bloat)

Essentially, having too much of a buffer for resources can cause inefficiency.

Say, for example, that you notice you are producing more green circuits than
you are using. A naive response is to try to store them, so that your green
circuit factories are running at full speed, and then when your need for them
increases you will have them available.

However, this has two downsides. One, it will pull resources away from things
you actually need in order to keep making more green circuits, even though you
have more than you can use right now anyway. The copper that could be going to
manufacturing the item that is your current bottleneck is instead going
towards something you have too much of anyway.

The second issue hits you on the other side... when you DO start using more
green circuits than you are producing, you won't notice until your issue is
very severe, because you will have been using your reserves for quite a while.
By then, you will have to increase your production a lot to make up for it...
which might put a different resource out of whack.

The trick is to let the factories overproducing to backup production and
stop... let that back pressure behave as a natural production regulator, which
will make it much easier to have a factory that always works as efficiently as
possible given your current raw material production.

~~~
krallja
Yep, the only places that I ever really need a buffer are train stops, power
facilities, and times when you can't use a byproduct just yet (more-
complicated refineries before you get your circuits tuned just right).

One thing I just realized this week is that a power generation buffer needs to
alert me on the very first swing of an inserter from a buffer chest. If the
coal/solid fuel line isn't completely compressed, that means the doomsday
clock has started ticking.

~~~
eric-hu
I recommend avoiding steam buffers when you go nuclear. I had a setup with
multiple storage tanks to hold steam, and that had buffer bloat because
fluid/steam is hard to evenly distribute across many paths.

~~~
cortesoft
To be efficient with nuclear, though, you need steam buffers... nuclear power
can’t stop burning fuel once it starts, so unless unless you are spending all
the power as you generate it, you need to store it. Burn a unit of fuel, store
all the steam, and then don’t put more fuel in the reactor until the steam
level goes below a threshold, then repeat.

This is especially true because you want to have a group of four reactors
together for maximum efficiency, which generates a crazy amount of power. You
spend more time not generating more heat and just living off the steam storage
than you do burning fuel.

~~~
infogulch
Ok, but it isn't worth it. Yes, you get more "power value" out of nuclear fuel
if you ration it. But even if you overbuild your power by 2x your current
target load and let the extra go to 'waste', your ore reserves will still
likely give you many hundreds of hours of power.

I've tried and made many buffered, circuit-controlled, meticulously fine-tuned
power plants that are optimized for fuel conservation and they always have
some hitch or edge case where they act erratically, or the steam is not
balancing, or the reactors cooled down too much, or... (Or you're lategame and
you outscaled it too far and need to eke the UPS back.) And is the moment when
you're under siege and losing losing power really the best time to be
debugging that 30-combinator fuel-optimizing circuit network you picked up off
reddit and randomly modified until it seemed to work? Right.

A challenge: calculate how many hours the total amount of ore you are willing
to mine will last you. If you maximize efficiency through productivity modules
-- even gradually -- I bet it will be hundreds if not thousands of hours.

So you make a trade: a small fixed increased cost in fully automating and
maximizing nuclear fuel production in exchange for the benefit of _vastly_
reducing the complexity of construction and operation of your primary power
production facility. No tanks, no circuits, no buffering -- instead, full
automation and productivity for fuel production and 100% power all the time.
Give yourself a(n automated) backup chest or two of fuel nearby for days
(calculate it!) of time to deal with fuel production problems. Would you even
have that much time if you burned all the coal in the same area?

I would take a trade like that every day.

~~~
willis936
>meticulously fine-tuned

On what planet is a bang-bang controller considered a fine-tuned control
system in an automation game? The only simpler system is proportional.

The point of doing it isn't necessarily for some maximum efficiency, but
because it is the only problem in the entire game that could even ask the
player to make a control system, which is a very fun thing to do.

~~~
eric-hu
If you build a controller for a single nuclear reactor, a bang-bang controller
is indeed pretty simple once you know how to build an SR latch.

Scaling that to multiple reactors becomes complex because you can no longer
control reactors independently and still get adjacency bonuses from them
operating together. Further, there are complexities from emergent behavior
that you have to control for. Steam turbines, like steam engines, auto scale
steam consumption to power demand. The problem is they don’t do it uniformly.
If you have 2 turbines attached to 2 tanks and you only need 1, the game might
consume all of 1 tank first, leaving you with the 50% burst capacity. It
becomes a big problem with day/night cycles and solar/accumulators in the
grid.

I never tried to balance this, but I suppose it’s possible by building a
circuit to link together all tanks and shut off their flow when one‘s storage
deviates too much from the average. This sounds really complex to me and not
worth it.

I’ve explained to the best of my understanding of the game engine’s behavior,
but I know that fluid mechanics is also inaccurate and complex to design for.
There’s a known issue with flow behaving asymmetrically. One reason is because
the game updates state in a certain order, so water and steam flow with a bias
for certain directions (n, s, e, w).

Also, thanks for teaching me a term from control theory (1)

(1)
[https://en.m.wikipedia.org/wiki/Bang–bang_control](https://en.m.wikipedia.org/wiki/Bang–bang_control)

~~~
willis936
Ah individual control of a large array of reactors is trickier. I think the
bang-bang controller with keeping all reactors synchronized has good legs, but
it stops scaling well at some point. If the buffers become the limitation and
you don’t want to run all of the reactors synchronized then a PID controller
would be a good pick. The output value would choose how far up the row of
reactors you enable. If you could force max load on will, then loop tuning is
a possibility.

To maintain the simultaneous reactor bonus, you would want to keep the fueling
cycle synchronized and just adjust which reactors are enabled each cycle. This
can be done with a clock that has a period of one fuel cycle.

One interesting thing is that due to the nature of reactors, you will have
higher efficiency in running more reactors if your buffer does not run out. It
might be possible to eek out a little more efficiency if you fall back to a
bang-bang controller in low load scenarios (making sure the threshold and
number of reactors used won’t overfill the buffer, which is practically
unlikely in low load scenarios). I would have to experiment with this a bit
more to see if it’s reasonable to capture more efficiency.

All of this is practically orthogonal to the standard players perception of
efficiency, but I find it fun.

[https://en.wikipedia.org/wiki/PID_controller](https://en.wikipedia.org/wiki/PID_controller)

[https://github.com/quchen/articles/blob/factorio/factorio/ci...](https://github.com/quchen/articles/blob/factorio/factorio/circuitry.md#pid-
controller)

~~~
eric-hu
Fascinating write up! Thank you for sharing!

------
bcrosby95
Playing Factorio certainly feels similar to some kinds of Software
Engineering.

But I don't particularly like the comparison because a huge thing about
Factorio is the restrictions on physical layout. Due to this physicality it is
very expensive to refactor in Factorio, you are going to be working with more
components working together at the same time, and the fine details matter way
more on every level because if you're off by a single tile, it all comes
crumbling down.

Because of this, in Factorio you really cannot refactor your way to a base
producing something at a new rate in Factorio. The only method is to design a
brand new production line from scratch and rebuild - basically, all you have
is waterfall and rewrites in your toolkit.

~~~
infogulch
I don't find this to be true once you have automated production of all the
buildings and use construction bots. Combined with the recent(ish)
improvements to blueprints, blueprint books, and cut/copy/paste makes fixing
those off-by-one errors quite painless: 1. Ctrl+X to cut and auto-deconstruct
the build, 2. Ctrl+V to paste in the correct place, 3. Go fix something else
for 2 minutes. :)

~~~
nindalf
It's possible they didn't reach construction robots yet. The game becomes more
interesting once they allow you to refactor with ease.

------
pharrington
This essay highlights my core impression of Factorio that's kept me on the
fence about buying it - it certainly looks like a fantastic game, but since I
already enjoy designing programs and coding, every time I consider trying it
out I just tell myself, "I'll just open up my text editor" instead. Is there a
good selling point to push people like me past this mindset? Or is the game
probably just not for me?

~~~
jl6
Factorio is like a distillation of programming so as to retain the fun parts
and minimise the unfun parts.

What do I mean by the unfun parts of programming? Real-world stuff that you
inevitably have to deal with but which distracts from the core purpose.

Things like: discovering a bug in a library you depend on; dealing with
hardware issues; changing requirements; disagreements with colleagues over
tooling; deadlines; dealing with users; ...

~~~
marcodave
I was just thinking... what if Factorio it's the perfect waterfall project?
clear and unchanging requirement (build and launch a rocket), infinite time,
infinite resources, perfect technology. The only bugs are those attacking you
from time to time. The only thing left to do is to implement the solution, in
whatever manner you please, as long as the requirement is met. Maybe that's
what keeps a programmer so addicted to it; with no stress of changing
requirements, or pivoting, or deadlines, one can 100% focus on the technical
part.

~~~
stnmtn
Great comment, this finally made it click for me as to why Factorio is such a
perfect game

------
sali0
Factorio is the only game I can think of that could be used for education
while not feeling like an "education" game. Most educative games (from my
experience) are not fun. But Factorio is a metaphor for real world software
engineering and it is done without the player needing to be aware of it.
Absolutely beautiful game design. I feel like this is what education will look
in the far future.

~~~
searchableguy
Try satisfactory too. Kids will enjoy it more because it's 3d first person and
colorful.

[https://www.satisfactorygame.com/](https://www.satisfactorygame.com/)

------
rwhaling
Coming to Factorio from a Scala/streaming/data background, I got the
connection pretty immediately - so much of Factorio is about designing
correctly for backpressure, such that your factory works stably at different
levels of capacity and resource consumption. That said, I still never really
got the knack of blueprints and large-scale planning, so I've got a long way
to go still.

~~~
jayjader
I find it interesting that you mention easily grokking backpressure in
Factorio yet have more difficulty with blueprints. In my experience, people
"get" blueprints much earlier on than even the idea of backpressure.

Given you say you come from a data streaming background, I (idly) wonder how
much your Factorio "skills" could benefit from you picking up a book on design
patterns in object-oriented approaches.

------
glitchvaulter
Here’s a list of games I think software developers will enjoy if you want to
take the enjoyable aspects of software design and automation with none of the
downsides:

\- Factorio

\- Kerbal Space Program

\- Oxygen Not Included

\- Shenzhen I/O

\- Exapunks

\- TIS-100

Always looking for new suggestions :))

~~~
hmage
\- Satisfactory

Factorio but in 3d.

~~~
Sohcahtoa82
I want to enjoy Satisfactory. It has it's own charm to it, and I love their
interactions with the community.

But doing everything from a first-person view is often frustrating. Being able
to have multiple layers of belts is nice, but sometimes its annoying dealing
with collisions. And while the terrain is beautiful, I often find it just gets
in the way of your factory more, and the option of just laying out tons of
platforms is unnatural and just hides the beautiful scenery.

~~~
apazzolini
If you really think about it, Satisfactory is a game about destroying a
beautiful planet with huge concrete platforms and heavy machinery in pursuit
of strip mining all of the world's resources and delivering them to the
capitalist overlords via a space elevator.

At least, that's where I think the story mode's gonna go.

Don't give up on Satisfactory though! Managing collisions gets easier as you
play more, mostly just leaving a lot of room and using vertical space. The
jetpack really opens up the game.

~~~
Sohcahtoa82
Jetpack really needs to be way earlier in the tech tree, IMO. Maybe even as
early as Tier 3.

------
kebman
I watched an hour or so of Let's Plays just now. Factorio really made me
reminisce about playing Tekkit, especially the Red Power mods from Eloraam
(man, I miss those), plus ComputerCraft, BuildCraft and not to mention
IndustrialCraft2. It's the only reason I bothered to learn Lua and FORTH lol.
However my thinking now is that programming probably gives me just about the
same level of fulfillment and challenges, sooo I think I'll stick to that.
Factorio does look very fun though!

~~~
imtringued
Come on Buildcraft is bad. Buildcraft pipes drop items when they hit full
inventories. Eventually you end up dropping a million items on the floor and
your game becomes unplayable.

~~~
kebman
I don't see it like that. Instead you have to engineer your project around the
weaknesses. This is one of the fun challenges of using BuildCraft. Of course,
I can see how this frustrates server owners, who have to deal with all those
users who don't know how to use it correctly (or who use it in the wrong way
in order to troll or blackhat).

------
dcre
If you like the look of Factorio but are (like me) intimidated by the open-
endedness of it, check out the puzzle games by Zachtronics, the developer of
Shenzhen I/O. Because they're divided into small levels that teach you how to
play, they are much more accessible than Factorio, which requires dozens of
hours to get good.

Infinifactory and Opus Magnum are the easiest ones to get into. All are great.

[http://www.zachtronics.com/](http://www.zachtronics.com/)

~~~
Groxx
Opus Magnum gets my vote for "best introductory Zachtronics game" \- very
polished, simple concept, and you can almost always brute force problems
rather than be super precise so there are no real "puzzle of death" moments
where you just can't figure something out.

Many of the other games build to a level of difficulty that I find drives
people away around the mid-point. There's some significant mental leap you
need to make, or you need to cram things into an impossibly small space, etc.
Opus Magnum is a lot more forgiving in that sense.

~~~
jcranmer
I've only played Opus Magnum and Infinifactory, and my experience is that the
"programming" and "debugging" environment is far superior in Opus Magnum.

Just sitting back and watching your builds run in Opus Magnum is far more
satisfying. And it has an interesting solitaire game, too.

------
ineedasername
The author mentions Shenzhen IO. I found great value in that game. It's
limitations force you to think about simpler, elegent solutions in ways we
frequently don't have to today because storage and ram and CPU cycles are so
abundant. I actually feel it's helped me seen simpler, more easily maintained
options in my work.

~~~
loufe
They truly do entice you to find more elegant solutions. One thing they show
in the post-mission report is your solution's code line count, energy use, and
component cost versus others in a graph. I didn't consider myself "finished"
on a puzzle until I had figured out how people got to that super-optimal
solution which sometimes took multiples of the amount of time of the original
solution but damn was it ever satisfying.

------
nomadicpizza
Anyone played "human resource machine"? It's a bit more like solving leetcode
challenges then actual work. More puzzle oriented.

~~~
1f60c
I read about it a couple of months ago (it was featured in one of those App
Store articles, I think), but then I promptly forgot about it. Have you tried
it? Would you recommend it to people who already know how to code?

Edit: now I think it might've been _7 Billion Humans_ , by the same company

~~~
krallja
I've 100%ed both; they are good with a mildly-dark sense of humor. HRM feels
like assembly on a very dumb chunk of silicon. 7BH feels like a very dumb
GPGPU language.

------
Cthulhu_
I've spent so much time in Factorio, I'm sure I'll fire it up again at some
point soon now that it's finally hit 1.0. I mean in my opinion it was "done"
years ago in that it was a good game, the only thing that might improve it
would be a better tutorial, story mode, or more 'endgame' things to reach for
(I'd love a technology tree beyond satellites, I'm sure there's mods for
that), and / or for the early game to be less tedious; maybe offer an option
to have a starter base laid out already, needing some basic repairs. Or as
I've seen in the trailer released recently, the crashed ship; have that act as
an early game processing plant and source of materials and electricity which
you can eventually deconstruct once you've got everything up and running.

~~~
koheripbal
What happens to me is that I find 45 minutes to play a game after I put the
kids to sleep, so I fire it up, wait 30 minutes for the latest update to patch
since I haven't played in 6 months, then realize I'm tired and go to bed.

Play now. Kids ruin gaming. I'm hopeful that soon they'll be old enough to
play with me. ...I wonder what game is good to play co-op between a 40 and a 6
year old?

~~~
McDuglas
> I wonder what game is good to play co-op between a 40 and a 6 year old?

You could try factorio. It has trains, tanks, bugs to shoot.

~~~
willis936
I remember reading a post on r/factorio where someone played factorio with
their toddler. The toddler had researched like ten things without making a
single assembly machine.

------
keithnz
I've played factorio for years and more recently just focused mainly on speed
runs for launching rocket. While there is some analogy between factory design
and software design, I wouldn't read too much into it. The biggest lesson from
either side is likely modular components that you can connect together quickly
with automation tools to make it quick to build. If you incorporate anti bug
(literal bugs in factorio) into your designs with automated repair then you
almost never have to worry about bugs. Don't have lots of dependencies, build
isolated services to focus on certain things. Have a high speed bus for
different services to communicate over. Keep comms efficient and direct as
possible. Build with scaling in mind. If you need something quick, build in an
optimal way without considering scaling beyond your goal.

------
barbs
Relevant Vice article: Why Do We Play Video Games That Feel Like Work?

[https://www.vice.com/en_us/article/4x38aq/why-do-we-play-
vid...](https://www.vice.com/en_us/article/4x38aq/why-do-we-play-video-games-
that-simulate-work)

~~~
WrtCdEvrydy
EvE online taught me Excel, and Arbitrage.

I used the excel to get into a job as a developer helping an actuary, and the
arbitrage to do market trading.

------
kkapelon
Apart from SHENZHEN, most other games from Zachtronics are great about
teaching programming.

I can recommend spacechem, which looks simple at first glance, but is all
about threads,multiprocessing, mutexes etc.

Silicon Zeroes is also another great game for developers.

------
wotamRobin
This is a great article! It’s surprising how much tech debt pops up in games
like these.

Another game much like this is Satisfactory, which is basically the 3D version
of Factorio. I actually wrote a very similar article about it here, though
more focused on architecture instead of process:
[https://medium.com/@wotamRobin/what-satisfactory-and-
website...](https://medium.com/@wotamRobin/what-satisfactory-and-website-
architecture-have-in-common-a6c8f8eede2e)

------
db48x
That's a well-reasoned and well-written comparison; I'm going to direct people
to it rather than trying to explain it myself.

There are a few other Zachtronics games that you might like too!

------
micheljansen
If you like Factorio, you should also try "Human Resource Machine" by Tomorrow
Corporation
([https://tomorrowcorporation.com/humanresourcemachine](https://tomorrowcorporation.com/humanresourcemachine)).
I am not in any way affiliated with them, but I enjoyed it a lot, so would
highly recommend.

~~~
ikornaselur
And if you like it, then the sequel "7 Billion Humans"
([https://tomorrowcorporation.com/7billionhumans](https://tomorrowcorporation.com/7billionhumans))
is fantastic, as it expands on the concept with parallelisation!

I really enjoy playing them both every now and then. I found them to work
really well on my Nintendo Switch, where I would just unplug the controllers
and play them like a mobile game with the touch screen, as they are perfectly
suited for that.

~~~
deskamess
Do they work well with the Joycons (or Pro Controller)? Or is there a
downside?

~~~
ikornaselur
I just realised that I hadn't even tried it with the Joycons. I just went and
tested and... it works, but to be honest, it's not great. You have to use them
detached and you use the right one like a Wii mote, you point it at the screen
and it creates a cursor/finger.

I would 100% recommend rather playing it in handheld and using touch screen
after testing it out. Maybe you could get used to it, but personally I hate
the "remote pointer" thing.

Unless I'm misunderstanding, but I couldn't get anything to happen in the game
when I had the Joycons attached (I only play handheld) and only when I
detached did it ask me to place the right one flat on a table to calibrate and
then show me how to center the cursor.

------
arthens
As someone who's put a lot of hours in Factorio, I totally agree with the
article! I kinda guessed what it was gonna say before reading it.

My coworkers and I played a lot of Factorio in the past and we always joked
about it being like a programming job. I even had a trello board for the
largest base I ever worked on (I never finished it)

~~~
zerr
May I ask - was your day [programming] job really boring? Otherwise, I don't
get why a programmer would spend time on this game.

~~~
Danieru
My main job is programming video games, not boring at all. Even for us
Factorio is a perfect addiction. So much so our main game is a train tycoon
version of factory automation.

~~~
zerr
Well, in your case, researching about competitors makes sense :)

------
tomc1985
When I started playing Factorio years ago I heard someone saying it closely
resembled EE, in that items on the conveyor belts resembled electrical pulses
and the belts themselves were wires. It's interesting to see those comparisons
shift to software engineering

------
29athrowaway
If you want to see how Factorio is developed you can follow this guy in Twitch
(one of the Factorio developers)

[https://m.twitch.tv/rseding91/profile](https://m.twitch.tv/rseding91/profile)

------
sergiotapia
My 11 year old started playing Factorio a week ago, and I knew it was a
gateway drug to software development. I hope he keeps enjoying it and gets a
career out of it, would be amazing! Especially the technical debt aspect.

~~~
mobilemidget
I showed it to a friend last night, first thing he said, 'hey this looks a bit
like programming'.

Me being a programmer only saw a 2D version of Minecraft (my initial opinion),
and I thought I wouldn't like it too much. Been playing the demo non stop.
will buy it later tonight... AFTER work... :+)

p.s. I hope it keep in development for a few years so I can play this with my
(now too) little one too.

~~~
cricalix
Factorio has been around in "open beta" for something like 4 years now (and
I've been playing it for at least 3), so I suspect it'll be around a while
longer.

However, even if the developers stopped updating the game, so long as the game
runs on your PC, does it matter? We have people doing crazy things like
effectively emulating DOS in Javascript so that you can run DOS programs in a
browser window (see archive.org's DOS game section); somehow I don't think you
need to worry about not being able to play it in a few years. It's all local
by default, so you're not having to worry about someone taking the game
servers offline either.

------
Deestan
> IMO, playing Factorio will not make you a better software engineer.

I'm of the opposite mind: Factorio helps reinforce good habits, and practice
methodical planning and thinking about hacks, tradeoffs and technical debt.

------
nautilus12
You forgot the most natural analogies to distributed stream processing and
handling volume and velocity and how that differs between belts and drones,
etc.

------
Negitivefrags
I suppose, put succiently, you could say that Factorio is like all the things
in software engineering that are not writing code.

~~~
db48x
It's everything except the typing!

~~~
alexktz
_shudder_ and whatever version of 'agile' we're doing this month

~~~
db48x
Yes, luckily you can use whatever planning methodology you prefer. Graph paper
and spreadsheets are frequently mentioned, as is doing the planning at work so
that you have more time at home to actually build :)

------
29athrowaway
In biology, if I remember correctly, you have anabolic and catabolic
processes: anabolism constructs complex molecules from simpler ones,
catabolism breaks down complex molecules into simpler ones. Both processes
work together, with catabolism providing the energy for the anabolism.

------
JamesQuigley
Heh I happened to also write up a blog post about development and Factorio
last night! [https://blog.quigley.codes/dev-lessons-learned-from-
factorio...](https://blog.quigley.codes/dev-lessons-learned-from-factorio/)

------
MrNycticorax
I've you dig PC games that emulate some of the workflow typical of software
development you should definitely checkout Zachtronics games. Almost every
single game they've released is a tour de force.

------
GnarfGnarf
Nice thought. But if I'm going to sit in front of a screen, there's got to be
money it.

~~~
beckingz
So how does hackernews work for you?

~~~
GnarfGnarf
Seriously? Keeping track of technology, reading other people's opinions and
first-hand experience, feedback, leads on topical news, trends, developments.
The list is endless.

------
crb002
It teaches the importance of latency in design.

