Handmade Hero»Episode Guide
Adding Asset Tag Hashes
?
?

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:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
1:33Determine to start editing the game, keeping an eye on our 4coder config
🗩
1:33Determine to start editing the game, keeping an eye on our 4coder config
🗩
1:33Determine to start editing the game, keeping an eye on our 4coder config
🗩
2:04Demo the "d" key's "delete range" behaviour, describing our desired one
🗹
2:04Demo the "d" key's "delete range" behaviour, describing our desired one
🗹
2:04Demo the "d" key's "delete range" behaviour, describing our desired one
🗹
3:29Update casey_delete_to_end_of_line for the new 4coder, and bind it to "d"
3:29Update casey_delete_to_end_of_line for the new 4coder, and bind it to "d"
3:29Update casey_delete_to_end_of_line for the new 4coder, and bind it to "d"
6:30Find that casey_delete_to_end_of_line deletes one extra character at the start
🗹
6:30Find that casey_delete_to_end_of_line deletes one extra character at the start
🗹
6:30Find that casey_delete_to_end_of_line deletes one extra character at the start
🗹
7:06Fix casey_delete_to_end_of_line
7:06Fix casey_delete_to_end_of_line
7:06Fix casey_delete_to_end_of_line
7:25casey_delete_to_end_of_line now partially works
🗹
7:25casey_delete_to_end_of_line now partially works
🗹
7:25casey_delete_to_end_of_line now partially works
🗹
7:36Enable casey_delete_to_end_of_line to join the following line with the current one when the cursor is at the latter's end
7:36Enable casey_delete_to_end_of_line to join the following line with the current one when the cursor is at the latter's end
7:36Enable casey_delete_to_end_of_line to join the following line with the current one when the cursor is at the latter's end
9:56Find that casey_delete_to_end_of_line deletes the whole line
🗹
9:56Find that casey_delete_to_end_of_line deletes the whole line
🗹
9:56Find that casey_delete_to_end_of_line deletes the whole line
🗹
10:10Fix casey_delete_to_end_of_line to correctly join lines
10:10Fix casey_delete_to_end_of_line to correctly join lines
10:10Fix casey_delete_to_end_of_line to correctly join lines
10:29casey_delete_to_end_of_line now fully works
🗹
10:29casey_delete_to_end_of_line now fully works
🗹
10:29casey_delete_to_end_of_line now fully works
🗹
10:42Our parentheses and line highlight colours are the same
🗹
10:42Our parentheses and line highlight colours are the same
🗹
10:42Our parentheses and line highlight colours are the same
🗹
11:38Download 4coder_fleury and remedybg 0.3.1.1
🗹
11:38Download 4coder_fleury and remedybg 0.3.1.1
🗹
11:38Download 4coder_fleury and remedybg 0.3.1.1
🗹
16:21Check out theme_example.4coder from 4coder_fleury
🗹
16:21Check out theme_example.4coder from 4coder_fleury
🗹
16:21Check out theme_example.4coder from 4coder_fleury
🗹
17:12Rebuild and launch 4coder
🗹
17:12Rebuild and launch 4coder
🗹
17:12Rebuild and launch 4coder
🗹
17:44Modify 4coder_fleury.cpp to include 4coder_fleury_casey.cpp
17:44Modify 4coder_fleury.cpp to include 4coder_fleury_casey.cpp
17:44Modify 4coder_fleury.cpp to include 4coder_fleury_casey.cpp
18:07Hit a compile error in 4coder_fleury_casey.cpp
18:07Hit a compile error in 4coder_fleury_casey.cpp
18:07Hit a compile error in 4coder_fleury_casey.cpp
18:42Merge in our cursor drawing code, with a recommendation of Beyond Compare1
🗹
18:42Merge in our cursor drawing code, with a recommendation of Beyond Compare1
🗹
18:42Merge in our cursor drawing code, with a recommendation of Beyond Compare1
🗹
22:29Build 4coder successfully but see a weird purple pane
🗹
22:29Build 4coder successfully but see a weird purple pane
🗹
22:29Build 4coder successfully but see a weird purple pane
🗹
23:14Update our theme-casey.4coder based on theme_example.4coder
🗹
23:14Update our theme-casey.4coder based on theme_example.4coder
🗹
23:14Update our theme-casey.4coder based on theme_example.4coder
🗹
26:32Our colours are now working
🗹
26:32Our colours are now working
🗹
26:32Our colours are now working
🗹
27:03Edit our colours
🗹
27:03Edit our colours
🗹
27:03Edit our colours
🗹
28:56Our parentheses are now distinguishable from the line highlight, but now there's another mystery
🗹
28:56Our parentheses are now distinguishable from the line highlight, but now there's another mystery
🗹
28:56Our parentheses are now distinguishable from the line highlight, but now there's another mystery
🗹
29:16Continue to edit our colours
🗹
29:16Continue to edit our colours
🗹
29:16Continue to edit our colours
🗹
30:41Our parentheses are now fine
🗹
30:41Our parentheses are now fine
🗹
30:41Our parentheses are now fine
🗹
31:30Continue to edit our colours
🗹
31:30Continue to edit our colours
🗹
31:30Continue to edit our colours
🗹
33:27The braces now highlight a little bit
🗹
33:27The braces now highlight a little bit
🗹
33:27The braces now highlight a little bit
🗹
34:36Note our theme issues to deal with off-stream
🗹
34:36Note our theme issues to deal with off-stream
🗹
34:36Note our theme issues to deal with off-stream
🗹
35:58Zero out the cursor roundness and dim the line and annotation colours
🗹
35:58Zero out the cursor roundness and dim the line and annotation colours
🗹
35:58Zero out the cursor roundness and dim the line and annotation colours
🗹
36:58Our colours are now tolerable, but the cursor interpolation seems a little broken
🗹
36:58Our colours are now tolerable, but the cursor interpolation seems a little broken
🗹
36:58Our colours are now tolerable, but the cursor interpolation seems a little broken
🗹
37:58Fix compile error in the cursor roundness and reduce the thickness
🗹
37:58Fix compile error in the cursor roundness and reduce the thickness
🗹
37:58Fix compile error in the cursor roundness and reduce the thickness
🗹
38:25The thickness only gets applied to the start mark
🗹
38:25The thickness only gets applied to the start mark
🗹
38:25The thickness only gets applied to the start mark
🗹
39:56Try out editing and building our real code
🗹
39:56Try out editing and building our real code
🗹
39:56Try out editing and building our real code
🗹
42:04Determine to remove the idea of entity pieces
🗩
42:04Determine to remove the idea of entity pieces
🗩
42:04Determine to remove the idea of entity pieces
🗩
43:06Traverse the orphanage, with the determination to ease the setup of art assets with entities
🏃
43:06Traverse the orphanage, with the determination to ease the setup of art assets with entities
🏃
43:06Traverse the orphanage, with the determination to ease the setup of art assets with entities
🏃
44:02Describe the complexity – both unneeded and necessary – of base_game.hht
🗹
44:02Describe the complexity – both unneeded and necessary – of base_game.hht
🗹
44:02Describe the complexity – both unneeded and necessary – of base_game.hht
🗹
47:48Determine to replace manual asset tags with the notion of an indexing scheme
🗩
47:48Determine to replace manual asset tags with the notion of an indexing scheme
🗩
47:48Determine to replace manual asset tags with the notion of an indexing scheme
🗩
56:39Sketch out a new set of tags in base_game.hht
🗹
56:39Sketch out a new set of tags in base_game.hht
🗹
56:39Sketch out a new set of tags in base_game.hht
🗹
1:00:25Add our new tags to asset_tag_id, noting that token-move skips past semicolons
1:00:25Add our new tags to asset_tag_id, noting that token-move skips past semicolons
1:00:25Add our new tags to asset_tag_id, noting that token-move skips past semicolons
1:01:46Continue to sketch out a new set of tags in base_game.hht and asset_tag_id
🗹
🖮
1:01:46Continue to sketch out a new set of tags in base_game.hht and asset_tag_id
🗹
🖮
1:01:46Continue to sketch out a new set of tags in base_game.hht and asset_tag_id
🗹
🖮
1:10:38Revert the new tags
🗹
🖮
1:10:38Revert the new tags
🗹
🖮
1:10:38Revert the new tags
🗹
🖮
1:11:10Consider hashing the asset tags
🗩
1:11:10Consider hashing the asset tags
🗩
1:11:10Consider hashing the asset tags
🗩
1:14:24Introduce asset_hash_entry
1:14:24Introduce asset_hash_entry
1:14:24Introduce asset_hash_entry
1:15:37Bind word_complete everywhere and disable compilation of the sampling generator and lighting profiler
🗹
1:15:37Bind word_complete everywhere and disable compilation of the sampling generator and lighting profiler
🗹
1:15:37Bind word_complete everywhere and disable compilation of the sampling generator and lighting profiler
🗹
1:16:56Augment game_assets with an asset_hash_entry array, noting that it'll be more like a bit field
1:16:56Augment game_assets with an asset_hash_entry array, noting that it'll be more like a bit field
1:16:56Augment game_assets with an asset_hash_entry array, noting that it'll be more like a bit field
1:20:10Introduce GetTagHash()
1:20:10Introduce GetTagHash()
1:20:10Introduce GetTagHash()
1:23:47Augment entity_visible_piece with TagHash, with a few words on the inefficiency of variable-length data
1:23:47Augment entity_visible_piece with TagHash, with a few words on the inefficiency of variable-length data
1:23:47Augment entity_visible_piece with TagHash, with a few words on the inefficiency of variable-length data
1:25:55Make GetTagHash() weld the AssetCategory into the TagHash
1:25:55Make GetTagHash() weld the AssetCategory into the TagHash
1:25:55Make GetTagHash() weld the AssetCategory into the TagHash
1:32:39Begin to prepare UpdateAndRenderEntities() to use our new TagHash
1:32:39Begin to prepare UpdateAndRenderEntities() to use our new TagHash
1:32:39Begin to prepare UpdateAndRenderEntities() to use our new TagHash
1:34:18Consider how parameters such as FacingDirection may interact with our TagHash
🗩
1:34:18Consider how parameters such as FacingDirection may interact with our TagHash
🗩
1:34:18Consider how parameters such as FacingDirection may interact with our TagHash
🗩
1:36:35Make UpdateAndRenderEntities() simplify the MatchVector as a v4 and pass that and the TagHash to GetBestMatchBitmapFrom()
1:36:35Make UpdateAndRenderEntities() simplify the MatchVector as a v4 and pass that and the TagHash to GetBestMatchBitmapFrom()
1:36:35Make UpdateAndRenderEntities() simplify the MatchVector as a v4 and pass that and the TagHash to GetBestMatchBitmapFrom()
1:37:414coder feature request: Unobtrusive function signature placement, maybe in a multipurpose compilation console
🗹
1:37:414coder feature request: Unobtrusive function signature placement, maybe in a multipurpose compilation console
🗹
1:37:414coder feature request: Unobtrusive function signature placement, maybe in a multipurpose compilation console
🗹
1:41:15ciansweeney Or make it a shortcut, like Ctrl-Space or something to pop it up when it's needed?
🗪
1:41:15ciansweeney Or make it a shortcut, like Ctrl-Space or something to pop it up when it's needed?
🗪
1:41:15ciansweeney Or make it a shortcut, like Ctrl-Space or something to pop it up when it's needed?
🗪
1:43:26ryanfleury I have an idea... maybe a "peek buffer" that you can stick into a panel?
🗪
1:43:26ryanfleury I have an idea... maybe a "peek buffer" that you can stick into a panel?
🗪
1:43:26ryanfleury I have an idea... maybe a "peek buffer" that you can stick into a panel?
🗪
1:44:07thesandvichmaker As a vim user, I never found code peek that useful as an idea, because with vim's jump history you can just jump to the definition, look at it, maybe even copy it, and then jump back with minimal effort, and no new UI needed
🗪
1:44:07thesandvichmaker As a vim user, I never found code peek that useful as an idea, because with vim's jump history you can just jump to the definition, look at it, maybe even copy it, and then jump back with minimal effort, and no new UI needed
🗪
1:44:07thesandvichmaker As a vim user, I never found code peek that useful as an idea, because with vim's jump history you can just jump to the definition, look at it, maybe even copy it, and then jump back with minimal effort, and no new UI needed
🗪
1:45:09thebaker__ But what if you only have one pane?
🗪
1:45:09thebaker__ But what if you only have one pane?
🗪
1:45:09thebaker__ But what if you only have one pane?
🗪
1:45:34thesandvichmaker Jump history, you'll never go back!
🗪
1:45:34thesandvichmaker Jump history, you'll never go back!
🗪
1:45:34thesandvichmaker Jump history, you'll never go back!
🗪
1:45:51Update GetBestMatchBitmapFrom() and friends to use our new TagHash, introducing asset_tag_hash and GetAssetFrom() to replace GetBestMatchAssetFrom() and GetFirstAssetFrom()
1:45:51Update GetBestMatchBitmapFrom() and friends to use our new TagHash, introducing asset_tag_hash and GetAssetFrom() to replace GetBestMatchAssetFrom() and GetFirstAssetFrom()
1:45:51Update GetBestMatchBitmapFrom() and friends to use our new TagHash, introducing asset_tag_hash and GetAssetFrom() to replace GetBestMatchAssetFrom() and GetFirstAssetFrom()
1:49:38Allow SSE4.12
📖
1:49:38Allow SSE4.12
📖
1:49:38Allow SSE4.12
📖
1:52:11Introduce Hash32() using two rounds of _mm_aesdec_si128()3 for GetAssetFrom() to call
1:52:11Introduce Hash32() using two rounds of _mm_aesdec_si128()3 for GetAssetFrom() to call
1:52:11Introduce Hash32() using two rounds of _mm_aesdec_si128()3 for GetAssetFrom() to call
1:59:25Consider the performance of Hash32()4
📖
1:59:25Consider the performance of Hash32()4
📖
1:59:25Consider the performance of Hash32()4
📖
2:00:37Make Hash32() set a random Seed from random.org5
2:00:37Make Hash32() set a random Seed from random.org5
2:00:37Make Hash32() set a random Seed from random.org5
2:02:37Set up GetAssetFrom() to work with a welded Coordinate, introducing asset_match_vector
2:02:37Set up GetAssetFrom() to work with a welded Coordinate, introducing asset_match_vector
2:02:37Set up GetAssetFrom() to work with a welded Coordinate, introducing asset_match_vector
2:14:07Q&A
🗩
2:14:07Q&A
🗩
2:14:07Q&A
🗩
2:14:40catccherguy14 Just put four VMs in front of the code and you get your answer as to why it's so slow
🗪
2:14:40catccherguy14 Just put four VMs in front of the code and you get your answer as to why it's so slow
🗪
2:14:40catccherguy14 Just put four VMs in front of the code and you get your answer as to why it's so slow
🗪
2:15:22thesandvichmaker Q: Off-topic, feel free to ignore, but someone told me that on PlayStation (didn't specify which PlayStation) games run in a sandbox, and if you forget to free any memory you allocated when you exit, that sandbox will be kept alive in the background. That sounds like nonsense. Is it true? (If this can be answered without breaking NDA)
🗪
2:15:22thesandvichmaker Q: Off-topic, feel free to ignore, but someone told me that on PlayStation (didn't specify which PlayStation) games run in a sandbox, and if you forget to free any memory you allocated when you exit, that sandbox will be kept alive in the background. That sounds like nonsense. Is it true? (If this can be answered without breaking NDA)
🗪
2:15:22thesandvichmaker Q: Off-topic, feel free to ignore, but someone told me that on PlayStation (didn't specify which PlayStation) games run in a sandbox, and if you forget to free any memory you allocated when you exit, that sandbox will be kept alive in the background. That sounds like nonsense. Is it true? (If this can be answered without breaking NDA)
🗪
2:17:54rationalcoder Q: I would like to hear a discussion between you and Jon about metaprogramming philosophy. On one of his streams, I asked whether he thought Jai would ever satisfy you in terms of metaprogramming, and he said that the way you think of metaprogramming is really different from the way he thinks of it, and he thinks you are very wrong about it. He said it's fine that you disagree, though. Sounds like a good discussion
🗪
2:17:54rationalcoder Q: I would like to hear a discussion between you and Jon about metaprogramming philosophy. On one of his streams, I asked whether he thought Jai would ever satisfy you in terms of metaprogramming, and he said that the way you think of metaprogramming is really different from the way he thinks of it, and he thinks you are very wrong about it. He said it's fine that you disagree, though. Sounds like a good discussion
🗪
2:17:54rationalcoder Q: I would like to hear a discussion between you and Jon about metaprogramming philosophy. On one of his streams, I asked whether he thought Jai would ever satisfy you in terms of metaprogramming, and he said that the way you think of metaprogramming is really different from the way he thinks of it, and he thinks you are very wrong about it. He said it's fine that you disagree, though. Sounds like a good discussion
🗪
2:21:25hexadecimalinteger Q: Why are new compression techniques such as Microsoft Direct Storage / PS5 compression needed for instant loading. Why are NVME speeds not enough? What's the bottleneck?6
🗪
2:21:25hexadecimalinteger Q: Why are new compression techniques such as Microsoft Direct Storage / PS5 compression needed for instant loading. Why are NVME speeds not enough? What's the bottleneck?6
🗪
2:21:25hexadecimalinteger Q: Why are new compression techniques such as Microsoft Direct Storage / PS5 compression needed for instant loading. Why are NVME speeds not enough? What's the bottleneck?6
🗪
2:28:14roam00010011 Q: So I'm out of touch, where did you move to?
🗪
2:28:14roam00010011 Q: So I'm out of touch, where did you move to?
🗪
2:28:14roam00010011 Q: So I'm out of touch, where did you move to?
🗪
2:28:35hexadecimalinteger Q: The thing is, if I go from SSD to NVMe, speeds are not improved 500MB/s to 4GB/s
🗪
2:28:35hexadecimalinteger Q: The thing is, if I go from SSD to NVMe, speeds are not improved 500MB/s to 4GB/s
🗪
2:28:35hexadecimalinteger Q: The thing is, if I go from SSD to NVMe, speeds are not improved 500MB/s to 4GB/s
🗪
2:29:28hexadecimalinteger Q: Yes, SATA to NVMe
🗪
2:29:28hexadecimalinteger Q: Yes, SATA to NVMe
🗪
2:29:28hexadecimalinteger Q: Yes, SATA to NVMe
🗪
2:30:31Wrap it up for today, with a plug of Star Code Galaxy7 and a glimpse into the future
🗩
2:30:31Wrap it up for today, with a plug of Star Code Galaxy7 and a glimpse into the future
🗩
2:30:31Wrap it up for today, with a plug of Star Code Galaxy7 and a glimpse into the future
🗩