WEBVTT

1
00:00:00.080 --> 00:00:03.359
<v Speaker 1>So picture this. You're playing a game and you round

2
00:00:03.439 --> 00:00:07.240
<v Speaker 1>a corner in some dark digital dungeon and boom and

3
00:00:07.480 --> 00:00:09.119
<v Speaker 1>enemy suddenly springs an ambush.

4
00:00:09.160 --> 00:00:11.480
<v Speaker 2>Oh yeah, your heart just completely jumps into your throat.

5
00:00:11.359 --> 00:00:13.279
<v Speaker 1>Right, And in that split second, you know, you're not

6
00:00:13.359 --> 00:00:16.640
<v Speaker 1>thinking about code or like pixels on a screen.

7
00:00:16.800 --> 00:00:17.480
<v Speaker 2>Oh of course not.

8
00:00:17.600 --> 00:00:20.399
<v Speaker 1>You're just thinking, wow, that felt so real. Because we

9
00:00:20.480 --> 00:00:24.280
<v Speaker 1>play these games expecting this organic spontaneity, right, We really

10
00:00:24.320 --> 00:00:26.679
<v Speaker 1>want that digital world to feel alive, we do.

11
00:00:27.039 --> 00:00:31.960
<v Speaker 3>But the truth is that organic feeling is entirely fabricated,

12
00:00:32.039 --> 00:00:35.479
<v Speaker 3>like completely, when you actually step behind the curtain of

13
00:00:35.600 --> 00:00:39.920
<v Speaker 3>game development, all that spontaneity just vanishes. You're looking at

14
00:00:39.960 --> 00:00:44.399
<v Speaker 3>this landscape of cold, hard, purely deterministic code.

15
00:00:44.159 --> 00:00:46.000
<v Speaker 1>Which is so wild to think about.

16
00:00:46.119 --> 00:00:49.000
<v Speaker 3>It is because computers are well, they're rigid machines. You

17
00:00:49.119 --> 00:00:52.479
<v Speaker 3>literally cannot be spontaneous. Everything you feel in that dungeon

18
00:00:52.880 --> 00:00:55.560
<v Speaker 3>is just a meticulously crafted mathematical illusion.

19
00:00:56.039 --> 00:00:59.439
<v Speaker 1>And today we are ripping open that code to see

20
00:00:59.479 --> 00:01:02.759
<v Speaker 1>exactly how developers pull off that trick. We are doing

21
00:01:02.840 --> 00:01:07.040
<v Speaker 1>a deep dive into this brilliant textbook. It's called Algorithms

22
00:01:07.040 --> 00:01:11.079
<v Speaker 1>and Networking for Computer Games by Juni Smed and Harriet Conan.

23
00:01:11.239 --> 00:01:13.079
<v Speaker 2>It's a fascinating read, it really is.

24
00:01:13.680 --> 00:01:16.719
<v Speaker 1>And our mission today is to figure out how programmers

25
00:01:16.760 --> 00:01:21.040
<v Speaker 1>manipulate math and psychology to trick your brain. We're going

26
00:01:21.120 --> 00:01:23.560
<v Speaker 1>to start from the foundational rules of play and go

27
00:01:23.640 --> 00:01:26.480
<v Speaker 1>all the way down to the invisible algorithms that basically

28
00:01:26.560 --> 00:01:27.760
<v Speaker 1>manufacture chaos.

29
00:01:28.120 --> 00:01:30.480
<v Speaker 3>Yeah, and to understand the math, we first have to

30
00:01:30.519 --> 00:01:33.280
<v Speaker 3>agree on what we're actually trying to simulate, right, right,

31
00:01:33.519 --> 00:01:35.959
<v Speaker 3>Because when you strip away the high resolution graphics and

32
00:01:36.000 --> 00:01:39.959
<v Speaker 3>you know, the fancy haptic feedback controllers, Smed and Hakonan

33
00:01:40.120 --> 00:01:44.359
<v Speaker 3>argue that an interactive world requires one specific crucial ingredient

34
00:01:44.719 --> 00:01:47.000
<v Speaker 3>to separate it from just a static puzzle.

35
00:01:46.799 --> 00:01:48.560
<v Speaker 2>And that ingredient unpredictability.

36
00:01:48.599 --> 00:01:51.040
<v Speaker 1>Okay, let's unpack this because the book uses a really

37
00:01:51.079 --> 00:01:54.680
<v Speaker 1>specific word here, which is conflict. Yes, conflict, And when

38
00:01:54.719 --> 00:01:58.480
<v Speaker 1>I hear conflict, my mind immediately goes to like fighting

39
00:01:58.560 --> 00:02:01.920
<v Speaker 1>a digital dragon or racing against a rival car. But

40
00:02:02.079 --> 00:02:06.120
<v Speaker 1>the authors argue it's actually way broader than that, much brighter. Yeah,

41
00:02:06.280 --> 00:02:10.280
<v Speaker 1>because think about a Sunday crossword puzzle, right. It's challenging,

42
00:02:10.360 --> 00:02:13.000
<v Speaker 1>it has rules, it has a goal, but is it

43
00:02:13.039 --> 00:02:13.479
<v Speaker 1>a game.

44
00:02:13.919 --> 00:02:18.120
<v Speaker 3>Well, by the strict definitions used in game architecture, a

45
00:02:18.159 --> 00:02:21.800
<v Speaker 3>standard crossword puzzle is not actually a game. Wait really yeah,

46
00:02:21.840 --> 00:02:24.879
<v Speaker 3>because it lacks non determinism. A crossword puzzle just sits there.

47
00:02:25.240 --> 00:02:28.159
<v Speaker 3>It doesn't fight back, you know, doesn't adapt.

48
00:02:27.800 --> 00:02:28.360
<v Speaker 2>To your choices.

49
00:02:28.560 --> 00:02:29.120
<v Speaker 1>Okay, I see.

50
00:02:29.199 --> 00:02:32.199
<v Speaker 3>So conflict in this specific context means you are facing

51
00:02:32.240 --> 00:02:37.080
<v Speaker 3>an opposing force or some random process that actively obstructs you.

52
00:02:37.280 --> 00:02:39.240
<v Speaker 1>Right, So if you add a ticking timer to that

53
00:02:39.319 --> 00:02:41.560
<v Speaker 1>crossword or I don't know, you're raising a friend to

54
00:02:41.560 --> 00:02:42.599
<v Speaker 1>finish it first.

55
00:02:42.400 --> 00:02:45.919
<v Speaker 3>Suddenly have non determinism. Exactly, You've injected chaos, and now

56
00:02:45.960 --> 00:02:46.479
<v Speaker 3>you have game.

57
00:02:46.639 --> 00:02:49.599
<v Speaker 1>Okay, So in a single player experience, developers have to

58
00:02:49.719 --> 00:02:54.120
<v Speaker 1>artificially inject that chaos. They have to simulate an opposing

