diff --git a/cmuratori/hero/code/code501.hmml b/cmuratori/hero/code/code501.hmml index 2a763eb..775600b 100644 --- a/cmuratori/hero/code/code501.hmml +++ b/cmuratori/hero/code/code501.hmml @@ -1,2 +1,65 @@ -[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Importing Orphans" vod_platform=youtube id=7MnGW4k0LLE annotator=] -[/video] \ No newline at end of file +[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Importing Orphans" vod_platform=youtube id=7MnGW4k0LLE annotator=Miblo] +[0:00][Welcome to the stream][:speech] +[0:19][Show our correct :camera interpolation, and plan to get our hero back in][:run] +[2:06][Showcase [@aerettberg Anna]'s new :art pack, with heads and bodies in different files][:admin :"asset system"] +[6:53][Tag [@aerettberg Anna]'s new body :art][:admin :"asset system"] +[19:38][Name [@aerettberg Anna]'s orphans][:admin :art :"asset system"] +[31:41][Add our new tags to the asset_tag_id enum and NameTags array][:"asset system"] +[37:49][Introduce ImportBody() and ImportHead() for ParsePieces() to call][:"asset system"] +[45:30][Try to import our new assets][:"asset system" :run] +[46:21][Make AddPlayer() use our newly imported hero assets][:"asset system"] +[53:01][See our hero art in-game, noting that our orientations are backwards][:"asset system" :run] +[54:05][Decrease the HeroSizeC in AddPlayer()][:"asset system"] +[54:48][Check out our smaller hero in-game][:"asset system" :run] +[55:09][Make PushLight() draw our light cube fully transparent][:lighting] +[55:52][See our hero more clearly and move towards fixing our facing direction and body picking][:"asset system" :run] +[57:49][Change AddPlayer() to add a cat][:"asset system"] +[58:44][Find that the cat hero is correctly oriented][:"asset system" :run] +[59:40][Investigate our facing direction issue][:"asset system" :research] +[1:02:37][Try marking AddPlayer() add Laird][:"asset system"] +[1:03:31][Find that Laird is totally correctly oriented][:"asset system" :run] +[1:04:01][Try marking AddPlayer() add the baby][:"asset system"] +[1:04:16][Find that the baby is also correctly oriented][:"asset system" :run] +[1:04:50][Turn off the fire particles in UpdateAndRenderEntities()][:"entity system"] +[1:05:17][Spot some garbage above the baby's head][:art :run] +[1:05:34][Check out the baby's source :art in GIMP, to determine that it must be an asset-import bug][:admin :"asset system"] +[1:07:16][Increase the HeroSizeC in AddPlayer()][:"asset system"] +[1:07:28][Check out our baby hero's appearance in-game, noting that the garbage is no longer above the head][:"asset system"] +[1:09:24][Make AddPlayer() connect the head to the body][:"asset system"] +[1:10:22][Align the baby hero's assets in all orientations][:"asset system" :run] +[1:14:17][Increase the head's Z offset in AddPlayer() to prevent Z-fighting][:"asset system"] +[1:14:58][Find that our baby hero's head and body no longer Z-fight][:"asset system" :run] +[1:16:25][Make AddPlayer() add Viva][:"asset system"] +[1:17:48][Align Viva's assets, but find that we've been given the baby's head again][:"asset system" :run] +[1:18:41][Make AddPlayer() tag the Body (even for the head)][:"asset system"] +[1:19:20][Align Viva's assets][:"asset system" :run] +[1:23:29][Take a walk as Viva][:"asset system" :run] +[1:24:57][Note the incongruous scaling of the orphans in comparison with the walls][:"asset system" :run] +[1:26:01][Decrease the HeroSizeC to 1.25f in AddPlayer()][:"asset system"] +[1:26:13][Consider this better because we're not taller than the wall][:"asset system" :run] +[1:27:26][Check out Viva's :art in GIMP to find that it is wrong][:admin] +[1:29:01][Introduce ReadAssetString() to display annotations in our in-game editor][:"asset system" :ui] +[1:34:04][Check out our new "Info" tab in the asset editor][:"asset system" :run :ui] +[1:34:27][Enable AssetEditor() to print asset annotations in the "Info" tab][:"asset system" :ui] +[1:38:35][See a blank Name in our annotation printout][:"asset system" :run :ui] +[1:39:00][Introduce AnnotationLabel() for AssetEditor() to call and print out various annotations that we expect to be populated][:"asset system" :ui] +[1:43:39][Switch to the "Info" tab and hit our assertion in GetBitmapInfo()][:"asset system" :run :ui] +[1:45:36][Fix GetBitmapInfo() and GetSoundInfo() to handle assets with ID 0][:"asset system"] +[1:46:05][Check out the annotated errors in our Info tab][:"asset system" :run :ui] +[1:47:07][Investigate our apparent texture transfer bug][:hardware :rendering :research] +[1:49:33][Try making BeginTextureOp() fill our required TransferMemory with all white][:hardware :rendering] +[1:52:27][Try in vain to trigger our bug][:hardware :rendering :run] +[1:54:02][Q&A][:speech] +[1:54:56][Introduce AddOrphan() and PlaceOrphan()][:"entity system" :"procedural generation"] +[2:00:38][Visit the orphans in the orphanage][:run] +[2:01:49][@keebrdb][Q: So are you going to create a Level Editor as well?] +[2:02:09][Temporarily expand the :lighting bounds in UpdateAndRenderWorld()] +[2:03:29][Find that the :lighting now covers the screen][:run] +[2:03:49][@amirrajan][Q: Any thoughts of using dlopen et al to do some :"hot reloading" shenanigans to help with the "feedback" loop?] +[2:04:50][@centhusiast][Q: How does the back buffer work when you resize the window? Do you create a new back buffer matching the window size when the window is resized?][:"platform layer"] +[2:05:57][Contract the :lighting bounds a little in UpdateAndRenderWorld()] +[2:06:53][@philliptrudeau][Q: Quick question, what exactly is the difference between a temp arena and a frame arena? Does the temp arena get collected at a sub-frame interval?][:memory] +[2:09:50][@erdomina][Q: Is each character going to have an :animation sequence as NPCs, or are they all playable?][:"entity system"] +[2:11:19][@graemephi][Q: Petition to rename the baby Judas][:"asset system"] +[2:12:03][Stream has ended][:speech] +[/video]