Handmade Hero»Episode Guide
Cleaning Up Entity Creation
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
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 Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

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:01Recap and set the stage for the day, laying out rooms in a constraint- or evaluation-based manner
🗩
0:01Recap and set the stage for the day, laying out rooms in a constraint- or evaluation-based manner
🗩
0:01Recap and set the stage for the day, laying out rooms in a constraint- or evaluation-based manner
🗩
7:12Toggle off superfluous test code in GenerateLightingPattern()
7:12Toggle off superfluous test code in GenerateLightingPattern()
7:12Toggle off superfluous test code in GenerateLightingPattern()
9:26Run the game to see that we load up faster
🏃
9:26Run the game to see that we load up faster
🏃
9:26Run the game to see that we load up faster
🏃
9:49Toggle off the existing test world generation code in CreateWorld()
9:49Toggle off the existing test world generation code in CreateWorld()
9:49Toggle off the existing test world generation code in CreateWorld()
11:10Begin to implement gen_connection
11:10Begin to implement gen_connection
11:10Begin to implement gen_connection
13:16The distinction between Database and Winged-Edge Data Structure, with a recommendation to read 'Transaction Processing' by Jim Gray1
🗩
13:16The distinction between Database and Winged-Edge Data Structure, with a recommendation to read 'Transaction Processing' by Jim Gray1
🗩
13:16The distinction between Database and Winged-Edge Data Structure, with a recommendation to read 'Transaction Processing' by Jim Gray1
🗩
17:44Spec out gen_room_connection as a linked list of connections to a single room
17:44Spec out gen_room_connection as a linked list of connections to a single room
17:44Spec out gen_room_connection as a linked list of connections to a single room
20:04Spec out gen_connection itself as a linked list of its two connected rooms, with gen_room_connection as a linked list of these connections
20:04Spec out gen_connection itself as a linked list of its two connected rooms, with gen_room_connection as a linked list of these connections
20:04Spec out gen_connection itself as a linked list of its two connected rooms, with gen_room_connection as a linked list of these connections
22:10Implement this more verbose version, introducing AddConnection() for Connect() to call, and making GenRoom() link up the rooms
22:10Implement this more verbose version, introducing AddConnection() for Connect() to call, and making GenRoom() link up the rooms
22:10Implement this more verbose version, introducing AddConnection() for Connect() to call, and making GenRoom() link up the rooms
28:46Implement GenerateWorld(), and GenerateRoom() to do the old work of AddStandardRoom()
28:46Implement GenerateWorld(), and GenerateRoom() to do the old work of AddStandardRoom()
28:46Implement GenerateWorld(), and GenerateRoom() to do the old work of AddStandardRoom()
41:31Make GenerateRoom() call BeginWorldChange() and EndWorldChange(), and begin to systematise the entity system inside the world generator working off a sim_region, respecifying BeginEntity() and EndEntity() as AddEntity() and PlaceEntity()
41:31Make GenerateRoom() call BeginWorldChange() and EndWorldChange(), and begin to systematise the entity system inside the world generator working off a sim_region, respecifying BeginEntity() and EndEntity() as AddEntity() and PlaceEntity()
41:31Make GenerateRoom() call BeginWorldChange() and EndWorldChange(), and begin to systematise the entity system inside the world generator working off a sim_region, respecifying BeginEntity() and EndEntity() as AddEntity() and PlaceEntity()
58:52Relieve EndSim() and EndWorldChange() of taking the World, and create handmade_room_gen.cpp
58:52Relieve EndSim() and EndWorldChange() of taking the World, and create handmade_room_gen.cpp
58:52Relieve EndSim() and EndWorldChange() of taking the World, and create handmade_room_gen.cpp
1:02:16Disable transparency compositing in GNOME 3
🗹
1:02:16Disable transparency compositing in GNOME 3
🗹
1:02:16Disable transparency compositing in GNOME 3
🗹
1:03:34Pull the entity creation code from handmade_world_gen.cpp into handmade_room_gen.cpp
1:03:34Pull the entity creation code from handmade_world_gen.cpp into handmade_room_gen.cpp
1:03:34Pull the entity creation code from handmade_world_gen.cpp into handmade_room_gen.cpp
1:06:24Add TempMemory to the world_generator struct for GenerateRoom() to use, and setup the room's position and dimensions for entity simulation purposes
1:06:24Add TempMemory to the world_generator struct for GenerateRoom() to use, and setup the room's position and dimensions for entity simulation purposes
1:06:24Add TempMemory to the world_generator struct for GenerateRoom() to use, and setup the room's position and dimensions for entity simulation purposes
1:15:45Enable AddPlayer() to create a player entity, calling AddEntity() directly on the SimRegion
1:15:45Enable AddPlayer() to create a player entity, calling AddEntity() directly on the SimRegion
1:15:45Enable AddPlayer() to create a player entity, calling AddEntity() directly on the SimRegion
1:19:10Implement Layout(), initially stamping down rooms in a row
1:19:10Implement Layout(), initially stamping down rooms in a row
1:19:10Implement Layout(), initially stamping down rooms in a row
1:25:43Make CreateWorld() initialise the camera position, introducing gen_result struct
1:25:43Make CreateWorld() initialise the camera position, introducing gen_result struct
1:25:43Make CreateWorld() initialise the camera position, introducing gen_result struct
1:30:55Run the game to see nothing
🏃
1:30:55Run the game to see nothing
🏃
1:30:55Run the game to see nothing
🏃
1:31:45Step through CreateWorld() into GenerateRoom() and beyond to see what happens
🏃
1:31:45Step through CreateWorld() into GenerateRoom() and beyond to see what happens
🏃
1:31:45Step through CreateWorld() into GenerateRoom() and beyond to see what happens
🏃
1:36:19Make GenerateRoom() place its camera entity
1:36:19Make GenerateRoom() place its camera entity
1:36:19Make GenerateRoom() place its camera entity
1:41:01Run the game to see that we're getting further, but have no entities
🏃
1:41:01Run the game to see that we're getting further, but have no entities
🏃
1:41:01Run the game to see that we're getting further, but have no entities
🏃
1:43:37Make UpdateAndRenderWorld() outline the screen, sim region and world sim bounds
1:43:37Make UpdateAndRenderWorld() outline the screen, sim region and world sim bounds
1:43:37Make UpdateAndRenderWorld() outline the screen, sim region and world sim bounds
1:43:59Run the game to see that the sim region is not in our starting area
🏃
1:43:59Run the game to see that the sim region is not in our starting area
🏃
1:43:59Run the game to see that the sim region is not in our starting area
🏃
1:44:14Enable CreateWorld() to set the StandardRoomDimension
1:44:14Enable CreateWorld() to set the StandardRoomDimension
1:44:14Enable CreateWorld() to set the StandardRoomDimension
1:45:37Run the game to see our world
🏃
1:45:37Run the game to see our world
🏃
1:45:37Run the game to see our world
🏃
1:47:24Introduce gen_volume for gen_room and gen_connection to contain, and specify the geographical location of connections, introducing IsInVolume()
1:47:24Introduce gen_volume for gen_room and gen_connection to contain, and specify the geographical location of connections, introducing IsInVolume()
1:47:24Introduce gen_volume for gen_room and gen_connection to contain, and specify the geographical location of connections, introducing IsInVolume()
1:53:31Hardcode Layout() to knock out connection holes in the rooms
1:53:31Hardcode Layout() to knock out connection holes in the rooms
1:53:31Hardcode Layout() to knock out connection holes in the rooms
1:56:25Run the game to see a partial knockout
🏃
1:56:25Run the game to see a partial knockout
🏃
1:56:25Run the game to see a partial knockout
🏃
1:56:46Enable GenerateRoom() to colour the connections
1:56:46Enable GenerateRoom() to colour the connections
1:56:46Enable GenerateRoom() to colour the connections
1:59:01Run the game to see the colour
🏃
1:59:01Run the game to see the colour
🏃
1:59:01Run the game to see the colour
🏃
1:59:22Fix GenerateRoom() to enable IsInVolume() to test the correct tiles
1:59:22Fix GenerateRoom() to enable IsInVolume() to test the correct tiles
1:59:22Fix GenerateRoom() to enable IsInVolume() to test the correct tiles
1:59:41Run the game to see our full knockouts with working camera
🏃
1:59:41Run the game to see our full knockouts with working camera
🏃
1:59:41Run the game to see our full knockouts with working camera
🏃
2:01:00Q&A
🗩
2:01:00Q&A
🗩
2:01:00Q&A
🗩
2:01:23frostyninja Q: Can you please fix EndWorldgen?
🗪
2:01:23frostyninja Q: Can you please fix EndWorldgen?
🗪
2:01:23frostyninja Q: Can you please fix EndWorldgen?
🗪
2:01:36Make EndWorldgen() clear the TempMemoryClear()
2:01:36Make EndWorldgen() clear the TempMemoryClear()
2:01:36Make EndWorldgen() clear the TempMemoryClear()
2:02:06frostyninja Q: The capitalisation
🗪
2:02:06frostyninja Q: The capitalisation
🗪
2:02:06frostyninja Q: The capitalisation
🗪
2:02:07Rename EndWorldgen() to EndWorldGen()
2:02:07Rename EndWorldgen() to EndWorldGen()
2:02:07Rename EndWorldgen() to EndWorldGen()
2:02:21officer_kkona handmade_hero What is "internal" used for in C? Is it like the opposite of "extern" in C++?
🗪
2:02:21officer_kkona handmade_hero What is "internal" used for in C? Is it like the opposite of "extern" in C++?
🗪
2:02:21officer_kkona handmade_hero What is "internal" used for in C? Is it like the opposite of "extern" in C++?
🗪
2:03:37danzaidan Q: Should the light calculation always be stuck to the camera or something else?
🗪
2:03:37danzaidan Q: Should the light calculation always be stuck to the camera or something else?
🗪
2:03:37danzaidan Q: Should the light calculation always be stuck to the camera or something else?
🗪
2:04:50vaualbus Q: By the way in some C++ header there is a definition of internal so your code would not work if any C++ file get included. I'm happy with that, it prevent us from get mad
🗪
2:04:50vaualbus Q: By the way in some C++ header there is a definition of internal so your code would not work if any C++ file get included. I'm happy with that, it prevent us from get mad
🗪
2:04:50vaualbus Q: By the way in some C++ header there is a definition of internal so your code would not work if any C++ file get included. I'm happy with that, it prevent us from get mad
🗪
2:05:20myrcene Q: What function is camera using to interpolate between two positions right now? Bezier curve? expf?
🗪
2:05:20myrcene Q: What function is camera using to interpolate between two positions right now? Bezier curve? expf?
🗪
2:05:20myrcene Q: What function is camera using to interpolate between two positions right now? Bezier curve? expf?
🗪
2:07:13danzaidan Q: How much of the world gen can be done in this pass and how much would depend on more gameplay exploration stuff?
🗪
2:07:13danzaidan Q: How much of the world gen can be done in this pass and how much would depend on more gameplay exploration stuff?
🗪
2:07:13danzaidan Q: How much of the world gen can be done in this pass and how much would depend on more gameplay exploration stuff?
🗪
2:09:38sahfortv Q: Why does the color of the room go as it does without lighting, rather than going black?
🗪
2:09:38sahfortv Q: Why does the color of the room go as it does without lighting, rather than going black?
🗪
2:09:38sahfortv Q: Why does the color of the room go as it does without lighting, rather than going black?
🗪
2:10:10Compare the lighting with and without the moonlight
🏃
🖮
2:10:10Compare the lighting with and without the moonlight
🏃
🖮
2:10:10Compare the lighting with and without the moonlight
🏃
🖮
2:11:10garryjohanson Q: Just want to randomly suggest transactional processing as a topic for some future off-topic stream
🗪
2:11:10garryjohanson Q: Just want to randomly suggest transactional processing as a topic for some future off-topic stream
🗪
2:11:10garryjohanson Q: Just want to randomly suggest transactional processing as a topic for some future off-topic stream
🗪
2:11:18jamoflaw Q: Will there be specific locations in the world - I saw you mention an orphanage yesterday - and if so how will they be handled in a generated world?
🗪
2:11:18jamoflaw Q: Will there be specific locations in the world - I saw you mention an orphanage yesterday - and if so how will they be handled in a generated world?
🗪
2:11:18jamoflaw Q: Will there be specific locations in the world - I saw you mention an orphanage yesterday - and if so how will they be handled in a generated world?
🗪
2:11:45naysayer88 Q: How long would it take me to get up to speed on 4coder if I decide to, like, switch off the hell that is emacs?
🗪
2:11:45naysayer88 Q: How long would it take me to get up to speed on 4coder if I decide to, like, switch off the hell that is emacs?
🗪
2:11:45naysayer88 Q: How long would it take me to get up to speed on 4coder if I decide to, like, switch off the hell that is emacs?
🗪
2:17:06vateferfout Q: Is there a reason you don't use __forceinline?
🗪
2:17:06vateferfout Q: Is there a reason you don't use __forceinline?
🗪
2:17:06vateferfout Q: Is there a reason you don't use __forceinline?
🗪
2:17:58pythno Q: Can you go over the architecture of how to generate the rooms (like with this generic config) briefly again?
🗪
2:17:58pythno Q: Can you go over the architecture of how to generate the rooms (like with this generic config) briefly again?
🗪
2:17:58pythno Q: Can you go over the architecture of how to generate the rooms (like with this generic config) briefly again?
🗪
2:18:44naysayer88 cmuratori Streaming Today would be Very Doubtful
🗪
2:18:44naysayer88 cmuratori Streaming Today would be Very Doubtful
🗪
2:18:44naysayer88 cmuratori Streaming Today would be Very Doubtful
🗪
2:19:00nxsy Q: I think they meant the unlit part. The plain diffuse / albedo bit
🗪
2:19:00nxsy Q: I think they meant the unlit part. The plain diffuse / albedo bit
🗪
2:19:00nxsy Q: I think they meant the unlit part. The plain diffuse / albedo bit
🗪
2:19:41stormblaz handmade_hero Can you start optimizing your code as you go or when you reach major milestones, or do you need to wait for near-completion to optimize your code, and make sure you don't have useless coding lines bulking up?
🗪
2:19:41stormblaz handmade_hero Can you start optimizing your code as you go or when you reach major milestones, or do you need to wait for near-completion to optimize your code, and make sure you don't have useless coding lines bulking up?
🗪
2:19:41stormblaz handmade_hero Can you start optimizing your code as you go or when you reach major milestones, or do you need to wait for near-completion to optimize your code, and make sure you don't have useless coding lines bulking up?
🗪
2:23:21sahfortv Q: Maybe something for next week, but can you make the boundary wall heights equal?
🗪
2:23:21sahfortv Q: Maybe something for next week, but can you make the boundary wall heights equal?
🗪
2:23:21sahfortv Q: Maybe something for next week, but can you make the boundary wall heights equal?
🗪
2:23:33Close out
🗩
2:23:33Close out
🗩
2:23:33Close out
🗩