cinera_handmade.network/cmuratori/hero/code/code525.hmml

83 lines
7.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Cleaning Up Import Tag Grids" vod_platform=youtube id=t81mqx7rf1k annotator=Miblo]
[0:00][Recap and set the stage for the day finishing up our WAV file importing][:"asset system" :speech]
[4:23][][:speech][quote 645]
[5:03][Set up to upgrade ~remedybg][:speech]
[6:13][Unpack the backpack from the back room][:admin]
[10:48][Fetch a thumb drive from the other room][:afk]
[11:10][Upgrade to ~remedybg 0.2.0.1[ref
site=RemedyBG
url=https://remedybg.itch.io/remedybg]][:admin]
[14:52][Set up to tag our audio assets][:"asset system" :research]
[20:18][Make SynchronizeAssetFileChanges() call a new CreateAudioChannelTagGrid()][:"asset system"]
[21:00][Determine to replace the tag grid building in ParsePieces() with the Context containing import_grid_tags directly][:"asset system" :speech]
[22:38][Distinguishing between TagGrid and Hagrid][:speech]
[23:45][Augment hht_context with import_grid_tags for ParseTopLevelBlock() to set][:"asset system"]
[38:56][Make SynchronizeAssetFileChanges() initialise all of our Context's import_grid_tags, catching an out-of-memory error early][:"asset system" :"error handling"]
[47:59][Relieve ImportBody() and ImportHead() of taking the tokenizer, and split ParsePieces() out into various CreateArt*TagGrid() functions][:"asset system"]
[51:55][Introduce CreateAudioChannelTagGrid()][:"asset system"]
[55:42][Fix compile errors][:"asset system"]
[58:53][Move the import_grid_tags from hht_context to game_assets, for AllocateGameAssets() to initialise once at startup][:"asset system"]
[1:06:09][Step through AllocateGameAssets() to see how it all behaves][:"asset system" :run]
[1:07:59][~remedybg bug: Tree expansion IDs][:admin]
[1:08:57][Step through CreateAudioChannelTagGrid()][:"asset system" :run]
[1:09:14][~remedybg love: Resolution of enum item names][:admin]
[1:09:38][Continue to step through CreateAudioChannelTagGrid()][:"asset system" :run]
[1:10:09][~remedybg love: Locking of out-of-scope variables, and sheer responsiveness][:admin]
[1:12:29][Step on through SynchronizeAssetFileChanges() to ParseHHT()][:"asset system" :parsing :run]
[1:14:02][Fix typos in ParseTopLevelBlock()][:"asset system" :parsing]
[1:14:26][Step through ParseTopLevelBlock()][:"asset system" :parsing :run]
[1:14:59][~remedybg bug: Disassembly stepping with F10 switches focus back to the source view after stepping][:admin]
[1:16:00][Continue to step through ParseTopLevelBlock()][:"asset system" :parsing :run]
[1:20:13][Step through the :parsing of our "music" and "sound" blocks][:"asset system" :run]
[1:21:10][~remedybg feature request: Display of long strings in the Watch window, potentially in a manner flexible enough to allow for displaying of images, waveforms, etc., and even the contents of other windows like Threads][:admin :ui]
[1:25:58][Organise music_test.wav into the correct directory][:admin]
[1:26:50][Step back in to the :parsing of a "music" block][:"asset system" :run]
[1:29:29][~remedybg bug: Incorrect cursor position][:admin]
[1:29:40][Continue to step through ParseWAV()][:"asset system" :parsing :run]
[1:31:09][~remedybg love: Expression :parsing, casting and relative scope variable resolution][:admin]
[1:36:01][Continue to step through ParseWAV()][:"asset system" :parsing :run]
[1:36:46][Prevent ParseWAV() from iterating past the already departed initial chunk][:"asset system" :parsing]
[1:37:54][Step back through ParseWAV() to ProcessAudioImport()][:"asset system" :parsing :run]
[1:43:17][Fix ProcessAudioImport() to write the correct AssetIndex into our AssetIndexSlot][:"asset system"]
[1:46:48][Step back through ProcessAudioImport()][:"asset system" :parsing :run]
[1:49:30][Hit assertion in SetAssetType()][:"asset system" :run]
[1:49:40][~remedybg feature request: Status line colourisation][:admin]
[1:50:28][Investigate our !Asset->NextOfType assertion][:"asset system" :run]
[1:53:32][Make AllocateGameAssets() check for a TypeID before calling SetAssetType()][:"asset system"]
[1:55:46][Break into our !TypeID test path in AllocateGameAssets() to find that we follow it often][:"asset system" :run]
[1:58:18][Check out the existing "plate" processing code in ParsePieces()[ref
site=GitHub
page="HandmadeHero / cpp / code / handmade_import.cpp"
url=https://github.com/HandmadeHero/cpp/blob/day524/code/handmade_import.cpp]][:"asset system" :parsing :research]
[2:01:04][Dump base_game.hha and intro_cutscene.hha][:admin :"asset system"]
[2:03:41][Check out our dumps of base_game.hha and intro_cutscene.hha in TabView][:admin :"asset system"]
[2:03:58][Make PrintContents() print each asset's basic type tag at a higher, more visible level][:"asset system"]
[2:06:31][Introduce CategoryTags\[\] and CategoryNameFromID()][:"asset system"]
[2:12:59][Finish enabling PrintContents() to print each asset's basic type tag][:"asset system"]
[2:15:30][Check out the new .hha dumps in TabView to determine that intro_cutscene.hha is our culprit][:admin :"asset system"]
[2:17:35][Reimport intro_cutscene.hha (in our debug build)][:"asset system" :run]
[2:21:20][Check out the new intro_cutscene.hha dump in TabView to see many chained audio assets (correctly) tagged basic type "None"][:admin :"asset system"]
[2:23:07][Re-run the game and no longer hit our plate export conflict][:"asset system" :run]
[2:23:42][Consider how to tag chained audio assets][:"asset system" :speech]
[2:26:31][Document hha_sound][:"asset system" :documentation]
[2:27:45][Re-run in an optimised build][:run]
[2:28:19][Q&A][:speech]
[2:28:43][@ivereadthesequel][Q: Have you tried running TabVew with the --no-hermeneutics flag?]
[2:29:29][90 / 125 sub points][:admin]
[2:32:30][@pythno][Q: You never went to university yet you seem to be very literate in :mathematics. How did you get to this level?]
[2:36:12][@Miblo][Q: I got a call from Gary Walsh Selina Meyer's bag man while you were unpacking the backpack. He said he's jealous and wants to compare bag layouts...]
[2:36:31][@devsigner][Q: What are your thoughts on code introspection or adding metadata to things like structs? Useful, or yet another bad object-oriented idea?][:language]
[2:37:50][@jkfsda][Q: Favorite code design learning resources?]
[2:37:55][@hexadecimalinteger][Q: Would you use your "from scratch / low level" approach for :"machine learning"? Or just use a :library like TensorFlow?]
[2:41:07][@ivereadthesequel][@QuickShift_ asked in the pre-stream: "I guess Dear ImGui is a good example of a properly used global state?"][:language]
[2:41:32][@xxy_yxx][Q: Do you have any book recommendations for programming or :mathematics?]
[2:42:13][@vapenir][Q: Are you exclusively a C++ guy or have you worked with other languages over the years?][:language]
[2:44:00][@theomarest][Q: What's your favorite fairly-new :language? Like the last 10 years]
[2:44:31][@ivereadthesequel][Q: What's your impression of Seattle after living there for as long as you have? Where did you live before then?]
[2:45:55][@jbcgannon][Q: Come back to Boston]
[2:46:49][@hexadecimalinteger][Q: If given a virtually infinite budget, what would you dedicate your time to?]
[2:47:12][@insobot][It's still valve]
[2:48:14][@victorn][Oh wow, [@cmuratori Casey] is not using Visual Studio debugger anymore! So just the compiler is being used on [~hero Handmade Hero]?]
[2:49:08][That's all, folks][:speech]
[/video]