Handmade Hero»Episode Guide
Preparing Entity Pieces for Alignment Points
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
5:02Demo the asset editor UI
🏃
5:02Demo the asset editor UI
🏃
5:02Demo the asset editor UI
🏃
8:08Reacquaint ourselves with the bitmap alignment and sizing code
📖
8:08Reacquaint ourselves with the bitmap alignment and sizing code
📖
8:08Reacquaint ourselves with the bitmap alignment and sizing code
📖
10:58Trim down loaded_bitmap with a view to aligning and sizing bitmaps using the hha data directly
10:58Trim down loaded_bitmap with a view to aligning and sizing bitmaps using the hha data directly
10:58Trim down loaded_bitmap with a view to aligning and sizing bitmaps using the hha data directly
22:21Check the performance of _mm_div_ps, _mm_rcp_ps and _mm_mul_ps in the Intel Intrinsics Guide1
📖
22:21Check the performance of _mm_div_ps, _mm_rcp_ps and _mm_mul_ps in the Intel Intrinsics Guide1
📖
22:21Check the performance of _mm_div_ps, _mm_rcp_ps and _mm_mul_ps in the Intel Intrinsics Guide1
📖
24:13Replace WidthOverHeight from loaded_bitmap with localised computations
24:13Replace WidthOverHeight from loaded_bitmap with localised computations
24:13Replace WidthOverHeight from loaded_bitmap with localised computations
29:17Make sure that our bitmaps are still there
🏃
29:17Make sure that our bitmaps are still there
🏃
29:17Make sure that our bitmaps are still there
🏃
29:30Remove AlignPercentage from loaded_bitmap, making callers of PushBitmap() responsible for computing this value, and introducing GetFirstAlign()
29:30Remove AlignPercentage from loaded_bitmap, making callers of PushBitmap() responsible for computing this value, and introducing GetFirstAlign()
29:30Remove AlignPercentage from loaded_bitmap, making callers of PushBitmap() responsible for computing this value, and introducing GetFirstAlign()
41:37Run the game to find that everything looks fine
🏃
41:37Run the game to find that everything looks fine
🏃
41:37Run the game to find that everything looks fine
🏃
42:38Try making UpdateAndRenderEntities() set the AlignP using GetFirstAlign()
42:38Try making UpdateAndRenderEntities() set the AlignP using GetFirstAlign()
42:38Try making UpdateAndRenderEntities() set the AlignP using GetFirstAlign()
43:30Try out real-time editing of our asset alignment for the first time
🏃
43:30Try out real-time editing of our asset alignment for the first time
🏃
43:30Try out real-time editing of our asset alignment for the first time
🏃
44:27Set up to implement alignment point connections
🗩
44:27Set up to implement alignment point connections
🗩
44:27Set up to implement alignment point connections
🗩
47:40Introduce bitmap_piece to specify parent–child connections
47:40Introduce bitmap_piece to specify parent–child connections
47:40Introduce bitmap_piece to specify parent–child connections
52:43Introduce ConnectPiece() for AddCat() to call
52:43Introduce ConnectPiece() for AddCat() to call
52:43Introduce ConnectPiece() for AddCat() to call
1:04:22Make ConnectPiece() enforce the rule that the target parent piece must exist
1:04:22Make ConnectPiece() enforce the rule that the target parent piece must exist
1:04:22Make ConnectPiece() enforce the rule that the target parent piece must exist
1:05:50Run the game and pass this ConnectPiece() test
🏃
1:05:50Run the game and pass this ConnectPiece() test
🏃
1:05:50Run the game and pass this ConnectPiece() test
🏃
1:05:58Make AddCat() try and add the cat's Head before the Body
1:05:58Make AddCat() try and add the cat's Head before the Body
1:05:58Make AddCat() try and add the cat's Head before the Body
1:06:25Run the game and (correctly) fail that ConnectPiece() test
🏃
1:06:25Run the game and (correctly) fail that ConnectPiece() test
🏃
1:06:25Run the game and (correctly) fail that ConnectPiece() test
🏃
1:06:30Introduce a version of PushBitmap() that takes a used_bitmap_dim for UpdateAndRenderEntities() to call
1:06:30Introduce a version of PushBitmap() that takes a used_bitmap_dim for UpdateAndRenderEntities() to call
1:06:30Introduce a version of PushBitmap() that takes a used_bitmap_dim for UpdateAndRenderEntities() to call
1:15:40Run the game with everything being drawn
🏃
1:15:40Run the game with everything being drawn
🏃
1:15:40Run the game with everything being drawn
🏃
1:15:49Consider how to use our alignment points
🗩
1:15:49Consider how to use our alignment points
🗩
1:15:49Consider how to use our alignment points
🗩
1:23:20Move towards the total removal of the object_transform struct from the renderer, first removing Upright
1:23:20Move towards the total removal of the object_transform struct from the renderer, first removing Upright
1:23:20Move towards the total removal of the object_transform struct from the renderer, first removing Upright
1:29:27Check that our bitmaps are all in tact
🏃
1:29:27Check that our bitmaps are all in tact
🏃
1:29:27Check that our bitmaps are all in tact
🏃
1:29:53Remove object_transform entirely
1:29:53Remove object_transform entirely
1:29:53Remove object_transform entirely
1:49:14Run the game to see that the only breakage was in one cat's bitmap offset
🏃
1:49:14Run the game to see that the only breakage was in one cat's bitmap offset
🏃
1:49:14Run the game to see that the only breakage was in one cat's bitmap offset
🏃
1:49:50Fix one GetBitmapDim() call in UpdateAndRenderEntities()
1:49:50Fix one GetBitmapDim() call in UpdateAndRenderEntities()
1:49:50Fix one GetBitmapDim() call in UpdateAndRenderEntities()
1:50:23Run the game to see that everything is fine
🏃
1:50:23Run the game to see that everything is fine
🏃
1:50:23Run the game to see that everything is fine
🏃
1:50:57Q&A
🗩
1:50:57Q&A
🗩
1:50:57Q&A
🗩
1:51:29vkar2 Q: Any news about meowhash?
🗪
1:51:29vkar2 Q: Any news about meowhash?
🗪
1:51:29vkar2 Q: Any news about meowhash?
🗪
1:52:02longboolean Q: Not extremely important, (but Krampus related), just for your information, the word "lauf" in "Krampuslauf" is pronounced more like "ou" in the words "ouch" or "couch". Even less of an issue, in German the "a" in "Krampus" is more of an "ah", more like "Krahmpus". So... "Krahmpuslouf"
🗪
1:52:02longboolean Q: Not extremely important, (but Krampus related), just for your information, the word "lauf" in "Krampuslauf" is pronounced more like "ou" in the words "ouch" or "couch". Even less of an issue, in German the "a" in "Krampus" is more of an "ah", more like "Krahmpus". So... "Krahmpuslouf"
🗪
1:52:02longboolean Q: Not extremely important, (but Krampus related), just for your information, the word "lauf" in "Krampuslauf" is pronounced more like "ou" in the words "ouch" or "couch". Even less of an issue, in German the "a" in "Krampus" is more of an "ah", more like "Krahmpus". So... "Krahmpuslouf"
🗪
1:53:03guybru5h_vi Q: I forgot why sorting was necessary, couldn't we just send it all to the GPU and have the depth buffer sort it out?
🗪
1:53:03guybru5h_vi Q: I forgot why sorting was necessary, couldn't we just send it all to the GPU and have the depth buffer sort it out?
🗪
1:53:03guybru5h_vi Q: I forgot why sorting was necessary, couldn't we just send it all to the GPU and have the depth buffer sort it out?
🗪
1:53:53somebody_took_my_name Q: Can you put the shadow offset in the shadow transform now?
🗪
1:53:53somebody_took_my_name Q: Can you put the shadow offset in the shadow transform now?
🗪
1:53:53somebody_took_my_name Q: Can you put the shadow offset in the shadow transform now?
🗪
1:54:33blamebauer Q: When do you plan on shipping the game? I'm really looking forward to play it
🗪
1:54:33blamebauer Q: When do you plan on shipping the game? I'm really looking forward to play it
🗪
1:54:33blamebauer Q: When do you plan on shipping the game? I'm really looking forward to play it
🗪
1:55:04hourly_negativity Q: Are there any particular reasons you use Windows over Linux?
🗪
1:55:04hourly_negativity Q: Are there any particular reasons you use Windows over Linux?
🗪
1:55:04hourly_negativity Q: Are there any particular reasons you use Windows over Linux?
🗪
1:57:43flavioliraviolitest Q: Hey, just stopped in for the first time, this is really cool. Question is: How much time do you think game devs should spend refactoring code compared to writing new features? I often find it discouraging when I spend too much time refactoring spaghetti code without adding anything new for a while
🗪
1:57:43flavioliraviolitest Q: Hey, just stopped in for the first time, this is really cool. Question is: How much time do you think game devs should spend refactoring code compared to writing new features? I often find it discouraging when I spend too much time refactoring spaghetti code without adding anything new for a while
🗪
1:57:43flavioliraviolitest Q: Hey, just stopped in for the first time, this is really cool. Question is: How much time do you think game devs should spend refactoring code compared to writing new features? I often find it discouraging when I spend too much time refactoring spaghetti code without adding anything new for a while
🗪
1:59:41longboolean Q: You're dropping the "f"
🗪
1:59:41longboolean Q: You're dropping the "f"
🗪
1:59:41longboolean Q: You're dropping the "f"
🗪
2:00:06jessef Q: Off-topic: Do you have any tips on parsing academic math papers?
🗪
2:00:06jessef Q: Off-topic: Do you have any tips on parsing academic math papers?
🗪
2:00:06jessef Q: Off-topic: Do you have any tips on parsing academic math papers?
🗪
2:00:54abarishu Q: Are we going to save the changes to the scale and alignment point back to the file they are coming from?
🗪
2:00:54abarishu Q: Are we going to save the changes to the scale and alignment point back to the file they are coming from?
🗪
2:00:54abarishu Q: Are we going to save the changes to the scale and alignment point back to the file they are coming from?
🗪
2:01:04somebody_took_my_name handmade_hero In the TextOp() it still offsets the text
🗪
2:01:04somebody_took_my_name handmade_hero In the TextOp() it still offsets the text
🗪
2:01:04somebody_took_my_name handmade_hero In the TextOp() it still offsets the text
🗪
2:01:54sc4llywag Off-topic Q: I've heard you mention other memory management techniques than the arenas as used on Handmade Hero
🗪
2:01:54sc4llywag Off-topic Q: I've heard you mention other memory management techniques than the arenas as used on Handmade Hero
🗪
2:01:54sc4llywag Off-topic Q: I've heard you mention other memory management techniques than the arenas as used on Handmade Hero
🗪
2:02:30bathat Q: Should you try and use multi-threading as much as possible, or the other way around? Or does it just depend a lot?
🗪
2:02:30bathat Q: Should you try and use multi-threading as much as possible, or the other way around? Or does it just depend a lot?
🗪
2:02:30bathat Q: Should you try and use multi-threading as much as possible, or the other way around? Or does it just depend a lot?
🗪
2:05:11yesyesyourmother Q: Can you show Jon Blow how to compile from Emacs with a keyboard shortcut?
🗪
2:05:11yesyesyourmother Q: Can you show Jon Blow how to compile from Emacs with a keyboard shortcut?
🗪
2:05:11yesyesyourmother Q: Can you show Jon Blow how to compile from Emacs with a keyboard shortcut?
🗪
2:05:21sc4llywag Q: Can you go into a bit of detail about what these memory allocators / management techniques are?
🗪
2:05:21sc4llywag Q: Can you go into a bit of detail about what these memory allocators / management techniques are?
🗪
2:05:21sc4llywag Q: Can you go into a bit of detail about what these memory allocators / management techniques are?
🗪
2:05:37iof_bastion Q: So you would never refactor code just for code readability?
🗪
2:05:37iof_bastion Q: So you would never refactor code just for code readability?
🗪
2:05:37iof_bastion Q: So you would never refactor code just for code readability?
🗪
2:06:45plussrolf Q: Do you plan to add scripts support, i.e: lua scripts (for modding)? If you do, how would you protect the user?
🗪
2:06:45plussrolf Q: Do you plan to add scripts support, i.e: lua scripts (for modding)? If you do, how would you protect the user?
🗪
2:06:45plussrolf Q: Do you plan to add scripts support, i.e: lua scripts (for modding)? If you do, how would you protect the user?
🗪
2:06:58LongBoolean Q: Also polijn in twitch chat is right: "pus" in "Krampus" is like "puss" in pussy cat
🗪
2:06:58LongBoolean Q: Also polijn in twitch chat is right: "pus" in "Krampus" is like "puss" in pussy cat
🗪
2:06:58LongBoolean Q: Also polijn in twitch chat is right: "pus" in "Krampus" is like "puss" in pussy cat
🗪
2:07:21carbonananas Q: Unrelated: I just discovered dual quaternions. Are they used in game programming?
🗪
2:07:21carbonananas Q: Unrelated: I just discovered dual quaternions. Are they used in game programming?
🗪
2:07:21carbonananas Q: Unrelated: I just discovered dual quaternions. Are they used in game programming?
🗪
2:07:42somebody_took_my_name handmade_hero It's not bad at all, the question was: Could this be in the ShadowTransform?
🗪
2:07:42somebody_took_my_name handmade_hero It's not bad at all, the question was: Could this be in the ShadowTransform?
🗪
2:07:42somebody_took_my_name handmade_hero It's not bad at all, the question was: Could this be in the ShadowTransform?
🗪
2:08:20guybru5h_vi Q: What are your thoughts on ISPC for multithreading / SIMD?
🗪
2:08:20guybru5h_vi Q: What are your thoughts on ISPC for multithreading / SIMD?
🗪
2:08:20guybru5h_vi Q: What are your thoughts on ISPC for multithreading / SIMD?
🗪
2:09:25Shut down the stream
🗩
2:09:25Shut down the stream
🗩
2:09:25Shut down the stream
🗩