Handmade Hero»Episode Guide
Spatially Partitioning Entities
?
?

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)
1:15Recap
1:15Recap
1:15Recap
3:11handmade.cpp: Create more rooms
3:11handmade.cpp: Create more rooms
3:11handmade.cpp: Create more rooms
4:22Debugger: Inspect GameState while traversing the world
4:22Debugger: Inspect GameState while traversing the world
4:22Debugger: Inspect GameState while traversing the world
7:20Consider creating a spatial partition
7:20Consider creating a spatial partition
7:20Consider creating a spatial partition
10:55Blackboard: Spatial partitions
10:55Blackboard: Spatial partitions
10:55Blackboard: Spatial partitions
13:59handmade_world.cpp: Introduce ChangeEntityLocation
13:59handmade_world.cpp: Introduce ChangeEntityLocation
13:59handmade_world.cpp: Introduce ChangeEntityLocation
18:13handmade_world.h: Rename AbsTile to Chunk and add ChunkSideInMeters to world
18:13handmade_world.h: Rename AbsTile to Chunk and add ChunkSideInMeters to world
18:13handmade_world.h: Rename AbsTile to Chunk and add ChunkSideInMeters to world
19:59handmade_world.cpp: Continue writing ChangeEntityLocation
19:59handmade_world.cpp: Continue writing ChangeEntityLocation
19:59handmade_world.cpp: Continue writing ChangeEntityLocation
22:36Discuss making FirstBlock a pointer rather than doing the block copy
22:36Discuss making FirstBlock a pointer rather than doing the block copy
22:36Discuss making FirstBlock a pointer rather than doing the block copy
25:02handmade_world.cpp: Continue writing ChangeEntityLocation
25:02handmade_world.cpp: Continue writing ChangeEntityLocation
25:02handmade_world.cpp: Continue writing ChangeEntityLocation
31:56Blackboard: Keeping the free space at the head of the list
31:56Blackboard: Keeping the free space at the head of the list
31:56Blackboard: Keeping the free space at the head of the list
33:10handmade_world.cpp: Continue writing ChangeEntityLocation
33:10handmade_world.cpp: Continue writing ChangeEntityLocation
33:10handmade_world.cpp: Continue writing ChangeEntityLocation
37:28Blackboard: Moving the final entry into the newly freed space
37:28Blackboard: Moving the final entry into the newly freed space
37:28Blackboard: Moving the final entry into the newly freed space
38:51handmade_world.cpp: Continue writing ChangeEntityLocation
38:51handmade_world.cpp: Continue writing ChangeEntityLocation
38:51handmade_world.cpp: Continue writing ChangeEntityLocation
42:15On spending time thinking about data structures vs memory management
42:15On spending time thinking about data structures vs memory management
42:15On spending time thinking about data structures vs memory management
43:18handmade_world.h and handmade_world.cpp: Manage the memory
43:18handmade_world.h and handmade_world.cpp: Manage the memory
43:18handmade_world.h and handmade_world.cpp: Manage the memory
46:51handmade_world.cpp: Update InitializeWorld and remove GetChunkPositionFor
46:51handmade_world.cpp: Update InitializeWorld and remove GetChunkPositionFor
46:51handmade_world.cpp: Update InitializeWorld and remove GetChunkPositionFor
48:09Update the sense of AreOnSameTile
48:09Update the sense of AreOnSameTile
48:09Update the sense of AreOnSameTile
49:06Introduce IsCanonical
49:06Introduce IsCanonical
49:06Introduce IsCanonical
52:06Continue cleaning up
52:06Continue cleaning up
52:06Continue cleaning up
55:58handmade.cpp: Change to using ChunkZ
55:58handmade.cpp: Change to using ChunkZ
55:58handmade.cpp: Change to using ChunkZ
56:53Introduce ChunkPositionFromTilePosition
56:53Introduce ChunkPositionFromTilePosition
56:53Introduce ChunkPositionFromTilePosition
58:34Write ChunkPositionFromTilePosition
58:34Write ChunkPositionFromTilePosition
58:34Write ChunkPositionFromTilePosition
1:02:12Unplug and plug the keyboard back in
1:02:12Unplug and plug the keyboard back in
1:02:12Unplug and plug the keyboard back in
1:03:03handmade_world.cpp: Finish cleaning up
1:03:03handmade_world.cpp: Finish cleaning up
1:03:03handmade_world.cpp: Finish cleaning up
1:04:14Q&A
🗩
1:04:14Q&A
🗩
1:04:14Q&A
🗩
1:05:39Q: Can you please go over the lasagne code again that goes through the linked list and moves around the entities? And can you remove the note in RecanonicalizeCoord about toroidal topology?
1:05:39Q: Can you please go over the lasagne code again that goes through the linked list and moves around the entities? And can you remove the note in RecanonicalizeCoord about toroidal topology?
1:05:39Q: Can you please go over the lasagne code again that goes through the linked list and moves around the entities? And can you remove the note in RecanonicalizeCoord about toroidal topology?
1:15:22Q: Are you dropping frames? Things are glitchy
1:15:22Q: Are you dropping frames? Things are glitchy
1:15:22Q: Are you dropping frames? Things are glitchy
1:15:51Q: Do you use Bink for videos?
1:15:51Q: Do you use Bink for videos?
1:15:51Q: Do you use Bink for videos?
1:16:17Q: For someone who does a lot of coding, nothing seems to be going your way today, including the stream integrity
1:16:17Q: For someone who does a lot of coding, nothing seems to be going your way today, including the stream integrity
1:16:17Q: For someone who does a lot of coding, nothing seems to be going your way today, including the stream integrity
1:16:33Q: What is your opinion on things like bunny-hopping or other movement mechanics that are bugs in the code, but contribute to gameplay, e.g. if there was a technique for getting speed in your game, albeit difficult? Would you keep it?
1:16:33Q: What is your opinion on things like bunny-hopping or other movement mechanics that are bugs in the code, but contribute to gameplay, e.g. if there was a technique for getting speed in your game, albeit difficult? Would you keep it?
1:16:33Q: What is your opinion on things like bunny-hopping or other movement mechanics that are bugs in the code, but contribute to gameplay, e.g. if there was a technique for getting speed in your game, albeit difficult? Would you keep it?
1:17:13Q: What do you think about namespacing functions like Entity_GetLocation instead of GetEntityLocation?
1:17:13Q: What do you think about namespacing functions like Entity_GetLocation instead of GetEntityLocation?
1:17:13Q: What do you think about namespacing functions like Entity_GetLocation instead of GetEntityLocation?
1:17:50Q: About PushStruct, isn't it true that it can actually fail if you are out of preallocated memory? So wouldn't you still have to check if your custom block allocation fails if your world gets too big?
1:17:50Q: About PushStruct, isn't it true that it can actually fail if you are out of preallocated memory? So wouldn't you still have to check if your custom block allocation fails if your world gets too big?
1:17:50Q: About PushStruct, isn't it true that it can actually fail if you are out of preallocated memory? So wouldn't you still have to check if your custom block allocation fails if your world gets too big?
1:19:04Q: Why do you need if(Chunk) after Assert(Chunk)?
1:19:04Q: Why do you need if(Chunk) after Assert(Chunk)?
1:19:04Q: Why do you need if(Chunk) after Assert(Chunk)?
1:19:26Q: Can you please explain, when you comment your code, what's the logic of having less comments on very big chunks of code?
1:19:26Q: Can you please explain, when you comment your code, what's the logic of having less comments on very big chunks of code?
1:19:26Q: Can you please explain, when you comment your code, what's the logic of having less comments on very big chunks of code?
1:21:37Q: When you said the code today wasn't that performance critical, I instantly thought about a machine gun - stone thrower battle just across a chunk edge
1:21:37Q: When you said the code today wasn't that performance critical, I instantly thought about a machine gun - stone thrower battle just across a chunk edge
1:21:37Q: When you said the code today wasn't that performance critical, I instantly thought about a machine gun - stone thrower battle just across a chunk edge
1:22:01We are done with questions
🗩
1:22:01We are done with questions
🗩
1:22:01We are done with questions
🗩