I think the biggest hook for Factorio is that it's an _actual_ visual programming language. So much of what we do day to day ignores this (dominant!) mode of perception. It's extremely refreshing to be able to simply look at a system to reason about it.
(as an aside, I think this is also why the Zachtronics games are so effective)
I seriously struggle with factorio, You have to have a seriously good planning ability to create something that doesn't instantly turn in to a spaghetti. I always end up having to scale up things and then having no room. I find text based programming to be much much simpler. If I need to add more somewhere, I can, my text editor will push everything else out of the way.
Get yourself a mod that starts you off with construction robots, like FasterStart [1]. That plus ghost images plus blueprints allows you to plan your factory, and cut-paste it when you need to. Also, you can persist blueprints across games, so you don't have to re-invent a working factory layout in a new game if you don't need to.
As a bonus, FasterStart also takes away the grind of cutting trees by hand. I use it just for that. Few things annoy me more than having to take a break from building a factory to mindlessly holding right-click and pressing movement keys for a while because RNGesus decided to put a rainforest in the way of my expansion. It's the video-game equivalent of being broken out of a programming flow to sit in a pointless 2-hour meeting.
Another option is to use a mod like Factorissimo2 [2] which lets you put factories inside a building and move the entire building around. Buildings can also be nested so that you can group, say, all buildings related to iron ore -> iron plates inside one outer building. ( * ) Factorissimo2 was invaluable when I played a game with Angel's mods, because with Angel's the process of getting iron plates from iron ore starts off as a one-stage process but eventually becomes like a ten-stage process. There was no way I was going to lay that out on ground level while still accounting for future expansion.
( * ) IIRC this is disabled by default because people think it's unrealistic. I just pretend a nested building is an upper floor in the third dimension and the belt connections are freight elevators.
> have a seriously good planning ability to create something that doesn't instantly turn in to a spaghetti
If you only design factories from scratch by yourself, that's akin to being handed an assembler programming manual as your only reading material and building up every programming abstraction yourself. You likely won't discover the best abstractions.
After a while playing factorio I decided to watch experts play the game on YouTube, and that's like a programming novice watching an expert. They know how to create well-known patterns (especially with belt mechanics) and deploy them readily. Watching these videos is like someone handing you a library of programming abstractions your can put into your own code.
at least on the initial play through, i think that would ruin the game for me. i personally would prefer to discover the patterns on my own, or at least to the best of my ability. it's tempting, but i've become aware that reaching for the strategy guide tends to be a huge spoiler.
I picked up Pillars of Eternity a while back and couldn't get past the character creation screen without looking up strategies for character building. I couldn't get through the "it doesn't matter just pick something that sounds good" block. Bad experience for me, ended up dropping the game very quickly even though it has great ratings.
It's really hard to play a hardcore CRPG[0] like PoE if you haven't been playing some similar games lately. PoE gives you everything the moment you launch the game, then leaves you alone. This is intentional and really fun if you already have the muscle memory for theorycrafting[1].
I find RPGs which let you rebuild your characters in the middle of the game very approachable. They are good gateway drugs to get some familiarity with the genre. Divinity: Original Sin 1/2 are good examples, I highly recommend them. Any ARPG[2] will also do since they ask for less number crunching and more reflex building. Many of them never allow you to set your character before you progress in the game. Some JRPGs[3] are like that too (i.e Pokemon games).
Divinity 2 is a really interesting one. The beginning of the game is utterly terrible when you're just starting out. Almost all of the battles are out of your league, there's very limited opportunity to get stronger, and if you're not interested in stealing the most basic scraps of equipment, it's hard to get anywhere in the game if you're not familiar enough with the battle mechanics.
Great game, but probably one of the most unreasonably difficult starts of any I've seen (relative to what seems to be the intended level of difficulty in the game). I nearly dropped it because I couldn't find the few stupid crocodiles that were killable after hours of walking around getting thwomped by everyone. Which was really annoying because the characters have strong personalities, so they say shit like along the lines of "let's go kill them all" and then be pathetically underpowered.
Totally get that. In RPGs I still sometimes have the habit of reloading if things don't go as planned and feel like this ruins the fun for me. Getting rid of engrained habits is hard :/
On the other hand, I really like having spaghetti factories. Having the same few pattern repeat a bazillion times just looks boring. Would love to stumble over my first saves, since those were the most organically grown. But back then I believe saves were stored in the install dir and i most certainly have uninstalled my "non-steam version" since.
Thankfully, by now I mostly internalized that planning the perfect factory will actually take me more time than just building something good enough and upgrading/replacing it later.
That's why I love it. I just went back to play last night and I got my Red and Green science built in a way with zero excess. All the miners lead straight into a furnace which fed straight into an automation factory which fed straight into the Red and Green science. The only thing I used belts for was getting the sciences to the Labs.
Then I unlocked the the next level of science and it all instantly became spaghetti and belts were backed up across the board.
The thing that makes the game easier is understanding the ratios. There is a golden ratio for basically anything. And it's actually harder to get the right ratios at a smaller scale because you end up with a lot of decimals that throw everything off. If you can get clean whole numbers for a majority of your ratios, then you have a nearly perfect automation process even if it's all spaghetti belts.
I need to learn how to use trains and the circuits because I have NEVER used them. IDK why I'd want things to turn off and on, or why I'd want to use a train to bring mats, but I assume these are critical things stopping my megafactory dreams.
"If you can get clean whole numbers for a majority of your ratios, then you have a nearly perfect automation process even if it's all spaghetti belts."
Another way to go is to use robots for delivery. That way there's no spaghetti of belts because there are no belts.
That also works, but you can't really do that until like midgame unless you use some mods. You need to have at least red and green science production and have researched a fair bit of technology before you get robots. Then you need the chests which is another tech. But yeah, normally once I get the robots I setup an automation factory just to create robots and put them in the roboport.
Then I can start getting rid of belts by just having the robots do the work. Setup a hit load of worker bots on the perimeter to fight any of alien things and fix the damage automatically.
The robots change the approach massively. But, I also enjoy the process of creating belts that get consumed near perfectly so that I create the exact same amount of each science. That's just my OCD side of things though.
The only time I've ever completed a game is when I made giant 80x80 cells served only by trains. Each cell was dedicated to a single recipe, with vertical train stations on the left for inputs, vertical train stations on the right for output, and beaconed factories in the middle.
Each cell focused on executing the recipe as fast as it needed to to fill up the output station faster than it could be drained by other cells' input trains. If something was being produced faster than other cells' trains were draining it, then it would back up and stop (and even shut off power via a switch logistic-connected to the output chest). If something was being produced slower, 80x80 is plenty of space to add more factories till it isn't.
Near the end the bottleneck was actually how fast I could ship ore from the faraway mines to the smelter cells (I built it organically so all the smelter cells ended up near the center, while the ores were coming in from the outside), but at time I was launching one rocket every few seconds so it didn't really matter.
Building it took multiple days because I only built out one or two cells a day, but the freedom from having to think about belts and ratios was worth it. I did not have to worry about prioritization because if one cell needed an output more than another cell, its trains would implicitly be coming to the output station more often. With belts you can end up with a situation where, say, the demand for green circuits is high but your iron plate bus only has two lines dedicated to the green circuits factory area, and there's no space to add more lines. With trains I would just add more factories to the green circuits cell, and its iron plate input train would automatically start running more often without me needing to do anything to it.
Unfortunately that experience has spoiled the vanilla game for me. Every time I try to play I remember how easy it made things and don't want to play any other way, but I also remember how many days it took to build and I don't want to repeat it.
This is what I love about it - it's actually hard to do things elegantly.
It has a skill curve where playing at a high level is something you learn over a long period of time. It gives it immense replayability to delight in the opportunity to build something slightly more robust or scalable.
If you derive enjoyment from the learning part and set your expectations appropriately (so you don't feel frustrated expecting more from yourself than your skill level), it becomes really addicting.
PS: https://factorioprints.com/ is a great inspiration if you just don't have time to figure out things yourself.
Factorio is artificially limited to make it more interesting.
Real visual programming languages allow building and collapsing abstractions and don't add space constraints.
You could just as easily say "text coding is so hard because if I realize I missed a character I have to start the entire file again; it would be nice if I were using something other than 'cat > file.c <<EOF', like visual blocks that could be rearranged later.
Factorio lets you rip apart factories and rebuild them (for no cost) for this reason, and even as a seasoned player while I have my go-to strategies, I still end up rebuilding sections.
That's not failure it's just part of the gameplay! There are a few mods that can make your life a bit easier though - check out Factorissimo which lets you make self-contained buildings.
Hah, and that is my biggest complaint about real visual programming languages, like LabView. They are fine for writing simple software from scratch, and the dataflow aspects have some neat features like trivial parallelization. But man are they a pain to maintain software in. You either spend massive amounts of time rearranging blocks, and rerouting wires, or your code becomes visual spaghetti.
The other thing is that it goes at a speed that we can comprehend.
If I type
for (let i = 1; i <= 10; i++) console.log(`Round ${i}`)
And you run that in your console, it happens in the blink of an eye. Not with Factorio, it's fast, but we can still follow it. We can still see the individual materials being inserted or taken out.
That makes me think of a project idea: create an environment that executes fast but not at the speed of a computer (like Factorio).
I've long thought it would be neat to make a Factorio mod that lets you represent pieces of data as items that can be passed around and processed by different steps. For multithreaded, message-based programs it could really help one spot problems as the thing runs, e.g. messages never being responded to because someone's output buffer got full.
(as an aside, I think this is also why the Zachtronics games are so effective)