[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]