Handmade Hero»Episode Guide
Asset Tags in the World Generator
?
?

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
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:54Consider the order-dependence of the asset tag order
🗩
0:54Consider the order-dependence of the asset tag order
🗩
0:54Consider the order-dependence of the asset tag order
🗩
3:13Consider the performance of Hash32() in terms of order-independence
🗩
3:13Consider the performance of Hash32() in terms of order-independence
🗩
3:13Consider the performance of Hash32() in terms of order-independence
🗩
6:59Consider the point of order-independent asset tagging
🗩
6:59Consider the point of order-independent asset tagging
🗩
6:59Consider the point of order-independent asset tagging
🗩
8:08Sketch out updates to base_game.hht
🗹
8:08Sketch out updates to base_game.hht
🗹
8:08Sketch out updates to base_game.hht
🗹
10:38Check out our compile errors
10:38Check out our compile errors
10:38Check out our compile errors
11:08Bind "J" globally
🗹
11:08Bind "J" globally
🗹
11:08Bind "J" globally
🗹
12:30ryanfleury handmade_hero `fleury_toggle_compilation_expand`
🗪
12:30ryanfleury handmade_hero `fleury_toggle_compilation_expand`
🗪
12:30ryanfleury handmade_hero `fleury_toggle_compilation_expand`
🗪
12:33Bind "Insert" to fleury_toggle_compilation_expand
🗹
12:33Bind "Insert" to fleury_toggle_compilation_expand
🗹
12:33Bind "Insert" to fleury_toggle_compilation_expand
🗹
13:02Try making AddPieceLight() and AddPieceOccluder() pass {} to AddPiece()
13:02Try making AddPieceLight() and AddPieceOccluder() pass {} to AddPiece()
13:02Try making AddPieceLight() and AddPieceOccluder() pass {} to AddPiece()
14:19Function parameter lookup and failed namespacing in C++1
📖
14:19Function parameter lookup and failed namespacing in C++1
📖
14:19Function parameter lookup and failed namespacing in C++1
📖
20:32Update AddPlayer() to use GetTagHash()
20:32Update AddPlayer() to use GetTagHash()
20:32Update AddPlayer() to use GetTagHash()
24:03Reacquaint ourselves with the GEN_CREATE_ENTITY() macro and its calling sites
📖
24:03Reacquaint ourselves with the GEN_CREATE_ENTITY() macro and its calling sites
📖
24:03Reacquaint ourselves with the GEN_CREATE_ENTITY() macro and its calling sites
📖
29:46Shrink the Tags array in gen_entity from 14 to 4
29:46Shrink the Tags array in gen_entity from 14 to 4
29:46Shrink the Tags array in gen_entity from 14 to 4
30:18Consider how to encode (random) variants in our tag hash
📖
30:18Consider how to encode (random) variants in our tag hash
📖
30:18Consider how to encode (random) variants in our tag hash
📖
38:16Consider doing GetAssetFrom() exactly as the old GetBestMatchAssetFrom(),2 just without the WeightVector
📖
38:16Consider doing GetAssetFrom() exactly as the old GetBestMatchAssetFrom(),2 just without the WeightVector
📖
38:16Consider doing GetAssetFrom() exactly as the old GetBestMatchAssetFrom(),2 just without the WeightVector
📖
43:26Make GetAssetFrom() match based on the old GetBestMatchAssetFrom(),3 just without the WeightVector
43:26Make GetAssetFrom() match based on the old GetBestMatchAssetFrom(),3 just without the WeightVector
43:26Make GetAssetFrom() match based on the old GetBestMatchAssetFrom(),3 just without the WeightVector
50:12Reflect on our new asset matching, with optimisation potential and exact matching on tags
📖
50:12Reflect on our new asset matching, with optimisation potential and exact matching on tags
📖
50:12Reflect on our new asset matching, with optimisation potential and exact matching on tags
📖
51:01Change asset_match_vector to be an f32 array and remove TagRange from game_assets
51:01Change asset_match_vector to be an f32 array and remove TagRange from game_assets
51:01Change asset_match_vector to be an f32 array and remove TagRange from game_assets
51:55Consider introducing a Modulus() function for facing direction
📖
51:55Consider introducing a Modulus() function for facing direction
📖
51:55Consider introducing a Modulus() function for facing direction
📖
54:45Embark on updating the picking of FacingDirection in UpdateAndRenderEntities()
54:45Embark on updating the picking of FacingDirection in UpdateAndRenderEntities()
54:45Embark on updating the picking of FacingDirection in UpdateAndRenderEntities()
57:27Revert the removal of TagRange from game_assets
57:27Revert the removal of TagRange from game_assets
57:27Revert the removal of TagRange from game_assets
59:10Augment entity_visible_piece with an f32 Variant for UpdateAndRenderEntities() to use
59:10Augment entity_visible_piece with an f32 Variant for UpdateAndRenderEntities() to use
59:10Augment entity_visible_piece with an f32 Variant for UpdateAndRenderEntities() to use
1:00:32Update AllocateGameAssets() to operate on MatchElement
1:00:32Update AllocateGameAssets() to operate on MatchElement
1:00:32Update AllocateGameAssets() to operate on MatchElement
1:01:48ryanfleury Hmmm I don't know, handmade_hero… He's online so I will ping him about it
🗪
1:01:48ryanfleury Hmmm I don't know, handmade_hero… He's online so I will ping him about it
🗪
1:01:48ryanfleury Hmmm I don't know, handmade_hero… He's online so I will ping him about it
🗪
1:02:59Consider making GEN_CREATE_ENTITY() take a tag hash
📖
1:02:59Consider making GEN_CREATE_ENTITY() take a tag hash
📖
1:02:59Consider making GEN_CREATE_ENTITY() take a tag hash
📖
1:03:58ryanfleury Yeah, that is weird… because it's different from the virtual whitespace behavior…
🗪
1:03:58ryanfleury Yeah, that is weird… because it's different from the virtual whitespace behavior…
🗪
1:03:58ryanfleury Yeah, that is weird… because it's different from the virtual whitespace behavior…
🗪
1:04:04Make GEN_CREATE_ENTITY() and all entity generation functions take a BaseHash
1:04:04Make GEN_CREATE_ENTITY() and all entity generation functions take a BaseHash
1:04:04Make GEN_CREATE_ENTITY() and all entity generation functions take a BaseHash
1:07:44Look into updating GenerateRoom() to our new asset matching scheme
📖
1:07:44Look into updating GenerateRoom() to our new asset matching scheme
📖
1:07:44Look into updating GenerateRoom() to our new asset matching scheme
📖
1:09:24Delete AddTag() and the Tags array from entity, and propagate this change
1:09:24Delete AddTag() and the Tags array from entity, and propagate this change
1:09:24Delete AddTag() and the Tags array from entity, and propagate this change
1:12:05Consider providing a source of entropy to AddPiece()
📖
1:12:05Consider providing a source of entropy to AddPiece()
📖
1:12:05Consider providing a source of entropy to AddPiece()
📖
1:13:34Introduce entity_piece_asset for entity_visible_piece to contain
1:13:34Introduce entity_piece_asset for entity_visible_piece to contain
1:13:34Introduce entity_piece_asset for entity_visible_piece to contain
1:17:48Workaround C++'s ambiguous interpretation of {} in our AddPiece() calls
1:17:48Workaround C++'s ambiguous interpretation of {} in our AddPiece() calls
1:17:48Workaround C++'s ambiguous interpretation of {} in our AddPiece() calls
1:19:21Respecify AddTreeTags() as GetTreeTags() and change GEN_CREATE_ENTITY() to take an entity_piece_asset
1:19:21Respecify AddTreeTags() as GetTreeTags() and change GEN_CREATE_ENTITY() to take an entity_piece_asset
1:19:21Respecify AddTreeTags() as GetTreeTags() and change GEN_CREATE_ENTITY() to take an entity_piece_asset
1:23:22Introduce ChangeHash()
1:23:22Introduce ChangeHash()
1:23:22Introduce ChangeHash()
1:25:53Change the AddPiece() forward-declarations to take an entity_piece_asset, and pass {} to AddPiece() again
1:25:53Change the AddPiece() forward-declarations to take an entity_piece_asset, and pass {} to AddPiece() again
1:25:53Change the AddPiece() forward-declarations to take an entity_piece_asset, and pass {} to AddPiece() again
1:26:33Introduce GetPieceAsset() for AddPlayer() to call
1:26:33Introduce GetPieceAsset() for AddPlayer() to call
1:26:33Introduce GetPieceAsset() for AddPlayer() to call
1:29:354coder feature request: Early scrolling out from behind an on-top window
🗹
1:29:354coder feature request: Early scrolling out from behind an on-top window
🗹
1:29:354coder feature request: Early scrolling out from behind an on-top window
🗹
1:30:05Make AddPlayer() use GetPieceAsset() and ChangeHash()
1:30:05Make AddPlayer() use GetPieceAsset() and ChangeHash()
1:30:05Make AddPlayer() use GetPieceAsset() and ChangeHash()
1:32:55Defer our GenerateRoom() update to next time
📖
1:32:55Defer our GenerateRoom() update to next time
📖
1:32:55Defer our GenerateRoom() update to next time
📖
1:33:52Fix the GenEntityAtTraversable() call in GenerateRoom()
1:33:52Fix the GenEntityAtTraversable() call in GenerateRoom()
1:33:52Fix the GenEntityAtTraversable() call in GenerateRoom()
1:34:59Q&A
🗩
1:34:59Q&A
🗩
1:34:59Q&A
🗩
1:35:47ryanfleury handmade_hero I have alerted the 4th dimension of the bug
🗪
1:35:47ryanfleury handmade_hero I have alerted the 4th dimension of the bug
🗪
1:35:47ryanfleury handmade_hero I have alerted the 4th dimension of the bug
🗪
1:36:11exp_ix Q: Are asset tags used for something like lister panels?
🗪
1:36:11exp_ix Q: Are asset tags used for something like lister panels?
🗪
1:36:11exp_ix Q: Are asset tags used for something like lister panels?
🗪
1:36:33darthwutface Q: The API you mentioned not existing earlier for bulk sending packets: why doesn't it exist? Is there some hardware limitation?
🗪
1:36:33darthwutface Q: The API you mentioned not existing earlier for bulk sending packets: why doesn't it exist? Is there some hardware limitation?
🗪
1:36:33darthwutface Q: The API you mentioned not existing earlier for bulk sending packets: why doesn't it exist? Is there some hardware limitation?
🗪
1:40:22vironacorus Q: Thoughts on Unity / Unreal / Godot (their quality)? How would an engine made by you look like?
🗪
1:40:22vironacorus Q: Thoughts on Unity / Unreal / Godot (their quality)? How would an engine made by you look like?
🗪
1:40:22vironacorus Q: Thoughts on Unity / Unreal / Godot (their quality)? How would an engine made by you look like?
🗪
1:42:49kniffel5 Ori and the Will of the Wisps is done in Unity. Doesn't that count for AAA-quality? Though they had to modify it a bit
🗪
1:42:49kniffel5 Ori and the Will of the Wisps is done in Unity. Doesn't that count for AAA-quality? Though they had to modify it a bit
🗪
1:42:49kniffel5 Ori and the Will of the Wisps is done in Unity. Doesn't that count for AAA-quality? Though they had to modify it a bit
🗪
1:46:51hmartarg Q: Have you ever explained bit-fields and, if not, can you and is it still useful to use today? I just saw that in an old code base to do flags
🗪
1:46:51hmartarg Q: Have you ever explained bit-fields and, if not, can you and is it still useful to use today? I just saw that in an old code base to do flags
🗪
1:46:51hmartarg Q: Have you ever explained bit-fields and, if not, can you and is it still useful to use today? I just saw that in an old code base to do flags
🗪
1:50:35miles_gloriosus HmartArg handmade_hero If it matters, bit-fields are nice to use in networking, because you can pack the booleans in 1 or 2 bytes instead of taking up a byte for each one
🗪
1:50:35miles_gloriosus HmartArg handmade_hero If it matters, bit-fields are nice to use in networking, because you can pack the booleans in 1 or 2 bytes instead of taking up a byte for each one
🗪
1:50:35miles_gloriosus HmartArg handmade_hero If it matters, bit-fields are nice to use in networking, because you can pack the booleans in 1 or 2 bytes instead of taking up a byte for each one
🗪
1:51:04yrk_ Q: I didn't see you using any version control. Aren't you using any and are you not afraid of losing something valuable due to the mistake of deleting a bunch of code lines too quickly?4
🗪
1:51:04yrk_ Q: I didn't see you using any version control. Aren't you using any and are you not afraid of losing something valuable due to the mistake of deleting a bunch of code lines too quickly?4
🗪
1:51:04yrk_ Q: I didn't see you using any version control. Aren't you using any and are you not afraid of losing something valuable due to the mistake of deleting a bunch of code lines too quickly?4
🗪
1:52:30Using compression, not bit-fields, to minimise transmission bandwidth for networking
🗩
1:52:30Using compression, not bit-fields, to minimise transmission bandwidth for networking
🗩
1:52:30Using compression, not bit-fields, to minimise transmission bandwidth for networking
🗩
1:53:23centhusiast Q: Could you explain the downside of the JSON data format?
🗪
1:53:23centhusiast Q: Could you explain the downside of the JSON data format?
🗪
1:53:23centhusiast Q: Could you explain the downside of the JSON data format?
🗪
1:55:40maquinahumana Q: Why do you use 32-bit bools – bool32 – rather than something smaller?
🗪
1:55:40maquinahumana Q: Why do you use 32-bit bools – bool32 – rather than something smaller?
🗪
1:55:40maquinahumana Q: Why do you use 32-bit bools – bool32 – rather than something smaller?
🗪
1:56:49centhusiast Q: Have you heard about zstandard data compression developed by facebook?
🗪
1:56:49centhusiast Q: Have you heard about zstandard data compression developed by facebook?
🗪
1:56:49centhusiast Q: Have you heard about zstandard data compression developed by facebook?
🗪
1:57:31Wrap it up
1:57:31Wrap it up
1:57:31Wrap it up