59
00:02:54.199 --> 00:02:57.520
<v Speaker 1>force using AI, which the authors call synthetic players.

60
00:02:57.599 --> 00:02:58.639
<v Speaker 2>Right, synthetic players.

61
00:02:58.800 --> 00:03:00.960
<v Speaker 1>But here is the most counter intuitive part of this

62
00:03:01.000 --> 00:03:04.680
<v Speaker 1>whole illusion. For me, to make an AI opponent feel

63
00:03:04.719 --> 00:03:09.240
<v Speaker 1>like a real, living human, developers actually have to break it. Yes,

64
00:03:09.319 --> 00:03:11.879
<v Speaker 1>they have to make the AI significantly worse.

65
00:03:12.240 --> 00:03:15.280
<v Speaker 3>Well, you have to consider what computers are actually capable of, right,

66
00:03:15.360 --> 00:03:19.520
<v Speaker 3>Like a machine can calculate your character's exact coordinates aim

67
00:03:19.599 --> 00:03:23.199
<v Speaker 3>with pixel perfect precision and just eliminate you the exact

68
00:03:23.199 --> 00:03:24.879
<v Speaker 3>millisecond you enter its line of sight.

69
00:03:24.960 --> 00:03:26.919
<v Speaker 1>Right, It's basically the Terminator exactly.

70
00:03:27.159 --> 00:03:31.479
<v Speaker 3>It possesses superhuman perfection, but playing against flawless perfection is

71
00:03:31.599 --> 00:03:36.080
<v Speaker 3>incredibly boring and frustrating. Completely, it feels robotic, and it

72
00:03:36.159 --> 00:03:39.719
<v Speaker 3>instantly shatters that illusion of playing against a living, breathing

73
00:03:39.840 --> 00:03:41.159
<v Speaker 3>entity in a shared space.

74
00:03:41.520 --> 00:03:44.199
<v Speaker 1>So it's all about simulating human flaws. And there is

75
00:03:44.240 --> 00:03:47.960
<v Speaker 1>this amazing specific detail from the text about how developers

76
00:03:48.000 --> 00:03:48.560
<v Speaker 1>engineer this.

77
00:03:48.680 --> 00:03:49.639
<v Speaker 2>Oh the reaction time.

78
00:03:49.800 --> 00:03:52.800
<v Speaker 1>Yes, when you take a synthetic player by surprise, say

79
00:03:52.840 --> 00:03:55.479
<v Speaker 1>you flank an enemy in a shooter game, the programmers

80
00:03:55.520 --> 00:03:58.599
<v Speaker 1>hard code a deliberate zero point two to zero point

81
00:03:58.599 --> 00:04:02.000
<v Speaker 1>four second reaction time delay before the AI is even

82
00:04:02.000 --> 00:04:02.960
<v Speaker 1>allowed to shoot back.

83
00:04:03.240 --> 00:04:06.840
<v Speaker 3>Yeah, and that specific window of time is absolutely no accident.

84
00:04:07.599 --> 00:04:11.240
<v Speaker 3>It simulates the cognitive processing time of a human being.

85
00:04:11.520 --> 00:04:13.840
<v Speaker 3>It basically mimics panic, panick.

86
00:04:13.960 --> 00:04:14.159
<v Speaker 1>Right.

87
00:04:14.240 --> 00:04:16.800
<v Speaker 3>Yeah, So when you surprise an enemy and they freeze

88
00:04:16.839 --> 00:04:19.959
<v Speaker 3>for like a third of a second before scrambling for cover,

89
00:04:20.480 --> 00:04:23.439
<v Speaker 3>your brain subconsciously registers the ODEA.

90
00:04:23.199 --> 00:04:24.560
<v Speaker 1>Loop, the Obie loop.

91
00:04:24.639 --> 00:04:29.120
<v Speaker 3>Yeah, observe orient decide act, you recognize that slight hesitation

92
00:04:29.160 --> 00:04:31.680
<v Speaker 3>as human cognition, and the illusion holds.

93
00:04:31.920 --> 00:04:36.079
<v Speaker 1>Wow. But this introduces a massive headache for the game designers,

94
00:04:36.079 --> 00:04:36.519
<v Speaker 1>doesn't it.

95
00:04:36.560 --> 00:04:37.759
<v Speaker 2>Oh a huge one.

96
00:04:37.600 --> 00:04:41.959
<v Speaker 1>Because if you program these synthetic players to act somewhat unpredictably,

97
00:04:42.240 --> 00:04:44.639
<v Speaker 1>and then you give the actual human player the freedom

98
00:04:44.680 --> 00:04:47.040
<v Speaker 1>to do literally whatever they want, how on earth do

99
00:04:47.079 --> 00:04:49.800
<v Speaker 1>you guarantee the game still tells a cohesive story.

100
00:04:49.920 --> 00:04:52.480
<v Speaker 3>Well, you've hit on what the authors called the narrative paradox.

101
00:04:52.839 --> 00:04:55.959
<v Speaker 3>It is the central tension in all interactive storytelling.

102
00:04:55.639 --> 00:04:56.639
<v Speaker 1>A narrative paradox.

103
00:04:56.759 --> 00:04:57.040
<v Speaker 2>Yeah.

104
00:04:57.079 --> 00:04:59.519
<v Speaker 3>So, on one side of the scale you have plot coherence,

105
00:04:59.639 --> 00:05:02.120
<v Speaker 3>the there's in the designers. They want to deliver a

106
00:05:02.199 --> 00:05:05.879
<v Speaker 3>well paced, dramatic, emotionally resonant story.

107
00:05:05.639 --> 00:05:07.079
<v Speaker 2>Like a movie exactly.

108
00:05:07.759 --> 00:05:11.800
<v Speaker 3>But on the other side you have character believability and

109
00:05:12.000 --> 00:05:15.560
<v Speaker 3>player agency. You need the player and the AI to

110
00:05:15.680 --> 00:05:18.160
<v Speaker 3>have the actual freedom to ma choices.

111
00:05:17.839 --> 00:05:20.279
<v Speaker 1>Because if I have total freedom, I might just decide

112
00:05:20.319 --> 00:05:23.040
<v Speaker 1>to wander off into the woods to pick digital mushrooms

113
00:05:23.079 --> 00:05:26.000
<v Speaker 1>and completely ignore the terrifying dragon that's supposed to be

114
00:05:26.000 --> 00:05:27.399
<v Speaker 1>attacking the castle.

115
00:05:27.279 --> 00:05:29.759
<v Speaker 3>Right, and then the pacing is completely ruined. The story

116
00:05:29.839 --> 00:05:30.759
<v Speaker 3>just grinds.

117
00:05:30.399 --> 00:05:30.920
<v Speaker 2>To a halt.

118
00:05:31.000 --> 00:05:32.000
<v Speaker 1>So how do they fix that?

