Hey, Ben.
Hey, Matt.
How on earth are you?
I'm doing good. How are you?
I'm doing really good. Now we've made a thing out of that. So... Actually, I'm going to move back a bit from the mic. We don't have much time because I've got to go and pick kids up from school. So this is going to be a Turbo Edition.
Yeah.
But you said you had an idea, and I'm all ears.
Yeah. Have we talked about Factorio on this podcast yet?
I don't think we have. No.
It seems like this podcast is the intersection of games and programming. And if there's anything that is the intersection of games and programming, it is the game Factorio.
And Factorio... I think you're right, you know. I mean, so if our listener doesn't know what Factorio is, how would you know? I know there's the pithy description, but that kind of buries the lede a little bit.
Mm-hmm.
But what is Factorio, Ben? Tell me what Factorio is.
So Factorio is a game, the premise of the game.
A video game, first of all.
It's a video game.
Yeah.
It's on many platforms. It's a fairly popular game. So if you have not played this game already, it is very likely that you will be able to reach within arm's reach of where you are right now and pick up a device that would allow you to play this game. But it's a game and the premise of the game is that you are crash landed on a planet and you
are a sort of technician or engineer that has access to these amazing tools for crafting and building things. And your goal, at least in the vanilla game, is to escape the planet. It's basically like I crash landed here. My ship is destroyed.
Mm-hmm.
I don't want to be here. So I'm just going to build a rocket ship and leave. And so you go from mining coal with a pickaxe to launching yourself into space in a rocket. And a typical playthrough, I think like the speedrun playthroughs are pretty fast, like eight hours. But I could...
That's not fast for a speedrun, but yeah, there's a lot to do.
Right, right. But the typical playtime, I think, for mortal humans is like 24 hours. Right. And one of the things I actually sort of like about that is you can imagine, you're traveling through space. Alarms start going off. You're entering the atmosphere of a planet. You go, oh crap. And then you land and you got 24 hours to get off the planet. And then you sort of launch yourself back into space, exhausted, fall asleep. All right, fine. And you go into hibernation.
Right, but this is 24 hours of somewhat accelerated time with the magical ability to mine and build things.
Yeah. I mean, in game time and real time are the same time, right?
Okay.
Like, like you're, if you're moving the character around and you're, you know, like I said, you know mining for coal or whatever, like there's no time speed up in the game, right?
Right.
So if you're playing for 24 hours, you could think of that as this person being on this planet for 24 hours.
But it's like top-down. So far, it sounds a little bit like Minecraft. It's like crafting and building and stuff.
It's got some Minecraft-y aspects to it for sure.
And it's a little bit like that. But it's a very different look. It's a top-down game. When I see it, it reminds me of like StarCraft and that kind of look and feel a little bit. And the planet as well is a bit sort of alien.
Yeah. It's got some real-time strategy aspects to it. It's got some tower defense aspects to it.
Right, there are aliens on the planet that you have to kind of fend off while you're doing this.
Yeah. Right.
But really, the key of it is... you can't do this by yourself, right? One person with a pickaxe can't possibly build a rocket ship and launch it.
Mm-hmm.
You need to do something. And so there's kind of this sort of progression of like, well, I've now, the first thing I craft is something to help me craft faster and so on.
Right.
So how does that progression look? And then why are we talking about this on a programming podcast?
Well, so as you go through, you're building essentially automation, right? Automation to gather the resources, automation to turn the raw resources into refined resources, automation to build actual useful products out of those refined resources.
And then automation to tell the useful products, you know, how to assemble them into eventually what becomes a rocket. And you know there's all kinds of amazing things in this game. There's robots that you can control, and there are circuitry systems that you can set up and essentially program to do various things.
But the sort of fundamental aspects of the game revolve around you know, sort of like gathering resources, refining those resources, and then, you know, using them or moving them somewhere else, distributing, yes.
Distributing them, yeah.
And it turns out that Factorio is actually just a huge, you know, distributed computing architecture simulator, because each of these little conveyor belts that you build are actually just kind of like a message queue.
Right.
And each of like the little factories that you build that turn like the raw iron into, you know, iron plates or steel are kind of like services that take in inputs and produce outputs.
And then on the bus, which you've built yourself a bus of like eight lanes of conveyor belt that then have different things you sort.
Right.
It's quite, I mean, it's a crossover between, as you say, distributed computing, but also sort of silicon simulator. You know, like if you zoom out far enough out of your established Factorio map, it's very difficult to tell the difference between the die plan of a Pentium 2 and your Factorio map.
Yes, yes, it is.
It's very, very hard. You're like, hey, there's this...
Just take a blurry picture of that and you will not be able to tell the difference. Not even that blurry, really.
Right, not even that blurry. Yeah, you just have to be... it's quite something and I think it's very appealing because there is this satisfaction of laying things out. But there's a kind of... I haven't played I don't think as much as you have, but the satisfaction I get from working out the right latency of like this robot arm that can pick things off the conveyor belt has like a three-second cadence where it can pick something off and put it into the factory, pick it up and put it into the factory.
Mm-hmm.
So now I want to lay my robot arms and factories out so that like a continuous stream of items coming down the conveyor belt are all efficiently plucked and used and none of them fall off the end of the conveyor belt or go back round again in a loop and all those kinds of things. And I am sure this gets gamified and spreadsheeted to death to really optimise it beyond that. But there is a satisfaction in it. Although... what I find is I get very quickly overwhelmed by the size of my own map and the fact that something stops working and now I'm debugging.
Like, where is it? I'm going back up all the conveyor belts to, oh, I've run out of this.
Mm-hmm.
This thing's been destroyed by aliens and I didn't notice it. And now I have to kind of get everything back and online again.
Mm-hmm.
And so there's kind of a, yeah, it feels like work at some level, which is not selling it, right, to people. But it's work in...
Yeah. Mm-hmm.
It's the best parts of the things I like about my job, the sort of micro-optimisation and the sort of big picture stuff. And yeah, often I'll turn off the aliens, actually, because I don't want them to come in and annoy me. But, you know, I know that's not pure.
Yeah. So just sort of a somewhat side note here. If you don't want to deal with the aliens in Factorio, there's another style of play that you can use, which is to go completely green, because the thing that triggers the aliens is pollution.
Yes.
And so you can just... and I have done this. You can do a playthrough where you literally never have any kind of combat with an alien at all.
Oh.
And now the whole problem is how do I launch a rocket without creating pollution? Right. And so that just changes the problem in a new and interesting way.
That's, I'd forgotten about, I'd forgotten about that aspect of it.
Yeah.
That's pretty cool.
Yeah, it's great.
And then there's a sort of meta part to this whole thing, which is like Factorio, the game, runs pretty quickly on my PC, even my old PC, my non-gaming PC.
Mm-hmm.
And the amount of complexity that it's simulating...
Oh, I know. It's amazing, isn't it?
They've got quite an engine underneath there doing the simulation and moving things around as well as then just displaying. I mean, there's one thing displaying, but there's the other thing is like, well no, you've got this huge, huge, huge sprawling map filled with actors that are doing things all the time. So, I mean, it's quite a testament to the engine skill.
Mm-hmm. Mm-hmm.
And I'd be intrigued to know. I think I've heard another podcast somewhere where it was an interview with one of the developers. And I think they use all sorts of, you know, data-oriented design tricks to be able to make things cache-friendly and like write lists of the same kinds of objects so that they can stream through it with SIMD.
Oh, interesting.
There's some cool things behind the scenes. But yeah we don't need to know about that.
Neat.
We can actually just enjoy it from the point of view of a player.
Yeah. Yeah.
So I've never actually got to the point of launching a ship. I always get caught in the middle and then I do have a great time, but then I eventually lose interest in the race for it, either because I've been too pollutey and the aliens have come in and smashed up stuff or more likely I've been distracted long enough that I come back to it and I'm like, I can't.
I don't remember. It's like coming back to a codebase after six months. You're like, I don't remember any of this. Yeah.
And there's no comments and there's no kind of – I mean, I was going to say there's no functions and naming of things, but you know you can do – with the more sophisticated robot automation, you can put programs of sorts in them, I think, and then you can duplicate those.
Yeah, right. Yeah, you can.
And I think there was... templates that you can make.
Blueprints is what they call them, but yes, they are exactly that, right?
Blueprints. And then you can sort of stamp out, this is my –
Mm-hmm.
My thing that creates this kind of resource and I have, you know, these two factories and these type of conveyor belts around, you can just like click it down and stamp it out.
Yeah.
But when you stamp it out, it's not like a UI help thing. It's no, you're telling the robot to go and build it all and it goes off and builds it. You still need all the resources to have that in place to build it. So yeah, it's a cool game.
Mm-hmm. Yeah. I'm a fan.
Oh, right.
And there's an expansion for it too, right? Which
Yeah. Go on. Tell me about this.
They released this year. The expansion is Space Age and the whole idea is, okay, well, you've launched the rocket. What if you just kept going, right? And now you're in a whole solar system and there's lots of planets in the solar system, not just the one with the aliens on it. And you can go to those other planets and they are very different and they have their own things.
Oh.
And you can set up essentially spacecraft that move between the planets and use the rockets to relay materials from one planet to another.
Oh my gosh. But presumably with a much longer latency and, you know, the resources of launching a rocket are non-trivial.
Right.
But you can now ship ore from one planet to another. That's so cool.
Exactly. And then one of the super fun things about this I really kind of dig is like, so you go to a new planet, you launch yourself up into space, you take one of your space platforms is what they call them, but basically it's a big ship and you fly to the new planet, you land on the new planet, and now you have no way to get off. You have to build another rocket to get off, right?
Oh, right.
And so while you're on that new planet, you have to remotely control the setup that you had on the previous planet, right?
Whoa. On your original planet, yeah.
Yes, which means you have to have set up like some robots and a few other things. And you can like, you know, sort of remotely, you can zoom out in the map essentially and like go over to the other planet and like click on things. But like, you can't just like go, you know, if the bugs go destroy your dealie, you can't just walk over there and fix it. Like you have to be able to fix it remotely or you have to have the automation in place where the robots just automatically fix it.
Right.
Which is another fun thing.
Whoa.
So I really liked what they did with the expansion and just the way the space platforms work and the different planets. And I think it's just been a really fantastic game. But my new sort of way to explain TCP backpressure to people now is I say, have you played Factorio?
That's...
And they're like, yes. They're like, conveyor belts. That's what's happening.
Oh, that's...
Your conveyor belts are full. And they're like, oh, okay. And I don't have to say anything else.
Yeah, that's it. I mean, it's good enough, right?
They just get it. They immediately get it.
I mean, as... I don't know if you, yeah. TCP backpressure is, yeah. No. Backpressure. Yeah, of course. But the backpressure is like, slow consumer.
I mean, you can go down many levels from there, but it's like, what is happening here? Why do I write to this socket and it just blocks, right?
Yeah.
What's happening?
Yeah. There you go. Yeah. That makes sense. The other cool thing about Factorio is that it's multiplayer. You can get someone to come and join you in the map, and then that means that certainly if you have kids of an age that are interested in this kind of thing, you can do an...
Yeah. It is.
Or I guess you could have friends as well. Friends are an option, but you know we're two dads, and so we've been through this with kids.
Yeah, you know. Right.
It's like, hey, do you want to come and like...
Yeah.
Shoot aliens and build stuff. And it works pretty well with that. At least I found that. And certainly the division of labour thing is useful where you can kind of like be one person can stay back in the main base and just kind of keep the admin going where the other person goes off and finds more resources and builds a sort of secondary base.
Yeah. Yeah. Mm-hmm.
And then you start with your...
Or flies to a new planet, right?
Or flies to a new planet... Yeah. Or sets up the train network.
Mm-hmm.
I got as far as trains and then I was like, that was very cool.
Yeah.
And then I was like, okay, now... yeah, don't know why I stopped.
Man, if you are into model trains, Factorio is the game for you, right? Because it's just got all of the things that make that fun and interesting.
Yeah, it's a great game. Now I want to play it again. And I haven't got time, Ben. I haven't got time. I know I've got like all this time off, which I think by the time this episode goes out, I might actually be working again. [Editor Matt: yes I am, just had my first week]
No, you don't. Oh, my goodness.
I know how horrible, how awful for me. No, I'm looking forward to the rhythm
I see.
of working again. But, ironically, maybe I'll have more time then because at the moment I could just keep saying yes to everything because I'm like, I by default don't have a reason.
Right.
But as soon as I, oh, I've got a new job, I can't be doing this, but then I might have my evenings back. Who knows? So yeah, Factorio could be in my future.
Yeah. Yeah. Well, I would say if you are a programmer and you are in a place in your life where you're okay falling into a black hole for a few hours and being like, what just happened? Well, how is it one in the morning? You could consider trying out Factorio because it is a game.
We are not sponsored by whomever makes Factorio.
No, no, we're not.
I can't even remember who it is, but we're not sponsored.
This is my own personal opinion on what games are fun.
It's purely a fun game.
Yeah.
Yeah. What other games are you playing at the moment while we're here?
Yeah. I had been doing Baldur's Gate 3. Because you know, it's just a fantastic game.
Right. Yep.
Well... I actually, this is probably going to wind up being another episode for us at some point in the future, but I have already decided that I am not going to upgrade to Windows 11 on my gaming PC. And I am going to install Ubuntu and, probably Ubuntu.
Ooh.
I haven't necessarily picked a distribution yet, but I'm going to, yeah.
But some flavor of Linux. Okay.
Some flavour of Linux, and I am going to start using Linux for my gaming PC. And I expect that most of the games that I want to play will work. There might be a little bit of troubleshooting here and there. My son has also done this. He, in fact, sort of led the way on this. And I was initially very sceptical. I'm like, really?
Yeah.
And he's had some good luck with it. And I'm like, you know what? That is better. So I'm switching. And if that means that there's some game at some point in the future that I really want to play that I can't get to work on Linux, well, then I will decide at that point in time whether it's worth my time to figure out how to get it to run.
Interesting. Well, we'll definitely look forward to you giving us a trip report from that point of view. I mean, I predominantly have used Linux and all of my experience on Factorio was in fact on Linux. So that has worked for me.
Yeah. Yeah.
But then when my kids started playing Overwatch 2 and Marvel Rivals, that's when I... finally acquiesced and decided to, in order to join them, I would need to use Windows. So I installed Windows. And then I've been using it for video editing, which is another thing that I have been unable to get Linux to be as good, even though I have a package that works on Linux. It works about as well on Linux as you'd imagine,
Yeah.
Where they say, well, you're not on a supported particular variant of Linux. I'm like, well, what is supported? And they named a distribution of Linux that I have literally never, ever heard of.
Mm-hmm.
And it turns out it's just a distribution that's just for running this package. So I'm like, okay, no, I'm not using your bespoke version of Linux.
Yeah. Okay.
I'm using like a normal one.
Right.
Thank you.
Yeah.
So, you know, I get it. It's a more, you know, it's a difficult support burden and there are things to do with, you know, codecs and there's things to do with, you know, proprietary closed source stuff that's harder to get on Linux, whatever.
Yeah. Yeah.
But yeah, I by and large live in the Linux world. And I don't know how people can use Windows. I know this is not what this episode is about, but oh my golly, everything about Windows has been frustrating the heck out of me.
Like the unhideable, sorry, non-configurable start bar that keeps popping up every time I dare put my mouse anywhere near the bottom of the screen, as I've got it auto-hidden to try and get the screen real estate back, to being upsold various Microsoft-related things like logging into their Microsoft Cloud, whatever it is, or, you know, hey, you're not backing anything up.
Yeah.
I'm like, yes, I know. There is literally nothing on this computer that I care about. I don't want to back anything up.
Right.
Oh, but you haven't backed up in this long. Again, with the stop telling me, I don't care. And then every now and then I reboot. And for reasons that I don't understand, I go through some part of the, you know, beginning setup again. And the only thing I've got to not sign into something is to skip for now. And I'm like, no, skip forever, go away.
Right, right. Yep, yep.
And it's... everything about it feels utterly frustrating.
Yeah. It's pretty gross. And especially considering that I'm literally only using it as a gaming platform. I really don't need any of that.
Yeah. [Dog barks]
I don't need a single bit of it.
Yeah. [Dog barks again]
So I am planning on making the switch probably over Thanksgiving when I'll have a few days off and I can just kind of wipe the machine and start over again.
Now people will work out when we're recording. Oh no. Now people know that we don't do these live.
Well,
I've thought about that.
Yeah.
We could do a live one sometime. That might be fun. Or a live-ish. Now I'm all up with the video editing.
I mean, we could do a live one. I don't know.
We could even do a video one, but then that would mean that, you know, actually I'm looking at your backdrop right now and you'd be fine.
Yeah.
You've got a great sort of Zoom background, whereas mine's a catastrophe, but I've just gone with it.
I think yours works pretty well.
So we could try that sometime, I guess.
I'd be down for that.
Yeah. All right. We can certainly think about doing that sometime. But yeah, we're recording this actually on Halloween, which is one of the reasons why I've got to go pick the kids up, because I've then got to get back in time to hand out candy to people, or maybe not.
Right. Just throw it at them. You don't need to hand it.
Well, there's been a lot of political activity in this area. I've been wondering whether I should be carrying my green card with me, which is a very weird feeling. And I don't want to go politics on this, but it's like, oh, maybe I'll have to.
That is weird.
Yeah.
Yeah.
That's a downer. Let's talk about something nice in the last few minutes before I have to go.
Well, I am definitely going to report back on my experiences switching over to Linux. And I expect it will be mostly smooth. There are a few games that are natively supported on Linux. And I think Factorio actually might be one of them.
I think it is. Yes, it is. Yeah.
But I know that the Steam Deck is based on at least some... there's a Linux kernel in there somewhere, if I recall correctly.
I think so.
And so Steam kind of has this incentive of making sure that games are at least remotely compatible with that. And they have this, I think it's Proton is the name of it. Maybe I'm getting that name wrong.
Yeah, that brings, I think that brings about that sort of like, I think it's either a port or based on Wine at some point.
Wine. Yeah.
Yeah.
And Steam has, at least with Steam games anyway, has a rating, if I understand this correctly, of how compatible they are with Proton. And for the Platinum or Gold games, they kind of expect that it's just going to work, right?
It just works. Yeah.
So, if that means that I'm just sticking to those types of games... The problem is there's too many games to play anyway, right? It's the tyranny of choice, right? I feel like there's a somewhat famous psychological concept that's just like people are miserable when they have too much choice, right?
Right. Yeah.
Trying to remember that... it's probably the tyranny of choice or something like that. But in any case, there's too many games. There's too many games to play. And if I have to just filter, what's Platinum, Gold on Proton. Okay. These are the games I'm going to consider buying in the Steam sale.
Oh, that might actually be a boon. Yeah, I see.
Great. Now that'll help me. And I won't be sitting there, when the Steam sale comes along, going like, there's so many games that I want to play.
Yeah.
How do I pick which I'm going to buy? Yeah.
That's fair. Yeah, anything to reduce the number of them might actually be working in your favour.
Right. I mean, I wouldn't complain if it means I don't have to deal with stupid Windows pop-ups. I gladly welcome it.
Right, that is definitely worth doing for that reason alone.
Yeah.
Well, it looks like it's going to be quite a short episode today, which is good for editor Matt in the future. [Thanks past Matt]
Yes. Right.
So lucky him, although he's gotten very lazy recently. So apologies for all the ums and uhs and dog barks in all of the last few episodes that have gone out. But I like to think that it's charming.
There's charm. You have some charm.
There's something in it. Yeah.
Some amount of charm.
Fabulous, my friend. Well, I look forward to hearing your trip report about gaming on Linux some future episode.
Some future episode.
I've got some ideas up my sleeve as well for some cool things.
Okay.
So again, you know, we're totally abusing our poor audience. Well, I guess it's not abuse. They chose to come here. They've chosen to stay being here. And the kind of things we talk about, hopefully, are the things they're interested in. We'll find out, I guess.
Yeah, we will.
All right. I'll see you next time.
Until next time.
Take care mate. Bye.
