Turns Out It Really WAS a Feature
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:03Recap and set the stage for the day
🗩
0:03Recap and set the stage for the day
🗩
0:03Recap and set the stage for the day
🗩
0:59Try to provoke our lighting bug
🏃
0:59Try to provoke our lighting bug
🏃
0:59Try to provoke our lighting bug
🏃
2:07See our "value contamination" lighting bug
🏃
2:07See our "value contamination" lighting bug
🏃
2:07See our "value contamination" lighting bug
🏃
3:14Demo the cutscene asset finding bug
🏃
3:14Demo the cutscene asset finding bug
🏃
3:14Demo the cutscene asset finding bug
🏃
3:50Reacquaint ourselves with the cutscene asset picking code
📖
3:50Reacquaint ourselves with the cutscene asset picking code
📖
3:50Reacquaint ourselves with the cutscene asset picking code
📖
5:39Fix RenderLayeredScene() to use the Tag_IntroCutscene
5:39Fix RenderLayeredScene() to use the Tag_IntroCutscene
5:39Fix RenderLayeredScene() to use the Tag_IntroCutscene
5:55Our cutscene now plays fine
🏃
5:55Our cutscene now plays fine
🏃
5:55Our cutscene now plays fine
🏃
7:21fatkidforlife Who did this art!!!
🗪
7:21fatkidforlife Who did this art!!!
🗪
7:21fatkidforlife Who did this art!!!
🗪
7:31Cutscene, continued
🏃
7:31Cutscene, continued
🏃
7:31Cutscene, continued
🏃
8:43rupan3 Are you in Texas?
🗪
8:43rupan3 Are you in Texas?
🗪
8:43rupan3 Are you in Texas?
🗪
8:49Cutscene, continued
🏃
8:49Cutscene, continued
🏃
8:49Cutscene, continued
🏃
9:28thedustydino I stopped programming two years ago so I haven't watched for a long time, but I still have so much respect for your work
🗪
9:28thedustydino I stopped programming two years ago so I haven't watched for a long time, but I still have so much respect for your work
🗪
9:28thedustydino I stopped programming two years ago so I haven't watched for a long time, but I still have so much respect for your work
🗪
9:31Consider the cutscene good
🏃
9:31Consider the cutscene good
🏃
9:31Consider the cutscene good
🏃
9:53We don't have trees, but we do have an unaligned baby in the garden
🏃
9:53We don't have trees, but we do have an unaligned baby in the garden
🏃
9:53We don't have trees, but we do have an unaligned baby in the garden
🏃
10:17Align the baby
🏃
10:17Align the baby
🏃
10:17Align the baby
🏃
11:23We need our trees back
🏃
11:23We need our trees back
🏃
11:23We need our trees back
🏃
12:23Investigate our trees absence
📖
12:23Investigate our trees absence
📖
12:23Investigate our trees absence
📖
14:36Fix GetTreeTags() to use the Tag_Tree
14:36Fix GetTreeTags() to use the Tag_Tree
14:36Fix GetTreeTags() to use the Tag_Tree
15:15Our trees are back
🏃
15:15Our trees are back
🏃
15:15Our trees are back
🏃
16:01Scale and position the trees
🏃
16:01Scale and position the trees
🏃
16:01Scale and position the trees
🏃
17:42Restart with proper trees
🏃
17:42Restart with proper trees
🏃
17:42Restart with proper trees
🏃
18:48Move on to our lighting bug
🏃
18:48Move on to our lighting bug
🏃
18:48Move on to our lighting bug
🏃
23:03Make ValidateTexelComponent() consider values less than −0.1 invalid
23:03Make ValidateTexelComponent() consider values less than −0.1 invalid
23:03Make ValidateTexelComponent() consider values less than −0.1 invalid
24:45Invalid values with apparently working lighting
🏃
24:45Invalid values with apparently working lighting
🏃
24:45Invalid values with apparently working lighting
🏃
25:46Add a break line in ValidateTexelComponent() and compile in -Od
25:46Add a break line in ValidateTexelComponent() and compile in -Od
25:46Add a break line in ValidateTexelComponent() and compile in -Od
26:46Try to break in to ValidateTexelComponent()
🏃
26:46Try to break in to ValidateTexelComponent()
🏃
26:46Try to break in to ValidateTexelComponent()
🏃
27:04remedybg bug: Breakpoint failure despite fully loaded .dll
🗹
27:04remedybg bug: Breakpoint failure despite fully loaded .dll
🗹
27:04remedybg bug: Breakpoint failure despite fully loaded .dll
🗹
29:51remedybg bug: Duplicate file loading
🗹
29:51remedybg bug: Duplicate file loading
🗹
29:51remedybg bug: Duplicate file loading
🗹
31:24remedybg bug due to Microsoft change: C:\ baked in to paths in .pdb, breaking subst drives
🗹
31:24remedybg bug due to Microsoft change: C:\ baked in to paths in .pdb, breaking subst drives
🗹
31:24remedybg bug due to Microsoft change: C:\ baked in to paths in .pdb, breaking subst drives
🗹
33:15Add our breakpoint in ValidateTexelComponent() but never hit it in -Od
🏃
33:15Add our breakpoint in ValidateTexelComponent() but never hit it in -Od
🏃
33:15Add our breakpoint in ValidateTexelComponent() but never hit it in -Od
🏃
34:54Resize the window and pick up a snake head partner
🏃
34:54Resize the window and pick up a snake head partner
🏃
34:54Resize the window and pick up a snake head partner
🏃
35:28xxthebigfoxx Compiling with /fp:fast on release?
🗪
35:28xxthebigfoxx Compiling with /fp:fast on release?
🗪
35:28xxthebigfoxx Compiling with /fp:fast on release?
🗪
36:05Realise that we've gathered the snake head
🏃
36:05Realise that we've gathered the snake head
🏃
36:05Realise that we've gathered the snake head
🏃
38:40Investigate the gathering of our snake head, breaking in to ExecuteBrain() and ExecuteBrainHero()
🏃
38:40Investigate the gathering of our snake head, breaking in to ExecuteBrain() and ExecuteBrainHero()
🏃
38:40Investigate the gathering of our snake head, breaking in to ExecuteBrain() and ExecuteBrainHero()
🏃
44:18AddPlayer() does not use the head (to associate a hat)
📖
44:18AddPlayer() does not use the head (to associate a hat)
📖
44:18AddPlayer() does not use the head (to associate a hat)
📖
46:28Break in to ExecuteBrainHero() to see the Head containing multiple pieces
🏃
46:28Break in to ExecuteBrainHero() to see the Head containing multiple pieces
🏃
46:28Break in to ExecuteBrainHero() to see the Head containing multiple pieces
🏃
47:38Investigate this as an improper entity initialisation problem
📖
47:38Investigate this as an improper entity initialisation problem
📖
47:38Investigate this as an improper entity initialisation problem
📖
52:16ClearWorldEntityBlock() does not clear, but CreateEntity() does
📖
52:16ClearWorldEntityBlock() does not clear, but CreateEntity() does
📖
52:16ClearWorldEntityBlock() does not clear, but CreateEntity() does
📖
54:12Hunt for clues as to how we gathered the snake head
📖
54:12Hunt for clues as to how we gathered the snake head
📖
54:12Hunt for clues as to how we gathered the snake head
📖
57:03AddBrain() increments the World->LastUsedEntityStorageIndex
📖
57:03AddBrain() increments the World->LastUsedEntityStorageIndex
📖
57:03AddBrain() increments the World->LastUsedEntityStorageIndex
📖
57:45CheckForJoiningPlayers() sets BrainID to ReservedBrainID_FirstHero + ControllerIndex
📖
57:45CheckForJoiningPlayers() sets BrainID to ReservedBrainID_FirstHero + ControllerIndex
📖
57:45CheckForJoiningPlayers() sets BrainID to ReservedBrainID_FirstHero + ControllerIndex
📖
59:07floorislava dukedoHand
🗪
59:07floorislava dukedoHand
🗪
59:07floorislava dukedoHand
🗪
59:15enemypanda I was on reddit
🗪
59:15enemypanda I was on reddit
🗪
59:15enemypanda I was on reddit
🗪
59:39somebody_took_my_name The snake gets the controller's brain ID
🗪
59:39somebody_took_my_name The snake gets the controller's brain ID
🗪
59:39somebody_took_my_name The snake gets the controller's brain ID
🗪
59:47moache I'm guessing you're using a new brain index instead of a reserved one
🗪
59:47moache I'm guessing you're using a new brain index instead of a reserved one
🗪
59:47moache I'm guessing you're using a new brain index instead of a reserved one
🗪
1:00:05Reacquaint ourselves with the ReservedBrainID_ values and usage
📖
1:00:05Reacquaint ourselves with the ReservedBrainID_ values and usage
📖
1:00:05Reacquaint ourselves with the ReservedBrainID_ values and usage
📖
1:04:55xxthebigfoxx Chat didn't find the bug because there is no bug, obviously
🗪
1:04:55xxthebigfoxx Chat didn't find the bug because there is no bug, obviously
🗪
1:04:55xxthebigfoxx Chat didn't find the bug because there is no bug, obviously
🗪
1:05:21Continue to investigate our snake head gathering bug
📖
1:05:21Continue to investigate our snake head gathering bug
📖
1:05:21Continue to investigate our snake head gathering bug
📖
1:07:04RegisterEntity() does not check slot usage
📖
1:07:04RegisterEntity() does not check slot usage
📖
1:07:04RegisterEntity() does not check slot usage
📖
1:15:59The snake head's tBob, dtBob and ddtBob are FLT_MIN
📖
1:15:59The snake head's tBob, dtBob and ddtBob are FLT_MIN
📖
1:15:59The snake head's tBob, dtBob and ddtBob are FLT_MIN
📖
1:19:00AddSnake() is the only running function that sets HitPointMax to 3
📖
1:19:00AddSnake() is the only running function that sets HitPointMax to 3
📖
1:19:00AddSnake() is the only running function that sets HitPointMax to 3
📖
1:22:06Step in to AddSnake() and inspect the BrainID
🏃
1:22:06Step in to AddSnake() and inspect the BrainID
🏃
1:22:06Step in to AddSnake() and inspect the BrainID
🏃
1:23:44Investigate this as a post-initialisation corruption bug
📖
1:23:44Investigate this as a post-initialisation corruption bug
📖
1:23:44Investigate this as a post-initialisation corruption bug
📖
1:26:43Scour CheckForJoiningPlayers() for possible problems
📖
1:26:43Scour CheckForJoiningPlayers() for possible problems
📖
1:26:43Scour CheckForJoiningPlayers() for possible problems
📖
1:28:12It was a feature all along?
📖
1:28:12It was a feature all along?
📖
1:28:12It was a feature all along?
📖
1:29:25Try out our snake head collection feature
🏃
1:29:25Try out our snake head collection feature
🏃
1:29:25Try out our snake head collection feature
🏃
1:31:14Make AddPlayer() create the Head as an associable entity
1:31:14Make AddPlayer() create the Head as an associable entity
1:31:14Make AddPlayer() create the Head as an associable entity
1:32:54Try out our nearby head swapping feature
🏃
1:32:54Try out our nearby head swapping feature
🏃
1:32:54Try out our nearby head swapping feature
🏃
1:34:17Make ExecuteBrainHero() position the Head nearer the Body
1:34:17Make ExecuteBrainHero() position the Head nearer the Body
1:34:17Make ExecuteBrainHero() position the Head nearer the Body
1:35:13Our head has a Z-offset and disappears when moving left
🏃
1:35:13Our head has a Z-offset and disappears when moving left
🏃
1:35:13Our head has a Z-offset and disappears when moving left
🏃
1:35:48Make ExecuteBrainHero() decrease the clutch offset
1:35:48Make ExecuteBrainHero() decrease the clutch offset
1:35:48Make ExecuteBrainHero() decrease the clutch offset
1:36:17Try out our closer clutch
🏃
1:36:17Try out our closer clutch
🏃
1:36:17Try out our closer clutch
🏃
1:36:23Make ExecuteBrainHero() raise the head
1:36:23Make ExecuteBrainHero() raise the head
1:36:23Make ExecuteBrainHero() raise the head
1:36:46Try making ExecuteBrainHero() set the Head's position to match the Body's
1:36:46Try making ExecuteBrainHero() set the Head's position to match the Body's
1:36:46Try making ExecuteBrainHero() set the Head's position to match the Body's
1:36:55The head no longer disappears
🏃
1:36:55The head no longer disappears
🏃
1:36:55The head no longer disappears
🏃
1:37:12Check the ddP computation in ExecuteBrainHero()
📖
1:37:12Check the ddP computation in ExecuteBrainHero()
📖
1:37:12Check the ddP computation in ExecuteBrainHero()
📖
1:41:32Try making ExecuteBrainHero() use ConHero->ddP in the Head->P computation
1:41:32Try making ExecuteBrainHero() use ConHero->ddP in the Head->P computation
1:41:32Try making ExecuteBrainHero() use ConHero->ddP in the Head->P computation
1:41:59Our head disappears
🏃
1:41:59Our head disappears
🏃
1:41:59Our head disappears
🏃
1:42:02Try making ExecuteBrainHero() use the left-facing (−1, 0, 0) values always
1:42:02Try making ExecuteBrainHero() use the left-facing (−1, 0, 0) values always
1:42:02Try making ExecuteBrainHero() use the left-facing (−1, 0, 0) values always
1:42:27The head is always missing
🏃
1:42:27The head is always missing
🏃
1:42:27The head is always missing
🏃
1:42:34Try making ExecuteBrainHero() use the right-facing (1, 0, 0) values always
1:42:34Try making ExecuteBrainHero() use the right-facing (1, 0, 0) values always
1:42:34Try making ExecuteBrainHero() use the right-facing (1, 0, 0) values always
1:42:39The head is always visible
🏃
1:42:39The head is always visible
🏃
1:42:39The head is always visible
🏃
1:42:41Continue to consider our head disappearance
📖
1:42:41Continue to consider our head disappearance
📖
1:42:41Continue to consider our head disappearance
📖
1:43:18molly Meow
🗪
1:43:18molly Meow
🗪
1:43:18molly Meow
🗪
1:45:02Investigate this as a downstream computation problem
📖
1:45:02Investigate this as a downstream computation problem
📖
1:45:02Investigate this as a downstream computation problem
📖
1:47:43Make ExecuteBrainHero() use the left-facing (−1, 0, 0) values, and #if 0 out all Head->P related code
1:47:43Make ExecuteBrainHero() use the left-facing (−1, 0, 0) values, and #if 0 out all Head->P related code
1:47:43Make ExecuteBrainHero() use the left-facing (−1, 0, 0) values, and #if 0 out all Head->P related code
1:48:54The head has returned
🏃
1:48:54The head has returned
🏃
1:48:54The head has returned
🏃
1:49:06Reintroduce the ddP computation code
1:49:06Reintroduce the ddP computation code
1:49:06Reintroduce the ddP computation code
1:49:14The head remains
🏃
1:49:14The head remains
🏃
1:49:14The head remains
🏃
1:49:18Focus on the HeadDelta
📖
1:49:18Focus on the HeadDelta
📖
1:49:18Focus on the HeadDelta
📖
1:50:01Let ExecuteBrainHero() use the computed ddP for the Head->P
1:50:01Let ExecuteBrainHero() use the computed ddP for the Head->P
1:50:01Let ExecuteBrainHero() use the computed ddP for the Head->P
1:50:15The head remains
🏃
1:50:15The head remains
🏃
1:50:15The head remains
🏃
1:50:22Let ExecuteBrainHero() use the HeadDelta
1:50:22Let ExecuteBrainHero() use the HeadDelta
1:50:22Let ExecuteBrainHero() use the HeadDelta
1:51:18The head disappears
🏃
1:51:18The head disappears
🏃
1:51:18The head disappears
🏃
1:51:24Comment out the Body->FloorDisplace setting in ExecuteBrainHero()
1:51:24Comment out the Body->FloorDisplace setting in ExecuteBrainHero()
1:51:24Comment out the Body->FloorDisplace setting in ExecuteBrainHero()
1:51:29The head disappears
🏃
1:51:29The head disappears
🏃
1:51:29The head disappears
🏃
1:51:32Instead comment out the Body->YAxis setting in ExecuteBrainHero()
1:51:32Instead comment out the Body->YAxis setting in ExecuteBrainHero()
1:51:32Instead comment out the Body->YAxis setting in ExecuteBrainHero()
1:51:36The head remains
🏃
1:51:36The head remains
🏃
1:51:36The head remains
🏃
1:51:42Investigate our problem in the Body->YAxis
📖
1:51:42Investigate our problem in the Body->YAxis
📖
1:51:42Investigate our problem in the Body->YAxis
📖
1:53:17Try making ExecuteBrainHero() set Body->YAxis to (0, 1)
1:53:17Try making ExecuteBrainHero() set Body->YAxis to (0, 1)
1:53:17Try making ExecuteBrainHero() set Body->YAxis to (0, 1)
1:53:25The head remains
🏃
1:53:25The head remains
🏃
1:53:25The head remains
🏃
1:53:35Remove Body->YAxis
1:53:35Remove Body->YAxis
1:53:35Remove Body->YAxis
1:53:40Reacquaint ourselves with the Entity->FloorDisplace usage
📖
1:53:40Reacquaint ourselves with the Entity->FloorDisplace usage
📖
1:53:40Reacquaint ourselves with the Entity->FloorDisplace usage
📖
1:53:59Consider the Entity->FloorDisplace to be fine
🏃
1:53:59Consider the Entity->FloorDisplace to be fine
🏃
1:53:59Consider the Entity->FloorDisplace to be fine
🏃
1:54:03Try out conversations and swappable heads
🏃
1:54:03Try out conversations and swappable heads
🏃
1:54:03Try out conversations and swappable heads
🏃
1:55:26Q&A
🗩
1:55:26Q&A
🗩
1:55:26Q&A
🗩
1:56:20pikeman_xd "It's not a bug, it's a feature"
🗪
1:56:20pikeman_xd "It's not a bug, it's a feature"
🗪
1:56:20pikeman_xd "It's not a bug, it's a feature"
🗪
1:56:46rydgel_ What's your Windows coding environment? Is it Vim inside mingw?
🗪
1:56:46rydgel_ What's your Windows coding environment? Is it Vim inside mingw?
🗪
1:56:46rydgel_ What's your Windows coding environment? Is it Vim inside mingw?
🗪
1:56:57somebody_took_my_name Q: The Linux branch has the debug / release bug as well, and it triggers all the time on my setup at least
🗪
1:56:57somebody_took_my_name Q: The Linux branch has the debug / release bug as well, and it triggers all the time on my setup at least
🗪
1:56:57somebody_took_my_name Q: The Linux branch has the debug / release bug as well, and it triggers all the time on my setup at least
🗪
1:57:17r2game Yes, it is a Q&A request in Day 2901
🗪
1:57:17r2game Yes, it is a Q&A request in Day 2901
🗪
1:57:17r2game Yes, it is a Q&A request in Day 2901
🗪
1:57:52x13pixels Q: Looks like MSVC is writing the subst'd drive to the PDB as long as you build from the subst drive (as one would expect). Does building from 4coder somehow change to the C: drive before building or something like this? In any case, will make RemedyBG more resilient to these sorts of things! Thank you!
🗪
1:57:52x13pixels Q: Looks like MSVC is writing the subst'd drive to the PDB as long as you build from the subst drive (as one would expect). Does building from 4coder somehow change to the C: drive before building or something like this? In any case, will make RemedyBG more resilient to these sorts of things! Thank you!
🗪
1:57:52x13pixels Q: Looks like MSVC is writing the subst'd drive to the PDB as long as you build from the subst drive (as one would expect). Does building from 4coder somehow change to the C: drive before building or something like this? In any case, will make RemedyBG more resilient to these sorts of things! Thank you!
🗪
1:58:40stuntcoder handmade_hero There is something wrong with capturing 4coder. The screen gets very busy, which is distracting. I saw it last week too, but we thought it might be on my side. It also shows on the YouTube upload of last week's episode.2 The older YouTube uploads are clean…
🗪
1:58:40stuntcoder handmade_hero There is something wrong with capturing 4coder. The screen gets very busy, which is distracting. I saw it last week too, but we thought it might be on my side. It also shows on the YouTube upload of last week's episode.2 The older YouTube uploads are clean…
🗪
1:58:40stuntcoder handmade_hero There is something wrong with capturing 4coder. The screen gets very busy, which is distracting. I saw it last week too, but we thought it might be on my side. It also shows on the YouTube upload of last week's episode.2 The older YouTube uploads are clean…
🗪
2:02:14somebody_took_my_name Q: Someone asked if the swap would work on the orphans as well?
🗪
2:02:14somebody_took_my_name Q: Someone asked if the swap would work on the orphans as well?
🗪
2:02:14somebody_took_my_name Q: Someone asked if the swap would work on the orphans as well?
🗪
2:02:53stuntcoder Might help if you go black background for the time being. It did not show on your black cmd window
🗪
2:02:53stuntcoder Might help if you go black background for the time being. It did not show on your black cmd window
🗪
2:02:53stuntcoder Might help if you go black background for the time being. It did not show on your black cmd window
🗪
2:04:07dufji I would rather blame twitch encoding than your machine
🗪
2:04:07dufji I would rather blame twitch encoding than your machine
🗪
2:04:07dufji I would rather blame twitch encoding than your machine
🗪
2:05:57anusaa Q: Handmade Hero is running for a while by now. Is there any scheduled ending? I'm at episode 3083 and I love the series
🗪
2:05:57anusaa Q: Handmade Hero is running for a while by now. Is there any scheduled ending? I'm at episode 3083 and I love the series
🗪
2:05:57anusaa Q: Handmade Hero is running for a while by now. Is there any scheduled ending? I'm at episode 3083 and I love the series
🗪
2:06:27Thank you, everyone
🗩
2:06:27Thank you, everyone
🗩
2:06:27Thank you, everyone
🗩