119
00:05:32.360 --> 00:05:35.959
<v Speaker 3>So the industry generally tackles this tension from two different directions.

120
00:05:36.360 --> 00:05:40.040
<v Speaker 3>The first is a character centric approach. Okay, here, the

121
00:05:40.079 --> 00:05:44.959
<v Speaker 3>AI characters are highly autonomous. They act on their own program, desires,

122
00:05:45.000 --> 00:05:49.480
<v Speaker 3>and needs, and sometimes they even use a hybrid communication system.

123
00:05:49.519 --> 00:05:50.399
<v Speaker 1>Wait, what does that mean.

124
00:05:50.839 --> 00:05:54.160
<v Speaker 3>Well, they speak in character to the player, but simultaneously

125
00:05:54.519 --> 00:05:57.439
<v Speaker 3>they send out of character signals to the game's background

126
00:05:57.519 --> 00:06:01.360
<v Speaker 3>systems to try gently nudge the plot forward organically.

127
00:06:01.519 --> 00:06:02.680
<v Speaker 1>Oh that's clever, it is.

128
00:06:02.759 --> 00:06:04.720
<v Speaker 3>The story basically emerges from the bottom up.

129
00:06:04.920 --> 00:06:07.120
<v Speaker 1>But the problem with the bottom up approach is that

130
00:06:07.160 --> 00:06:10.079
<v Speaker 1>it can quickly turn into the chaos of everyday life. Right,

131
00:06:10.439 --> 00:06:14.639
<v Speaker 1>real life isn't inherently structured like a three act cinematic blockbuster.

132
00:06:14.920 --> 00:06:16.120
<v Speaker 2>No, it definitely isn't.

133
00:06:16.199 --> 00:06:19.759
<v Speaker 1>So the alternative is the author centric approach, which relies

134
00:06:19.800 --> 00:06:22.160
<v Speaker 1>on something called an invisible drama manager.

135
00:06:22.360 --> 00:06:24.240
<v Speaker 3>Yes, the drama manager, which I love.

136
00:06:24.560 --> 00:06:27.439
<v Speaker 1>Think of it like a stage director secretly walking among

137
00:06:27.480 --> 00:06:32.000
<v Speaker 1>the actors, whispering in their ears, completely unseen by the audience.

138
00:06:32.240 --> 00:06:33.360
<v Speaker 2>That's a perfect way to put it.

139
00:06:33.680 --> 00:06:36.879
<v Speaker 3>The drama manager is constantly running math in the background,

140
00:06:37.279 --> 00:06:40.120
<v Speaker 3>monitoring metrics like player tension and pacing.

141
00:06:40.199 --> 00:06:42.240
<v Speaker 1>So that's washing what I do constantly.

142
00:06:42.439 --> 00:06:45.079
<v Speaker 3>If the algorithm's determined you've been wandering the woods picking

143
00:06:45.120 --> 00:06:47.959
<v Speaker 3>mushrooms for way too long and the tension is dropping,

144
00:06:48.279 --> 00:06:52.079
<v Speaker 3>the drama manager whispers to the AI enemies to spawn

145
00:06:52.160 --> 00:06:54.519
<v Speaker 3>an ambush just out of your line of sight.

146
00:06:54.360 --> 00:06:56.279
<v Speaker 1>To get my heart rate back up exactly.

147
00:06:56.720 --> 00:07:00.680
<v Speaker 3>Or conversely, if you are low on health and completely overwhelmed,

148
00:07:00.920 --> 00:07:03.120
<v Speaker 3>it tells the enemies to pull back a bit or

149
00:07:03.120 --> 00:07:06.240
<v Speaker 3>to miss their shots. It subtly manipulates the parameters of

150
00:07:06.279 --> 00:07:09.399
<v Speaker 3>the world to push you toward the intended emotional beats.

151
00:07:09.639 --> 00:07:13.360
<v Speaker 1>But even with a brilliant invisible director, the developers still

152
00:07:13.360 --> 00:07:16.439
<v Speaker 1>have to physically build the paths the story can take.

153
00:07:16.600 --> 00:07:19.720
<v Speaker 1>Right they do, and the text maps out game stories

154
00:07:19.800 --> 00:07:22.759
<v Speaker 1>using these geometrical graphs. The most basic one is just

155
00:07:22.839 --> 00:07:26.120
<v Speaker 1>a linear story. Episode A always leads to episode B,

156
00:07:26.240 --> 00:07:28.680
<v Speaker 1>which leads to episode C. It's just a straight line.

157
00:07:28.800 --> 00:07:32.240
<v Speaker 3>Yeah, and linear development is incredibly cost effective, but it

158
00:07:32.279 --> 00:07:36.079
<v Speaker 3>offers almost zero agency. You're essentially just walking through a movie, right.

159
00:07:36.439 --> 00:07:40.360
<v Speaker 3>The theoretical opposite of that is a fully branching structure

160
00:07:40.680 --> 00:07:44.680
<v Speaker 3>where every single choice you make leads to a completely different,

161
00:07:44.879 --> 00:07:46.759
<v Speaker 3>unique continuation of the game.

162
00:07:46.639 --> 00:07:49.319
<v Speaker 1>Which sounds like the holy grail of gaming until you

163
00:07:49.399 --> 00:07:52.000
<v Speaker 1>actually do the math on the combinatorial explosion.

164
00:07:52.040 --> 00:07:53.199
<v Speaker 2>Oh, the math is terrifying.

165
00:07:53.360 --> 00:07:55.519
<v Speaker 1>It really is. Let's say you have a scene with

166
00:07:55.639 --> 00:07:58.920
<v Speaker 1>three dialogue choices, and each of those choices leads to

167
00:07:59.079 --> 00:08:02.319
<v Speaker 1>three entirely new scenarios. By the time you reach the

168
00:08:02.399 --> 00:08:05.120
<v Speaker 1>fourth major decision point in the game, you aren't programming

169
00:08:05.120 --> 00:08:09.000
<v Speaker 1>one game anymore. You're programming eighty one completely different games.

170
00:08:09.199 --> 00:08:12.160
<v Speaker 1>You'd have studio spending twelve years and half a billion

171
00:08:12.240 --> 00:08:14.759
<v Speaker 1>dollars just to make a five hour campaign.

172
00:08:15.120 --> 00:08:19.680
<v Speaker 3>It's completely unsustainable. So developers rely on a highly calculated

173
00:08:19.720 --> 00:08:24.319
<v Speaker 3>compromise called parallel pass. Parallel pad right, the story branch

174
00:08:24.360 --> 00:08:26.560
<v Speaker 3>is out for a while, allowing you to make choices,

175
00:08:26.839 --> 00:08:30.399
<v Speaker 3>take different routes, and express your agency. This provides that

176
00:08:30.480 --> 00:08:35.200
<v Speaker 3>crucial illusion of free will ah illusion. But eventually all

177
00:08:35.240 --> 00:08:39.120
<v Speaker 3>those diverged branches are forced to converge back into major,

