[video output=day536 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Proper Variant Distributions and Issue Cleanup" vod_platform=youtube id=3n66-Wnzz_A annotator=Miblo]
[0:01][Recap and set the stage for the day addressing @cvaucher's pre-stream question about [~hero Handmade Hero] halting under clang's address sanitizer][:speech]
[0:33][Address sanitizer][:memory :speech]
[2:30][@cvaucher][Q: The equivalent area in the win32 layer would be accessing Info->Platform in PLATFORM_OPEN_FILE][:"file io" :"platform layer"]
[2:48][Reacquaint ourselves with Win32OpenFile() and related functions with a view to addressing @cvaucher's BootstrapPushStruct() issue][:"file io" :"platform layer" :research]
[8:56][@cvaucher][Q: That helps. I'll check it out again and add some more detail in the forums if I need to][:"file io" :"platform layer"]
[10:21][Our problem with fair picking of asset variants][:"asset system" :run]
[15:11][Displaying tags in the asset editor :UI, and regularising the asset sizing][:"asset system" :run]
[16:59][Determine to implement fair picking of asset variants][:"asset system" :speech]
[18:14][Variants][:"asset system" :blackboard :statistics]
[22:39][Creating the systemic flow to produce fairly picked variants][:"asset system" :blackboard :statistics]
[23:31][Begin to fairly redistribute asset variants, introducing the notion of a VariantGroup in import_grid_tag][:"asset system" :statistics]
[31:16][Introduce UpdateAssetVariants() to perform the entire fair distribution of asset variants in a group, for UpdateAssetDataFromFile() to call][:"asset system" :statistics]
[45:23][Enable AssetEditor() to display asset tags, introducing GetTag()][:"asset system" :ui]
[51:26][View the asset tags in the editor, with UpdateAssetVariants() not happening][:"asset system" :run :statistics :ui]
[53:53][Toggle on UpdateAssetVariants()][:"asset system" :statistics]
[54:03][View the asset tags, to find that the variant code is working][:"asset system" :run :statistics :ui]
[56:02][Make GenerateRoom() add a Variant tag to trees][:"asset system" :"procedural generation"]
[57:14][Check out our fairly distributed tree variants, and resize the trees][:"asset system" :run :statistics :ui]
[1:02:10][Close the "Need to automatically assign variant values" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Need to automatically assign variant values"
    url=https://github.com/HandmadeHero/cpp/issues/100] and open the "Pink line in scenery_tree_03.png" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Pink line in scenery_tree_03.png"
    url=https://github.com/HandmadeHero/cpp/issues/101]][:admin :art]
[1:03:53][Consider changing how  to the asset editor :UI][:"input handling" :run]
[1:12:09][Address the "Update README to discuss new downloads" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Update README to discuss new downloads"
    url=https://github.com/HandmadeHero/cpp/issues/81]][:speech]
[1:13:04][Hi, @Molly][:speech]
[1:13:27][Update the README to mention tags and asset importing][:admin :documentation]
[1:22:14][Test the :documentation by building and running afresh][:admin :run]
[1:25:34][Close the "Update README to discuss new downloads" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Update README to discuss new downloads"
    url=https://github.com/HandmadeHero/cpp/issues/81]][:admin]
[1:26:11][Fix everything in the "Some minor issues (naming and returns)" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Some minor issues (naming and returns)"
    url=https://github.com/HandmadeHero/cpp/issues/91]][:language :"platform layer"]
[1:33:44][Close the "Some minor issues (naming and returns)"[ref
    site="GitHub"
    page="HandmadeHero / cpp / Some minor issues (naming and returns)"
    url=https://github.com/HandmadeHero/cpp/issues/91] and "Easier asset download so there are less steps to building current source"[ref
    site="GitHub"
    page="HandmadeHero / cpp / Easier asset download so there are less steps to building current source"
    url=https://github.com/HandmadeHero/cpp/issues/14] issues][:admin]
[1:36:15][Let OpenGLGetInfo() enable OpenGL_ARB_framebuffer_object if we're on OpenGL 3 or higher[ref
    site="GitHub"
    page="HandmadeHero / cpp / Support for ARB_framebuffer_object"
    url=https://github.com/HandmadeHero/cpp/issues/83]][:api :hardware]
[1:38:45][Close the "Support for ARB_framebuffer_object" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / Support for ARB_framebuffer_object"
    url=https://github.com/HandmadeHero/cpp/issues/83]][:admin :api :hardware]
[1:40:09][Change the conditional logic in BeginTextureOp() such that the MemoryAt will not get reset if the buffer is either entirely full or empty[ref
    site="GitHub"
    page="HandmadeHero / cpp / SizeAvailable is not optimal in BeginTextureOp when there are no ops"
    url=https://github.com/HandmadeHero/cpp/issues/82]][:memory]
[1:41:42][Hit the Result->TransferMemoryLastUsed <= Queue->TransferMemoryCount assertion in BeginTextureOp()][:memory :run]
[1:42:16][Investigate that assertion hit in BeginTextureOp()][:memory :research]
[1:44:30][Fix BeginTextureOp() to reset the MemoryAt if none of the buffer has been used][:memory]
[1:45:15][Find that BeginTextureOp() is now fine][:memory :run]
[1:45:37][Close the "SizeAvailable is not optimal in BeginTextureOp when there are no ops" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / SizeAvailable is not optimal in BeginTextureOp when there are no ops"
    url=https://github.com/HandmadeHero/cpp/issues/82] and address the "win32_renderer_test.exe asserts because it can't create framebuffer" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / win32_renderer_test.exe asserts because it can't create framebuffer"
    url=https://github.com/HandmadeHero/cpp/issues/89]][:admin :rendering]
[1:46:53][Assert in CreateFramebuffer() that the Width and Height are > 0][:rendering]
[1:47:22][Try to provoke that assertion][:rendering :run]
[1:47:43][Successfully provoke the assertion in the Renderer Test][:rendering :run]
[1:51:04][Make OpenGLBeginFrame() take and set the Commands->RenderDim][:rendering]
[1:58:07][Hit assertions in the Renderer Test and [~hero Handmade Hero], and investigate why][:rendering :run]
[2:00:08][Fix OpenGLBeginFrame() to set the Commands->Setting.RenderDim][:rendering]
[2:01:51][Find that all is now good with [~hero Handmade Hero] but not with the Renderer Test][:run]
[2:02:36][Close the "win32_renderer_test.exe asserts because it can't create framebuffer" issue[ref
    site="GitHub"
    page="HandmadeHero / cpp / win32_renderer_test.exe asserts because it can't create framebuffer"
    url=https://github.com/HandmadeHero/cpp/issues/89]][:admin :rendering]
[2:02:55][Copy the renderer_test assets back into place][:admin]
[2:05:11][Find that the Renderer Test is now good][:run]
[2:05:52][Assess our issues[ref
    site=GitHub
    page="HandmadeHero / cpp"
    url=https://github.com/HandmadeHero/cpp/issues]][:research]
[2:06:20][Q&A][:speech]
[2:06:45][@thestalkingwolf][Q: Will you do all the platform layers or leave that to the community support?][:"platform layer"]
[2:07:11][@0lpbm][Q: Will you add some randomness to the sizes (and maybe shape - skewing, height / width) of the trees?]
[2:08:06][@ormone88][Q: What do you think about using the mouse wheel in order to drag values in the editor? In this way it wouldn't be limited by the screen space. Also, you could use something like Alt + mouse wheel for doubling the increase / decrease rate][:"input handling" :ui]
[2:08:35][@x13pixels][Q: Are you doing more Meow Hash later tonight?]
[2:09:35][@thestalkingwolf][Q: Having just dealt with weighted distributions and cumulative sum draw, will you add weighted selection to the tree selection, i.e. some trees may show up more or less common?][:"asset system" :statistics]
[2:12:14][@wolverinegator][Q: Left-click normal speed, right-click double speed dragging? Or some modifier key that the pen also has][:"input handling"]
[2:12:43][@ormone88][Depression-oriented programming is the future][:health :language]
[2:13:35][@0lpbm][Q: I have watched an older episode where you were coding player :movement related to a moving translation point. Will there be any in-game elements using this mechanic?]
[2:13:57][@Brian][Q: Is the idea that the monsters from Anna Draws It going to be in [~hero Handmade Hero]? Or at least potentially?][:art]
[2:14:06][@0lpbm][Will there be any in-game elements using this mechanic?]
[2:14:47][@0lpbm][Q: Moving translation points (the points where the body moves to)][:movement]
[2:15:39][@theflame937][Q: What is your go-to method to hide a string in a project?]
[2:18:20][That's all, folks][:speech]
[/video]
