Handmade Hero»Episode Guide
Adding Collision Spheres
?
?

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:01Welcome with thanks to our sponsor the Rust Recovery Foundation
🗩
0:01Welcome with thanks to our sponsor the Rust Recovery Foundation
🗩
0:01Welcome with thanks to our sponsor the Rust Recovery Foundation
🗩
1:25Recap and set the stage for the day
🗩
1:25Recap and set the stage for the day
🗩
1:25Recap and set the stage for the day
🗩
2:16Demo our collision system
🏃
2:16Demo our collision system
🏃
2:16Demo our collision system
🏃
3:00Collision system clean-up phase: 1) Spatial partition
🏃
3:00Collision system clean-up phase: 1) Spatial partition
🏃
3:00Collision system clean-up phase: 1) Spatial partition
🏃
5:33Collision system clean-up phase: 2) Spherical collision volume
🏃
5:33Collision system clean-up phase: 2) Spherical collision volume
🏃
5:33Collision system clean-up phase: 2) Spherical collision volume
🏃
8:17Collision system clean-up phase: 3) Partial embedding
🏃
8:17Collision system clean-up phase: 3) Partial embedding
🏃
8:17Collision system clean-up phase: 3) Partial embedding
🏃
9:25Determine to add collision spheres
📖
9:25Determine to add collision spheres
📖
9:25Determine to add collision spheres
📖
11:39Set up CollidesAtP() to support collision spheres
11:39Set up CollidesAtP() to support collision spheres
11:39Set up CollidesAtP() to support collision spheres
15:54Respecify CollidesAtP() to compute collision of various shapes in the same branch
15:54Respecify CollidesAtP() to compute collision of various shapes in the same branch
15:54Respecify CollidesAtP() to compute collision of various shapes in the same branch
18:22ronin825 Branchless programming?
🗪
18:22ronin825 Branchless programming?
🗪
18:22ronin825 Branchless programming?
🗪
19:09Introduce ShapesCollide()
19:09Introduce ShapesCollide()
19:09Introduce ShapesCollide()
20:10abecderic If less code is better, isn't no code at all most best? Why are we even doing programming then?
🗪
20:10abecderic If less code is better, isn't no code at all most best? Why are we even doing programming then?
🗪
20:10abecderic If less code is better, isn't no code at all most best? Why are we even doing programming then?
🗪
22:29Implement ShapesCollide()
22:29Implement ShapesCollide()
22:29Implement ShapesCollide()
33:59Describe ShapesCollide()
📖
33:59Describe ShapesCollide()
📖
33:59Describe ShapesCollide()
📖
35:34Add EntityFlag_SphereCollision and fix compile errors
35:34Add EntityFlag_SphereCollision and fix compile errors
35:34Add EntityFlag_SphereCollision and fix compile errors
36:07Rectangular collision continues working
🏃
36:07Rectangular collision continues working
🏃
36:07Rectangular collision continues working
🏃
37:14Make the Glove use SphereCollision in AddPlayer()
37:14Make the Glove use SphereCollision in AddPlayer()
37:14Make the Glove use SphereCollision in AddPlayer()
37:45We don't know if our Glove is a sphere
🏃
37:45We don't know if our Glove is a sphere
🏃
37:45We don't know if our Glove is a sphere
🏃
38:25Make UpdateAndRenderEntities() draw SphereCollision entities in orange
38:25Make UpdateAndRenderEntities() draw SphereCollision entities in orange
38:25Make UpdateAndRenderEntities() draw SphereCollision entities in orange
39:19Our Glove is a sphere
🏃
39:19Our Glove is a sphere
🏃
39:19Our Glove is a sphere
🏃
40:45Double-check CollidesAtP() and ShapesCollide()
📖
40:45Double-check CollidesAtP() and ShapesCollide()
📖
40:45Double-check CollidesAtP() and ShapesCollide()
📖
45:53Consider diagramming spherical collision
📖
45:53Consider diagramming spherical collision
📖
45:53Consider diagramming spherical collision
📖
49:17Determine to enable CollidesAtP() to use the repulsion direction computed by ShapesCollide()
📖
49:17Determine to enable CollidesAtP() to use the repulsion direction computed by ShapesCollide()
📖
49:17Determine to enable CollidesAtP() to use the repulsion direction computed by ShapesCollide()
📖
52:33Consider adding spherical drawing to the renderer
📖
52:33Consider adding spherical drawing to the renderer
📖
52:33Consider adding spherical drawing to the renderer
📖
55:34Change ShapesCollide() to use CenterDelta and Radius for its rectangle vs rectangle test
55:34Change ShapesCollide() to use CenterDelta and Radius for its rectangle vs rectangle test
55:34Change ShapesCollide() to use CenterDelta and Radius for its rectangle vs rectangle test
1:00:37The Glove's spring is wild
🏃
1:00:37The Glove's spring is wild
🏃
1:00:37The Glove's spring is wild
🏃
1:01:11Make the rectangle vs rectangle collision test less permissive in ShapesCollide()
1:01:11Make the rectangle vs rectangle collision test less permissive in ShapesCollide()
1:01:11Make the rectangle vs rectangle collision test less permissive in ShapesCollide()
1:01:48Familiar movement is still broken
🏃
1:01:48Familiar movement is still broken
🏃
1:01:48Familiar movement is still broken
🏃
1:02:14Double-check the rectangle vs rectangle collision test in ShapesCollide()
📖
1:02:14Double-check the rectangle vs rectangle collision test in ShapesCollide()
📖
1:02:14Double-check the rectangle vs rectangle collision test in ShapesCollide()
📖
1:02:23Use Square() in the rectangle vs rectangle collision test in ShapesCollide()
1:02:23Use Square() in the rectangle vs rectangle collision test in ShapesCollide()
1:02:23Use Square() in the rectangle vs rectangle collision test in ShapesCollide()
1:03:36Molly Meow
🗪
🗩
1:03:36Molly Meow
🗪
🗩
1:03:36Molly Meow
🗪
🗩
1:05:20Our familiar does move and collide fine
🏃
1:05:20Our familiar does move and collide fine
🏃
1:05:20Our familiar does move and collide fine
🏃
1:05:59Reflect on ShapesCollide()
📖
1:05:59Reflect on ShapesCollide()
📖
1:05:59Reflect on ShapesCollide()
📖
1:07:08Molly Scrolling around
🗪
🗩
1:07:08Molly Scrolling around
🗪
🗩
1:07:08Molly Scrolling around
🗪
🗩
1:08:18Consider improvements to ShapesCollide()
📖
1:08:18Consider improvements to ShapesCollide()
📖
1:08:18Consider improvements to ShapesCollide()
📖
1:09:57Molly Put the mouse out of action
🗪
🗩
1:09:57Molly Put the mouse out of action
🗪
🗩
1:09:57Molly Put the mouse out of action
🗪
🗩
1:10:51Suspect improvements to shape vs shape collision
📖
1:10:51Suspect improvements to shape vs shape collision
📖
1:10:51Suspect improvements to shape vs shape collision
📖
1:11:52Instrument ShapesCollide() to diagram various shaped collisions
1:11:52Instrument ShapesCollide() to diagram various shaped collisions
1:11:52Instrument ShapesCollide() to diagram various shaped collisions
1:20:39Set up MoveEntity() to call DIAGRAM_Phase()
1:20:39Set up MoveEntity() to call DIAGRAM_Phase()
1:20:39Set up MoveEntity() to call DIAGRAM_Phase()
1:22:34Create handmade_diagram.h with stubs of the various DIAGRAM_*() functions
1:22:34Create handmade_diagram.h with stubs of the various DIAGRAM_*() functions
1:22:34Create handmade_diagram.h with stubs of the various DIAGRAM_*() functions
1:27:44Q&A
🗩
1:27:44Q&A
🗩
1:27:44Q&A
🗩
1:27:51thesandvichmaker handmade_hero I just tested and 4coder 4.1.8 does fix the indentation. It's a one-line diff
🗪
1:27:51thesandvichmaker handmade_hero I just tested and 4coder 4.1.8 does fix the indentation. It's a one-line diff
🗪
1:27:51thesandvichmaker handmade_hero I just tested and 4coder 4.1.8 does fix the indentation. It's a one-line diff
🗪
1:28:14an0nymal const? Did I see him instinctively type const
🗪
1:28:14an0nymal const? Did I see him instinctively type const
🗪
1:28:14an0nymal const? Did I see him instinctively type const
🗪
1:30:32emperormetallix Q: Why is a new diagramming system needed? Why not just use the existing renderer?
🗪
1:30:32emperormetallix Q: Why is a new diagramming system needed? Why not just use the existing renderer?
🗪
1:30:32emperormetallix Q: Why is a new diagramming system needed? Why not just use the existing renderer?
🗪
1:30:46Demo the current debug visualisation
🏃
1:30:46Demo the current debug visualisation
🏃
1:30:46Demo the current debug visualisation
🏃
1:32:20tfnw handmade_hero Off-topic: Should the PushArray() for SpatialGridLeaves in handmade_lighting.cpp be aligned to 16 bytes, for movaps on 128-bit memory operands?
🗪
1:32:20tfnw handmade_hero Off-topic: Should the PushArray() for SpatialGridLeaves in handmade_lighting.cpp be aligned to 16 bytes, for movaps on 128-bit memory operands?
🗪
1:32:20tfnw handmade_hero Off-topic: Should the PushArray() for SpatialGridLeaves in handmade_lighting.cpp be aligned to 16 bytes, for movaps on 128-bit memory operands?
🗪
1:34:37Make GridBuildSpatialPartition() align the SpatialGridLeaves PushArray() to 16 bytes
1:34:37Make GridBuildSpatialPartition() align the SpatialGridLeaves PushArray() to 16 bytes
1:34:37Make GridBuildSpatialPartition() align the SpatialGridLeaves PushArray() to 16 bytes
1:35:12The lighting remains fine
🏃
1:35:12The lighting remains fine
🏃
1:35:12The lighting remains fine
🏃
1:37:04mindmark42 Q: Are we still planning on adding cylinder or capsule collisions?
🗪
1:37:04mindmark42 Q: Are we still planning on adding cylinder or capsule collisions?
🗪
1:37:04mindmark42 Q: Are we still planning on adding cylinder or capsule collisions?
🗪
1:37:28tfnw handmade_hero Should the ID.Value be checked to be not null in handmade_asset.cpp?
🗪
1:37:28tfnw handmade_hero Should the ID.Value be checked to be not null in handmade_asset.cpp?
🗪
1:37:28tfnw handmade_hero Should the ID.Value be checked to be not null in handmade_asset.cpp?
🗪
1:38:07tfnw LoadFont()
🗪
1:38:07tfnw LoadFont()
🗪
1:38:07tfnw LoadFont()
🗪
1:38:51Make LoadFont() check that ID.Value is not null
1:38:51Make LoadFont() check that ID.Value is not null
1:38:51Make LoadFont() check that ID.Value is not null
1:41:33mooofdoom handmade_hero Hi Casey! First time catching your stream live after I finally caught up on every Handmade Hero episode. Wanted to tell you it's been really fun and very enlightening following along. Super looking forward to Star Code Galaxy as well!
🗪
1:41:33mooofdoom handmade_hero Hi Casey! First time catching your stream live after I finally caught up on every Handmade Hero episode. Wanted to tell you it's been really fun and very enlightening following along. Super looking forward to Star Code Galaxy as well!
🗪
1:41:33mooofdoom handmade_hero Hi Casey! First time catching your stream live after I finally caught up on every Handmade Hero episode. Wanted to tell you it's been really fun and very enlightening following along. Super looking forward to Star Code Galaxy as well!
🗪
1:41:55thesandvichmaker handmade_hero For the upgrade to 4coder 4.1.8, it seems to break something with modal bindings
🗪
1:41:55thesandvichmaker handmade_hero For the upgrade to 4coder 4.1.8, it seems to break something with modal bindings
🗪
1:41:55thesandvichmaker handmade_hero For the upgrade to 4coder 4.1.8, it seems to break something with modal bindings
🗪
1:42:41centhusiast Q: Could you explain flood fill algorithm as it was used in the Minesweeper game? Thanks!
🗪
1:42:41centhusiast Q: Could you explain flood fill algorithm as it was used in the Minesweeper game? Thanks!
🗪
1:42:41centhusiast Q: Could you explain flood fill algorithm as it was used in the Minesweeper game? Thanks!
🗪
1:43:15thesandvichmaker handmade_hero The fix for the auto indentation is one line. You could apply it to your current 4coder
🗪
1:43:15thesandvichmaker handmade_hero The fix for the auto indentation is one line. You could apply it to your current 4coder
🗪
1:43:15thesandvichmaker handmade_hero The fix for the auto indentation is one line. You could apply it to your current 4coder
🗪
1:43:24mooofdoom Q: Any reason you only have the xyz-diagonal case in the voxel collision system? Wouldn't you want xy-, xz-, and yz-diagonal motion as well?
🗪
1:43:24mooofdoom Q: Any reason you only have the xyz-diagonal case in the voxel collision system? Wouldn't you want xy-, xz-, and yz-diagonal motion as well?
🗪
1:43:24mooofdoom Q: Any reason you only have the xyz-diagonal case in the voxel collision system? Wouldn't you want xy-, xz-, and yz-diagonal motion as well?
🗪
1:44:54TODO(casey): Try having edge-diagonal motion as well as corner-diagonal motion?
1:44:54TODO(casey): Try having edge-diagonal motion as well as corner-diagonal motion?
1:44:54TODO(casey): Try having edge-diagonal motion as well as corner-diagonal motion?
1:45:19emperormetallix Q: Does Handmade Hero really not have a sphere drawing routine?
🗪
1:45:19emperormetallix Q: Does Handmade Hero really not have a sphere drawing routine?
🗪
1:45:19emperormetallix Q: Does Handmade Hero really not have a sphere drawing routine?
🗪
1:46:48sagian2005 Q: Couldn't you just apply a circle to a camera-facing quad to fake a sphere?
🗪
1:46:48sagian2005 Q: Couldn't you just apply a circle to a camera-facing quad to fake a sphere?
🗪
1:46:48sagian2005 Q: Couldn't you just apply a circle to a camera-facing quad to fake a sphere?
🗪
1:47:18centhusiast Q: This algorithm1
🗪
1:47:18centhusiast Q: This algorithm1
🗪
1:47:18centhusiast Q: This algorithm1
🗪
1:48:25centhusiast Q: How does it work?
🗪
1:48:25centhusiast Q: How does it work?
🗪
1:48:25centhusiast Q: How does it work?
🗪
1:51:37thesandvichmaker Will it be finished before Cyberpunk 2077?
🗪
1:51:37thesandvichmaker Will it be finished before Cyberpunk 2077?
🗪
1:51:37thesandvichmaker Will it be finished before Cyberpunk 2077?
🗪
1:52:42Thanks, everyone
🗩
1:52:42Thanks, everyone
🗩
1:52:42Thanks, everyone
🗩