178
00:08:39.360 --> 00:08:40.720
<v Speaker 3>unavoidable story nodes.

179
00:08:40.919 --> 00:08:43.159
<v Speaker 1>So I might use diplomacy to talk my way past

180
00:08:43.200 --> 00:08:44.799
<v Speaker 1>the guards, and you might just kick the door down

181
00:08:44.879 --> 00:08:48.960
<v Speaker 1>with explosives typical exactly, but thirty minutes later, we both

182
00:08:49.039 --> 00:08:51.279
<v Speaker 1>end up standing in the exact same throne room for

183
00:08:51.320 --> 00:08:53.320
<v Speaker 1>the exact same final boss fight.

184
00:08:53.639 --> 00:08:57.600
<v Speaker 3>Yes, the game just acknowledges are different methods in the dialogue.

185
00:08:57.840 --> 00:09:00.679
<v Speaker 3>It keeps the studio from going bankrupt while letting us

186
00:09:00.679 --> 00:09:03.120
<v Speaker 3>feel like we are the actual authors of our own fate.

187
00:09:03.279 --> 00:09:05.960
<v Speaker 1>So the illusion of free will is maintained by carefully

188
00:09:06.000 --> 00:09:10.240
<v Speaker 1>hidden constraints exactly, And that reliance on nondeterminism, you know,

189
00:09:10.399 --> 00:09:15.120
<v Speaker 1>on generating a feeling of unpredictable chaos within strict mathematical limits,

190
00:09:15.799 --> 00:09:18.879
<v Speaker 1>brings us to the very bedrock of how a computer operates.

191
00:09:20.039 --> 00:09:22.559
<v Speaker 1>And here's where it gets really interesting for me, oh

192
00:09:22.559 --> 00:09:26.399
<v Speaker 1>for sure, Because whether we are talking about parallel story branches,

193
00:09:26.600 --> 00:09:29.960
<v Speaker 1>or that zero point three second reaction delay for the AI,

194
00:09:30.679 --> 00:09:34.519
<v Speaker 1>or even simulating a dice roll, games need randomness to function.

195
00:09:34.320 --> 00:09:35.480
<v Speaker 2>They desperately need it.

196
00:09:35.519 --> 00:09:39.519
<v Speaker 1>But a computer processor is a purely deterministic machine. It

197
00:09:39.720 --> 00:09:43.039
<v Speaker 1>only executes the exact logic gits it is fed. It

198
00:09:43.039 --> 00:09:45.960
<v Speaker 1>cannot flip a coin. True randomness in a computer is

199
00:09:46.000 --> 00:09:46.720
<v Speaker 1>a total myth.

200
00:09:46.919 --> 00:09:50.000
<v Speaker 3>It is developers literally have to fake it. Yeah, they

201
00:09:50.080 --> 00:09:53.759
<v Speaker 3>use algorithms to produce sequences of numbers that just behave unpredictably,

202
00:09:54.120 --> 00:09:56.960
<v Speaker 3>and these fall into two main categories, which are quasi

203
00:09:57.039 --> 00:09:58.120
<v Speaker 3>random and pseudorandom.

204
00:09:58.159 --> 00:09:59.279
<v Speaker 1>Oh hey, let's break this down well.

205
00:09:59.360 --> 00:10:02.000
<v Speaker 3>Quasi random numbers are sequences that actually have a hidden

206
00:10:02.039 --> 00:10:06.000
<v Speaker 3>structural rule, but they just appear random to a naive observer.

207
00:10:06.200 --> 00:10:08.799
<v Speaker 1>Right, So, think of a sequence that alternates strictly between

208
00:10:08.799 --> 00:10:12.279
<v Speaker 1>even and odd numbers, but the numbers themselves jump wildly

209
00:10:12.320 --> 00:10:15.240
<v Speaker 1>across a massive range. Good example, if you just look

210
00:10:15.240 --> 00:10:17.720
<v Speaker 1>at a short sample of that, it feels totally chaotic,

211
00:10:18.080 --> 00:10:20.879
<v Speaker 1>but there's a rigid skeleton holding it together to ensure

212
00:10:21.039 --> 00:10:23.039
<v Speaker 1>an even spread of events over time.

213
00:10:23.720 --> 00:10:26.360
<v Speaker 3>Yeah, and that even spread is really useful for certain

214
00:10:26.440 --> 00:10:30.320
<v Speaker 3>visual rendering tasks. But when we need numbers that pass

215
00:10:30.440 --> 00:10:37.159
<v Speaker 3>rigorous statistical tests for actual chaotic unpredictability, we need pseudorandom

216
00:10:37.320 --> 00:10:38.360
<v Speaker 3>number generators.

217
00:10:38.480 --> 00:10:39.240
<v Speaker 1>Pseudorandom.

218
00:10:39.360 --> 00:10:43.240
<v Speaker 3>Yes, and the foundational algorithm detailed by Smed and hecanin

219
00:10:43.759 --> 00:10:46.879
<v Speaker 3>is the linear congruential method or the LCM.

220
00:10:47.039 --> 00:10:49.600
<v Speaker 1>The LCM now it sounds like high level calculus, but

221
00:10:49.639 --> 00:10:53.000
<v Speaker 1>it's really just a simple mathematical loop built on four parameters.

222
00:10:53.080 --> 00:10:54.519
<v Speaker 2>Right. It is surprisingly simple.

223
00:10:54.600 --> 00:10:56.480
<v Speaker 1>You have the modulus, which we'll call M. You have

224
00:10:56.559 --> 00:11:00.000
<v Speaker 1>the multiplier A, the increment C, and a starting value

225
00:11:00.159 --> 00:11:00.919
<v Speaker 1>which is known as the.

226
00:11:00.879 --> 00:11:04.919
<v Speaker 3>Seed exactly, and the operation itself is just basic arithmetic.

227
00:11:05.320 --> 00:11:08.080
<v Speaker 3>So the algorithm takes your seed value and it multiplies

228
00:11:08.120 --> 00:11:08.519
<v Speaker 3>it by.

229
00:11:08.440 --> 00:11:09.559
<v Speaker 2>A, and then it adds C.

230
00:11:09.960 --> 00:11:11.440
<v Speaker 1>Okay, easy enough, right, But then it.

231
00:11:11.440 --> 00:11:14.720
<v Speaker 3>Divides that total by the modulus M and whatever the

232
00:11:14.720 --> 00:11:17.360
<v Speaker 3>remainder of that division is. That remainder becomes your first

233
00:11:17.399 --> 00:11:21.840
<v Speaker 3>random number, the remainder, right, yeah, Then the algorithm takes

234
00:11:21.840 --> 00:11:24.200
<v Speaker 3>that brand new number, plugs it back into the start

235
00:11:24.200 --> 00:11:26.720
<v Speaker 3>of the formula is the new seed, and runs the

