46 lines
4.3 KiB
Plaintext
46 lines
4.3 KiB
Plaintext
[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Cross-entity Manual Sorting" vod_platform=youtube id=8ke6OKMFeAI annotator=Miblo]
|
|
[0:08][Recap and set the stage for the day with an embarassing confession]
|
|
[1:35][Run the game and assess our current situation]
|
|
[4:46][Blackboard: Manual Edge Specification]
|
|
[7:02][handmade_entity.cpp: Make UpdateAndRenderEntities() only call BeginAggregateSortKey() if the PieceCount is > 1]
|
|
[7:55][Consider how to articulate the intention that one sprite (e.g. the head) must always draw in front of another (e.g. the aggregated body)]
|
|
[10:35][handmade_entity.h: Add ManualSortInFrontOf and ManualSortKey to the entity struct]
|
|
[11:17][handmade_brain.cpp: Make ExecuteBrain() set those values when a Head and Body are linked]
|
|
[15:10][handmade_brain.cpp: Enable ExecuteBrain() to talk to the RenderGroup]
|
|
[16:21][handmade_entity.cpp: Consider how to specify the render order in UpdateAndRenderEntities()]
|
|
[19:42][handmade_render_group.cpp: Consider making BuildSpriteGraph() add some additional edges that force sorts]
|
|
[21:38][Consider simplifying things]
|
|
[23:06][Blackboard: Putting something into the SortKey to tag it as AlwaysInFrontOf or AlwaysBehind]
|
|
[23:45][handmade_render.h: Add AlwaysInFrontOf and AlwaysBehind to the sort_sprite_bound struct]
|
|
[24:33][handmade_render.cpp: Make IsInFrontOf() check if sprite_bound A is AlwaysInFrontOf or AlwaysBehind B, to save having to manually specify edges]
|
|
[27:39][handmade_platform.h: Add LastUsedManualSortKey to the game_render_commands struct]
|
|
[27:55][handmade_render_group.cpp: Introduce ReserveSortKey()]
|
|
[30:45][handmade_entity.cpp: Make UpdateAndRenderEntities() set AlwaysInFrontOf and AlwaysBehind]
|
|
[32:06][handmade_render.h: Introduce manual_sort_key struct]
|
|
[33:08][handmade_render_group.cpp: Erase ComputeSortKey() and make GetBoundFor() copy the ObjectTransform.ManualSort to SpriteBound.Manual]
|
|
[35:37][handmade_platform.h: Move manual_sort_key in from handmade_render.h with a mini-rant on the language]
|
|
[36:46][Run the game and see how we're doing]
|
|
[37:22][Debugger: Break into ExecuteBrain() and see if we're setting the SortKey]
|
|
[39:11][handmade_entity.cpp: Add a BreakHere in UpdateAndRenderEntities() when an EntityTransform is not AlwaysInFrontOf or AlwaysBehind]
|
|
[40:07][Debugger: Break in there and inspect the values]
|
|
[42:45][handmade_render.cp: Correct a typo in IsInFrontOf()]
|
|
[43:04][Run the game and see that that wasn't our only bug]
|
|
[43:15][handmade_render.cpp: Make IsInFrontOf() check AlwaysInFrontOf and AlwaysBehind separately and correctly]
|
|
[48:01][Run the game and see that we're in a better situation, but not quite perfect]
|
|
[50:49][Toggle on GlobalShowSortGroups and identify that, when the sorting is incorrect, we have a cycle]
|
|
[53:58]["Thank you, Mr Cycle Detection"][quote 503]
|
|
[54:15][Q&A][:speech]
|
|
[54:55][@thesizik][Perhaps breaking the cycle on the in-front / behind pair?]
|
|
[56:49][@LongBoolean][Will there ever be a case when the character's facing direction will change what we want for the sort order? I can think of a possible case if the characters had arms. Does the current method take these cases into account?]
|
|
[57:34][@Miblo][Looking forward to rewatching that simplification from early on. I don't think I quite followed that live]
|
|
[58:41][@mnkmnkmnk][I'm the communications director at a game development studio in Montreal. I just found your stream minutes ago and it's very fascinating. Your trailer seems to convey the idea that a game is "better" if it's entirely handmade, from scratch. Do you feel a game can't be made with as much "love" if it uses a premade engine as opposed to one that's made entirely from scratch? Do you not feel like reinventing the wheel may be a waste of time?]
|
|
[59:32][On the amount of love involved in making games whether from scratch or using a pre-made engine]
|
|
[1:02:56][On reinventing the wheel, and the educational responsibility of Handmade Hero]
|
|
[1:07:52][On the assumption that someone made a wheel]
|
|
[1:08:49][Blackboard: Where the game industry is at in terms of inventing the wheel]
|
|
[1:10:55][There is no wheel][quote 504]
|
|
[1:15:52][On love and money]
|
|
[1:16:34]["Your goal has to be that the reason you want money is to make games, not the reason you make games is to make money"][quote 505]
|
|
[1:19:03][Close up shop][:speech]
|
|
[/video]
|