WEBVTT
00:00:00.160 --> 00:00:02.240
But I we can we can quickly contrast with RTS.
00:00:02.319 --> 00:00:05.679
So like I said, in FPS you don't you're not simulating very many things at once.
00:00:05.919 --> 00:00:16.239
In RTS and and so okay, so in FPS what that means is you can afford to send the world state across the wire.
00:00:16.399 --> 00:00:16.719
Right?
00:00:16.879 --> 00:00:20.000
You can afford to send deltas in the state of objects.
00:00:20.239 --> 00:00:25.120
Whereas in RTS you have you might have too many objects to do that, right?
00:00:25.760 --> 00:00:29.440
You don't have enough bandwidth to do that sometimes.
00:00:29.600 --> 00:00:33.759
And so, at least in my experience, which I now say is dated.
00:00:33.920 --> 00:00:48.640
But uh you know, when you when you're simulating hundreds of things, potentially a thousand things on the battlefield, sort of sort of numbers, the way RTS used to work, and presumably in some ways still does, the machines are running parallel simulations.
00:00:58.479 --> 00:01:04.480
Welcome to ADSP the podcast, episode 297, recorded on July 22nd, 2026.
00:01:04.560 --> 00:01:05.280
My name is Connor.
00:01:05.359 --> 00:01:14.480
Today with my co-host Ben, we chat about networking in FPS versus RTS video games, the state of the video game industry, the return of the Obra Din, and more.
00:01:24.560 --> 00:01:40.879
The great thing about networking, in terms of it being good for my career, of course, was not just that it took off, but also that in in in networking the the problems don't tend to get that much easier just because the machines get faster, right?
00:01:41.200 --> 00:01:51.120
The latencies over the internet haven't got a whole lot, they certainly haven't got orders of magnitude better in a span of years, right?
00:01:51.280 --> 00:01:53.120
Not in the way that machines get faster.
00:01:53.280 --> 00:02:03.840
And so the fundamental problem of hiding that latency and making the gameplay look smooth, that's one of the fundamental problems with network network programming, of course, hasn't really changed, right?
00:02:04.000 --> 00:02:09.039
Now having said that, different genres of game do networking very differently, right?
00:02:09.120 --> 00:02:16.800
So networking in a first-person shooter is very different, usually, from networking in a real-time strategy game, right?
00:02:16.960 --> 00:02:21.039
Because in a first-person shooter you don't have very many things to simulate.
00:02:21.360 --> 00:02:26.159
You have, you know, a few dozen moving objects in the world.
00:02:26.400 --> 00:02:30.319
Players, rockets, maybe doors, things like that.
00:02:30.479 --> 00:02:36.159
You don't have very you typically at any given moment you don't have very many active things to simulate.
00:02:36.719 --> 00:02:47.759
In a real-time strategy game, you have a lot of units, you have potentially hundreds of units that are it's a it's a it's a you know it's a big distributed simulation, if you like.
00:02:48.000 --> 00:02:56.560
Whereas an FPS is a much more maybe much more latency intolerant, but a much, much smaller simulation.
00:02:56.800 --> 00:03:01.919
And so the strategies you use to to do netbooking are different in those two cases, right?
00:03:02.080 --> 00:03:07.599
And then in and then, you know, in for example an MMO, networking strategy is different again.
00:03:07.919 --> 00:03:08.319
Interesting.
00:03:08.400 --> 00:03:12.159
And so just so that can keep me up to date, this is actually probably less for the listener.
00:03:12.240 --> 00:03:15.439
I'm probably the least steeped in this world than other folks.
00:03:15.680 --> 00:03:17.919
When you say FPS, I definitely know about that.
00:03:18.000 --> 00:03:21.439
I'm thinking like Call of Duty, Fortnite, sure titles like that.
00:03:21.759 --> 00:03:37.680
When you say real-time strategy, the games that I think of are like Civilization and like Dota, but like then you mentioned MMO, so potentially So real-time strategy is classically things more like uh StarCraft.
00:03:38.000 --> 00:03:40.719
Okay, I mean so Starcraft and Dota, they're very similar, no?
00:03:40.879 --> 00:03:43.280
Yeah, Dota derived from StarCraft, right?
00:03:43.520 --> 00:03:45.199
So yeah, you could put it in that camp.
00:03:45.360 --> 00:03:51.520
Back in the day, titles like uh let's see, Command and Conquer was a real-time strategy franchise.
00:03:51.759 --> 00:03:52.080
Okay.
00:03:52.240 --> 00:03:54.080
Was that the was that the boat one?
00:03:54.319 --> 00:03:55.199
The boat one.
00:03:55.439 --> 00:04:00.719
There's some there's some game where you're uh sailing like a pirate trying to shoot other ships.
00:04:01.199 --> 00:04:02.879
Total War franchise.
00:04:03.039 --> 00:04:07.439
Shogun Total War was the first one, and then many after that.
00:04:07.759 --> 00:04:09.120
Okay, I'm not familiar with that title.
00:04:09.439 --> 00:04:13.439
Basically, it's a battlefield, you're controlling lots and lots of units.
00:04:13.599 --> 00:04:21.920
You're building units, you're building bases, you're it's a resource it's a resource engine kind of a game where you get your resource engine started, you build units, you fight.
00:04:22.240 --> 00:04:22.639
Right, yeah.
00:04:22.879 --> 00:04:23.839
Age of Empires.
00:04:23.920 --> 00:04:26.560
I actually I actually did play Age of Empires quite a bit.
00:04:26.879 --> 00:04:27.920
Uh and it's real time.
00:04:28.079 --> 00:04:30.959
So when you said civilization, civilization is turn-based, of course.
00:04:31.040 --> 00:04:31.199
Right?
00:04:31.279 --> 00:04:33.360
So RTS is real-time strategy.
00:04:33.680 --> 00:04:34.800
Oh, I gotta be honest.
00:04:34.879 --> 00:04:38.000
I've only actually played the Civilization board game.
00:04:39.120 --> 00:04:46.160
I just I just assumed that the video game version didn't need to be turn-based because it's a video game.
00:04:46.240 --> 00:04:52.800
Like it wouldn't, if you're gonna fight like, you know, the Romans versus the Greeks, or I don't know what the what the armies were, I imagine it was something like that.
00:04:52.959 --> 00:04:55.519
Like, I imagine it was like World of Warcraft.
00:04:55.839 --> 00:04:59.040
It's you can I think you can pick more or less any civilization these days.
00:04:59.279 --> 00:04:59.759
Yeah, okay.
00:05:00.000 --> 00:05:04.319
So interestingly, Civ the computer game is still turn-based.
00:05:04.480 --> 00:05:10.240
I I pictured it was just like a historical world of Warcraft, yeah, but it's not.
00:05:10.319 --> 00:05:12.079
You're saying it's still turn-based.
00:05:12.399 --> 00:05:15.040
Yeah, civilization, I guess.
00:05:15.920 --> 00:05:23.839
Turn-based strategy tends to be much more about, you know, much more about traversing the tech tree, unlocking new things, getting down the tech tree.
00:05:24.079 --> 00:05:24.319
Right.
00:05:24.480 --> 00:05:24.639
Right.
00:05:24.720 --> 00:05:32.720
Whereas real-time strategy tends to have less of that, and is more about like I said, building a production engine.
00:05:33.040 --> 00:05:33.519
Right?
00:05:33.759 --> 00:05:34.800
In real time.
00:05:35.040 --> 00:05:39.199
So you can build units, build more units, go fight, conquer.
00:05:39.519 --> 00:05:40.000
Right.
00:05:40.319 --> 00:05:44.639
Okay, and so and none of these titles qualify as MMOs, right?
00:05:44.879 --> 00:05:46.879
I guess Fortnite technically is an MMO.
00:05:47.279 --> 00:05:52.560
Well, yeah, so maybe so I'm not I'm not sure.
00:05:52.639 --> 00:05:58.000
Fort Fortnite is a FPS also with elements of MMO.
00:05:58.240 --> 00:06:04.160
I don't actually know what the sort of maximum number of players you can have in the Fortnite game is.
00:06:04.480 --> 00:06:07.920
Well, I mean the classic one's a hundred, but I don't know if you can go above that.
00:06:08.240 --> 00:06:10.240
So it's a pretty small MMO.
00:06:10.480 --> 00:06:17.839
When I say MMOs, I'm talking about things like World of Warcraft, which which you can have 5,000 people on a on a in a single world.
00:06:18.079 --> 00:06:18.560
Yeah, okay.
00:06:18.639 --> 00:06:23.360
And also, too, I guess I guess when I was saying World of Warcraft, there's two, and I've never really understood this.
00:06:23.519 --> 00:06:29.519
There was the World of Warcraft that were like the Age of Empire's games.
00:06:29.759 --> 00:06:31.279
There was there was Warcraft.
00:06:31.439 --> 00:06:32.480
Or is that just Warcraft?
00:06:32.560 --> 00:06:33.759
So I've been saying the wrong thing?
00:06:33.920 --> 00:06:34.319
Yeah.
00:06:34.560 --> 00:06:36.319
So Warcraft was RTS.
00:06:36.720 --> 00:06:36.879
Okay.
00:06:37.360 --> 00:06:41.199
So replace every single time I said World of Warcraft with Warcraft.
00:06:41.279 --> 00:06:42.319
I thought they were the same name.
00:06:42.720 --> 00:06:47.519
I'm losing I'm like a negative thousand nerd credits uh on the this episode.
00:06:48.720 --> 00:06:51.600
Yeah, so Warcraft was originally an RTS.
00:06:51.839 --> 00:06:53.439
Yeah, fantasy-based RTS.
00:06:53.839 --> 00:06:57.360
It was called I think I think it was called Warcraft Orcs and Humans originally, right?
00:06:57.839 --> 00:07:21.360
And that had one, two, three, three th you know, there's Warcraft III was the and then there was the Frozen Throne and some expansions, but basically Warcraft III Plus Plus was the end of that line at the time, and then it and then they took the the franchise, the story, the elements, the IP, if you like, and made the MMO called World of Warcraft.
00:07:21.680 --> 00:07:22.240
I see.
00:07:22.480 --> 00:07:22.800
Okay.
00:07:23.199 --> 00:07:26.000
I henceforth shall never uh make this mistake again.
00:07:26.160 --> 00:07:30.800
Uh everyone's probably screaming at their headphones being like, How is that like World of Warcraft?
00:07:30.879 --> 00:07:31.839
It's not like that at all.
00:07:32.079 --> 00:07:33.519
When I when I meant Warcraft.
00:07:33.680 --> 00:07:35.120
Okay, so we've set the landscape now.
00:07:35.199 --> 00:07:38.560
We've got we've got MMOs, we've got RTS, we've got FPS.
00:07:39.120 --> 00:07:41.279
I mean, there are lots of other genres, of course.
00:07:41.519 --> 00:07:42.079
Right, right.
00:07:42.319 --> 00:07:47.920
But I just singled those out as having th basically three very different approaches to networking.
00:07:48.240 --> 00:07:48.480
Okay.
00:07:48.639 --> 00:08:00.240
And do you want to take us through like Well, so, you know, uh you have to you have to take this with the with the knowledge that uh I haven't worked in games for nearly 10 years.
00:08:00.480 --> 00:08:05.680
Although I do have a long history in games, I know how things were done, things always move on.
00:08:05.759 --> 00:08:13.439
So, you know, if there are people listening to the podcast who are currently working in games, they might be saying Ben doesn't know what he's talking about anymore, and that's fine.
00:08:13.759 --> 00:08:16.720
But I think the broad strokes are probably still true, which is what I said.
00:08:16.800 --> 00:08:26.399
It's like when you program an FPS, you are it's about, you know, it's about using it's about interpolating or extrapolating where you think things are going to move to.
00:08:26.480 --> 00:08:31.519
You have very few things that you're actually simulating at one time, maybe a couple of dozen.
00:08:32.080 --> 00:08:37.519
Because you have players moving around, they're, you know, they're picking up health packs, maybe, they're shooting their weapons.
00:08:37.679 --> 00:08:44.720
Most of their weapons, probably many of the weapons are use what are called colloquially light speed bullets.
00:08:44.879 --> 00:08:48.399
In other words, there's not a bullet you have to simulate in the world.
00:08:48.480 --> 00:08:49.919
It doesn't move slowly enough.
00:08:50.080 --> 00:08:54.960
You know, rockets and things like that are simulated objects that are in the world.
00:08:55.039 --> 00:09:00.639
But if you shoot a pistol, if you shoot a machine gun, those bullets are treated like they're light speed.
00:09:00.879 --> 00:09:01.440
Right.
00:09:02.240 --> 00:09:19.440
And so the the you know, the the big the big problem that you have to solve, and it it's not really a problem to solve, it's more of a design issue that you have to figure out where you lie, where you make a choice, is you know, you're always gonna have the problem.
00:09:19.600 --> 00:09:28.799
Let's say you and I are fighting in an FPS, there is latency between our machines or between our two machines and a third machine, which is a server, right?
00:09:29.519 --> 00:09:41.600
And I might see, I might have you directly in my sights, and I might shoot you, and I and I know that I'm shooting you, but because of latency, I'm not actually shooting you, so I'm seeing the wrong thing, right?
00:09:41.840 --> 00:09:52.559
Conversely, on your side, you you know in your experience that I am not shooting you because you ducked around the corner or something.
00:09:52.639 --> 00:09:54.639
But again, there's that latency, right?
00:09:55.279 --> 00:09:58.799
So how do you how do you solve that problem?
00:09:58.960 --> 00:10:01.519
Who do you how how do you do that fairly?
00:10:01.679 --> 00:10:07.200
And that's really a problem of like design rather than a problem of implementation, right?
00:10:07.600 --> 00:10:20.159
So either to me, you know, the two extremes would be either you you you have an experience where you you you die randomly when no one was shooting you because you couldn't see them, right?
00:10:20.240 --> 00:10:30.399
And that's a bad experience, or I have the experience of I'm shooting this person and they're just not taking damage, and I know I'm shooting them, I've been shooting them for half a second or a second or whatever it is, right?
00:10:30.559 --> 00:10:42.000
So those are the kind of subjective experiences that you you you have to try and treat fairly, try and solve in the presence of tens of milliseconds of latency.
00:10:42.399 --> 00:10:49.039
And my guess is that most of the time it's that the shooter ends up missing if there's a choice.
00:10:49.200 --> 00:10:51.840
And my guess is based on Well, I don't know.
00:10:52.000 --> 00:10:52.559
You don't know?
00:10:52.799 --> 00:11:01.360
Like in a sense, you have a choice when you're simulating, you have a choice of are you always running behind or are you always trying to predict ahead?
00:11:01.519 --> 00:11:03.600
You know, so there's there's kind of that choice.
00:11:03.919 --> 00:11:09.679
When important things happen, and important and important things in FPS is a really like deciding whether or not someone dies.
00:11:09.840 --> 00:11:16.080
That's one of the most important things, right, in FPS that you can identify.
00:11:16.320 --> 00:11:41.360
Sometimes those things are I think they are they are modeled these days by taking taking both sides into account, and sometimes the server will kind of roll back a little way and try and properly order things in time, and and you know, so it's it's like you're always when you're simulating, you are never quite correct, but you're always trying to tend to correctness.
00:11:41.600 --> 00:11:48.720
You know, the the world is always converging to a consistent shared state.
00:11:48.879 --> 00:12:00.240
It never quite gets there, but it and and the amount by which it deviates from that is subjectively controls the sort of quality of the of the experience.
00:12:02.000 --> 00:12:08.159
Yeah, I mean I I remember w when I I used to watch Fortnite back in the day when it was huge.
00:12:08.399 --> 00:12:20.159
And people when they were not at some local tournament, uh inevitably at some point end up like they they're measuring their ping, and then they'll they'll start whining about the ping because LPBs.
00:12:20.480 --> 00:12:20.960
Yeah, yeah, yeah.
00:12:21.200 --> 00:12:26.879
And so that you know, if they miss and they they and so clearly that's like the networking issue that you're talking about here, right?
00:12:26.960 --> 00:12:35.759
Like when the ping is so bad and whatever they click their mouse, but then the server doesn't get it for however many milliseconds, there's only so much you can do, right?
00:12:35.919 --> 00:12:36.240
Yeah.
00:12:36.399 --> 00:12:45.039
And there are certainly issues with with lag spikes and things, but but yes, like you say, there's there's a certain baseline which you can't really get below, right?
00:12:45.279 --> 00:12:50.960
You aren't gonna get much below, you know, a few tens of uh milliseconds.
00:12:51.360 --> 00:12:52.159
Probably.
00:12:52.720 --> 00:12:53.279
Yeah.
00:12:53.519 --> 00:13:09.120
And so, I mean, I don't know, is it too much to try and like dive into like a algorithm for queuing this stuff and like making these decisions, or is it Probably Again, because my my experience is now at least ten years out of date.
00:13:09.360 --> 00:13:11.440
But I we can we can quickly contrast with RTS.
00:13:11.519 --> 00:13:14.960
So like I said, in FPS you don't you're not simulating very many things at once.
00:13:15.200 --> 00:13:25.440
In RTS, and and so okay, so in FPS what that means is you can afford to send the world state across the wire.
00:13:25.679 --> 00:13:26.000
Right?
00:13:26.159 --> 00:13:29.279
You can afford to send deltas in the state of objects.
00:13:30.480 --> 00:13:35.360
Whereas in RTS you have you might have too many objects to do that, right?
00:13:36.080 --> 00:13:39.679
You don't have enough bandwidth to do that sometimes.
00:13:39.840 --> 00:13:43.919
And so, at least in my experience, which I now say is dated.
00:13:44.159 --> 00:13:58.879
But uh, you know, when you when you're simulating hundreds of things, potentially a thousand things on the battlefield, sort of, sort of numbers, the way RTS used to work, and presumably in some ways still does, the machines are running parallel simulations.
00:13:59.440 --> 00:13:59.840
Right?
00:14:00.000 --> 00:14:04.799
So and that and what and what's being sent across the wire are inputs.
00:14:05.279 --> 00:14:05.600
Right?
00:14:05.679 --> 00:14:10.559
And each machine has to simulate what the units do in response to those inputs.
00:14:10.720 --> 00:14:15.519
You know, because it's prohibitive to send all of that state all the time.
00:14:15.679 --> 00:14:23.840
There might be points where you can send some of it and synchronize, but you know, in general, that's the way it used to be done anyway.
00:14:24.000 --> 00:14:25.919
And of course that brings with it its own problems.
00:14:26.080 --> 00:14:30.639
When you're running parallel simulations, you have to be really sure that those simulations aren't going to diverge.
00:14:30.879 --> 00:14:44.559
Well that's what I was immediately thinking of is like if you're s if you're sending it back and forth but you're not doing it constantly, don't you run the risk of two different boxes on other sides of the world simulating that some StarCraft creature goes left instead of right?
00:14:44.879 --> 00:14:47.039
Well, absolutely you run that risk.
00:14:47.200 --> 00:14:50.480
And and and that is why you do things to mitigate that risk.
00:14:50.639 --> 00:14:54.799
So some of the things you do are transmitting checksums, right?
00:14:54.879 --> 00:14:58.080
To to check that you're actually still in sync.
00:14:58.320 --> 00:15:11.519
But more than that, you have to do things like in the code, you know, for the for the good of the team who are writing the code, you have to do things like have separated random number generators, for instance.
00:15:11.679 --> 00:15:26.960
So so one anytime you do something which is going to be part of shared simulation, you have to use the the synchronized the the random number pool which is designated for that use, right?
00:15:27.200 --> 00:15:29.840
But there are lots of things in games that aren't synchronized.
00:15:29.919 --> 00:15:35.360
You know, there's particle effects and there's you know all sorts of things which happen only locally.
00:15:35.519 --> 00:15:39.519
Typically they're in terms of rendering a lot of the time, like particle effects.
00:15:40.000 --> 00:15:43.519
Maybe audio cues or or flavor as well.
00:15:43.919 --> 00:15:49.279
And those things are just happening on sort of local, they need to happen with local randomness, right?
00:15:49.440 --> 00:15:53.360
And it's fine, they don't contribute to the shared simulation state.
00:15:53.600 --> 00:16:02.559
But you can't accidentally use one random number pool when you when you're really supposed to use the other, because then that will produce synchronization, uh desynchronization.
00:16:02.960 --> 00:16:03.279
Right?
00:16:03.440 --> 00:16:11.840
Because everything needs to in the shared simulation, both sides need to agree, you know, in lockstep, what they're doing, in a sense.
00:16:12.159 --> 00:16:13.360
I never thought of that.
00:16:13.519 --> 00:16:20.559
So yeah, the stuff that can afford to be locally random that basically doesn't affect gameplay, if you will.
00:16:21.039 --> 00:16:25.919
But other stuff which is needs to be consistent has to be identical.
00:16:26.080 --> 00:16:28.240
So you're having some seated random number generated.
00:16:28.399 --> 00:16:38.240
And it is it is it like an endpoint that you're hitting on the server, or is it something that eat in like the parallel simulation everyone has the same like deck of cards that you're just pulling from?
00:16:38.720 --> 00:16:41.039
It's a parallel simulation, everyone has the state.
00:16:41.840 --> 00:16:51.919
The topology of the network of the game might involve a server which acts as a aggregator for inputs and a sort of mediator for when turns happen.
00:16:52.480 --> 00:16:53.039
Interesting.
00:16:53.360 --> 00:16:57.039
But yeah, everyone is doing the same parallel simulation.
00:16:57.600 --> 00:17:05.200
And so, yeah, so a very a very simple way that can desync is through, you know, like we said, wrong wrong randomness locally.
00:17:05.920 --> 00:17:12.160
Effects that occur either locally random or quite a lot, there's effects that occur when you're looking at them, right?
00:17:12.319 --> 00:17:19.599
So where you're looking on the battlefield, and something, you know, when you're looking at something, it's it's animating, it's doing whatever.
00:17:19.920 --> 00:17:28.640
Those kind of things also are local and and and need to not accidentally contribute to the shared simulation.
00:17:30.079 --> 00:17:32.319
And then we can go a deeper level, right?
00:17:32.640 --> 00:17:37.359
You're trying trying to run this game across multiple machines, and though the hardware in those machines isn't the same.
00:17:37.519 --> 00:17:45.599
The way those machine in particular, the way those machines treat floating point numbers has probably small differences, right?
00:17:46.000 --> 00:17:56.960
And so you have to, you know, to run a true parallel simulation, you have to do things like, well, I can't use floating point in my parallel simulation, I have to use fixed point arithmetic, you know, things like that.
00:17:57.440 --> 00:18:00.319
This is way more complicated than I would have ever thought.
00:18:00.960 --> 00:18:08.480
Although I guess I've never thought very deeply about if you wanted to create, yeah, a game like you have never been burned by all these issues.
00:18:08.640 --> 00:18:09.759
That's how it is.
00:18:13.039 --> 00:18:21.359
You can you can foresee some of these issues by thinking deeply, but you know, also a lot of this is experiential, you know, like have you just been burned by that kind of thing before.
00:18:21.680 --> 00:18:21.920
Yeah.
00:18:22.160 --> 00:18:35.119
It's funny because I every once in a while I hear people and they talk about, oh, you know, like you parallelize the reduction of some floating point numbers, and then you don't have stability because you've changed the algorithm from serial to parallel.
00:18:35.279 --> 00:18:41.440
And I always have a little voice in the back of my head is like, I've never, you know, like run into some issue where like that's a big deal.
00:18:41.519 --> 00:18:46.720
You know, like I'm sure there are instances, but there's just a little like, I don't know, is it an angel or a devil?
00:18:46.880 --> 00:18:52.480
Some little voice in the back of my head that's saying that like I understand that that's a thing, but like I've never encountered it.
00:18:52.559 --> 00:18:54.880
And now here you are explaining, yeah.
00:18:54.960 --> 00:19:12.160
Like, even not even it's not like you know, some monetary bank account balance that is you know, probably like the worst case where you know you've you've got some different figure computed and you've losing you're missing some money now, but even just yeah, simulating two games.
00:19:12.400 --> 00:19:22.960
I've never even thought about the fact that, yeah, like you're basic you're basically It's a difficult problem to run a parallel simulation that is c correct uh and identical in every detail.
00:19:23.279 --> 00:19:23.680
Yeah.
00:19:24.000 --> 00:19:28.799
And and so there are there are two there there are two things to to to mitigate that, right?
00:19:28.880 --> 00:19:36.480
What one is make your simulation smaller, don't simulate as much stuff, and not just sort of in numbers, but in terms of axes, right?
00:19:37.279 --> 00:19:45.119
And and then the other side is drill down to all these things that really matter, and sometimes quite low level, right, to make sure they are identical.
00:19:45.359 --> 00:19:46.480
You need to a bit of both.
00:19:46.799 --> 00:19:47.359
That's wild.
00:19:47.519 --> 00:20:00.640
I'd never I would have never thought of the use case for fixed point numbers is to avoid divergence and parallel simulations of a video game because floating point is producing different results on different architectures.
00:20:00.960 --> 00:20:01.680
That's wild.
00:20:01.920 --> 00:20:13.839
Is there any any any other shocking things that you run into in in terms of like you you might not think you might not expect this, but like you have to keep you have to take this into consideration in order to make sure that these games work the way they should?
00:20:14.240 --> 00:20:15.119
I don't know.
00:20:15.279 --> 00:20:16.960
Like uh it's hard for me to think.
00:20:17.359 --> 00:20:24.000
I'm sure if I'm sure if you were actively working in the industry, you would have you would have in the last two weeks you would have bumped into a couple different things.
00:20:24.319 --> 00:20:29.119
You know, in the last ten years of my career, I worked at Blizzard and I worked on Battlenet.
00:20:29.680 --> 00:20:34.079
And and that was that was a different thing again, right?
00:20:34.319 --> 00:20:37.839
So that was MOO adjacent as well, right?
00:20:38.000 --> 00:20:47.599
And so the the focus there is not so much in the real-time simulation, either on FTR FPS or RTS.
00:20:47.920 --> 00:21:02.880
But but a b a big focus there is uh security, knowledge of you know which machines have knowledge of which parts of of the simulation, and that plays into security, of course.
00:21:03.279 --> 00:21:05.359
Resource usage, right?
00:21:05.920 --> 00:21:15.200
So when you're simulating between machines playing a game with FPS or RTS, you're worried about resource usage in one sense, right?
00:21:15.279 --> 00:21:20.079
Which is like you're worried about you know how fast can this go, what's the bandwidth, that kind of thing.
00:21:20.400 --> 00:21:30.880
When you're when you're when you start building servers, then you're worried about a different aspect of resource usage, which is like for everyone that connects here, how much how many resources does that use?
00:21:31.599 --> 00:21:35.920
You need to think about things like denial of service attacks and stuff like that coming into the picture, right?
00:21:36.319 --> 00:21:50.480
And and typically where RTS and FPS have a historically at least, the desire for both lower bandwidth and better latency meant that we typically didn't use, for example, TCP connections.
00:21:50.799 --> 00:21:54.319
TCP connections were considered relatively heavyweight, right?
00:21:54.559 --> 00:21:58.559
The size of the header is larger than the size of the UDP header.
00:21:58.799 --> 00:21:59.759
They have a sort of startup.
00:22:00.319 --> 00:22:09.039
Time, they you know, UDP is sure, it's it's fire and forget, it's not guaranteed delivery, but it's timely, right?
00:22:09.359 --> 00:22:23.519
And in a game where every sixtieth of a second you're having to update the world, things are changing all the time, what happened, you know, half a second ago is kind of irrelevant, right?
00:22:23.680 --> 00:22:30.960
If you if you miss something, if you miss something half a second ago that doesn't affect what the player is saying, you can make it up, right?
00:22:31.200 --> 00:22:32.319
Doesn't matter.
00:22:32.559 --> 00:22:40.960
But when you move to server-based infrastructures and particularly large-scale server-based infrastructures, then you think more about what the resources used.
00:22:41.839 --> 00:22:50.559
And and you know, then you then you start having things like, well, people have multiple connections, you know, their initial connection is to the to the sort of login endpoint.
00:22:50.720 --> 00:22:54.880
After that, they might make another connection to a different kind of server.
00:22:55.039 --> 00:22:57.519
You know, there's load balancing on the front end.
00:22:58.240 --> 00:23:03.119
They might and and then you know there are kind of ancillary things that come in as well.
00:23:03.200 --> 00:23:14.960
Like I was working on BattleNet, there's things like uh, you know, voice chat, which these days is in many, many games, but you know, rind the clockback 20 years and it was in relatively few, sort of came into play.
00:23:15.279 --> 00:23:16.079
That's crazy.
00:23:16.240 --> 00:23:17.519
I mean it's it's wild too.
00:23:17.839 --> 00:23:25.119
Because I like I said I've watched uh quite a bit of I don't know, games being played, and I you you never actually think about like what would it what would it take to go in?
00:23:25.279 --> 00:23:28.880
Like I've actually never also understood fully engines.
00:23:29.200 --> 00:23:38.079
Like I've seen people make videos of like, oh, I'm gonna put together some small game, and they just go to Unity and they just start dropping assets places, and I'm like, wait, is that all it is?
00:23:38.160 --> 00:23:40.240
Like if you if you Yeah, it's all come on to the code.
00:23:40.400 --> 00:23:42.960
You just drop assets and then like do you even need to write?
00:23:43.119 --> 00:23:51.279
I assume you need to write some code to like define the logic of whatever some airplane flying through the mountains or whatever and collision detection.
00:23:51.519 --> 00:23:58.079
But at one point in time, I always thought it was like, oh, you have to drop into C or C sharp or whatever language, and then you have to write the whole thing.
00:23:58.240 --> 00:24:06.240
But now it just seems like there's this drag and drop aspect of some I mean the engine the engine gives you will give you collision detection.
00:24:06.400 --> 00:24:07.440
I'm pretty certain of that.
00:24:07.519 --> 00:24:10.559
You wouldn't have to do your own collision detection necessarily.
00:24:11.039 --> 00:24:13.200
The engine just gives you a framework to build in, right?
00:24:13.279 --> 00:24:16.240
And it solves all the problems which otherwise you would have to solve yourself.
00:24:16.400 --> 00:24:22.559
Like how to render things, how to represent things, how to represent the world, how to do collision detection, right?
00:24:22.640 --> 00:24:24.079
And all the other things.
00:24:24.319 --> 00:24:28.400
How to do animation, how to do audio, how to do textures.
00:24:28.880 --> 00:24:33.599
So when you have an engine, you get to concentrate on what the gameplay is.
00:24:34.000 --> 00:24:37.680
So i with an engine, d is there like do you have to write any code?
00:24:37.839 --> 00:24:40.319
Or is it feasible to go and make a game?
00:24:40.799 --> 00:24:41.680
Oh yeah.
00:24:42.000 --> 00:24:44.240
You always have to write code, I think.
00:24:44.480 --> 00:24:48.559
I mean, we can imagine there are ways in which you can make it without writing code.
00:24:48.799 --> 00:24:49.839
I'm I'm sure.
00:24:50.079 --> 00:24:55.200
But if you want your game to be good, I think you have to write some code.
00:24:56.000 --> 00:24:56.640
Yeah.
00:24:57.039 --> 00:24:58.000
Interesting.
00:24:58.400 --> 00:25:01.440
But you know, an engine isn't just one thing either, right?
00:25:01.519 --> 00:25:06.799
Like I said, there's all these different sort of sub-genres of programming different areas.
00:25:07.200 --> 00:25:10.480
You know, audio, an audio engine is a thing.
00:25:10.720 --> 00:25:11.279
A graphics.
00:25:11.680 --> 00:25:14.799
When we say engine, historically we often meant graphics engine.
00:25:14.960 --> 00:25:16.799
These days it means sort of everything engine.
00:25:16.960 --> 00:25:21.039
So f you know, physics engine, audio engine, animation engine.
00:25:21.359 --> 00:25:21.680
Yeah.
00:25:21.920 --> 00:25:27.759
Yeah, I know Jonathan Blow, I I've heard interviews by him and seen a few of his YouTube live streams.
00:25:28.079 --> 00:25:35.119
And it seems like it for a certain game, he'll write an engine and then he may reuse it for other games as well.
00:25:35.359 --> 00:25:41.920
But a lot of the stuff he's doing is actually building which I I get is not I I guess is not dissimilar from other whatever industries.
00:25:42.079 --> 00:25:53.839
You build a tool using software or using programming, and then you have like a software tool, and then you if you are the programmer, you can go and edit and add stuff to like basically make your job easier.
00:25:53.920 --> 00:26:01.119
Like, you know, if you're the person who designed Excel, you can go add some new function into Excel in order to make it easier to use.
00:26:01.359 --> 00:26:10.160
But technically, you can just go and use Excel at the end of the day, and you maybe know a little bit of VBA, but you don't, you're not hooking into the C to add some new feature.
00:26:10.559 --> 00:26:11.599
I'm sure there's some.
00:26:12.000 --> 00:26:23.839
I mean, another thing, another thing we're we're sort of skirting around is that a primary job of the sort of the unities and the Unreal Engines of the world is the asset pipeline, right?
00:26:24.079 --> 00:26:27.519
So it's not, you know, games aren't only made by programmers.
00:26:27.680 --> 00:26:42.640
A huge amount of them is made by the the artists, the designers, the the the audio folks, the people who make the actual game assets, the graphics, the the 3D models, the sound effects, all that stuff.
00:26:42.720 --> 00:27:00.799
And you need to get all that stuff into your game in a way that understands, and that's a large part, you know, besides besides the programming aspects of how you program graphics, like the asset pipeline is a huge kind of off-the-shelf thing that these that these game engines bring.
00:27:01.200 --> 00:27:08.160
Yeah, I've I've seen that in some of those videos, and you have to typically pay for assets unless if they're like a part of the free assets.
00:27:08.799 --> 00:27:09.279
Right.
00:27:09.440 --> 00:27:09.759
Yeah.
00:27:09.920 --> 00:27:13.200
I mean you can you can pay or get free assets.
00:27:13.359 --> 00:27:19.119
But also if you're working in a game team and you're working with artists, they need a way to they're making assets.
00:27:19.200 --> 00:27:20.240
They need a way to bring it up.
00:27:20.319 --> 00:27:21.039
Right, right, right, yeah.
00:27:21.599 --> 00:27:25.759
You have to design the tools for them to design assets so that you can have a library of them.
00:27:26.079 --> 00:27:32.559
Yeah, you have to you have to bridge the gap between, you know, I don't even know what what tools artists use these days.
00:27:32.799 --> 00:27:45.680
But you know, whatever 3D modeling package produces some output, uses some format, you know, you got you got vertex data, you got texture data, you got, you know, lighting data.
00:27:46.640 --> 00:27:49.920
You need to bring that into the engine and and be able to render it.
00:27:50.319 --> 00:27:55.759
Well to to wrap up this what will probably be two-part series, and then maybe we can talk about something else.
00:27:55.920 --> 00:28:00.160
Do you what are your your game recommendations of 2026?
00:28:01.039 --> 00:28:03.519
Yeah, I'm not even sure if you're you're gaming these days, anyways.
00:28:03.680 --> 00:28:07.759
And they they don't need to be recent, they can be from like, you know, a couple decades ago if you want.
00:28:08.160 --> 00:28:26.880
Well, you know, there are I don't know that I can recommend any recent games because I'm not up to date on what's you know, like in the last even the last five years, the number of if you look at the graph of like how many games are released each year on Steam, it's just like a hockey stick.
00:28:27.440 --> 00:28:30.160
It's it's uh sort of an exponential curve.
00:28:30.240 --> 00:28:34.240
It's kind of ridiculous, actually, kind of amazing to think about.
00:28:34.480 --> 00:28:37.119
So from that point of view, I don't know.
00:28:37.200 --> 00:28:40.960
The games industry right now is in a really bad way, actually.
00:28:41.920 --> 00:28:51.759
Oh, yes, my social media feeds are full of, since I was in the games industry for so long, they're still full of game industry folks.
00:28:52.000 --> 00:29:07.759
And the layoffs that have been hitting the game industry for the last couple of years, I'm gonna say, maybe maybe more, but it doesn't seem to be abating, seems to be only accelerating games industry in a pretty bad way, and I feel for folks in it right now.
00:29:08.079 --> 00:29:14.559
Is that driven by something in particular right now, or there are several factors, you know.
00:29:15.279 --> 00:29:16.880
We can speculate.
00:29:17.599 --> 00:29:20.160
Generative AI is one factor.
00:29:20.319 --> 00:29:27.519
Another factor would be perhaps come down from the hiring frenzy around the pandemic.
00:29:28.319 --> 00:29:39.920
A third factor could be that games are getting more and more, you know, triple A games are just have huge, huge budgets.
00:29:40.000 --> 00:29:42.960
I mean, we're talking over a hundred million dollars, easy.
00:29:43.279 --> 00:29:49.680
Yeah, what I heard something about GTA 6 that it's it's got a like GDP bigger than like some crazy number of countries.
00:29:50.000 --> 00:29:50.400
Oh yeah.
00:29:50.559 --> 00:29:56.640
So when you're making games like that, you really are very, very risk averse, right?
00:29:56.960 --> 00:30:00.880
Which is why we said yourself, GTA 6, right?
00:30:01.039 --> 00:30:02.720
It's not a brand new game.
00:30:02.960 --> 00:30:07.279
It's it's a new version of a formula we already know works.
00:30:07.920 --> 00:30:13.920
So this is the kind of thing that is triple A games almost entirely right now, it seems.
00:30:14.319 --> 00:30:22.720
There is a thriving, you know, like I said, number of games released on Steam just is going up and up and up, and that represents a kind of indie scene, I think.
00:30:23.839 --> 00:30:28.160
But, you know, games are changing a lot.
00:30:28.400 --> 00:30:31.680
Where the money is to be found, I j I don't know anymore.
00:30:31.839 --> 00:30:40.240
And a lot of folks are getting impacted by by layoffs, you know, from from jobs that ten years ago seemed stable.
00:30:41.200 --> 00:30:57.200
Yeah, it makes me think about the the movie industry and how a lot of film studios are just doing you know, sequels, remakes, or pre-existing like intellectual property, you know, book to movie kind of thing.
00:30:57.440 --> 00:31:13.759
And within like the movie space, people say that like these independent films they don't get financed anymore, unless if you happen to be like a a big name director who's proven that they've made a bunch of movies successfully, and so they're willing to take a risk on you.
00:31:13.839 --> 00:31:21.119
But like back 20 years ago, 30 years ago, there was tons of movies that ended up being like classics that would like never get made today.
00:31:21.440 --> 00:31:21.680
Right.
00:31:22.319 --> 00:31:33.519
Well, and it's interesting to think about, you know, for some years, a couple of you know, at least 10 years now, I've been wondering how the game industry would evolve in terms of structure.
00:31:33.680 --> 00:31:38.319
And when we look at the movie industry, you know, we can look back to the 40s.
00:31:38.559 --> 00:31:43.440
The 40s, 30s was the era of the studio, right?
00:31:43.680 --> 00:31:50.559
Where MGM had stars on payroll and you belonged to a studio, you know, and that completely changed.
00:31:50.720 --> 00:31:51.839
Nothing like today, right?
00:31:52.000 --> 00:31:55.599
Now, now when you make a movie, you spin up a company to make the movie.
00:31:55.759 --> 00:32:01.200
You, you know, all of the people working in movies are unionized to a first approximation.
00:32:01.519 --> 00:32:01.920
Right?
00:32:02.160 --> 00:32:03.359
Completely different.
00:32:03.680 --> 00:32:09.200
And, you know, for a while I thought, is this a potential way that it could play out in games?
00:32:09.359 --> 00:32:15.759
You know, like until five years ago, we were still in the studio model for games.
00:32:15.920 --> 00:32:17.599
Maybe that model is shifting now.
00:32:17.920 --> 00:32:19.440
Yeah, I've never thought about that.
00:32:19.680 --> 00:32:20.640
I guess time will tell.
00:32:20.799 --> 00:32:25.279
Um anyways, you were you were about to recommend some stuff, but then uh you mentioned, yeah.
00:32:25.759 --> 00:32:26.240
Was I?
00:32:28.319 --> 00:32:31.039
Oh, well, you know, I don't know.
00:32:31.200 --> 00:32:39.519
I play old games and I play games which anyone would recognize are classics a lot of the time.
00:32:39.839 --> 00:32:42.640
Was Mario Golf on the on the Game Boy?
00:32:42.960 --> 00:32:45.759
Mario Golf on the Game Boy Color is a great game.
00:32:46.079 --> 00:32:46.559
I don't know.
00:32:46.720 --> 00:32:48.720
I don't know, you know, maybe you never heard of that.
00:32:49.519 --> 00:32:56.960
Maybe 25% of our listeners, maybe more, maybe all of our listeners are going, yes, I remember playing Mario Golf on the the Game Boy, that was a great game.
00:32:57.279 --> 00:32:59.440
It depends what kind of games you like to play.
00:32:59.519 --> 00:33:02.880
You know, I like to play I don't really play FPSs.
00:33:03.039 --> 00:33:07.279
I I I don't have the APMs to play RTSs these days.
00:33:08.160 --> 00:33:09.680
And neither do you, by the way.
00:33:09.839 --> 00:33:13.920
After the age of 25, your APMs too too poor to be competitive.
00:33:14.240 --> 00:33:21.920
I don't think even back then, uh because like I I really think you have to start playing video games at a young age to like uh develop that that talent.
00:33:22.079 --> 00:33:25.200
And I was not allowed video games for a very long time.
00:33:25.279 --> 00:33:42.640
And like I I've tried to play Fortnite once or twice, actually more than once or twice, but usually, and I'm sure some of our listeners will relate, I would just go hide in a bush and see how far I could get, and I never won, but I I I couldn't even like build you know the ramps and the structure.
00:33:42.720 --> 00:33:44.880
Like I couldn't my my fingers were not capable.
00:33:45.519 --> 00:33:46.799
I blame my parents.
00:33:47.119 --> 00:33:50.160
So it used to be an interesting so an interesting observation.
00:33:50.319 --> 00:33:56.079
I always thought, and again, this is from maybe 15, 20 years ago, but it's still maybe it's true.
00:33:56.240 --> 00:34:00.799
RTS and FPS, think of those as two genres which we've been talking about, right?
00:34:01.119 --> 00:34:03.359
It's as a beginner, right?
00:34:03.759 --> 00:34:07.519
RTS seems like well, it's a it's a strategy game, right?
00:34:07.599 --> 00:34:09.199
It seems like you have to think about it.
00:34:09.280 --> 00:34:13.679
It seems like it's um a more cerebral kind of a game.
00:34:14.239 --> 00:34:17.599
And FPS seems like a Twitch game, right?
00:34:17.760 --> 00:34:20.320
Reactions are very, very important, right?
00:34:20.480 --> 00:34:21.519
As a beginner.
00:34:21.840 --> 00:34:26.480
At a competitive level, it's almost like those pictures reverse, right?
00:34:26.800 --> 00:34:35.119
TSs are all about going as fast as possible, making your resource engine spin up as quickly as possible, and reacting to the game.
00:34:35.440 --> 00:34:40.239
RTS at a very high level becomes much more, in a sense, of a Twitch game, right?
00:34:40.639 --> 00:34:45.039
Contrast that FPS at a very high level becomes a much more strategic game.
00:34:45.199 --> 00:34:54.000
And it becomes about things like listening for the audio cues so you kind of can get some information about what your opponents are doing and where they are in the level.
00:34:54.239 --> 00:34:55.280
I had never thought about that.
00:34:55.440 --> 00:34:56.320
That's uh very true.
00:34:56.480 --> 00:34:57.360
That's very true.
00:34:57.519 --> 00:35:14.559
I actually, I mean, a fun fact, one of my best friends from university was a competitive StarCraft player, and he was never professional, but he was good enough that he would get paid by professionals to train because a lot of the pro a lot of the pros like a practice partner.
00:35:14.960 --> 00:35:15.519
Yeah, exactly.
00:35:15.599 --> 00:35:34.159
And and they want people that have different strategies because on the competitive scene in tournaments, you play the same people, you get used to their strategies, but it's very hard to find a competitive player that you don't already know their go-to, you know, strategies and whatnot, and I don't know, there's like different races or whatever you call them in StarCraft.
00:35:34.400 --> 00:35:34.639
Right.
00:35:34.880 --> 00:35:38.960
Anyways, he he made money playing against people, which is kind of cool.
00:35:39.280 --> 00:35:45.360
I tend to play games these days that are firstly are comparatively short, right?
00:35:45.599 --> 00:35:55.360
I don't tend to it it's gonna take a lot for me to dive into a game which will require me to put in a hundred hours, two hundred hours.
00:35:55.599 --> 00:35:55.920
Right.
00:35:56.000 --> 00:36:01.360
The the last big game I played was Tears of the Kingdom, which was fantastic.
00:36:01.599 --> 00:36:06.079
Legend of Zelda, by the way, if you're if if Tears of the Kingdom is not enough to give it to you.
00:36:06.320 --> 00:36:07.599
I've heard Legend of Zelda.
00:36:07.679 --> 00:36:10.000
I assume yeah, that's the one with the what do we call it?
00:36:10.239 --> 00:36:11.760
It's the latest one in the Zelda franchise.
00:36:11.920 --> 00:36:13.039
Yeah, the cell shading.
00:36:13.519 --> 00:36:18.480
No, well, uh can't remember actually, but not all Zelda games are cell-shaded.
00:36:18.719 --> 00:36:18.880
Okay.
00:36:19.199 --> 00:36:19.440
Right?
00:36:19.599 --> 00:36:22.960
So, but Tears of the Kingdom was was really, really good.
00:36:23.119 --> 00:36:25.920
But that's the last sort of triple A game.
00:36:26.000 --> 00:36:28.079
That's the last triple A game I I played.
00:36:28.320 --> 00:36:30.480
And that was a couple of years ago now.
00:36:30.719 --> 00:36:34.559
So I tend to play the games which I can play, you know, over a weekend.
00:36:34.639 --> 00:36:36.000
Oh, Return of the Obra Din.
00:36:36.239 --> 00:36:37.199
I played that one.
00:36:37.440 --> 00:36:38.559
That was a great game.
00:36:38.880 --> 00:36:40.239
Return of the Obra.
00:36:40.639 --> 00:36:44.480
Now, if you want to talk about graphics, you're gonna get a shock when you look this up.
00:36:45.280 --> 00:36:48.320
Speaking of graphics, all my monitors are frozen.
00:36:48.400 --> 00:36:49.440
I tried to open a new tab.
00:36:49.920 --> 00:36:50.239
Uh oh.
00:36:50.639 --> 00:36:51.519
Big mistake.
00:36:51.679 --> 00:36:54.079
Maybe I should s maybe I should close this tab.
00:36:54.400 --> 00:36:55.199
The graphics guy.
00:36:55.360 --> 00:36:56.400
I'll look it up later.
00:36:56.559 --> 00:36:58.719
Although So it's a game.
00:36:58.960 --> 00:37:00.559
So what's the pitch?
00:37:00.960 --> 00:37:06.000
The pitch I can give you is um insurance claims adjuster examines boat.
00:37:06.639 --> 00:37:07.199
What?
00:37:07.599 --> 00:37:10.639
Doesn't sound like doesn't sound like a great pitch for a game, is it?
00:37:10.800 --> 00:37:11.119
No.
00:37:11.280 --> 00:37:12.880
So it's the year.
00:37:13.599 --> 00:37:15.679
Oh, 1790.
00:37:15.920 --> 00:37:16.480
About then.
00:37:16.559 --> 00:37:17.519
I I don't remember.
00:37:17.760 --> 00:37:19.280
It's the year 1790.
00:37:19.519 --> 00:37:26.000
The the merchant ship, the Obra Din, has returned from a voyage and the ship is deserted.
00:37:26.159 --> 00:37:29.119
It's now sitting in Southampton docks or wherever.
00:37:29.440 --> 00:37:32.480
You are an insurance claims adjuster.
00:37:33.840 --> 00:37:34.239
What?
00:37:34.559 --> 00:37:37.119
I guess insurance has just been invented at that point, actually.
00:37:37.280 --> 00:37:45.599
So you work for Lloyds of London or whoever, and it's your job to figure out what happened to this ship and what should the insurance payouts be, right?
00:37:46.000 --> 00:37:51.119
So it's a game of exploration and solving mystery, right?
00:37:51.199 --> 00:37:51.840
There's a mystery.
00:37:51.920 --> 00:37:52.800
The ship has returned.
00:37:52.880 --> 00:38:00.159
It had a crew of three dozen plus half a dozen passengers, however many.
00:38:00.639 --> 00:38:03.840
You it's your job to figure out what was the fate of each one.
00:38:04.159 --> 00:38:07.679
What happened such that this ship came back empty?
00:38:08.320 --> 00:38:10.960
And it's a it's a great game.
00:38:11.199 --> 00:38:15.280
You know, you can play it over a few days, a weekend.
00:38:15.679 --> 00:38:16.960
Not a real long game.
00:38:17.280 --> 00:38:23.280
It's maybe you know, it's sort of somewhere between somewhere around 15 hours of gameplay, maybe.
00:38:25.360 --> 00:38:27.280
And it's just really good.
00:38:27.360 --> 00:38:31.199
I enjoy these games which are like Discovery figuring out things.
00:38:31.360 --> 00:38:32.880
That's why I enjoyed The Witness.
00:38:33.280 --> 00:38:35.039
That's kind of like a escape roomy.
00:38:36.000 --> 00:38:37.840
Yeah, yeah, maybe.
00:38:38.079 --> 00:38:46.400
And and talking of graphical style, you know, the Obra Obra Din kind of pioneered a new a totally new graphical style.
00:38:46.559 --> 00:38:53.519
Some other games have since kind of copied it, but it's it's rendered amazingly in in dithered monochrome.
00:38:53.920 --> 00:38:54.559
Oh wow.
00:38:54.800 --> 00:38:57.039
Okay, I did manage to successfully open a tab.
00:38:57.360 --> 00:38:57.440
Yeah.
00:38:57.920 --> 00:39:04.880
So it's a 3D world, but the rendering is quite different from more or less anything that we saw before.
00:39:05.199 --> 00:39:10.400
Wow, it looks it kind of looks like some terminal-based game, except on steroids.
00:39:10.719 --> 00:39:12.880
This was not at all what I was expecting.
00:39:13.599 --> 00:39:14.880
Interesting.
00:39:15.360 --> 00:39:33.440
Well, if ever I have time, maybe I will try and play this game, and then we can have a return of the Oberdin spoiler episode uh where we talk about uh this and you know, I encourage listen I'm not saying I'm gonna do this for sure, but I encourage listeners now to go and play it.
00:39:33.599 --> 00:39:36.880
And then if at any point I have time, I will go and do this.
00:39:36.960 --> 00:39:38.800
It does look like a very, very interesting.
00:39:39.199 --> 00:39:43.519
When you said it pioneered something in graphics, this was not what I was expecting.
00:39:43.840 --> 00:39:45.440
Yeah, not what you were expecting, right?
00:39:45.679 --> 00:39:46.159
Yeah.
00:39:46.480 --> 00:39:47.199
Interesting.
00:39:47.440 --> 00:39:49.920
Alright, well, we got a couple game recommendations out of you.
00:39:50.000 --> 00:39:56.880
Uh I was thinking the only game that I play these days on the computer is Wingspan, which is just a board game.
00:39:56.960 --> 00:39:58.800
So Oh yeah, I know the board game.
00:39:58.960 --> 00:39:59.440
Yeah, yeah.
00:39:59.519 --> 00:40:01.119
It's just a digital version of the board game.
00:40:01.280 --> 00:40:09.119
I mean, the last game that I ever played to completion was Hogwarts Legacy, which was three or four years ago.
00:40:10.079 --> 00:40:11.840
Three or four years ago you played it?
00:40:12.159 --> 00:40:12.559
Yeah.
00:40:13.119 --> 00:40:13.519
Yeah.
00:40:13.840 --> 00:40:15.119
And I haven't touched it since.
00:40:15.199 --> 00:40:15.760
I wrapped it.
00:40:15.840 --> 00:40:17.119
I wrapped it in like two days.
00:40:17.199 --> 00:40:19.440
I was in the top 0.1% of the world.
00:40:19.679 --> 00:40:20.800
And that's that's why I can't.
00:40:21.920 --> 00:40:25.039
Yeah, I can't that's why I can't uh have video games.
00:40:25.360 --> 00:40:27.920
Because my personality is too addictive.
00:40:28.000 --> 00:40:30.159
So I've actually never played World of Warcraft.
00:40:30.320 --> 00:40:32.239
My mother Yeah, I wouldn't stop.
00:40:32.400 --> 00:40:37.599
Yeah, my mother didn't let me have video games, but she specifically said I wasn't allowed a couple games.
00:40:37.679 --> 00:40:39.599
I don't know how she knew what World of Warcraft was.
00:40:39.679 --> 00:40:40.880
I guess it was in the news.
00:40:41.039 --> 00:40:49.760
And I I didn't actually even know what it was, and I went over to a kid's friend's house in high school, I think I was probably grade nine or ten, and I saw what it was.
00:40:50.000 --> 00:40:53.039
And I was like, oh wow, like I understand.
00:40:53.199 --> 00:40:56.960
Like I would my life would disappear as we know it, you know.
00:40:57.119 --> 00:41:08.880
I was doing science fairs and math contests, all of that would have been gone because like the idea of I mean, as as people know, I love to climb leaderboards, city strides, whatever it is.
00:41:08.960 --> 00:41:12.800
If you give me a leaderboard, that's like the number one way to get me to do something, you know.
00:41:12.960 --> 00:41:19.119
If there was some list of people competing to do chores in this house, the problem is there's only two, so it's not a leaderboard.
00:41:19.199 --> 00:41:24.079
But if there was, you you would have the cleanest house probably in the city.
00:41:24.159 --> 00:41:29.440
I'd be I'd be cleaning rooms that didn't need to be cleaned just to work my way up that leaderboard.
00:41:29.519 --> 00:41:31.360
Uh or uh what do you call it?
00:41:31.599 --> 00:41:35.280
You are the perfect victim of sort of the gamification strategy of everything.
00:41:35.519 --> 00:41:36.159
Oh my god.
00:41:36.480 --> 00:41:40.000
Absolutely, absolutely the target demographic.
00:41:40.320 --> 00:41:43.760
What was uh Yeah, so it was on a different episode.
00:41:43.920 --> 00:41:50.960
A guest recommended a book, which I won't remember off the top of my head, but I think it was like uh the theory of game design or something like that.
00:41:51.119 --> 00:41:54.239
The theory of fun, something oh like theory of fun for game design?
00:41:54.400 --> 00:41:55.599
Raf Costa, is it?
00:41:55.760 --> 00:41:56.480
You'll know, I won't.
00:41:56.559 --> 00:41:58.639
I only heard about this book literally a couple days ago.
00:41:58.800 --> 00:42:09.679
But he was saying that that that book, even though he's not a game designer, really influenced the way that he thinks about kind of designing a product that is engaging and gets people to come back.
00:42:09.840 --> 00:42:29.440
Not like in an unhealthy way, but but yeah, like I am the biggest which is why I can't like I don't let myself gamble, I don't let myself really play video games, because yeah, I I think well that's a whole other topic, the the gambling effection of society and how everything has got prediction market odds next to it.
00:42:29.599 --> 00:42:30.480
It's very sad.
00:42:30.800 --> 00:42:37.039
We should we should talk in future because you work on algorithm libraries, right?
00:42:37.199 --> 00:42:37.840
You still work on that?
00:42:38.000 --> 00:42:38.639
Uh yeah, yeah.
00:42:38.800 --> 00:42:39.440
So in some way.
00:42:39.760 --> 00:42:53.440
Uh I don't know which variant of that you work on right now, but so we should talk about the design of the APIs for those kind of things, because most of what I a lot of what I do these days is API design.
00:42:53.760 --> 00:43:03.519
Be sure to check these show notes either in your podcast app or at adsphepodcast.com for links to anything we mentioned in today's episode, as well as a link to a GitHub discussion where you can leave thoughts, comments, and questions.
00:43:03.679 --> 00:43:04.320
Thanks for listening.
00:43:04.400 --> 00:43:05.920
We hope you enjoyed and have a great day.
00:43:06.159 --> 00:43:08.000
I am the anti brace.
00:43:08.480 --> 00:43:08.800
Um
00:00:00.160 --> 00:00:02.240
But I we can we can quickly contrast with RTS.
00:00:02.319 --> 00:00:05.679
So like I said, in FPS you don't you're not simulating very many things at once.
00:00:05.919 --> 00:00:16.239
In RTS and and so okay, so in FPS what that means is you can afford to send the world state across the wire.
00:00:16.399 --> 00:00:16.719
Right?
00:00:16.879 --> 00:00:20.000
You can afford to send deltas in the state of objects.
00:00:20.239 --> 00:00:25.120
Whereas in RTS you have you might have too many objects to do that, right?
00:00:25.760 --> 00:00:29.440
You don't have enough bandwidth to do that sometimes.
00:00:29.600 --> 00:00:33.759
And so, at least in my experience, which I now say is dated.
00:00:33.920 --> 00:00:48.640
But uh you know, when you when you're simulating hundreds of things, potentially a thousand things on the battlefield, sort of sort of numbers, the way RTS used to work, and presumably in some ways still does, the machines are running parallel simulations.
00:00:58.479 --> 00:01:04.480
Welcome to ADSP the podcast, episode 297, recorded on July 22nd, 2026.
00:01:04.560 --> 00:01:05.280
My name is Connor.
00:01:05.359 --> 00:01:14.480
Today with my co-host Ben, we chat about networking in FPS versus RTS video games, the state of the video game industry, the return of the Obra Din, and more.
00:01:24.560 --> 00:01:40.879
The great thing about networking, in terms of it being good for my career, of course, was not just that it took off, but also that in in in networking the the problems don't tend to get that much easier just because the machines get faster, right?
00:01:41.200 --> 00:01:51.120
The latencies over the internet haven't got a whole lot, they certainly haven't got orders of magnitude better in a span of years, right?
00:01:51.280 --> 00:01:53.120
Not in the way that machines get faster.
00:01:53.280 --> 00:02:03.840
And so the fundamental problem of hiding that latency and making the gameplay look smooth, that's one of the fundamental problems with network network programming, of course, hasn't really changed, right?
00:02:04.000 --> 00:02:09.039
Now having said that, different genres of game do networking very differently, right?
00:02:09.120 --> 00:02:16.800
So networking in a first-person shooter is very different, usually, from networking in a real-time strategy game, right?
00:02:16.960 --> 00:02:21.039
Because in a first-person shooter you don't have very many things to simulate.
00:02:21.360 --> 00:02:26.159
You have, you know, a few dozen moving objects in the world.
00:02:26.400 --> 00:02:30.319
Players, rockets, maybe doors, things like that.
00:02:30.479 --> 00:02:36.159
You don't have very you typically at any given moment you don't have very many active things to simulate.
00:02:36.719 --> 00:02:47.759
In a real-time strategy game, you have a lot of units, you have potentially hundreds of units that are it's a it's a it's a you know it's a big distributed simulation, if you like.
00:02:48.000 --> 00:02:56.560
Whereas an FPS is a much more maybe much more latency intolerant, but a much, much smaller simulation.
00:02:56.800 --> 00:03:01.919
And so the strategies you use to to do netbooking are different in those two cases, right?
00:03:02.080 --> 00:03:07.599
And then in and then, you know, in for example an MMO, networking strategy is different again.
00:03:07.919 --> 00:03:08.319
Interesting.
00:03:08.400 --> 00:03:12.159
And so just so that can keep me up to date, this is actually probably less for the listener.
00:03:12.240 --> 00:03:15.439
I'm probably the least steeped in this world than other folks.
00:03:15.680 --> 00:03:17.919
When you say FPS, I definitely know about that.
00:03:18.000 --> 00:03:21.439
I'm thinking like Call of Duty, Fortnite, sure titles like that.
00:03:21.759 --> 00:03:37.680
When you say real-time strategy, the games that I think of are like Civilization and like Dota, but like then you mentioned MMO, so potentially So real-time strategy is classically things more like uh StarCraft.
00:03:38.000 --> 00:03:40.719
Okay, I mean so Starcraft and Dota, they're very similar, no?
00:03:40.879 --> 00:03:43.280
Yeah, Dota derived from StarCraft, right?
00:03:43.520 --> 00:03:45.199
So yeah, you could put it in that camp.
00:03:45.360 --> 00:03:51.520
Back in the day, titles like uh let's see, Command and Conquer was a real-time strategy franchise.
00:03:51.759 --> 00:03:52.080
Okay.
00:03:52.240 --> 00:03:54.080
Was that the was that the boat one?
00:03:54.319 --> 00:03:55.199
The boat one.
00:03:55.439 --> 00:04:00.719
There's some there's some game where you're uh sailing like a pirate trying to shoot other ships.
00:04:01.199 --> 00:04:02.879
Total War franchise.
00:04:03.039 --> 00:04:07.439
Shogun Total War was the first one, and then many after that.
00:04:07.759 --> 00:04:09.120
Okay, I'm not familiar with that title.
00:04:09.439 --> 00:04:13.439
Basically, it's a battlefield, you're controlling lots and lots of units.
00:04:13.599 --> 00:04:21.920
You're building units, you're building bases, you're it's a resource it's a resource engine kind of a game where you get your resource engine started, you build units, you fight.
00:04:22.240 --> 00:04:22.639
Right, yeah.
00:04:22.879 --> 00:04:23.839
Age of Empires.
00:04:23.920 --> 00:04:26.560
I actually I actually did play Age of Empires quite a bit.
00:04:26.879 --> 00:04:27.920
Uh and it's real time.
00:04:28.079 --> 00:04:30.959
So when you said civilization, civilization is turn-based, of course.
00:04:31.040 --> 00:04:31.199
Right?
00:04:31.279 --> 00:04:33.360
So RTS is real-time strategy.
00:04:33.680 --> 00:04:34.800
Oh, I gotta be honest.
00:04:34.879 --> 00:04:38.000
I've only actually played the Civilization board game.
00:04:39.120 --> 00:04:46.160
I just I just assumed that the video game version didn't need to be turn-based because it's a video game.
00:04:46.240 --> 00:04:52.800
Like it wouldn't, if you're gonna fight like, you know, the Romans versus the Greeks, or I don't know what the what the armies were, I imagine it was something like that.
00:04:52.959 --> 00:04:55.519
Like, I imagine it was like World of Warcraft.
00:04:55.839 --> 00:04:59.040
It's you can I think you can pick more or less any civilization these days.
00:04:59.279 --> 00:04:59.759
Yeah, okay.
00:05:00.000 --> 00:05:04.319
So interestingly, Civ the computer game is still turn-based.
00:05:04.480 --> 00:05:10.240
I I pictured it was just like a historical world of Warcraft, yeah, but it's not.
00:05:10.319 --> 00:05:12.079
You're saying it's still turn-based.
00:05:12.399 --> 00:05:15.040
Yeah, civilization, I guess.
00:05:15.920 --> 00:05:23.839
Turn-based strategy tends to be much more about, you know, much more about traversing the tech tree, unlocking new things, getting down the tech tree.
00:05:24.079 --> 00:05:24.319
Right.
00:05:24.480 --> 00:05:24.639
Right.
00:05:24.720 --> 00:05:32.720
Whereas real-time strategy tends to have less of that, and is more about like I said, building a production engine.
00:05:33.040 --> 00:05:33.519
Right?
00:05:33.759 --> 00:05:34.800
In real time.
00:05:35.040 --> 00:05:39.199
So you can build units, build more units, go fight, conquer.
00:05:39.519 --> 00:05:40.000
Right.
00:05:40.319 --> 00:05:44.639
Okay, and so and none of these titles qualify as MMOs, right?
00:05:44.879 --> 00:05:46.879
I guess Fortnite technically is an MMO.
00:05:47.279 --> 00:05:52.560
Well, yeah, so maybe so I'm not I'm not sure.
00:05:52.639 --> 00:05:58.000
Fort Fortnite is a FPS also with elements of MMO.
00:05:58.240 --> 00:06:04.160
I don't actually know what the sort of maximum number of players you can have in the Fortnite game is.
00:06:04.480 --> 00:06:07.920
Well, I mean the classic one's a hundred, but I don't know if you can go above that.
00:06:08.240 --> 00:06:10.240
So it's a pretty small MMO.
00:06:10.480 --> 00:06:17.839
When I say MMOs, I'm talking about things like World of Warcraft, which which you can have 5,000 people on a on a in a single world.
00:06:18.079 --> 00:06:18.560
Yeah, okay.
00:06:18.639 --> 00:06:23.360
And also, too, I guess I guess when I was saying World of Warcraft, there's two, and I've never really understood this.
00:06:23.519 --> 00:06:29.519
There was the World of Warcraft that were like the Age of Empire's games.
00:06:29.759 --> 00:06:31.279
There was there was Warcraft.
00:06:31.439 --> 00:06:32.480
Or is that just Warcraft?
00:06:32.560 --> 00:06:33.759
So I've been saying the wrong thing?
00:06:33.920 --> 00:06:34.319
Yeah.
00:06:34.560 --> 00:06:36.319
So Warcraft was RTS.
00:06:36.720 --> 00:06:36.879
Okay.
00:06:37.360 --> 00:06:41.199
So replace every single time I said World of Warcraft with Warcraft.
00:06:41.279 --> 00:06:42.319
I thought they were the same name.
00:06:42.720 --> 00:06:47.519
I'm losing I'm like a negative thousand nerd credits uh on the this episode.
00:06:48.720 --> 00:06:51.600
Yeah, so Warcraft was originally an RTS.
00:06:51.839 --> 00:06:53.439
Yeah, fantasy-based RTS.
00:06:53.839 --> 00:06:57.360
It was called I think I think it was called Warcraft Orcs and Humans originally, right?
00:06:57.839 --> 00:07:21.360
And that had one, two, three, three th you know, there's Warcraft III was the and then there was the Frozen Throne and some expansions, but basically Warcraft III Plus Plus was the end of that line at the time, and then it and then they took the the franchise, the story, the elements, the IP, if you like, and made the MMO called World of Warcraft.
00:07:21.680 --> 00:07:22.240
I see.
00:07:22.480 --> 00:07:22.800
Okay.
00:07:23.199 --> 00:07:26.000
I henceforth shall never uh make this mistake again.
00:07:26.160 --> 00:07:30.800
Uh everyone's probably screaming at their headphones being like, How is that like World of Warcraft?
00:07:30.879 --> 00:07:31.839
It's not like that at all.
00:07:32.079 --> 00:07:33.519
When I when I meant Warcraft.
00:07:33.680 --> 00:07:35.120
Okay, so we've set the landscape now.
00:07:35.199 --> 00:07:38.560
We've got we've got MMOs, we've got RTS, we've got FPS.
00:07:39.120 --> 00:07:41.279
I mean, there are lots of other genres, of course.
00:07:41.519 --> 00:07:42.079
Right, right.
00:07:42.319 --> 00:07:47.920
But I just singled those out as having th basically three very different approaches to networking.
00:07:48.240 --> 00:07:48.480
Okay.
00:07:48.639 --> 00:08:00.240
And do you want to take us through like Well, so, you know, uh you have to you have to take this with the with the knowledge that uh I haven't worked in games for nearly 10 years.
00:08:00.480 --> 00:08:05.680
Although I do have a long history in games, I know how things were done, things always move on.
00:08:05.759 --> 00:08:13.439
So, you know, if there are people listening to the podcast who are currently working in games, they might be saying Ben doesn't know what he's talking about anymore, and that's fine.
00:08:13.759 --> 00:08:16.720
But I think the broad strokes are probably still true, which is what I said.
00:08:16.800 --> 00:08:26.399
It's like when you program an FPS, you are it's about, you know, it's about using it's about interpolating or extrapolating where you think things are going to move to.
00:08:26.480 --> 00:08:31.519
You have very few things that you're actually simulating at one time, maybe a couple of dozen.
00:08:32.080 --> 00:08:37.519
Because you have players moving around, they're, you know, they're picking up health packs, maybe, they're shooting their weapons.
00:08:37.679 --> 00:08:44.720
Most of their weapons, probably many of the weapons are use what are called colloquially light speed bullets.
00:08:44.879 --> 00:08:48.399
In other words, there's not a bullet you have to simulate in the world.
00:08:48.480 --> 00:08:49.919
It doesn't move slowly enough.
00:08:50.080 --> 00:08:54.960
You know, rockets and things like that are simulated objects that are in the world.
00:08:55.039 --> 00:09:00.639
But if you shoot a pistol, if you shoot a machine gun, those bullets are treated like they're light speed.
00:09:00.879 --> 00:09:01.440
Right.
00:09:02.240 --> 00:09:19.440
And so the the you know, the the big the big problem that you have to solve, and it it's not really a problem to solve, it's more of a design issue that you have to figure out where you lie, where you make a choice, is you know, you're always gonna have the problem.
00:09:19.600 --> 00:09:28.799
Let's say you and I are fighting in an FPS, there is latency between our machines or between our two machines and a third machine, which is a server, right?
00:09:29.519 --> 00:09:41.600
And I might see, I might have you directly in my sights, and I might shoot you, and I and I know that I'm shooting you, but because of latency, I'm not actually shooting you, so I'm seeing the wrong thing, right?
00:09:41.840 --> 00:09:52.559
Conversely, on your side, you you know in your experience that I am not shooting you because you ducked around the corner or something.
00:09:52.639 --> 00:09:54.639
But again, there's that latency, right?
00:09:55.279 --> 00:09:58.799
So how do you how do you solve that problem?
00:09:58.960 --> 00:10:01.519
Who do you how how do you do that fairly?
00:10:01.679 --> 00:10:07.200
And that's really a problem of like design rather than a problem of implementation, right?
00:10:07.600 --> 00:10:20.159
So either to me, you know, the two extremes would be either you you you have an experience where you you you die randomly when no one was shooting you because you couldn't see them, right?
00:10:20.240 --> 00:10:30.399
And that's a bad experience, or I have the experience of I'm shooting this person and they're just not taking damage, and I know I'm shooting them, I've been shooting them for half a second or a second or whatever it is, right?
00:10:30.559 --> 00:10:42.000
So those are the kind of subjective experiences that you you you have to try and treat fairly, try and solve in the presence of tens of milliseconds of latency.
00:10:42.399 --> 00:10:49.039
And my guess is that most of the time it's that the shooter ends up missing if there's a choice.
00:10:49.200 --> 00:10:51.840
And my guess is based on Well, I don't know.
00:10:52.000 --> 00:10:52.559
You don't know?
00:10:52.799 --> 00:11:01.360
Like in a sense, you have a choice when you're simulating, you have a choice of are you always running behind or are you always trying to predict ahead?
00:11:01.519 --> 00:11:03.600
You know, so there's there's kind of that choice.
00:11:03.919 --> 00:11:09.679
When important things happen, and important and important things in FPS is a really like deciding whether or not someone dies.
00:11:09.840 --> 00:11:16.080
That's one of the most important things, right, in FPS that you can identify.
00:11:16.320 --> 00:11:41.360
Sometimes those things are I think they are they are modeled these days by taking taking both sides into account, and sometimes the server will kind of roll back a little way and try and properly order things in time, and and you know, so it's it's like you're always when you're simulating, you are never quite correct, but you're always trying to tend to correctness.
00:11:41.600 --> 00:11:48.720
You know, the the world is always converging to a consistent shared state.
00:11:48.879 --> 00:12:00.240
It never quite gets there, but it and and the amount by which it deviates from that is subjectively controls the sort of quality of the of the experience.
00:12:02.000 --> 00:12:08.159
Yeah, I mean I I remember w when I I used to watch Fortnite back in the day when it was huge.
00:12:08.399 --> 00:12:20.159
And people when they were not at some local tournament, uh inevitably at some point end up like they they're measuring their ping, and then they'll they'll start whining about the ping because LPBs.
00:12:20.480 --> 00:12:20.960
Yeah, yeah, yeah.
00:12:21.200 --> 00:12:26.879
And so that you know, if they miss and they they and so clearly that's like the networking issue that you're talking about here, right?
00:12:26.960 --> 00:12:35.759
Like when the ping is so bad and whatever they click their mouse, but then the server doesn't get it for however many milliseconds, there's only so much you can do, right?
00:12:35.919 --> 00:12:36.240
Yeah.
00:12:36.399 --> 00:12:45.039
And there are certainly issues with with lag spikes and things, but but yes, like you say, there's there's a certain baseline which you can't really get below, right?
00:12:45.279 --> 00:12:50.960
You aren't gonna get much below, you know, a few tens of uh milliseconds.
00:12:51.360 --> 00:12:52.159
Probably.
00:12:52.720 --> 00:12:53.279
Yeah.
00:12:53.519 --> 00:13:09.120
And so, I mean, I don't know, is it too much to try and like dive into like a algorithm for queuing this stuff and like making these decisions, or is it Probably Again, because my my experience is now at least ten years out of date.
00:13:09.360 --> 00:13:11.440
But I we can we can quickly contrast with RTS.
00:13:11.519 --> 00:13:14.960
So like I said, in FPS you don't you're not simulating very many things at once.
00:13:15.200 --> 00:13:25.440
In RTS, and and so okay, so in FPS what that means is you can afford to send the world state across the wire.
00:13:25.679 --> 00:13:26.000
Right?
00:13:26.159 --> 00:13:29.279
You can afford to send deltas in the state of objects.
00:13:30.480 --> 00:13:35.360
Whereas in RTS you have you might have too many objects to do that, right?
00:13:36.080 --> 00:13:39.679
You don't have enough bandwidth to do that sometimes.
00:13:39.840 --> 00:13:43.919
And so, at least in my experience, which I now say is dated.
00:13:44.159 --> 00:13:58.879
But uh, you know, when you when you're simulating hundreds of things, potentially a thousand things on the battlefield, sort of, sort of numbers, the way RTS used to work, and presumably in some ways still does, the machines are running parallel simulations.
00:13:59.440 --> 00:13:59.840
Right?
00:14:00.000 --> 00:14:04.799
So and that and what and what's being sent across the wire are inputs.
00:14:05.279 --> 00:14:05.600
Right?
00:14:05.679 --> 00:14:10.559
And each machine has to simulate what the units do in response to those inputs.
00:14:10.720 --> 00:14:15.519
You know, because it's prohibitive to send all of that state all the time.
00:14:15.679 --> 00:14:23.840
There might be points where you can send some of it and synchronize, but you know, in general, that's the way it used to be done anyway.
00:14:24.000 --> 00:14:25.919
And of course that brings with it its own problems.
00:14:26.080 --> 00:14:30.639
When you're running parallel simulations, you have to be really sure that those simulations aren't going to diverge.
00:14:30.879 --> 00:14:44.559
Well that's what I was immediately thinking of is like if you're s if you're sending it back and forth but you're not doing it constantly, don't you run the risk of two different boxes on other sides of the world simulating that some StarCraft creature goes left instead of right?
00:14:44.879 --> 00:14:47.039
Well, absolutely you run that risk.
00:14:47.200 --> 00:14:50.480
And and and that is why you do things to mitigate that risk.
00:14:50.639 --> 00:14:54.799
So some of the things you do are transmitting checksums, right?
00:14:54.879 --> 00:14:58.080
To to check that you're actually still in sync.
00:14:58.320 --> 00:15:11.519
But more than that, you have to do things like in the code, you know, for the for the good of the team who are writing the code, you have to do things like have separated random number generators, for instance.
00:15:11.679 --> 00:15:26.960
So so one anytime you do something which is going to be part of shared simulation, you have to use the the synchronized the the random number pool which is designated for that use, right?
00:15:27.200 --> 00:15:29.840
But there are lots of things in games that aren't synchronized.
00:15:29.919 --> 00:15:35.360
You know, there's particle effects and there's you know all sorts of things which happen only locally.
00:15:35.519 --> 00:15:39.519
Typically they're in terms of rendering a lot of the time, like particle effects.
00:15:40.000 --> 00:15:43.519
Maybe audio cues or or flavor as well.
00:15:43.919 --> 00:15:49.279
And those things are just happening on sort of local, they need to happen with local randomness, right?
00:15:49.440 --> 00:15:53.360
And it's fine, they don't contribute to the shared simulation state.
00:15:53.600 --> 00:16:02.559
But you can't accidentally use one random number pool when you when you're really supposed to use the other, because then that will produce synchronization, uh desynchronization.
00:16:02.960 --> 00:16:03.279
Right?
00:16:03.440 --> 00:16:11.840
Because everything needs to in the shared simulation, both sides need to agree, you know, in lockstep, what they're doing, in a sense.
00:16:12.159 --> 00:16:13.360
I never thought of that.
00:16:13.519 --> 00:16:20.559
So yeah, the stuff that can afford to be locally random that basically doesn't affect gameplay, if you will.
00:16:21.039 --> 00:16:25.919
But other stuff which is needs to be consistent has to be identical.
00:16:26.080 --> 00:16:28.240
So you're having some seated random number generated.
00:16:28.399 --> 00:16:38.240
And it is it is it like an endpoint that you're hitting on the server, or is it something that eat in like the parallel simulation everyone has the same like deck of cards that you're just pulling from?
00:16:38.720 --> 00:16:41.039
It's a parallel simulation, everyone has the state.
00:16:41.840 --> 00:16:51.919
The topology of the network of the game might involve a server which acts as a aggregator for inputs and a sort of mediator for when turns happen.
00:16:52.480 --> 00:16:53.039
Interesting.
00:16:53.360 --> 00:16:57.039
But yeah, everyone is doing the same parallel simulation.
00:16:57.600 --> 00:17:05.200
And so, yeah, so a very a very simple way that can desync is through, you know, like we said, wrong wrong randomness locally.
00:17:05.920 --> 00:17:12.160
Effects that occur either locally random or quite a lot, there's effects that occur when you're looking at them, right?
00:17:12.319 --> 00:17:19.599
So where you're looking on the battlefield, and something, you know, when you're looking at something, it's it's animating, it's doing whatever.
00:17:19.920 --> 00:17:28.640
Those kind of things also are local and and and need to not accidentally contribute to the shared simulation.
00:17:30.079 --> 00:17:32.319
And then we can go a deeper level, right?
00:17:32.640 --> 00:17:37.359
You're trying trying to run this game across multiple machines, and though the hardware in those machines isn't the same.
00:17:37.519 --> 00:17:45.599
The way those machine in particular, the way those machines treat floating point numbers has probably small differences, right?
00:17:46.000 --> 00:17:56.960
And so you have to, you know, to run a true parallel simulation, you have to do things like, well, I can't use floating point in my parallel simulation, I have to use fixed point arithmetic, you know, things like that.
00:17:57.440 --> 00:18:00.319
This is way more complicated than I would have ever thought.
00:18:00.960 --> 00:18:08.480
Although I guess I've never thought very deeply about if you wanted to create, yeah, a game like you have never been burned by all these issues.
00:18:08.640 --> 00:18:09.759
That's how it is.
00:18:13.039 --> 00:18:21.359
You can you can foresee some of these issues by thinking deeply, but you know, also a lot of this is experiential, you know, like have you just been burned by that kind of thing before.
00:18:21.680 --> 00:18:21.920
Yeah.
00:18:22.160 --> 00:18:35.119
It's funny because I every once in a while I hear people and they talk about, oh, you know, like you parallelize the reduction of some floating point numbers, and then you don't have stability because you've changed the algorithm from serial to parallel.
00:18:35.279 --> 00:18:41.440
And I always have a little voice in the back of my head is like, I've never, you know, like run into some issue where like that's a big deal.
00:18:41.519 --> 00:18:46.720
You know, like I'm sure there are instances, but there's just a little like, I don't know, is it an angel or a devil?
00:18:46.880 --> 00:18:52.480
Some little voice in the back of my head that's saying that like I understand that that's a thing, but like I've never encountered it.
00:18:52.559 --> 00:18:54.880
And now here you are explaining, yeah.
00:18:54.960 --> 00:19:12.160
Like, even not even it's not like you know, some monetary bank account balance that is you know, probably like the worst case where you know you've you've got some different figure computed and you've losing you're missing some money now, but even just yeah, simulating two games.
00:19:12.400 --> 00:19:22.960
I've never even thought about the fact that, yeah, like you're basic you're basically It's a difficult problem to run a parallel simulation that is c correct uh and identical in every detail.
00:19:23.279 --> 00:19:23.680
Yeah.
00:19:24.000 --> 00:19:28.799
And and so there are there are two there there are two things to to to mitigate that, right?
00:19:28.880 --> 00:19:36.480
What one is make your simulation smaller, don't simulate as much stuff, and not just sort of in numbers, but in terms of axes, right?
00:19:37.279 --> 00:19:45.119
And and then the other side is drill down to all these things that really matter, and sometimes quite low level, right, to make sure they are identical.
00:19:45.359 --> 00:19:46.480
You need to a bit of both.
00:19:46.799 --> 00:19:47.359
That's wild.
00:19:47.519 --> 00:20:00.640
I'd never I would have never thought of the use case for fixed point numbers is to avoid divergence and parallel simulations of a video game because floating point is producing different results on different architectures.
00:20:00.960 --> 00:20:01.680
That's wild.
00:20:01.920 --> 00:20:13.839
Is there any any any other shocking things that you run into in in terms of like you you might not think you might not expect this, but like you have to keep you have to take this into consideration in order to make sure that these games work the way they should?
00:20:14.240 --> 00:20:15.119
I don't know.
00:20:15.279 --> 00:20:16.960
Like uh it's hard for me to think.
00:20:17.359 --> 00:20:24.000
I'm sure if I'm sure if you were actively working in the industry, you would have you would have in the last two weeks you would have bumped into a couple different things.
00:20:24.319 --> 00:20:29.119
You know, in the last ten years of my career, I worked at Blizzard and I worked on Battlenet.
00:20:29.680 --> 00:20:34.079
And and that was that was a different thing again, right?
00:20:34.319 --> 00:20:37.839
So that was MOO adjacent as well, right?
00:20:38.000 --> 00:20:47.599
And so the the focus there is not so much in the real-time simulation, either on FTR FPS or RTS.
00:20:47.920 --> 00:21:02.880
But but a b a big focus there is uh security, knowledge of you know which machines have knowledge of which parts of of the simulation, and that plays into security, of course.
00:21:03.279 --> 00:21:05.359
Resource usage, right?
00:21:05.920 --> 00:21:15.200
So when you're simulating between machines playing a game with FPS or RTS, you're worried about resource usage in one sense, right?
00:21:15.279 --> 00:21:20.079
Which is like you're worried about you know how fast can this go, what's the bandwidth, that kind of thing.
00:21:20.400 --> 00:21:30.880
When you're when you're when you start building servers, then you're worried about a different aspect of resource usage, which is like for everyone that connects here, how much how many resources does that use?
00:21:31.599 --> 00:21:35.920
You need to think about things like denial of service attacks and stuff like that coming into the picture, right?
00:21:36.319 --> 00:21:50.480
And and typically where RTS and FPS have a historically at least, the desire for both lower bandwidth and better latency meant that we typically didn't use, for example, TCP connections.
00:21:50.799 --> 00:21:54.319
TCP connections were considered relatively heavyweight, right?
00:21:54.559 --> 00:21:58.559
The size of the header is larger than the size of the UDP header.
00:21:58.799 --> 00:21:59.759
They have a sort of startup.
00:22:00.319 --> 00:22:09.039
Time, they you know, UDP is sure, it's it's fire and forget, it's not guaranteed delivery, but it's timely, right?
00:22:09.359 --> 00:22:23.519
And in a game where every sixtieth of a second you're having to update the world, things are changing all the time, what happened, you know, half a second ago is kind of irrelevant, right?
00:22:23.680 --> 00:22:30.960
If you if you miss something, if you miss something half a second ago that doesn't affect what the player is saying, you can make it up, right?
00:22:31.200 --> 00:22:32.319
Doesn't matter.
00:22:32.559 --> 00:22:40.960
But when you move to server-based infrastructures and particularly large-scale server-based infrastructures, then you think more about what the resources used.
00:22:41.839 --> 00:22:50.559
And and you know, then you then you start having things like, well, people have multiple connections, you know, their initial connection is to the to the sort of login endpoint.
00:22:50.720 --> 00:22:54.880
After that, they might make another connection to a different kind of server.
00:22:55.039 --> 00:22:57.519
You know, there's load balancing on the front end.
00:22:58.240 --> 00:23:03.119
They might and and then you know there are kind of ancillary things that come in as well.
00:23:03.200 --> 00:23:14.960
Like I was working on BattleNet, there's things like uh, you know, voice chat, which these days is in many, many games, but you know, rind the clockback 20 years and it was in relatively few, sort of came into play.
00:23:15.279 --> 00:23:16.079
That's crazy.
00:23:16.240 --> 00:23:17.519
I mean it's it's wild too.
00:23:17.839 --> 00:23:25.119
Because I like I said I've watched uh quite a bit of I don't know, games being played, and I you you never actually think about like what would it what would it take to go in?
00:23:25.279 --> 00:23:28.880
Like I've actually never also understood fully engines.
00:23:29.200 --> 00:23:38.079
Like I've seen people make videos of like, oh, I'm gonna put together some small game, and they just go to Unity and they just start dropping assets places, and I'm like, wait, is that all it is?
00:23:38.160 --> 00:23:40.240
Like if you if you Yeah, it's all come on to the code.
00:23:40.400 --> 00:23:42.960
You just drop assets and then like do you even need to write?
00:23:43.119 --> 00:23:51.279
I assume you need to write some code to like define the logic of whatever some airplane flying through the mountains or whatever and collision detection.
00:23:51.519 --> 00:23:58.079
But at one point in time, I always thought it was like, oh, you have to drop into C or C sharp or whatever language, and then you have to write the whole thing.
00:23:58.240 --> 00:24:06.240
But now it just seems like there's this drag and drop aspect of some I mean the engine the engine gives you will give you collision detection.
00:24:06.400 --> 00:24:07.440
I'm pretty certain of that.
00:24:07.519 --> 00:24:10.559
You wouldn't have to do your own collision detection necessarily.
00:24:11.039 --> 00:24:13.200
The engine just gives you a framework to build in, right?
00:24:13.279 --> 00:24:16.240
And it solves all the problems which otherwise you would have to solve yourself.
00:24:16.400 --> 00:24:22.559
Like how to render things, how to represent things, how to represent the world, how to do collision detection, right?
00:24:22.640 --> 00:24:24.079
And all the other things.
00:24:24.319 --> 00:24:28.400
How to do animation, how to do audio, how to do textures.
00:24:28.880 --> 00:24:33.599
So when you have an engine, you get to concentrate on what the gameplay is.
00:24:34.000 --> 00:24:37.680
So i with an engine, d is there like do you have to write any code?
00:24:37.839 --> 00:24:40.319
Or is it feasible to go and make a game?
00:24:40.799 --> 00:24:41.680
Oh yeah.
00:24:42.000 --> 00:24:44.240
You always have to write code, I think.
00:24:44.480 --> 00:24:48.559
I mean, we can imagine there are ways in which you can make it without writing code.
00:24:48.799 --> 00:24:49.839
I'm I'm sure.
00:24:50.079 --> 00:24:55.200
But if you want your game to be good, I think you have to write some code.
00:24:56.000 --> 00:24:56.640
Yeah.
00:24:57.039 --> 00:24:58.000
Interesting.
00:24:58.400 --> 00:25:01.440
But you know, an engine isn't just one thing either, right?
00:25:01.519 --> 00:25:06.799
Like I said, there's all these different sort of sub-genres of programming different areas.
00:25:07.200 --> 00:25:10.480
You know, audio, an audio engine is a thing.
00:25:10.720 --> 00:25:11.279
A graphics.
00:25:11.680 --> 00:25:14.799
When we say engine, historically we often meant graphics engine.
00:25:14.960 --> 00:25:16.799
These days it means sort of everything engine.
00:25:16.960 --> 00:25:21.039
So f you know, physics engine, audio engine, animation engine.
00:25:21.359 --> 00:25:21.680
Yeah.
00:25:21.920 --> 00:25:27.759
Yeah, I know Jonathan Blow, I I've heard interviews by him and seen a few of his YouTube live streams.
00:25:28.079 --> 00:25:35.119
And it seems like it for a certain game, he'll write an engine and then he may reuse it for other games as well.
00:25:35.359 --> 00:25:41.920
But a lot of the stuff he's doing is actually building which I I get is not I I guess is not dissimilar from other whatever industries.
00:25:42.079 --> 00:25:53.839
You build a tool using software or using programming, and then you have like a software tool, and then you if you are the programmer, you can go and edit and add stuff to like basically make your job easier.
00:25:53.920 --> 00:26:01.119
Like, you know, if you're the person who designed Excel, you can go add some new function into Excel in order to make it easier to use.
00:26:01.359 --> 00:26:10.160
But technically, you can just go and use Excel at the end of the day, and you maybe know a little bit of VBA, but you don't, you're not hooking into the C to add some new feature.
00:26:10.559 --> 00:26:11.599
I'm sure there's some.
00:26:12.000 --> 00:26:23.839
I mean, another thing, another thing we're we're sort of skirting around is that a primary job of the sort of the unities and the Unreal Engines of the world is the asset pipeline, right?
00:26:24.079 --> 00:26:27.519
So it's not, you know, games aren't only made by programmers.
00:26:27.680 --> 00:26:42.640
A huge amount of them is made by the the artists, the designers, the the the audio folks, the people who make the actual game assets, the graphics, the the 3D models, the sound effects, all that stuff.
00:26:42.720 --> 00:27:00.799
And you need to get all that stuff into your game in a way that understands, and that's a large part, you know, besides besides the programming aspects of how you program graphics, like the asset pipeline is a huge kind of off-the-shelf thing that these that these game engines bring.
00:27:01.200 --> 00:27:08.160
Yeah, I've I've seen that in some of those videos, and you have to typically pay for assets unless if they're like a part of the free assets.
00:27:08.799 --> 00:27:09.279
Right.
00:27:09.440 --> 00:27:09.759
Yeah.
00:27:09.920 --> 00:27:13.200
I mean you can you can pay or get free assets.
00:27:13.359 --> 00:27:19.119
But also if you're working in a game team and you're working with artists, they need a way to they're making assets.
00:27:19.200 --> 00:27:20.240
They need a way to bring it up.
00:27:20.319 --> 00:27:21.039
Right, right, right, yeah.
00:27:21.599 --> 00:27:25.759
You have to design the tools for them to design assets so that you can have a library of them.
00:27:26.079 --> 00:27:32.559
Yeah, you have to you have to bridge the gap between, you know, I don't even know what what tools artists use these days.
00:27:32.799 --> 00:27:45.680
But you know, whatever 3D modeling package produces some output, uses some format, you know, you got you got vertex data, you got texture data, you got, you know, lighting data.
00:27:46.640 --> 00:27:49.920
You need to bring that into the engine and and be able to render it.
00:27:50.319 --> 00:27:55.759
Well to to wrap up this what will probably be two-part series, and then maybe we can talk about something else.
00:27:55.920 --> 00:28:00.160
Do you what are your your game recommendations of 2026?
00:28:01.039 --> 00:28:03.519
Yeah, I'm not even sure if you're you're gaming these days, anyways.
00:28:03.680 --> 00:28:07.759
And they they don't need to be recent, they can be from like, you know, a couple decades ago if you want.
00:28:08.160 --> 00:28:26.880
Well, you know, there are I don't know that I can recommend any recent games because I'm not up to date on what's you know, like in the last even the last five years, the number of if you look at the graph of like how many games are released each year on Steam, it's just like a hockey stick.
00:28:27.440 --> 00:28:30.160
It's it's uh sort of an exponential curve.
00:28:30.240 --> 00:28:34.240
It's kind of ridiculous, actually, kind of amazing to think about.
00:28:34.480 --> 00:28:37.119
So from that point of view, I don't know.
00:28:37.200 --> 00:28:40.960
The games industry right now is in a really bad way, actually.
00:28:41.920 --> 00:28:51.759
Oh, yes, my social media feeds are full of, since I was in the games industry for so long, they're still full of game industry folks.
00:28:52.000 --> 00:29:07.759
And the layoffs that have been hitting the game industry for the last couple of years, I'm gonna say, maybe maybe more, but it doesn't seem to be abating, seems to be only accelerating games industry in a pretty bad way, and I feel for folks in it right now.
00:29:08.079 --> 00:29:14.559
Is that driven by something in particular right now, or there are several factors, you know.
00:29:15.279 --> 00:29:16.880
We can speculate.
00:29:17.599 --> 00:29:20.160
Generative AI is one factor.
00:29:20.319 --> 00:29:27.519
Another factor would be perhaps come down from the hiring frenzy around the pandemic.
00:29:28.319 --> 00:29:39.920
A third factor could be that games are getting more and more, you know, triple A games are just have huge, huge budgets.
00:29:40.000 --> 00:29:42.960
I mean, we're talking over a hundred million dollars, easy.
00:29:43.279 --> 00:29:49.680
Yeah, what I heard something about GTA 6 that it's it's got a like GDP bigger than like some crazy number of countries.
00:29:50.000 --> 00:29:50.400
Oh yeah.
00:29:50.559 --> 00:29:56.640
So when you're making games like that, you really are very, very risk averse, right?
00:29:56.960 --> 00:30:00.880
Which is why we said yourself, GTA 6, right?
00:30:01.039 --> 00:30:02.720
It's not a brand new game.
00:30:02.960 --> 00:30:07.279
It's it's a new version of a formula we already know works.
00:30:07.920 --> 00:30:13.920
So this is the kind of thing that is triple A games almost entirely right now, it seems.
00:30:14.319 --> 00:30:22.720
There is a thriving, you know, like I said, number of games released on Steam just is going up and up and up, and that represents a kind of indie scene, I think.
00:30:23.839 --> 00:30:28.160
But, you know, games are changing a lot.
00:30:28.400 --> 00:30:31.680
Where the money is to be found, I j I don't know anymore.
00:30:31.839 --> 00:30:40.240
And a lot of folks are getting impacted by by layoffs, you know, from from jobs that ten years ago seemed stable.
00:30:41.200 --> 00:30:57.200
Yeah, it makes me think about the the movie industry and how a lot of film studios are just doing you know, sequels, remakes, or pre-existing like intellectual property, you know, book to movie kind of thing.
00:30:57.440 --> 00:31:13.759
And within like the movie space, people say that like these independent films they don't get financed anymore, unless if you happen to be like a a big name director who's proven that they've made a bunch of movies successfully, and so they're willing to take a risk on you.
00:31:13.839 --> 00:31:21.119
But like back 20 years ago, 30 years ago, there was tons of movies that ended up being like classics that would like never get made today.
00:31:21.440 --> 00:31:21.680
Right.
00:31:22.319 --> 00:31:33.519
Well, and it's interesting to think about, you know, for some years, a couple of you know, at least 10 years now, I've been wondering how the game industry would evolve in terms of structure.
00:31:33.680 --> 00:31:38.319
And when we look at the movie industry, you know, we can look back to the 40s.
00:31:38.559 --> 00:31:43.440
The 40s, 30s was the era of the studio, right?
00:31:43.680 --> 00:31:50.559
Where MGM had stars on payroll and you belonged to a studio, you know, and that completely changed.
00:31:50.720 --> 00:31:51.839
Nothing like today, right?
00:31:52.000 --> 00:31:55.599
Now, now when you make a movie, you spin up a company to make the movie.
00:31:55.759 --> 00:32:01.200
You, you know, all of the people working in movies are unionized to a first approximation.
00:32:01.519 --> 00:32:01.920
Right?
00:32:02.160 --> 00:32:03.359
Completely different.
00:32:03.680 --> 00:32:09.200
And, you know, for a while I thought, is this a potential way that it could play out in games?
00:32:09.359 --> 00:32:15.759
You know, like until five years ago, we were still in the studio model for games.
00:32:15.920 --> 00:32:17.599
Maybe that model is shifting now.
00:32:17.920 --> 00:32:19.440
Yeah, I've never thought about that.
00:32:19.680 --> 00:32:20.640
I guess time will tell.
00:32:20.799 --> 00:32:25.279
Um anyways, you were you were about to recommend some stuff, but then uh you mentioned, yeah.
00:32:25.759 --> 00:32:26.240
Was I?
00:32:28.319 --> 00:32:31.039
Oh, well, you know, I don't know.
00:32:31.200 --> 00:32:39.519
I play old games and I play games which anyone would recognize are classics a lot of the time.
00:32:39.839 --> 00:32:42.640
Was Mario Golf on the on the Game Boy?
00:32:42.960 --> 00:32:45.759
Mario Golf on the Game Boy Color is a great game.
00:32:46.079 --> 00:32:46.559
I don't know.
00:32:46.720 --> 00:32:48.720
I don't know, you know, maybe you never heard of that.
00:32:49.519 --> 00:32:56.960
Maybe 25% of our listeners, maybe more, maybe all of our listeners are going, yes, I remember playing Mario Golf on the the Game Boy, that was a great game.
00:32:57.279 --> 00:32:59.440
It depends what kind of games you like to play.
00:32:59.519 --> 00:33:02.880
You know, I like to play I don't really play FPSs.
00:33:03.039 --> 00:33:07.279
I I I don't have the APMs to play RTSs these days.
00:33:08.160 --> 00:33:09.680
And neither do you, by the way.
00:33:09.839 --> 00:33:13.920
After the age of 25, your APMs too too poor to be competitive.
00:33:14.240 --> 00:33:21.920
I don't think even back then, uh because like I I really think you have to start playing video games at a young age to like uh develop that that talent.
00:33:22.079 --> 00:33:25.200
And I was not allowed video games for a very long time.
00:33:25.279 --> 00:33:42.640
And like I I've tried to play Fortnite once or twice, actually more than once or twice, but usually, and I'm sure some of our listeners will relate, I would just go hide in a bush and see how far I could get, and I never won, but I I I couldn't even like build you know the ramps and the structure.
00:33:42.720 --> 00:33:44.880
Like I couldn't my my fingers were not capable.
00:33:45.519 --> 00:33:46.799
I blame my parents.
00:33:47.119 --> 00:33:50.160
So it used to be an interesting so an interesting observation.
00:33:50.319 --> 00:33:56.079
I always thought, and again, this is from maybe 15, 20 years ago, but it's still maybe it's true.
00:33:56.240 --> 00:34:00.799
RTS and FPS, think of those as two genres which we've been talking about, right?
00:34:01.119 --> 00:34:03.359
It's as a beginner, right?
00:34:03.759 --> 00:34:07.519
RTS seems like well, it's a it's a strategy game, right?
00:34:07.599 --> 00:34:09.199
It seems like you have to think about it.
00:34:09.280 --> 00:34:13.679
It seems like it's um a more cerebral kind of a game.
00:34:14.239 --> 00:34:17.599
And FPS seems like a Twitch game, right?
00:34:17.760 --> 00:34:20.320
Reactions are very, very important, right?
00:34:20.480 --> 00:34:21.519
As a beginner.
00:34:21.840 --> 00:34:26.480
At a competitive level, it's almost like those pictures reverse, right?
00:34:26.800 --> 00:34:35.119
TSs are all about going as fast as possible, making your resource engine spin up as quickly as possible, and reacting to the game.
00:34:35.440 --> 00:34:40.239
RTS at a very high level becomes much more, in a sense, of a Twitch game, right?
00:34:40.639 --> 00:34:45.039
Contrast that FPS at a very high level becomes a much more strategic game.
00:34:45.199 --> 00:34:54.000
And it becomes about things like listening for the audio cues so you kind of can get some information about what your opponents are doing and where they are in the level.
00:34:54.239 --> 00:34:55.280
I had never thought about that.
00:34:55.440 --> 00:34:56.320
That's uh very true.
00:34:56.480 --> 00:34:57.360
That's very true.
00:34:57.519 --> 00:35:14.559
I actually, I mean, a fun fact, one of my best friends from university was a competitive StarCraft player, and he was never professional, but he was good enough that he would get paid by professionals to train because a lot of the pro a lot of the pros like a practice partner.
00:35:14.960 --> 00:35:15.519
Yeah, exactly.
00:35:15.599 --> 00:35:34.159
And and they want people that have different strategies because on the competitive scene in tournaments, you play the same people, you get used to their strategies, but it's very hard to find a competitive player that you don't already know their go-to, you know, strategies and whatnot, and I don't know, there's like different races or whatever you call them in StarCraft.
00:35:34.400 --> 00:35:34.639
Right.
00:35:34.880 --> 00:35:38.960
Anyways, he he made money playing against people, which is kind of cool.
00:35:39.280 --> 00:35:45.360
I tend to play games these days that are firstly are comparatively short, right?
00:35:45.599 --> 00:35:55.360
I don't tend to it it's gonna take a lot for me to dive into a game which will require me to put in a hundred hours, two hundred hours.
00:35:55.599 --> 00:35:55.920
Right.
00:35:56.000 --> 00:36:01.360
The the last big game I played was Tears of the Kingdom, which was fantastic.
00:36:01.599 --> 00:36:06.079
Legend of Zelda, by the way, if you're if if Tears of the Kingdom is not enough to give it to you.
00:36:06.320 --> 00:36:07.599
I've heard Legend of Zelda.
00:36:07.679 --> 00:36:10.000
I assume yeah, that's the one with the what do we call it?
00:36:10.239 --> 00:36:11.760
It's the latest one in the Zelda franchise.
00:36:11.920 --> 00:36:13.039
Yeah, the cell shading.
00:36:13.519 --> 00:36:18.480
No, well, uh can't remember actually, but not all Zelda games are cell-shaded.
00:36:18.719 --> 00:36:18.880
Okay.
00:36:19.199 --> 00:36:19.440
Right?
00:36:19.599 --> 00:36:22.960
So, but Tears of the Kingdom was was really, really good.
00:36:23.119 --> 00:36:25.920
But that's the last sort of triple A game.
00:36:26.000 --> 00:36:28.079
That's the last triple A game I I played.
00:36:28.320 --> 00:36:30.480
And that was a couple of years ago now.
00:36:30.719 --> 00:36:34.559
So I tend to play the games which I can play, you know, over a weekend.
00:36:34.639 --> 00:36:36.000
Oh, Return of the Obra Din.
00:36:36.239 --> 00:36:37.199
I played that one.
00:36:37.440 --> 00:36:38.559
That was a great game.
00:36:38.880 --> 00:36:40.239
Return of the Obra.
00:36:40.639 --> 00:36:44.480
Now, if you want to talk about graphics, you're gonna get a shock when you look this up.
00:36:45.280 --> 00:36:48.320
Speaking of graphics, all my monitors are frozen.
00:36:48.400 --> 00:36:49.440
I tried to open a new tab.
00:36:49.920 --> 00:36:50.239
Uh oh.
00:36:50.639 --> 00:36:51.519
Big mistake.
00:36:51.679 --> 00:36:54.079
Maybe I should s maybe I should close this tab.
00:36:54.400 --> 00:36:55.199
The graphics guy.
00:36:55.360 --> 00:36:56.400
I'll look it up later.
00:36:56.559 --> 00:36:58.719
Although So it's a game.
00:36:58.960 --> 00:37:00.559
So what's the pitch?
00:37:00.960 --> 00:37:06.000
The pitch I can give you is um insurance claims adjuster examines boat.
00:37:06.639 --> 00:37:07.199
What?
00:37:07.599 --> 00:37:10.639
Doesn't sound like doesn't sound like a great pitch for a game, is it?
00:37:10.800 --> 00:37:11.119
No.
00:37:11.280 --> 00:37:12.880
So it's the year.
00:37:13.599 --> 00:37:15.679
Oh, 1790.
00:37:15.920 --> 00:37:16.480
About then.
00:37:16.559 --> 00:37:17.519
I I don't remember.
00:37:17.760 --> 00:37:19.280
It's the year 1790.
00:37:19.519 --> 00:37:26.000
The the merchant ship, the Obra Din, has returned from a voyage and the ship is deserted.
00:37:26.159 --> 00:37:29.119
It's now sitting in Southampton docks or wherever.
00:37:29.440 --> 00:37:32.480
You are an insurance claims adjuster.
00:37:33.840 --> 00:37:34.239
What?
00:37:34.559 --> 00:37:37.119
I guess insurance has just been invented at that point, actually.
00:37:37.280 --> 00:37:45.599
So you work for Lloyds of London or whoever, and it's your job to figure out what happened to this ship and what should the insurance payouts be, right?
00:37:46.000 --> 00:37:51.119
So it's a game of exploration and solving mystery, right?
00:37:51.199 --> 00:37:51.840
There's a mystery.
00:37:51.920 --> 00:37:52.800
The ship has returned.
00:37:52.880 --> 00:38:00.159
It had a crew of three dozen plus half a dozen passengers, however many.
00:38:00.639 --> 00:38:03.840
You it's your job to figure out what was the fate of each one.
00:38:04.159 --> 00:38:07.679
What happened such that this ship came back empty?
00:38:08.320 --> 00:38:10.960
And it's a it's a great game.
00:38:11.199 --> 00:38:15.280
You know, you can play it over a few days, a weekend.
00:38:15.679 --> 00:38:16.960
Not a real long game.
00:38:17.280 --> 00:38:23.280
It's maybe you know, it's sort of somewhere between somewhere around 15 hours of gameplay, maybe.
00:38:25.360 --> 00:38:27.280
And it's just really good.
00:38:27.360 --> 00:38:31.199
I enjoy these games which are like Discovery figuring out things.
00:38:31.360 --> 00:38:32.880
That's why I enjoyed The Witness.
00:38:33.280 --> 00:38:35.039
That's kind of like a escape roomy.
00:38:36.000 --> 00:38:37.840
Yeah, yeah, maybe.
00:38:38.079 --> 00:38:46.400
And and talking of graphical style, you know, the Obra Obra Din kind of pioneered a new a totally new graphical style.
00:38:46.559 --> 00:38:53.519
Some other games have since kind of copied it, but it's it's rendered amazingly in in dithered monochrome.
00:38:53.920 --> 00:38:54.559
Oh wow.
00:38:54.800 --> 00:38:57.039
Okay, I did manage to successfully open a tab.
00:38:57.360 --> 00:38:57.440
Yeah.
00:38:57.920 --> 00:39:04.880
So it's a 3D world, but the rendering is quite different from more or less anything that we saw before.
00:39:05.199 --> 00:39:10.400
Wow, it looks it kind of looks like some terminal-based game, except on steroids.
00:39:10.719 --> 00:39:12.880
This was not at all what I was expecting.
00:39:13.599 --> 00:39:14.880
Interesting.
00:39:15.360 --> 00:39:33.440
Well, if ever I have time, maybe I will try and play this game, and then we can have a return of the Oberdin spoiler episode uh where we talk about uh this and you know, I encourage listen I'm not saying I'm gonna do this for sure, but I encourage listeners now to go and play it.
00:39:33.599 --> 00:39:36.880
And then if at any point I have time, I will go and do this.
00:39:36.960 --> 00:39:38.800
It does look like a very, very interesting.
00:39:39.199 --> 00:39:43.519
When you said it pioneered something in graphics, this was not what I was expecting.
00:39:43.840 --> 00:39:45.440
Yeah, not what you were expecting, right?
00:39:45.679 --> 00:39:46.159
Yeah.
00:39:46.480 --> 00:39:47.199
Interesting.
00:39:47.440 --> 00:39:49.920
Alright, well, we got a couple game recommendations out of you.
00:39:50.000 --> 00:39:56.880
Uh I was thinking the only game that I play these days on the computer is Wingspan, which is just a board game.
00:39:56.960 --> 00:39:58.800
So Oh yeah, I know the board game.
00:39:58.960 --> 00:39:59.440
Yeah, yeah.
00:39:59.519 --> 00:40:01.119
It's just a digital version of the board game.
00:40:01.280 --> 00:40:09.119
I mean, the last game that I ever played to completion was Hogwarts Legacy, which was three or four years ago.
00:40:10.079 --> 00:40:11.840
Three or four years ago you played it?
00:40:12.159 --> 00:40:12.559
Yeah.
00:40:13.119 --> 00:40:13.519
Yeah.
00:40:13.840 --> 00:40:15.119
And I haven't touched it since.
00:40:15.199 --> 00:40:15.760
I wrapped it.
00:40:15.840 --> 00:40:17.119
I wrapped it in like two days.
00:40:17.199 --> 00:40:19.440
I was in the top 0.1% of the world.
00:40:19.679 --> 00:40:20.800
And that's that's why I can't.
00:40:21.920 --> 00:40:25.039
Yeah, I can't that's why I can't uh have video games.
00:40:25.360 --> 00:40:27.920
Because my personality is too addictive.
00:40:28.000 --> 00:40:30.159
So I've actually never played World of Warcraft.
00:40:30.320 --> 00:40:32.239
My mother Yeah, I wouldn't stop.
00:40:32.400 --> 00:40:37.599
Yeah, my mother didn't let me have video games, but she specifically said I wasn't allowed a couple games.
00:40:37.679 --> 00:40:39.599
I don't know how she knew what World of Warcraft was.
00:40:39.679 --> 00:40:40.880
I guess it was in the news.
00:40:41.039 --> 00:40:49.760
And I I didn't actually even know what it was, and I went over to a kid's friend's house in high school, I think I was probably grade nine or ten, and I saw what it was.
00:40:50.000 --> 00:40:53.039
And I was like, oh wow, like I understand.
00:40:53.199 --> 00:40:56.960
Like I would my life would disappear as we know it, you know.
00:40:57.119 --> 00:41:08.880
I was doing science fairs and math contests, all of that would have been gone because like the idea of I mean, as as people know, I love to climb leaderboards, city strides, whatever it is.
00:41:08.960 --> 00:41:12.800
If you give me a leaderboard, that's like the number one way to get me to do something, you know.
00:41:12.960 --> 00:41:19.119
If there was some list of people competing to do chores in this house, the problem is there's only two, so it's not a leaderboard.
00:41:19.199 --> 00:41:24.079
But if there was, you you would have the cleanest house probably in the city.
00:41:24.159 --> 00:41:29.440
I'd be I'd be cleaning rooms that didn't need to be cleaned just to work my way up that leaderboard.
00:41:29.519 --> 00:41:31.360
Uh or uh what do you call it?
00:41:31.599 --> 00:41:35.280
You are the perfect victim of sort of the gamification strategy of everything.
00:41:35.519 --> 00:41:36.159
Oh my god.
00:41:36.480 --> 00:41:40.000
Absolutely, absolutely the target demographic.
00:41:40.320 --> 00:41:43.760
What was uh Yeah, so it was on a different episode.
00:41:43.920 --> 00:41:50.960
A guest recommended a book, which I won't remember off the top of my head, but I think it was like uh the theory of game design or something like that.
00:41:51.119 --> 00:41:54.239
The theory of fun, something oh like theory of fun for game design?
00:41:54.400 --> 00:41:55.599
Raf Costa, is it?
00:41:55.760 --> 00:41:56.480
You'll know, I won't.
00:41:56.559 --> 00:41:58.639
I only heard about this book literally a couple days ago.
00:41:58.800 --> 00:42:09.679
But he was saying that that that book, even though he's not a game designer, really influenced the way that he thinks about kind of designing a product that is engaging and gets people to come back.
00:42:09.840 --> 00:42:29.440
Not like in an unhealthy way, but but yeah, like I am the biggest which is why I can't like I don't let myself gamble, I don't let myself really play video games, because yeah, I I think well that's a whole other topic, the the gambling effection of society and how everything has got prediction market odds next to it.
00:42:29.599 --> 00:42:30.480
It's very sad.
00:42:30.800 --> 00:42:37.039
We should we should talk in future because you work on algorithm libraries, right?
00:42:37.199 --> 00:42:37.840
You still work on that?
00:42:38.000 --> 00:42:38.639
Uh yeah, yeah.
00:42:38.800 --> 00:42:39.440
So in some way.
00:42:39.760 --> 00:42:53.440
Uh I don't know which variant of that you work on right now, but so we should talk about the design of the APIs for those kind of things, because most of what I a lot of what I do these days is API design.
00:42:53.760 --> 00:43:03.519
Be sure to check these show notes either in your podcast app or at adsphepodcast.com for links to anything we mentioned in today's episode, as well as a link to a GitHub discussion where you can leave thoughts, comments, and questions.
00:43:03.679 --> 00:43:04.320
Thanks for listening.
00:43:04.400 --> 00:43:05.920
We hope you enjoyed and have a great day.
00:43:06.159 --> 00:43:08.000
I am the anti brace.
00:43:08.480 --> 00:43:08.800
Um