236
00:11:26.840 --> 00:11:27.600
<v Speaker 3>entire loop again.

237
00:11:27.919 --> 00:11:31.120
<v Speaker 1>So picture a clock face. Let's say our modulus is twelve,

238
00:11:31.440 --> 00:11:34.360
<v Speaker 1>so we have a standard twelve hour clock. No matter

239
00:11:34.360 --> 00:11:37.720
<v Speaker 1>how wildly you multiply or add numbers together, when you

240
00:11:37.759 --> 00:11:40.519
<v Speaker 1>divide by twelve and take the remainder, the answer is

241
00:11:40.559 --> 00:11:42.840
<v Speaker 1>just spinning around the dial, right, that's right. It will

242
00:11:42.879 --> 00:11:45.000
<v Speaker 1>always land on a notch between one and twelve.

243
00:11:45.200 --> 00:11:48.840
<v Speaker 3>It's a really elegant way to constrain infinite math into

244
00:11:48.879 --> 00:11:52.840
<v Speaker 3>a usable range. But because it's a closed mathematical loop

245
00:11:52.879 --> 00:11:57.039
<v Speaker 3>operating within that fixed clock face, the sequence of numbers

246
00:11:57.120 --> 00:12:00.919
<v Speaker 3>will eventually run out of unique combinations, it starts repeating

247
00:12:00.919 --> 00:12:01.600
<v Speaker 3>itself exactly.

248
00:12:01.679 --> 00:12:02.279
<v Speaker 1>Oh wow.

249
00:12:02.480 --> 00:12:05.279
<v Speaker 3>The length of this unique sequence before it finally loops

250
00:12:05.399 --> 00:12:08.360
<v Speaker 3>is called the period. So if your modulus is twelve,

251
00:12:08.720 --> 00:12:12.000
<v Speaker 3>the absolute maximum period you can achieve is twelve numbers.

252
00:12:12.080 --> 00:12:16.360
<v Speaker 1>And a repeating loop is the death of unpredictability. Like

253
00:12:16.440 --> 00:12:18.759
<v Speaker 1>if I'm playing a digital card game and I realize

254
00:12:18.799 --> 00:12:21.159
<v Speaker 1>the deck is dealing me the exact same sequence of

255
00:12:21.200 --> 00:12:25.320
<v Speaker 1>hands every twelve rounds, the illusion completely shatters. It does

256
00:12:25.480 --> 00:12:27.639
<v Speaker 1>I can predict the future. The game is basically broken

257
00:12:27.679 --> 00:12:28.639
<v Speaker 1>at that point.

258
00:12:28.840 --> 00:12:31.440
<v Speaker 3>So to prevent the player from ever seeing the loop,

259
00:12:31.840 --> 00:12:37.440
<v Speaker 3>developers use unimaginably massive numbers for the modulus. But you

260
00:12:37.440 --> 00:12:38.799
<v Speaker 3>can't just pick any large number.

261
00:12:38.840 --> 00:12:39.159
<v Speaker 1>Why not?

262
00:12:39.360 --> 00:12:44.600
<v Speaker 3>You want a very specific mathematical structure, ideally a prime number. Specifically,

263
00:12:44.639 --> 00:12:46.840
<v Speaker 3>developers often use Mrsenne primes.

264
00:12:47.159 --> 00:12:49.440
<v Speaker 1>Okay, wait, so why a prime number? If I just

265
00:12:49.480 --> 00:12:52.080
<v Speaker 1>pick a huge round number like a billion, doesn't that

266
00:12:52.159 --> 00:12:54.759
<v Speaker 1>just give me a billion notches on my clock? Face?

267
00:12:54.960 --> 00:12:59.519
<v Speaker 3>It does, but it introduces this problem of coprimality to primality. Yeah,

268
00:12:59.879 --> 00:13:03.159
<v Speaker 3>your modulus clod phase shares a common divisor with your multiplier,

269
00:13:03.600 --> 00:13:05.279
<v Speaker 3>the math will start skipping notches.

270
00:13:05.399 --> 00:13:06.360
<v Speaker 1>Oh I think I see.

271
00:13:06.480 --> 00:13:09.799
<v Speaker 3>Imagine a twelve hour clock and your multiplier forces you

272
00:13:09.840 --> 00:13:13.480
<v Speaker 3>to jump by threes. You hit three, six, nine, twelve,

273
00:13:13.519 --> 00:13:14.960
<v Speaker 3>and then you're right back where you started.

274
00:13:15.159 --> 00:13:18.360
<v Speaker 1>You only generated four unique numbers, even though your clock

275
00:13:18.399 --> 00:13:19.559
<v Speaker 1>has twelve spaces.

276
00:13:19.759 --> 00:13:23.039
<v Speaker 3>Exactly, by using a massive prime number for the modulus,

277
00:13:23.440 --> 00:13:26.480
<v Speaker 3>you guarantee it shares no divisors with your other parameters.

278
00:13:26.919 --> 00:13:29.799
<v Speaker 3>It forces the algorithm to step on every single unique

279
00:13:29.840 --> 00:13:31.879
<v Speaker 3>notch before it's ever allowed to loop.

280
00:13:32.159 --> 00:13:36.279
<v Speaker 1>That is genuinely brilliant, and the text mentions a common

281
00:13:36.440 --> 00:13:39.960
<v Speaker 1>Mersen prime used is two to the thirty first power

282
00:13:40.080 --> 00:13:43.879
<v Speaker 1>minus one, which is over two point one billion massive.

283
00:13:44.519 --> 00:13:48.039
<v Speaker 1>So the clockface has two point one billion unique notches,

284
00:13:48.440 --> 00:13:51.399
<v Speaker 1>and because it's prime, we hit every single one. The

285
00:13:51.440 --> 00:13:56.000
<v Speaker 1>sequence still repeats eventually, but the period is so incomprehensibly

286
00:13:56.120 --> 00:13:59.080
<v Speaker 1>long that a human playing the game will literally never

287
00:13:59.159 --> 00:14:01.000
<v Speaker 1>live long enough to notice the pattern.

288
00:14:01.360 --> 00:14:05.080
<v Speaker 3>True, but there is a huge vulnerability in this closed loop.

289
00:14:05.159 --> 00:14:07.879
<v Speaker 1>Wait really, because I'm looking at this formula, MA and

290
00:14:07.960 --> 00:14:11.080
<v Speaker 1>C are hard coded by the developer. The only variable

291
00:14:11.080 --> 00:14:13.960
<v Speaker 1>that starts the whole chain reaction is the seed exactly.

292
00:14:14.039 --> 00:14:15.960
<v Speaker 1>So if I turn on my console, boot up the game,

293
00:14:16.000 --> 00:14:18.360
<v Speaker 1>and the default seed value is just the number one

294
00:14:18.399 --> 00:14:21.159
<v Speaker 1>every single time. Wouldn't the math just spit out the

