Handmade Hero»Episode Guide
Importing Orphans
?
?

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:00Welcome to the stream
🗩
0:00Welcome to the stream
🗩
0:00Welcome to the stream
🗩
0:19Show our correct camera interpolation, and plan to get our hero back in
🏃
0:19Show our correct camera interpolation, and plan to get our hero back in
🏃
0:19Show our correct camera interpolation, and plan to get our hero back in
🏃
2:06Showcase Anna's new art pack, with heads and bodies in different files
🗹
2:06Showcase Anna's new art pack, with heads and bodies in different files
🗹
2:06Showcase Anna's new art pack, with heads and bodies in different files
🗹
6:53Tag Anna's new body art
🗹
6:53Tag Anna's new body art
🗹
6:53Tag Anna's new body art
🗹
19:38Name Anna's orphans
🗹
19:38Name Anna's orphans
🗹
19:38Name Anna's orphans
🗹
31:41Add our new tags to the asset_tag_id enum and NameTags array
31:41Add our new tags to the asset_tag_id enum and NameTags array
31:41Add our new tags to the asset_tag_id enum and NameTags array
37:49Introduce ImportBody() and ImportHead() for ParsePieces() to call
37:49Introduce ImportBody() and ImportHead() for ParsePieces() to call
37:49Introduce ImportBody() and ImportHead() for ParsePieces() to call
45:30Try to import our new assets
🏃
45:30Try to import our new assets
🏃
45:30Try to import our new assets
🏃
46:21Make AddPlayer() use our newly imported hero assets
46:21Make AddPlayer() use our newly imported hero assets
46:21Make AddPlayer() use our newly imported hero assets
53:01See our hero art in-game, noting that our orientations are backwards
🏃
53:01See our hero art in-game, noting that our orientations are backwards
🏃
53:01See our hero art in-game, noting that our orientations are backwards
🏃
54:05Decrease the HeroSizeC in AddPlayer()
54:05Decrease the HeroSizeC in AddPlayer()
54:05Decrease the HeroSizeC in AddPlayer()
54:48Check out our smaller hero in-game
🏃
54:48Check out our smaller hero in-game
🏃
54:48Check out our smaller hero in-game
🏃
55:09Make PushLight() draw our light cube fully transparent
55:09Make PushLight() draw our light cube fully transparent
55:09Make PushLight() draw our light cube fully transparent
55:52See our hero more clearly and move towards fixing our facing direction and body picking
🏃
55:52See our hero more clearly and move towards fixing our facing direction and body picking
🏃
55:52See our hero more clearly and move towards fixing our facing direction and body picking
🏃
57:49Change AddPlayer() to add a cat
57:49Change AddPlayer() to add a cat
57:49Change AddPlayer() to add a cat
58:44Find that the cat hero is correctly oriented
🏃
58:44Find that the cat hero is correctly oriented
🏃
58:44Find that the cat hero is correctly oriented
🏃
59:40Investigate our facing direction issue
📖
59:40Investigate our facing direction issue
📖
59:40Investigate our facing direction issue
📖
1:02:37Try marking AddPlayer() add Laird
1:02:37Try marking AddPlayer() add Laird
1:02:37Try marking AddPlayer() add Laird
1:03:31Find that Laird is totally correctly oriented
🏃
1:03:31Find that Laird is totally correctly oriented
🏃
1:03:31Find that Laird is totally correctly oriented
🏃
1:04:01Try marking AddPlayer() add the baby
1:04:01Try marking AddPlayer() add the baby
1:04:01Try marking AddPlayer() add the baby
1:04:16Find that the baby is also correctly oriented
🏃
1:04:16Find that the baby is also correctly oriented
🏃
1:04:16Find that the baby is also correctly oriented
🏃
1:04:50Turn off the fire particles in UpdateAndRenderEntities()
1:04:50Turn off the fire particles in UpdateAndRenderEntities()
1:04:50Turn off the fire particles in UpdateAndRenderEntities()
1:05:17Spot some garbage above the baby's head
🏃
1:05:17Spot some garbage above the baby's head
🏃
1:05:17Spot some garbage above the baby's head
🏃
1:05:34Check out the baby's source art in GIMP, to determine that it must be an asset-import bug
🗹
1:05:34Check out the baby's source art in GIMP, to determine that it must be an asset-import bug
🗹
1:05:34Check out the baby's source art in GIMP, to determine that it must be an asset-import bug
🗹
1:07:16Increase the HeroSizeC in AddPlayer()
1:07:16Increase the HeroSizeC in AddPlayer()
1:07:16Increase the HeroSizeC in AddPlayer()
1:07:28Check out our baby hero's appearance in-game, noting that the garbage is no longer above the head
1:07:28Check out our baby hero's appearance in-game, noting that the garbage is no longer above the head
1:07:28Check out our baby hero's appearance in-game, noting that the garbage is no longer above the head
1:09:24Make AddPlayer() connect the head to the body
1:09:24Make AddPlayer() connect the head to the body
1:09:24Make AddPlayer() connect the head to the body
1:10:22Align the baby hero's assets in all orientations
🏃
1:10:22Align the baby hero's assets in all orientations
🏃
1:10:22Align the baby hero's assets in all orientations
🏃
1:14:17Increase the head's Z offset in AddPlayer() to prevent Z-fighting
1:14:17Increase the head's Z offset in AddPlayer() to prevent Z-fighting
1:14:17Increase the head's Z offset in AddPlayer() to prevent Z-fighting
1:14:58Find that our baby hero's head and body no longer Z-fight
🏃
1:14:58Find that our baby hero's head and body no longer Z-fight
🏃
1:14:58Find that our baby hero's head and body no longer Z-fight
🏃
1:16:25Make AddPlayer() add Viva
1:16:25Make AddPlayer() add Viva
1:16:25Make AddPlayer() add Viva
1:17:48Align Viva's assets, but find that we've been given the baby's head again
🏃
1:17:48Align Viva's assets, but find that we've been given the baby's head again
🏃
1:17:48Align Viva's assets, but find that we've been given the baby's head again
🏃
1:18:41Make AddPlayer() tag the Body (even for the head)
1:18:41Make AddPlayer() tag the Body (even for the head)
1:18:41Make AddPlayer() tag the Body (even for the head)
1:19:20Align Viva's assets
🏃
1:19:20Align Viva's assets
🏃
1:19:20Align Viva's assets
🏃
1:23:29Take a walk as Viva
🏃
1:23:29Take a walk as Viva
🏃
1:23:29Take a walk as Viva
🏃
1:24:57Note the incongruous scaling of the orphans in comparison with the walls
🏃
1:24:57Note the incongruous scaling of the orphans in comparison with the walls
🏃
1:24:57Note the incongruous scaling of the orphans in comparison with the walls
🏃
1:26:01Decrease the HeroSizeC to 1.25f in AddPlayer()
1:26:01Decrease the HeroSizeC to 1.25f in AddPlayer()
1:26:01Decrease the HeroSizeC to 1.25f in AddPlayer()
1:26:13Consider this better because we're not taller than the wall
🏃
1:26:13Consider this better because we're not taller than the wall
🏃
1:26:13Consider this better because we're not taller than the wall
🏃
1:27:26Check out Viva's art in GIMP to find that it is wrong
🗹
1:27:26Check out Viva's art in GIMP to find that it is wrong
🗹
1:27:26Check out Viva's art in GIMP to find that it is wrong
🗹
1:29:01Introduce ReadAssetString() to display annotations in our in-game editor
1:29:01Introduce ReadAssetString() to display annotations in our in-game editor
1:29:01Introduce ReadAssetString() to display annotations in our in-game editor
1:34:04Check out our new "Info" tab in the asset editor
🏃
1:34:04Check out our new "Info" tab in the asset editor
🏃
1:34:04Check out our new "Info" tab in the asset editor
🏃
1:34:27Enable AssetEditor() to print asset annotations in the "Info" tab
1:34:27Enable AssetEditor() to print asset annotations in the "Info" tab
1:34:27Enable AssetEditor() to print asset annotations in the "Info" tab
1:38:35See a blank Name in our annotation printout
🏃
1:38:35See a blank Name in our annotation printout
🏃
1:38:35See a blank Name in our annotation printout
🏃
1:39:00Introduce AnnotationLabel() for AssetEditor() to call and print out various annotations that we expect to be populated
1:39:00Introduce AnnotationLabel() for AssetEditor() to call and print out various annotations that we expect to be populated
1:39:00Introduce AnnotationLabel() for AssetEditor() to call and print out various annotations that we expect to be populated
1:43:39Switch to the "Info" tab and hit our assertion in GetBitmapInfo()
🏃
1:43:39Switch to the "Info" tab and hit our assertion in GetBitmapInfo()
🏃
1:43:39Switch to the "Info" tab and hit our assertion in GetBitmapInfo()
🏃
1:45:36Fix GetBitmapInfo() and GetSoundInfo() to handle assets with ID 0
1:45:36Fix GetBitmapInfo() and GetSoundInfo() to handle assets with ID 0
1:45:36Fix GetBitmapInfo() and GetSoundInfo() to handle assets with ID 0
1:46:05Check out the annotated errors in our Info tab
🏃
1:46:05Check out the annotated errors in our Info tab
🏃
1:46:05Check out the annotated errors in our Info tab
🏃
1:47:07Investigate our apparent texture transfer bug
📖
1:47:07Investigate our apparent texture transfer bug
📖
1:47:07Investigate our apparent texture transfer bug
📖
1:49:33Try making BeginTextureOp() fill our required TransferMemory with all white
1:49:33Try making BeginTextureOp() fill our required TransferMemory with all white
1:49:33Try making BeginTextureOp() fill our required TransferMemory with all white
1:52:27Try in vain to trigger our bug
🏃
1:52:27Try in vain to trigger our bug
🏃
1:52:27Try in vain to trigger our bug
🏃
1:54:02Q&A
🗩
1:54:02Q&A
🗩
1:54:02Q&A
🗩
1:54:56Introduce AddOrphan() and PlaceOrphan()
1:54:56Introduce AddOrphan() and PlaceOrphan()
1:54:56Introduce AddOrphan() and PlaceOrphan()
2:00:38Visit the orphans in the orphanage
🏃
2:00:38Visit the orphans in the orphanage
🏃
2:00:38Visit the orphans in the orphanage
🏃
2:01:49keebrdb Q: So are you going to create a Level Editor as well?
🗪
2:01:49keebrdb Q: So are you going to create a Level Editor as well?
🗪
2:01:49keebrdb Q: So are you going to create a Level Editor as well?
🗪
2:02:09Temporarily expand the lighting bounds in UpdateAndRenderWorld()
2:02:09Temporarily expand the lighting bounds in UpdateAndRenderWorld()
2:02:09Temporarily expand the lighting bounds in UpdateAndRenderWorld()
2:03:29Find that the lighting now covers the screen
🏃
2:03:29Find that the lighting now covers the screen
🏃
2:03:29Find that the lighting now covers the screen
🏃
2:03:49amirrajan Q: Any thoughts of using dlopen et al to do some hot reloading shenanigans to help with the "feedback" loop?
🗪
2:03:49amirrajan Q: Any thoughts of using dlopen et al to do some hot reloading shenanigans to help with the "feedback" loop?
🗪
2:03:49amirrajan Q: Any thoughts of using dlopen et al to do some hot reloading shenanigans to help with the "feedback" loop?
🗪
2:04:50centhusiast 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?
🗪
2:04:50centhusiast 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?
🗪
2:04:50centhusiast 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?
🗪
2:05:57Contract the lighting bounds a little in UpdateAndRenderWorld()
2:05:57Contract the lighting bounds a little in UpdateAndRenderWorld()
2:05:57Contract the lighting bounds a little in UpdateAndRenderWorld()
2:06:53philliptrudeau 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?
🗪
2:06:53philliptrudeau 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?
🗪
2:06:53philliptrudeau 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?
🗪
2:09:50erdomina Q: Is each character going to have an animation sequence as NPCs, or are they all playable?
🗪
2:09:50erdomina Q: Is each character going to have an animation sequence as NPCs, or are they all playable?
🗪
2:09:50erdomina Q: Is each character going to have an animation sequence as NPCs, or are they all playable?
🗪
2:11:19graemephi Q: Petition to rename the baby Judas
🗪
2:11:19graemephi Q: Petition to rename the baby Judas
🗪
2:11:19graemephi Q: Petition to rename the baby Judas
🗪
2:12:03Stream has ended
🗩
2:12:03Stream has ended
🗩
2:12:03Stream has ended
🗩