[video output=day534 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Heuristic Alpha Testing for Multi-Tile Import" vod_platform=youtube id=w5uW0yWSsng annotator=Miblo]
[0:00][Recap and set the stage for the day, having updated the GitHub issues for [@aerettberg Anna][ref
    site=GitHub
    page="HandmadeHero / cpp"
    url=https://github.com/HandmadeHero/cpp/issues]][:speech]
[1:35][Show item_hat_03.png with a view to investigating why we are extracting six tiles from this four-tile asset][:admin :art :"asset system"]
[5:14][Determine to enable test_png to output alpha pixels full white]
[6:54][Enable WriteImageTopDownRGBA() to output any alpha pixels full white, introducing ThreshAlpha()][:rendering]
[9:52][Run test_png on item_hat_03.png and see some spurious data in the output][:admin :rendering]
[11:40][Reacquaint ourselves with ProcessMultiTileImport() to see that it only processes tiles containing alpha pixels][:"asset system" :research :rendering]
[14:59][Compare our RGB output in GIMP with the dump of base_game.hha in TabView][:admin :rendering]
[18:55][Implement TestMultiTileImport() based on the game's ProcessMultiTileImport()][:"asset system" :rendering]
[21:59][Run test_png on item_hat_03.png to see that it does indeed extract six tiles][:admin :"asset system" :rendering]
[22:32][Make TestMultiTileImport() output the extracted tile indices][:"asset system" :rendering]
[23:04][Check out our extracted tile indices][:admin :"asset system" :rendering]
[23:14][Make TestMultiTileImport() output the dimensions of the extracted image][:"asset system" :rendering]
[24:56][Check out the dimensions of our extractions][:admin :"asset system" :rendering]
[26:06][Make TestMultiTileImport() output our extractions to files using ExtractImage() and WriteImageTopDownRGBA()][:"asset system" :rendering]
[32:29][Check out the dumps of our extractions][:admin :"asset system" :rendering]
[34:15][Make ProcessMultiTileImport() only import tiles containing enough valid, solid pixels][:"asset system" :rendering]
[44:13][Reimport all the assets successfully][:"asset system" :run]
[45:57][Revert AddPlayer() to not apply the Cook tag][:"asset system"]
[46:23][Find that our downward facing hat has made it into the game][:"asset system" :run]
[48:00][Prevent UpdateAndRenderEntities() from drawing the collision volume :"debug visualisation"]
[48:15][Traverse and consider furnishing the orphanage][:"asset system" :"procedural generation" :run]
[49:43][Make ExecuteBrain() correctly set the facing direction of entities][:"entity system"]
[50:21][Find our monstar facing in the correct directions][:"entity system" :run]
[50:33][Make ExecuteBrain() prevent entities from hopping diagonally][:"entity system" :movement]
[51:19][Find our monstar unable to hop diagonally][:"entity system" :movement :run]
[53:01][Consider furnishing the orphanage and making the tagging of people more flexible][:"asset system" :"procedural generation" :speech]
[53:56][Reacquaint ourselves with the :"procedural generation" code][:research]
[56:25][Make CreateOrphanage() place a chair in the MainRoom][:"procedural generation"]
[59:42][Check out our chair in the doorway of the main room][:"procedural generation" :run]
[1:00:08][Make CreateOrphanage() orient our chair as per its originally drawn asset][:"procedural generation"]
[1:00:49][Consider how to place and size furniture sensibly][:"procedural generation" :run :ui]
[1:03:06][Fix UpdateAndRenderTitleScreen() to query the correct asset][:"asset system"]
[1:04:06][Check out our correct title screen and consider starting the furniture layout stuff][:"asset system" :run]
[1:06:47][Split out some trees into their own files][:art :drawing]
[1:14:29][Add those pieces of tree scenery to base_game.hht][:admin :"asset system"]
[1:15:14][And tags for Snow, Tree and Evergreen, and enable GenerateRoom() to plant trees along outdoor boundaries][:"asset system" :"procedural generation"]
[1:21:28][Crash on the GetSimSpaceTraversable() call in GenerateRoom()][:"asset system" :"procedural generation" :run]
[1:22:59][Change GenerateRoom() to only place trees on open tiles][:"asset system" :"procedural generation"]
[1:23:11][Find that our trees are absent][:"asset system" :"procedural generation" :run]
[1:23:33][Temporarily prevent GenerateRoom() from trying to place trees][:"asset system" :"procedural generation"]
[1:24:12][Find that our outdoor perimeter remains absent][:"asset system" :"procedural generation" :run]
[1:24:44][Enable GenerateRoom() to generate the perimeter of outdoor rooms, placing trees anywhere other than at a connection][:"asset system" :"procedural generation"]
[1:26:50][Check out our forest of trees][:"asset system" :"procedural generation" :run]
[1:27:01][Fix GenerateRoom() to only place trees around the edge of outdoor areas][:"asset system" :"procedural generation"]
[1:27:31][Check out our tree perimeter][:"asset system" :"procedural generation" :run]
[1:31:06][Enable GenerateRoom() to randomise our trees][:"asset system" :"procedural generation"]
[1:34:08][Check out our forest of damaged trees][:"asset system" :"procedural generation" :run]
[1:34:46][Investigate our failure to match tree assets][:"asset system" :"procedural generation" :research]
[1:35:57][Add the snow tag and apply the same alignment to all three tree varieties]
[1:36:30][Check out our varied forest of snow and damaged trees][:"asset system" :"procedural generation" :run]
[1:37:09][Consider how best to match absent tags][:"asset system" :"procedural generation" :research]
[1:38:43][Explicitly apply damaged and snow tags to all three tress, in varying degrees][:admin :"asset system" :"procedural generation"]
[1:39:15][Check out our fully varied forest][:"asset system" :"procedural generation" :run]
[1:39:53][Q&A][:speech]
[1:40:14][Enable GenerateRoom() to add lamps][:"asset system" :"procedural generation"]
[1:40:24][Check out our brightly lit orphanage][:"asset system" :"procedural generation" :run]
[1:40:42][Make GenerateRoom() place only one lamp per room][:"asset system" :"procedural generation"]
[1:43:55][Check out our lamps][:"asset system" :"procedural generation" :run]
[1:44:46][Prevent GenerateRoom() from placing lamps outdoors][:"asset system" :"procedural generation"]
[1:45:18][@magzz772][Q: When will you be fixing the :lighting?]
[1:45:22][@mycon_][Q: What's your all time favourite game?]
[1:45:30][@wheeel][Q: Is there going to be :lighting affecting the shading of the entities? If so, would that lighting strength be uniform along the height of the entity within a square? Is it possible to make the lighting of a 2D entity in a 3D space look "right"?]
[1:46:09][@mycon_][Q: Is there a bug now that the guy is pointing left constantly?]
[1:46:57][@jim0_o][Q: Thoughts on creating some sort of weather system and / or sun noon, dusk, etc system?]
[1:48:02][@mycon_][Q: It seems the tree graphics are for different seasons. I don't think the evergreen one is supposed to be damaged. Also you already have tags for seasons like Tag_Winter, so the Snow tag is kinda pointless?][:"asset system"]
[1:48:25][@alexkelbo][Q: How will we do shadows? In the past we had a bitmap for that][:lighting]
[1:48:54][Replace the "snow" tag with "winter"][:"asset system"]
[1:50:45][Take a turn through the forest][:run]
[1:51:29][We're good][:speech]
[/video]