295
00:14:21.200 --> 00:14:24.399
<v Speaker 1>exact same sequence of random events every time I play yes?

296
00:14:25.039 --> 00:14:27.519
<v Speaker 3>The game would play out exactly the same way. The

297
00:14:27.559 --> 00:14:30.600
<v Speaker 3>ambush that terrified you in your first playthrough would happen

298
00:14:30.639 --> 00:14:33.799
<v Speaker 3>at the exact same millisecond in your second play through.

299
00:14:33.879 --> 00:14:36.600
<v Speaker 3>That ruins everything, right, So to fix this, developers have

300
00:14:36.639 --> 00:14:40.720
<v Speaker 3>to inject a tiny spark of real world physical chaos

301
00:14:41.080 --> 00:14:44.720
<v Speaker 3>to kickstart the math. They will program the game to

302
00:14:44.799 --> 00:14:49.679
<v Speaker 3>fetch its starting seed from highly variable, totally unpredictable sources

303
00:14:49.879 --> 00:14:51.720
<v Speaker 3>from outside the game's.

304
00:14:51.399 --> 00:14:55.279
<v Speaker 1>Code, like grabbing the computer's internal clock time down to

305
00:14:55.279 --> 00:14:59.120
<v Speaker 1>the microscopic millisecond of the exact moment you press start

306
00:14:59.279 --> 00:15:02.799
<v Speaker 1>yes exactly, or pulling data from the tiny erratic temperature

307
00:15:02.840 --> 00:15:06.559
<v Speaker 1>fluctuations of the CPU, or even the microscopic tremor of

308
00:15:06.559 --> 00:15:09.679
<v Speaker 1>your hand on the computer mounts. They literally capture a

309
00:15:09.759 --> 00:15:13.559
<v Speaker 1>fraction of physical reality to see the digital illusion.

310
00:15:14.360 --> 00:15:15.960
<v Speaker 2>That is amazing, it's really cool.

311
00:15:16.200 --> 00:15:18.600
<v Speaker 3>But once you've seeded the algorithm and it's churning out

312
00:15:18.600 --> 00:15:21.960
<v Speaker 3>billions of numbers, you still have a massive problem. Another one, Yeah,

313
00:15:22.000 --> 00:15:23.639
<v Speaker 3>how do you actually know the illusion works, you have

314
00:15:23.720 --> 00:15:27.000
<v Speaker 3>to test it rigorously, right, and the text outlines several

315
00:15:27.080 --> 00:15:30.840
<v Speaker 3>empirical tests, like the poker test, where yougroup the generator's

316
00:15:30.840 --> 00:15:33.240
<v Speaker 3>output into hands of five and see if they match

317
00:15:33.279 --> 00:15:35.960
<v Speaker 3>the real world statistical probability of drawing a full house

318
00:15:36.039 --> 00:15:39.120
<v Speaker 3>or a flush. That makes sense, But the most revealing

319
00:15:39.279 --> 00:15:43.799
<v Speaker 3>diagnostic for the linear congruential method is called the spectral test.

320
00:15:44.200 --> 00:15:46.840
<v Speaker 1>The spectral test, Okay, it sounds like ghost hunting.

321
00:15:46.679 --> 00:15:49.720
<v Speaker 3>It does, but it's actually a highly visual geometric test.

322
00:15:49.919 --> 00:15:53.720
<v Speaker 3>So imagine taking the sequence of number your algorithm produces, yeah,

323
00:15:53.799 --> 00:15:57.399
<v Speaker 3>grouping them into pairs, and plotting those pairs as x

324
00:15:57.440 --> 00:15:59.919
<v Speaker 3>and y coordinates on a massive two.

325
00:16:00.679 --> 00:16:01.600
<v Speaker 1>Okay, I'm picturing it.

326
00:16:01.960 --> 00:16:06.799
<v Speaker 3>If your generator is producing true chaotic randomness, that graph

327
00:16:06.879 --> 00:16:10.519
<v Speaker 3>should look like pure uniform television static. There should be

328
00:16:10.519 --> 00:16:11.519
<v Speaker 3>absolutely no pattern.

329
00:16:11.679 --> 00:16:15.039
<v Speaker 1>But the LCM isn't true chaos. It's built on fixed

330
00:16:15.120 --> 00:16:16.639
<v Speaker 1>multiplication and addition.

331
00:16:16.519 --> 00:16:20.240
<v Speaker 3>Exactly because of that linear mathematical relationship. If you zoom

332
00:16:20.240 --> 00:16:22.759
<v Speaker 3>out and look at that TV static, you will realize

333
00:16:22.799 --> 00:16:25.720
<v Speaker 3>that dots aren't actually random at all. They align to

334
00:16:25.840 --> 00:16:28.559
<v Speaker 3>form a lattice of perfectly parallel lines. Wow, they are

335
00:16:28.600 --> 00:16:31.440
<v Speaker 3>mathematically tethered together. And if you group the numbers into

336
00:16:31.440 --> 00:16:34.080
<v Speaker 3>triplets and plot them in a three D space, those

337
00:16:34.120 --> 00:16:35.679
<v Speaker 3>lines become parallel planes.

338
00:16:35.840 --> 00:16:38.559
<v Speaker 1>So the illusion has literal seams in it. The randomness

339
00:16:38.600 --> 00:16:40.360
<v Speaker 1>is basically stacked in layers.

340
00:16:40.720 --> 00:16:45.480
<v Speaker 3>Yes, the spectral test measures the distance between those parallel planes.

341
00:16:46.399 --> 00:16:48.799
<v Speaker 3>If the planes are too far apart, it means there

342
00:16:48.840 --> 00:16:52.039
<v Speaker 3>are massive predictable gaps in your random spread, and you

343
00:16:52.039 --> 00:16:55.679
<v Speaker 3>don't want that. No, So a high quality algorithm uses

344
00:16:55.720 --> 00:17:00.399
<v Speaker 3>parameters carefully calibrated to push those planes as tightly together

345
00:17:00.440 --> 00:17:03.720
<v Speaker 3>as possible, basically blurring the lines until the human eye

346
00:17:04.039 --> 00:17:07.440
<v Speaker 3>and statistical analysis only sees pure static.

347
00:17:07.680 --> 00:17:10.240
<v Speaker 1>Okay, So let's say our math past the spectral test.

348
00:17:10.519 --> 00:17:14.039
<v Speaker 1>The algorithm is incredibly robust, and it just generated a

349
00:17:14.160 --> 00:17:18.640
<v Speaker 1>massive pseudo random number, let's say one point eight billion. Okay,

350
00:17:18.720 --> 00:17:21.119
<v Speaker 1>but I'm playing a digital board game and my character

351
00:17:21.160 --> 00:17:24.400
<v Speaker 1>just needs to roll a standard six sided die. How

352
00:17:24.400 --> 00:17:27.319
<v Speaker 1>does the code shrink a massive one point eight billion

