Handmade Hero»Episode Guide
Handling Annotation Data During Import
?
?

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:00Recap and set the stage for the day cleaning up the asset importing
🗩
0:00Recap and set the stage for the day cleaning up the asset importing
🗩
0:00Recap and set the stage for the day cleaning up the asset importing
🗩
2:55Continuing thoughts on asset tagging
🗩
2:55Continuing thoughts on asset tagging
🗩
2:55Continuing thoughts on asset tagging
🗩
6:26Run the game and consider hhaedit's ability to upgrade .hha files
🏃
6:26Run the game and consider hhaedit's ability to upgrade .hha files
🏃
6:26Run the game and consider hhaedit's ability to upgrade .hha files
🏃
8:16Note our desire to get art into the game
🏃
8:16Note our desire to get art into the game
🏃
8:16Note our desire to get art into the game
🏃
9:57Determine to persist hha_annotation information across runs of the game
🗩
9:57Determine to persist hha_annotation information across runs of the game
🗩
9:57Determine to persist hha_annotation information across runs of the game
🗩
14:31Two solutions to the problem of storing and sharing .hha file information: 1) In a separate file; 2) Directly in the .hha file
🗩
14:31Two solutions to the problem of storing and sharing .hha file information: 1) In a separate file; 2) Directly in the .hha file
🗩
14:31Two solutions to the problem of storing and sharing .hha file information: 1) In a separate file; 2) Directly in the .hha file
🗩
16:41Determine to make the asset loader care about annotations
🗩
16:41Determine to make the asset loader care about annotations
🗩
16:41Determine to make the asset loader care about annotations
🗩
17:47Augment the asset struct with an hha_annotation and enable AllocateGameAssets() to read these in from file
17:47Augment the asset struct with an hha_annotation and enable AllocateGameAssets() to read these in from file
17:47Augment the asset struct with an hha_annotation and enable AllocateGameAssets() to read these in from file
24:11Consider how to build the asset_source_file information
🗩
24:11Consider how to build the asset_source_file information
🗩
24:11Consider how to build the asset_source_file information
🗩
30:26Make AllocateGameAssets() read in our needed annotation information when an .hha file is open for editing, handling the error in which two assets occupy the same slot in a spritesheet
30:26Make AllocateGameAssets() read in our needed annotation information when an .hha file is open for editing, handling the error in which two assets occupy the same slot in a spritesheet
30:26Make AllocateGameAssets() read in our needed annotation information when an .hha file is open for editing, handling the error in which two assets occupy the same slot in a spritesheet
44:16Augment asset_source_file with a FileCheckSum and prepare AllocateGameAssets() to set the lowest FileDate
44:16Augment asset_source_file with a FileCheckSum and prepare AllocateGameAssets() to set the lowest FileDate
44:16Augment asset_source_file with a FileCheckSum and prepare AllocateGameAssets() to set the lowest FileDate
46:56Introduce GetOrCreateAssetSourceFile() and StringHashOf()
46:56Introduce GetOrCreateAssetSourceFile() and StringHashOf()
46:56Introduce GetOrCreateAssetSourceFile() and StringHashOf()
54:25Make AllocateGameAssets() call GetOrCreateAssetSourceFile(), and fix up compile errors
54:25Make AllocateGameAssets() call GetOrCreateAssetSourceFile(), and fix up compile errors
54:25Make AllocateGameAssets() call GetOrCreateAssetSourceFile(), and fix up compile errors
56:35Consider annotation loading done, and set up to write that information back out
🗩
56:35Consider annotation loading done, and set up to write that information back out
🗩
56:35Consider annotation loading done, and set up to write that information back out
🗩
57:22Enable WriteModificationsToHHA() to write our annotations to file
57:22Enable WriteModificationsToHHA() to write our annotations to file
57:22Enable WriteModificationsToHHA() to write our annotations to file
1:06:20Enable ProcessTiledImport() to set the relevant annotation information, augmenting import_grid_tags to contain Name, Description and Author strings
1:06:20Enable ProcessTiledImport() to set the relevant annotation information, augmenting import_grid_tags to contain Name, Description and Author strings
1:06:20Enable ProcessTiledImport() to set the relevant annotation information, augmenting import_grid_tags to contain Name, Description and Author strings
1:19:11Introduce WriteAssetString()
1:19:11Introduce WriteAssetString()
1:19:11Introduce WriteAssetString()
1:23:22Rename PushString() to PushStringZ() and introduce a new PushString() that pushes an entire null-terminated string
1:23:22Rename PushString() to PushStringZ() and introduce a new PushString() that pushes an entire null-terminated string
1:23:22Rename PushString() to PushStringZ() and introduce a new PushString() that pushes an entire null-terminated string
1:27:02Checksums
🗩
1:27:02Checksums
🗩
1:27:02Checksums
🗩
1:31:57Introduce CheckSumOf() for CheckForArtChanges() to call and set the FileCheckSum
1:31:57Introduce CheckSumOf() for CheckForArtChanges() to call and set the FileCheckSum
1:31:57Introduce CheckSumOf() for CheckForArtChanges() to call and set the FileCheckSum
1:34:09Introduce a version of StringHashOf() that takes a string
1:34:09Introduce a version of StringHashOf() that takes a string
1:34:09Introduce a version of StringHashOf() that takes a string
1:34:46Point out the checksum algorithms BLAKE1 and SHA-22
📖
1:34:46Point out the checksum algorithms BLAKE1 and SHA-22
📖
1:34:46Point out the checksum algorithms BLAKE1 and SHA-22
📖
1:37:08Note in CheckSumOf() to put a full hash function
1:37:08Note in CheckSumOf() to put a full hash function
1:37:08Note in CheckSumOf() to put a full hash function
1:37:30Run the game fine
🏃
1:37:30Run the game fine
🏃
1:37:30Run the game fine
🏃
1:38:17Q&A
🗩
1:38:17Q&A
🗩
1:38:17Q&A
🗩
1:38:34ablindorphan Q: How often are assets updated? What are the performance characteristics you're aiming at?
🗪
1:38:34ablindorphan Q: How often are assets updated? What are the performance characteristics you're aiming at?
🗪
1:38:34ablindorphan Q: How often are assets updated? What are the performance characteristics you're aiming at?
🗪
1:40:38556i Q: Would you suggest any resources that cover modern C++ memory management very well? I tend to overuse unique_ptr
🗪
1:40:38556i Q: Would you suggest any resources that cover modern C++ memory management very well? I tend to overuse unique_ptr
🗪
1:40:38556i Q: Would you suggest any resources that cover modern C++ memory management very well? I tend to overuse unique_ptr
🗪
1:41:31gg_nate Q: You already have an adler32 function written out in the PNG parser, why not use that?
🗪
1:41:31gg_nate Q: You already have an adler32 function written out in the PNG parser, why not use that?
🗪
1:41:31gg_nate Q: You already have an adler32 function written out in the PNG parser, why not use that?
🗪
1:42:19Brian Q: If I wanted to run the game locally, is the steps I need to run the test_asset_build first? And then we could run the hhaedit to update to v1 if we wanted?
🗪
1:42:19Brian Q: If I wanted to run the game locally, is the steps I need to run the test_asset_build first? And then we could run the hhaedit to update to v1 if we wanted?
🗪
1:42:19Brian Q: If I wanted to run the game locally, is the steps I need to run the test_asset_build first? And then we could run the hhaedit to update to v1 if we wanted?
🗪
1:42:34kanbie Q: Looking at struct hha_annotation could we append the authors of assets into the credits for the assets in the current run of the game?
🗪
1:42:34kanbie Q: Looking at struct hha_annotation could we append the authors of assets into the credits for the assets in the current run of the game?
🗪
1:42:34kanbie Q: Looking at struct hha_annotation could we append the authors of assets into the credits for the assets in the current run of the game?
🗪
1:42:46mmozeiko Q: Pre-stream off-topic: GL swizzling with GL_TEXTURE_SWIZZLE_R/G/B/A works fine with GL v3.3 and higher. Even for core profile. Before v3.3 it works only if extension is present. So you get whatever channel (R/G/B/A or 0/1 constant) into any channel you want
🗪
1:42:46mmozeiko Q: Pre-stream off-topic: GL swizzling with GL_TEXTURE_SWIZZLE_R/G/B/A works fine with GL v3.3 and higher. Even for core profile. Before v3.3 it works only if extension is present. So you get whatever channel (R/G/B/A or 0/1 constant) into any channel you want
🗪
1:42:46mmozeiko Q: Pre-stream off-topic: GL swizzling with GL_TEXTURE_SWIZZLE_R/G/B/A works fine with GL v3.3 and higher. Even for core profile. Before v3.3 it works only if extension is present. So you get whatever channel (R/G/B/A or 0/1 constant) into any channel you want
🗪
1:43:58nordicplayer Q: What are your thoughts on the Rust programming language?
🗪
1:43:58nordicplayer Q: What are your thoughts on the Rust programming language?
🗪
1:43:58nordicplayer Q: What are your thoughts on the Rust programming language?
🗪
1:44:07gg_nate Q: I thought you added it along with the Huffman compression? They go hand in hand
🗪
1:44:07gg_nate Q: I thought you added it along with the Huffman compression? They go hand in hand
🗪
1:44:07gg_nate Q: I thought you added it along with the Huffman compression? They go hand in hand
🗪
1:44:45mmozeiko Q: This is in GL core spec
🗪
1:44:45mmozeiko Q: This is in GL core spec
🗪
1:44:45mmozeiko Q: This is in GL core spec
🗪
1:45:10wintermute87 Q: Is C++ memory management bad "for games" or "just bad"? If the latter, what's a good general purpose memory management strategy for C++?
🗪
1:45:10wintermute87 Q: Is C++ memory management bad "for games" or "just bad"? If the latter, what's a good general purpose memory management strategy for C++?
🗪
1:45:10wintermute87 Q: Is C++ memory management bad "for games" or "just bad"? If the latter, what's a good general purpose memory management strategy for C++?
🗪
1:50:03ablindorphan Q: Do you use any of the Handmade code on your 1935 project?
🗪
1:50:03ablindorphan Q: Do you use any of the Handmade code on your 1935 project?
🗪
1:50:03ablindorphan Q: Do you use any of the Handmade code on your 1935 project?
🗪
1:52:08bulmanator Q: Will you be changing your fonts to be packed bitmaps rather than a bitmap per glyph? If not, how would you store the UVs for the glyphs in the HHA file?
🗪
1:52:08bulmanator Q: Will you be changing your fonts to be packed bitmaps rather than a bitmap per glyph? If not, how would you store the UVs for the glyphs in the HHA file?
🗪
1:52:08bulmanator Q: Will you be changing your fonts to be packed bitmaps rather than a bitmap per glyph? If not, how would you store the UVs for the glyphs in the HHA file?
🗪
1:52:50Rounin Q: Have you tried the Opus codec, by the way? Though it might be even more complex than Vorbis
🗪
1:52:50Rounin Q: Have you tried the Opus codec, by the way? Though it might be even more complex than Vorbis
🗪
1:52:50Rounin Q: Have you tried the Opus codec, by the way? Though it might be even more complex than Vorbis
🗪
1:53:27centhusiast Q: Is it necessary to use pragma pack (push) and pop for the hha structs? Is it okay to use 0 instead of '\0' for the string null terminator?
🗪
1:53:27centhusiast Q: Is it necessary to use pragma pack (push) and pop for the hha structs? Is it okay to use 0 instead of '\0' for the string null terminator?
🗪
1:53:27centhusiast Q: Is it necessary to use pragma pack (push) and pop for the hha structs? Is it okay to use 0 instead of '\0' for the string null terminator?
🗪
1:54:42bonqen Why does Vorbis suck? (Not being skeptical, I just don't know)
🗪
1:54:42bonqen Why does Vorbis suck? (Not being skeptical, I just don't know)
🗪
1:54:42bonqen Why does Vorbis suck? (Not being skeptical, I just don't know)
🗪
1:57:04mmozeiko Here's a comparison if somebody is interested3
🗪
1:57:04mmozeiko Here's a comparison if somebody is interested3
🗪
1:57:04mmozeiko Here's a comparison if somebody is interested3
🗪
1:57:31Thoughts on code complexity of audio decoders
🗩
1:57:31Thoughts on code complexity of audio decoders
🗩
1:57:31Thoughts on code complexity of audio decoders
🗩
2:01:28Rounin Q: 47024 lines and counting
🗪
2:01:28Rounin Q: 47024 lines and counting
🗪
2:01:28Rounin Q: 47024 lines and counting
🗪
2:03:29We are done for today
🗩
2:03:29We are done for today
🗩
2:03:29We are done for today
🗩