[video output=day497 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Starting on Asset System Cleanup" vod_platform=youtube id=IlLZyemvqB8 annotator=Miblo]
[0:01][Recap and set the stage for the day cleaning up the :"asset system"][:speech]
[0:58][Showcase our asset editing :UI with snapping functionality, setting up to implement scaling and saving][:"asset system" :run]
[5:22][Plans for after the :"asset system", making the game look more professional][:run]
[7:14][Hunt the orphanage for more cats and set Fred's alignment points][:"asset system" :run :ui]
[10:36][Asset editor: Scaling][:"asset system" :speech]
[15:25][Specify that entities contain their real-world size, and that the scaling information is used to adjust that size, augmenting hha_bitmap with an OrigDim][:"asset system"]
[27:26][Make UpdateAndRenderEntities() scale sprites using our OrigDim][:"asset system" :"entity system"]
[29:03][See nothing in-game, because our imported bitmaps all have OrigDim set to 0][:"asset system" :"entity system" :run]
[30:02][Reimport our assets][:admin :"asset system"]
[30:50][See that our fist is now smaller, and the same size in all orientations][:"asset system" :"entity system" :run]
[32:51][Make UpdateAndRenderEntities() scale our sprites relative to the world dimensions][:"asset system" :"entity system"]
[35:12][Find that our cat is larger than hoped][:"asset system" :"entity system" :run]
[35:28][Fix UpdateAndRenderEntities() to unpack the sprite piece sizes][:"asset system" :"entity system"]
[35:49][Try out asset piece scaling][:"asset system" :"entity system" :run]
[38:43][Cascading scaling down to children?][:"asset system" :"entity system" :speech]
[40:42][Storing Z-bias in the asset piece information?][:"asset system" :"entity system" :speech]
[43:50][Asset editor: Save][:"asset system" :"file io" :speech]
[47:37][Saving scheme: "Save" and "Import & Save"][:"asset system" :"file io" :speech]
[50:53][Add an "Import & Save" button to our asset editor][:"asset system" :"file io" :ui]
[53:52][Test out our new "Import & Save" button, finding that we don't flush our textures][:"asset system" :run :ui]
[57:03][Force-flushing textures on import, and generating their mipmaps in temporary buffers before uploading to the GPU][:"asset system" :speech]
[1:06:16][Improving our texture loading][:"asset system" :speech]
[1:11:28][Prevent LoadBitmap() from taking "Immediate" calls][:"asset system"]
[1:13:18][Continued thoughts on texture load improvements][:"asset system" :speech]
[1:14:51][Make LoadBitmap() early-out if it cannot get a texture_op handle from the GPU, and allocate no :memory itself][:"asset system" :hardware :rendering]
[1:25:40][Improving our texture eviction][:"asset system" :speech]
[1:30:35][Introduce the notion of a dirtiness level (UsedGeneration) and consider purging stale textures in bulk][:"asset system"]
[1:36:57][Improving asset handles, keeping :font glyphs loaded, and putting :audio in its own pool][:"asset system" :memory :speech]
[1:41:16][Delete asset_memory_header and introduce an asset_audio_buffer][:"asset system" :memory]
[1:45:03][Round-robin, continuous :audio streaming][:"asset system" :speech]
[1:46:36][Round-robin :audio streaming, overwriting and marking assets as unloaded][:"asset system" :memory :speech]
[1:48:18][Removing asset_audio_buffer in favour of a LoadedAtSampleIndex in asset][:"asset system" :audio :memory]
[1:48:57][Streaming :audio from a sliding window of an imaginary infinite buffer][:"asset system" :memory :speech]
[1:52:12][Augment game_assets with a SampleBuffer and sample indices, in preparation for our sliding window :audio streaming scheme][:"asset system" :memory]
[1:53:52][Make LoadFont() load the :font glyphs directly, for permanent residence][:"asset system" :memory]
[2:06:36][Replace LoadAssetWorkDirectly() with LoadAssetWork(), remove the asset_memory_header from asset, and make the bitmap functions use renderer_texture handles][:"asset system" :memory]
[2:15:44][Q&A][:speech]
[2:16:12][Make the bitmap functions in the :"entity system", asset editing :UI and :"debug system" use renderer_texture handles][:"asset system"]
[2:18:59][@mattiamanzati][Q: Sooo maybe extra stream today? And by today you mean in approximately 20h?]
[2:19:03][@b3zman41][Q: Could you elaborate more on what you were talking about with more intermediate data structures in object-orientation][:"data structure" :language]
[2:20:30][@philliptrudeau][Q: Near the start of the stream, I think you mentioned focusing on making the game "look more professional". Can you recap what that entails? And does that mean making some artistic decisions on-stream?]
[2:22:29][@ivereadthesequel][Q: Oh, and Happy Krampuslauf, [@cmuratori Casey]! So, is it a specific day or ongoing? How do we celebrate it, besides trying to catch the next episode of [~hero Handmade Hero]?]
[2:22:47][@longboolean][Q: (A bit off-topic) If I recall correctly, you said that during the Krampuslauf streams you may do some other things like [~ray Handmade Ray]. What would be the next thing to do with [~ray Handmade Ray]?][:lighting]
[2:23:24][Wrap it up][:speech]
[/video]