353
00:17:27.359 --> 00:17:29.759
<v Speaker 1>output down to a tiny interval of one to six

354
00:17:30.160 --> 00:17:33.160
<v Speaker 1>without destroying the delicate randomness we just engineered.

355
00:17:33.279 --> 00:17:36.039
<v Speaker 3>Well, if you take the lazy route, you absolutely ruin

356
00:17:36.079 --> 00:17:36.359
<v Speaker 3>the die.

357
00:17:36.440 --> 00:17:36.680
<v Speaker 2>Yeah.

358
00:17:36.720 --> 00:17:39.160
<v Speaker 3>Most basic approach, which the text calls the Monte Carlo

359
00:17:39.200 --> 00:17:42.240
<v Speaker 3>method is to just divide your massive random number by six.

360
00:17:42.039 --> 00:17:44.160
<v Speaker 1>And take the remainder like the clock face right.

361
00:17:44.200 --> 00:17:45.839
<v Speaker 2>But this warps the distribution.

362
00:17:45.640 --> 00:17:49.400
<v Speaker 1>Because the maximum limit of your huge random number generator

363
00:17:49.720 --> 00:17:52.000
<v Speaker 1>probably isn't perfectly divisible.

364
00:17:51.519 --> 00:17:52.799
<v Speaker 2>By six exactly.

365
00:17:52.839 --> 00:17:55.480
<v Speaker 1>Think of it like having a pizza with twenty slices

366
00:17:55.880 --> 00:17:58.279
<v Speaker 1>and you need to divide it evenly among six people.

367
00:17:58.680 --> 00:18:01.799
<v Speaker 1>Everyone gets three slices, but you have two slices left.

368
00:18:01.559 --> 00:18:03.200
<v Speaker 2>Over, yep, the remainder.

369
00:18:03.279 --> 00:18:05.839
<v Speaker 1>And if you just hand those remaining slices out to

370
00:18:05.960 --> 00:18:09.039
<v Speaker 1>whoever is closest, two people end up with more pizza.

371
00:18:09.880 --> 00:18:12.400
<v Speaker 1>In the code. That means the numbers one and two

372
00:18:12.559 --> 00:18:15.920
<v Speaker 1>end up with slightly more mathematical real estate than three, four, five,

373
00:18:16.000 --> 00:18:16.559
<v Speaker 1>or six.

374
00:18:16.400 --> 00:18:19.680
<v Speaker 3>Which means the digital die becomes mathematically loaded. Over the

375
00:18:19.680 --> 00:18:22.960
<v Speaker 3>course of thousands of roles, the player will absolutely notice

376
00:18:22.960 --> 00:18:25.319
<v Speaker 3>that they are rolling ones in twos more often.

377
00:18:25.000 --> 00:18:27.119
<v Speaker 1>And it feels completely unfair it does.

378
00:18:27.519 --> 00:18:30.279
<v Speaker 3>So to solve this, developers use something called the Las

379
00:18:30.400 --> 00:18:31.119
<v Speaker 3>Vegas method.

380
00:18:31.480 --> 00:18:34.599
<v Speaker 1>I love the Las Vegas method because it's so uncompromising.

381
00:18:34.640 --> 00:18:39.720
<v Speaker 1>It essentially guarantees a perfectly uniform distribution by simply throwing

382
00:18:39.759 --> 00:18:42.839
<v Speaker 1>the excess pizza slices directly into the trash.

383
00:18:43.000 --> 00:18:46.559
<v Speaker 3>That's pretty much it in terms of the code. If

384
00:18:46.559 --> 00:18:49.640
<v Speaker 3>the algorithm generates a huge number that happens to fall

385
00:18:49.640 --> 00:18:51.799
<v Speaker 3>into that uneven remainder zone at the very top of

386
00:18:51.839 --> 00:18:55.400
<v Speaker 3>its range, the code literally intercepts it.

387
00:18:55.400 --> 00:18:56.279
<v Speaker 1>It just catches it.

388
00:18:56.359 --> 00:18:59.119
<v Speaker 3>Yeah, it discards the number silently and goes right back

389
00:18:59.119 --> 00:19:00.519
<v Speaker 3>to the start of the loop reroll.

390
00:19:01.359 --> 00:19:02.160
<v Speaker 2>It repeats this.

391
00:19:02.160 --> 00:19:06.000
<v Speaker 3>Invisible process in a fraction of a millisecond until it

392
00:19:06.039 --> 00:19:09.759
<v Speaker 3>generates a number that falls cleanly into the perfectly divisible range.

393
00:19:09.720 --> 00:19:12.000
<v Speaker 1>And only then does it show the die roll to

394
00:19:12.039 --> 00:19:12.480
<v Speaker 1>the player.

395
00:19:12.680 --> 00:19:16.839
<v Speaker 3>Yes, it sacrifices precious computing power and time purely to

396
00:19:16.880 --> 00:19:18.519
<v Speaker 3>guarantee absolute fairness.

397
00:19:18.599 --> 00:19:21.359
<v Speaker 1>It's beautiful. But so many game mechanics have nothing to

398
00:19:21.400 --> 00:19:24.519
<v Speaker 1>do with rolling dice, right. They are about managing time

399
00:19:24.599 --> 00:19:27.759
<v Speaker 1>and flow, like when does the next wave of zombies attack?

400
00:19:27.880 --> 00:19:29.319
<v Speaker 1>Or when does a rainstorm start?

401
00:19:29.319 --> 00:19:30.160
<v Speaker 2>Get pacing?

402
00:19:30.400 --> 00:19:32.519
<v Speaker 1>Yeah, how do you pace the game so the player

403
00:19:32.559 --> 00:19:35.599
<v Speaker 1>doesn't get bored but also it doesn't get completely overwhelmed?

404
00:19:35.680 --> 00:19:39.240
<v Speaker 3>Well, translating raw randomness into organic feeling events over time

405
00:19:39.759 --> 00:19:43.480
<v Speaker 3>requires discrete probability distribution, okay, and The most vital one

406
00:19:43.519 --> 00:19:46.279
<v Speaker 3>detailed by Smet and Hacona is the Poisson distribution.

407
00:19:46.759 --> 00:19:49.400
<v Speaker 1>Right, and the book has this fantastic example of an

408
00:19:49.440 --> 00:19:53.359
<v Speaker 1>asteroid mining colony in a strategy game. The designers want

409
00:19:53.400 --> 00:19:56.799
<v Speaker 1>the spaceport to feel like a bustling, living economy, so

410
00:19:56.839 --> 00:19:59.960
<v Speaker 1>they determine that, on average, the colony should receive seven

411
00:20:00.039 --> 00:20:02.920
<v Speaker 1>cargo haulers every single rotation period.

412
00:20:03.119 --> 00:20:06.720
<v Speaker 3>Now, if the code just spawns exactly seven haulers, evenly

