Handmade Hero»Episode Guide
Aligning Ground Buffers to World Chunks
?
?

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)
3:50Recap
3:50Recap
3:50Recap
4:14The Proposal: First, just produce tiles that cover things... but they won't be seamless
4:14The Proposal: First, just produce tiles that cover things... but they won't be seamless
4:14The Proposal: First, just produce tiles that cover things... but they won't be seamless
5:58Address specifying which ground_buffer we need
5:58Address specifying which ground_buffer we need
5:58Address specifying which ground_buffer we need
7:03Stop doing the test fill for GroundBuffer
7:03Stop doing the test fill for GroundBuffer
7:03Stop doing the test fill for GroundBuffer
7:29Iterate over every place the camera can see and request a GroundBuffer
7:29Iterate over every place the camera can see and request a GroundBuffer
7:29Iterate over every place the camera can see and request a GroundBuffer
13:03Blackboard: Offset considerations
13:03Blackboard: Offset considerations
13:03Blackboard: Offset considerations
14:49Subtract the offset
14:49Subtract the offset
14:49Subtract the offset
15:45Consider the size of a Chunk
15:45Consider the size of a Chunk
15:45Consider the size of a Chunk
18:43Brief interlude: See how big those Chunks are
18:43Brief interlude: See how big those Chunks are
18:43Brief interlude: See how big those Chunks are
27:52Try to view the results in-game and step through the code
27:52Try to view the results in-game and step through the code
27:52Try to view the results in-game and step through the code
29:39Multiply ChunkDimInMeters by MetersToPixels
29:39Multiply ChunkDimInMeters by MetersToPixels
29:39Multiply ChunkDimInMeters by MetersToPixels
31:08Make DrawRectangleOutline
31:08Make DrawRectangleOutline
31:08Make DrawRectangleOutline
38:12View the results and figure out what's happening with the Chunk location information
38:12View the results and figure out what's happening with the Chunk location information
38:12View the results and figure out what's happening with the Chunk location information
40:27DrawRectangle does not take a Width and a Height
40:27DrawRectangle does not take a Width and a Height
40:27DrawRectangle does not take a Width and a Height
41:26...and the Y needs flipping
41:26...and the Y needs flipping
41:26...and the Y needs flipping
42:11We're getting there, but the Chunks are drawn too tiny
42:11We're getting there, but the Chunks are drawn too tiny
42:11We're getting there, but the Chunks are drawn too tiny
42:46Assess the size of the Chunks
42:46Assess the size of the Chunks
42:46Assess the size of the Chunks
43:08Try making a Chunk a quarter the size
43:08Try making a Chunk a quarter the size
43:08Try making a Chunk a quarter the size
44:10Set the Chunk size based on the size of a 256*256 block
44:10Set the Chunk size based on the size of a 256*256 block
44:10Set the Chunk size based on the size of a 256*256 block
44:56Make MetersToPixels something integral
44:56Make MetersToPixels something integral
44:56Make MetersToPixels something integral
47:05Assess where TileSideInMeters gets set and consider doing without it
47:05Assess where TileSideInMeters gets set and consider doing without it
47:05Assess where TileSideInMeters gets set and consider doing without it
48:20InitializeWorld without TileSideInMeters and TileDepthInMeters
48:20InitializeWorld without TileSideInMeters and TileDepthInMeters
48:20InitializeWorld without TileSideInMeters and TileDepthInMeters
49:40Pass the ChunkDimInMeters directly in
49:40Pass the ChunkDimInMeters directly in
49:40Pass the ChunkDimInMeters directly in
51:31Introduce TypicalFloorHeight
51:31Introduce TypicalFloorHeight
51:31Introduce TypicalFloorHeight
52:08Set ChunkDimInMeters based on the value of MetersToPixels
52:08Set ChunkDimInMeters based on the value of MetersToPixels
52:08Set ChunkDimInMeters based on the value of MetersToPixels
53:23Derive WorldChunkDimInMeters from GroundBuffer{Width,Height} and TypicalFloorHeight
53:23Derive WorldChunkDimInMeters from GroundBuffer{Width,Height} and TypicalFloorHeight
53:23Derive WorldChunkDimInMeters from GroundBuffer{Width,Height} and TypicalFloorHeight
54:37Set Tile{Side,Depth}InMeters
54:37Set Tile{Side,Depth}InMeters
54:37Set Tile{Side,Depth}InMeters
55:39Do CameraBounds a little differently
55:39Do CameraBounds a little differently
55:39Do CameraBounds a little differently
56:05Introduce SimBounds based on the CameraBounds
56:05Introduce SimBounds based on the CameraBounds
56:05Introduce SimBounds based on the CameraBounds
57:35View the results in-game
57:35View the results in-game
57:35View the results in-game
59:03Request a particular world_chunk to draw
59:03Request a particular world_chunk to draw
59:03Request a particular world_chunk to draw
1:03:45View the results in-game
1:03:45View the results in-game
1:03:45View the results in-game
1:05:10Find out why those chunks aren't getting produced until the Hero walks on them
1:05:10Find out why those chunks aren't getting produced until the Hero walks on them
1:05:10Find out why those chunks aren't getting produced until the Hero walks on them
1:07:01This was working totally perfectly
1:07:01This was working totally perfectly
1:07:01This was working totally perfectly
1:07:53Problem solved
1:07:53Problem solved
1:07:53Problem solved
1:08:41Q&A
🗩
1:08:41Q&A
🗩
1:08:41Q&A
🗩
1:09:27Q: What is Muratori syntax?
1:09:27Q: What is Muratori syntax?
1:09:27Q: What is Muratori syntax?
1:10:32Q: Will the random ground splats be based on some seed so that the ground buffer can be regenerated the same as it was after it gets evicted?
1:10:32Q: Will the random ground splats be based on some seed so that the ground buffer can be regenerated the same as it was after it gets evicted?
1:10:32Q: Will the random ground splats be based on some seed so that the ground buffer can be regenerated the same as it was after it gets evicted?
1:11:13Q: I'm sure it's been asked a bunch, but any tips for what language to start with and how to start?
1:11:13Q: I'm sure it's been asked a bunch, but any tips for what language to start with and how to start?
1:11:13Q: I'm sure it's been asked a bunch, but any tips for what language to start with and how to start?
1:12:56Someone found a Muratori 'for' statement in the wild
1:12:56Someone found a Muratori 'for' statement in the wild
1:12:56Someone found a Muratori 'for' statement in the wild
1:14:35Q: Why are you not passing World as an address when calling functions?
1:14:35Q: Why are you not passing World as an address when calling functions?
1:14:35Q: Why are you not passing World as an address when calling functions?
1:15:01Q: Are you going to implement Z-buffers and texture scaling?
1:15:01Q: Are you going to implement Z-buffers and texture scaling?
1:15:01Q: Are you going to implement Z-buffers and texture scaling?
1:16:08Q: Is there any other possibility for a Z-buffer?
1:16:08Q: Is there any other possibility for a Z-buffer?
1:16:08Q: Is there any other possibility for a Z-buffer?
1:19:11miblo Couldn't you set the SimBounds expansion from the screen dimensions or CameraBoundsInMeters or something? Hope I'm understanding it correctly
🗪
1:19:11miblo Couldn't you set the SimBounds expansion from the screen dimensions or CameraBoundsInMeters or something? Hope I'm understanding it correctly
🗪
1:19:11miblo Couldn't you set the SimBounds expansion from the screen dimensions or CameraBoundsInMeters or something? Hope I'm understanding it correctly
🗪
1:20:30Q: Will you be implementing dynamic lighting or any deferred rendering for lots of real lights, etc?
1:20:30Q: Will you be implementing dynamic lighting or any deferred rendering for lots of real lights, etc?
1:20:30Q: Will you be implementing dynamic lighting or any deferred rendering for lots of real lights, etc?
1:22:45Q: Is there anyone you can suggest for a hardcore render guy?
1:22:45Q: Is there anyone you can suggest for a hardcore render guy?
1:22:45Q: Is there anyone you can suggest for a hardcore render guy?
1:23:40Closing remarks
🗩
1:23:40Closing remarks
🗩
1:23:40Closing remarks
🗩