413
00:20:06.799 --> 00:20:10.599
<v Speaker 3>spaced out every single rotation, well, if the spaceport just

414
00:20:10.599 --> 00:20:12.160
<v Speaker 3>feels like a sterile assembly.

415
00:20:11.759 --> 00:20:13.759
<v Speaker 1>Line, it doesn't feel alive, not at all.

416
00:20:14.240 --> 00:20:18.160
<v Speaker 3>But the developers don't just program seven haulers. They feed

417
00:20:18.200 --> 00:20:21.839
<v Speaker 3>that target average of seven into the poison distribution algorithm.

418
00:20:21.920 --> 00:20:22.640
<v Speaker 1>And what does that do.

419
00:20:23.160 --> 00:20:25.759
<v Speaker 3>What this math does is translate a flat average into

420
00:20:25.759 --> 00:20:28.880
<v Speaker 3>a dynamic curve of likelihoods for any number of events.

421
00:20:29.200 --> 00:20:32.119
<v Speaker 3>So on most rotations you might get six or eight hollars.

422
00:20:32.119 --> 00:20:35.440
<v Speaker 3>It feels pretty normal, right, but the math allows for outliers.

423
00:20:35.960 --> 00:20:38.559
<v Speaker 3>Suddenly you have a rotation where only two haulers show up,

424
00:20:38.759 --> 00:20:40.920
<v Speaker 3>and your economy slows down. That ek sets in, and

425
00:20:40.960 --> 00:20:44.119
<v Speaker 3>then without warning, the Poisson curve hits a rare probability

426
00:20:44.359 --> 00:20:47.160
<v Speaker 3>and fourteen haulers arrive at the exact same time.

427
00:20:47.240 --> 00:20:51.400
<v Speaker 1>The sirens go off. Your spaceport thrown into total logistical chaos,

428
00:20:51.680 --> 00:20:54.200
<v Speaker 1>and you are just scrambling to manage the influx.

429
00:20:54.519 --> 00:20:58.079
<v Speaker 3>Yes, the Poisson distribution guarantees that if you average it

430
00:20:58.079 --> 00:21:02.319
<v Speaker 3>out over a thousand rotations will equal exactly seven. But

431
00:21:02.519 --> 00:21:05.920
<v Speaker 3>minute to minute, it generates these organic lulls and terrifying

432
00:21:05.960 --> 00:21:07.039
<v Speaker 3>spikes of activity.

433
00:21:07.160 --> 00:21:10.240
<v Speaker 1>It creates the actual pulse of the game. That feeling

434
00:21:10.279 --> 00:21:13.960
<v Speaker 1>of panic when those fourteen hollars arrive, that rush of adrenaline,

435
00:21:13.960 --> 00:21:16.720
<v Speaker 1>when you barely manage the crisis. You know you are

436
00:21:16.759 --> 00:21:19.880
<v Speaker 1>having a genuine emotional reaction to a probability curve.

437
00:21:20.160 --> 00:21:23.119
<v Speaker 3>You are reacting to an engineered ilusion. And really, that

438
00:21:23.240 --> 00:21:26.839
<v Speaker 3>is the ultimate takeaway from Smed and Hakonan's work. The

439
00:21:26.880 --> 00:21:29.160
<v Speaker 3>magic of a digital world isn't magic at all.

440
00:21:29.359 --> 00:21:31.640
<v Speaker 1>No, it's not the Next time you are playing a

441
00:21:31.680 --> 00:21:34.200
<v Speaker 1>game and you find yourself marveling at how a synthetic

442
00:21:34.200 --> 00:21:36.720
<v Speaker 1>player panicked and missed a shot, or how the narrative

443
00:21:36.759 --> 00:21:39.799
<v Speaker 1>seamlessly adapted to a chaotic decision you made, or how

444
00:21:39.839 --> 00:21:43.279
<v Speaker 1>a sudden rainstorm perfectly matched the dramatic tension of the scene.

445
00:21:43.799 --> 00:21:46.519
<v Speaker 1>Just remember the math churning beneath the surface.

446
00:21:46.599 --> 00:21:47.240
<v Speaker 2>It's all math.

447
00:21:47.440 --> 00:21:50.920
<v Speaker 1>It is the intricate, silent work of invisible drama managers

448
00:21:51.000 --> 00:21:54.680
<v Speaker 1>keeping the narrative paradox in check. It is the uncompromising

449
00:21:54.759 --> 00:21:58.519
<v Speaker 1>fairness of the Las Vegas method, silently discarding uneven numbers.

450
00:21:58.960 --> 00:22:02.599
<v Speaker 1>And it's the linear congrential method spinning a massive prime

451
00:22:02.680 --> 00:22:06.599
<v Speaker 1>numbered clock face, generating chaos from a single seed of

452
00:22:06.640 --> 00:22:07.720
<v Speaker 1>physical reality.

453
00:22:07.960 --> 00:22:14.200
<v Speaker 3>It is entirely deterministic architecture masquerating flawlessly as wild living unpredictability,

454
00:22:14.440 --> 00:22:17.079
<v Speaker 3>which actually leaves us with a rather profound implication to

455
00:22:17.119 --> 00:22:19.319
<v Speaker 3>consider long after you take your headphones off.

456
00:22:19.400 --> 00:22:20.839
<v Speaker 1>Ooh, laid on us.

457
00:22:20.920 --> 00:22:23.720
<v Speaker 3>Well, think about it. If human developers working with just

458
00:22:23.799 --> 00:22:27.440
<v Speaker 3>basic processors can use deterministic loops, prime numbers, and hidden

459
00:22:27.440 --> 00:22:31.000
<v Speaker 3>distribution curves to create such a convincing, unbreakable illusion of

460
00:22:31.079 --> 00:22:34.720
<v Speaker 3>random chance, chaos, and free will inside a digital box, well,

461
00:22:34.720 --> 00:22:38.119
<v Speaker 3>how do we know our own universes supposedly random events

462
00:22:38.200 --> 00:22:40.519
<v Speaker 3>aren't doing the exact same thing? Oh wow, how do

463
00:22:40.559 --> 00:22:42.640
<v Speaker 3>we know the quantum physics of our reality like the

464
00:22:42.759 --> 00:22:45.079
<v Speaker 3>very fabric of chance in our universe isn't just a

465
00:22:45.079 --> 00:22:49.799
<v Speaker 3>cosmic linear congruential method running on an unfathomably large prime.

466
00:22:49.519 --> 00:22:52.160
<v Speaker 1>Modulus that is heavy. So the next time you're walking

467
00:22:52.200 --> 00:22:55.440
<v Speaker 1>in the woods and a twig snap's unexpectedly, maybe ask

468
00:22:55.480 --> 00:22:58.319
<v Speaker 1>yourself what the seed value was. Thanks for joining us

469
00:22:58.359 --> 00:23:00.559
<v Speaker 1>on this deep dive. Keep questioning a code
