[, < / ], >Jump to previous / next episode W, K, P / S, J, NJump to previous / next timestamp t / TToggle theatre / SUPERtheatre mode VRevert filter to original stateYSelect link (requires manual Ctrl-c)
Menu toggling
qQuotesrReferencesfFilteryLinkcCredits
In-Menu and Index Controls
a
w s
d
hjkl
←
↑ ↓
→
EscClose menu / unfocus timestamp
Quotes and References Menus and Index
EnterJump to timestamp
Quotes, References and Credits Menus
oOpen URL (in new tab)
Filter Menu
x, SpaceToggle category and focus next X, ShiftSpaceToggle category and focus previous vInvert topics / media as per focus
3:29Reacquaint ourselves with the collision detector in MoveEntity()
📖
3:29Reacquaint ourselves with the collision detector in MoveEntity()
📖
3:29Reacquaint ourselves with the collision detector in MoveEntity()
📖
5:19Thoughts on allowing for buggy gameplay code
🗩
5:19Thoughts on allowing for buggy gameplay code
🗩
5:19Thoughts on allowing for buggy gameplay code
🗩
9:03Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
9:03Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
9:03Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
11:44A* and Dijkstra's algorithm
🗩
11:44A* and Dijkstra's algorithm
🗩
11:44A* and Dijkstra's algorithm
🗩
16:49thesandvichmakerhandmade_hero Dijkstra?
🗪
16:49thesandvichmakerhandmade_hero Dijkstra?
🗪
16:49thesandvichmakerhandmade_hero Dijkstra?
🗪
17:02fda0 Dijkstra's algorithm seems like a bad name when the guy created, like, 50 algorithms
🗪
17:02fda0 Dijkstra's algorithm seems like a bad name when the guy created, like, 50 algorithms
🗪
17:02fda0 Dijkstra's algorithm seems like a bad name when the guy created, like, 50 algorithms
🗪
18:48Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
18:48Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
18:48Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
20:19TODO(casey): We should probably store corners and only test when they are untested
20:19TODO(casey): We should probably store corners and only test when they are untested
20:19TODO(casey): We should probably store corners and only test when they are untested
22:12Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
22:12Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
22:12Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
23:03dedknd Photolithography machines manufacturer ASML is also Dutch, supplying TSMC and Samsung
🗪
23:03dedknd Photolithography machines manufacturer ASML is also Dutch, supplying TSMC and Samsung
🗪
23:03dedknd Photolithography machines manufacturer ASML is also Dutch, supplying TSMC and Samsung
🗪
23:07thesandvichmaker If you tell me your name and date of birth my brain will actually process what you sound like
🗪
23:07thesandvichmaker If you tell me your name and date of birth my brain will actually process what you sound like
🗪
23:07thesandvichmaker If you tell me your name and date of birth my brain will actually process what you sound like
🗪
23:30thesandvichmaker Dutch national pride
🗪
23:30thesandvichmaker Dutch national pride
🗪
23:30thesandvichmaker Dutch national pride
🗪
26:35TODO(casey): We need to think through the way we handle embedding…
26:35TODO(casey): We need to think through the way we handle embedding…
26:35TODO(casey): We need to think through the way we handle embedding…
27:37Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
27:37Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
27:37Reacquaint ourselves with the collision detector in MoveEntity() (cont.)
📖
29:01Investigate why the glove did not move
📖
29:01Investigate why the glove did not move
📖
29:01Investigate why the glove did not move
📖
30:05The glove's collision search doesn't go beyond the "home" voxel
🏃
30:05The glove's collision search doesn't go beyond the "home" voxel
🏃
30:05The glove's collision search doesn't go beyond the "home" voxel
🏃
31:22Make MoveEntity() diagram the full voxel span
31:22Make MoveEntity() diagram the full voxel span
31:22Make MoveEntity() diagram the full voxel span
33:13The glove's collision search doesn't touch the full voxel span
🏃
33:13The glove's collision search doesn't touch the full voxel span
🏃
33:13The glove's collision search doesn't touch the full voxel span
🏃
34:06Make MoveEntity() diagram the line from FromP to ToP
34:06Make MoveEntity() diagram the line from FromP to ToP
34:06Make MoveEntity() diagram the line from FromP to ToP
34:23The glove's full voxel span does not encompass the whole line from FromP to ToP
🏃
34:23The glove's full voxel span does not encompass the whole line from FromP to ToP
🏃
34:23The glove's full voxel span does not encompass the whole line from FromP to ToP
🏃
35:10Make MoveEntity() colour in grey the line from FromP to ToP
35:10Make MoveEntity() colour in grey the line from FromP to ToP
35:10Make MoveEntity() colour in grey the line from FromP to ToP
35:16Clean out old code from MoveEntity() and correctly set the VoxelEndingCorner
35:16Clean out old code from MoveEntity() and correctly set the VoxelEndingCorner
35:16Clean out old code from MoveEntity() and correctly set the VoxelEndingCorner
39:25The glove's full voxel span correctly encompasses the whole line from FromP to ToP
🏃
39:25The glove's full voxel span correctly encompasses the whole line from FromP to ToP
🏃
39:25The glove's full voxel span correctly encompasses the whole line from FromP to ToP
🏃
39:58Start to investigate why the flood search doesn't work
📖
39:58Start to investigate why the flood search doesn't work
📖
39:58Start to investigate why the flood search doesn't work
📖
40:48Make MoveEntity() diagram the tested voxel
40:48Make MoveEntity() diagram the tested voxel
40:48Make MoveEntity() diagram the tested voxel
41:52The glove's collision search tests one cell
🏃
41:52The glove's collision search tests one cell
🏃
41:52The glove's collision search tests one cell
🏃
42:04Investigate why MoveEntity() never calls PushVoxelStack() in the "Flip" loop
📖
42:04Investigate why MoveEntity() never calls PushVoxelStack() in the "Flip" loop
📖
42:04Investigate why MoveEntity() never calls PushVoxelStack() in the "Flip" loop
📖
44:00Step in to MoveEntity()
🏃
44:00Step in to MoveEntity()
🏃
44:00Step in to MoveEntity()
🏃
44:34Flip the Occupied tests in MoveEntity()
44:34Flip the Occupied tests in MoveEntity()
44:34Flip the Occupied tests in MoveEntity()
45:20Step in to MoveEntity() to find that it now calls PushVoxelStack()
🏃
45:20Step in to MoveEntity() to find that it now calls PushVoxelStack()
🏃
45:20Step in to MoveEntity() to find that it now calls PushVoxelStack()
🏃
45:33Our glove's collision flood search now permits movement
🏃
45:33Our glove's collision flood search now permits movement
🏃
45:33Our glove's collision flood search now permits movement
🏃
45:48Our collision erroneously permits embedding and corner roll-off doesn't happen
🏃
45:48Our collision erroneously permits embedding and corner roll-off doesn't happen
🏃
45:48Our collision erroneously permits embedding and corner roll-off doesn't happen
🏃
47:09Increase the collision search space by one voxel in MoveEntity()
47:09Increase the collision search space by one voxel in MoveEntity()
47:09Increase the collision search space by one voxel in MoveEntity()
47:50Our corner roll-off now works
🏃
47:50Our corner roll-off now works
🏃
47:50Our corner roll-off now works
🏃
48:00We must fix embedding and performance
🏃
48:00We must fix embedding and performance
🏃
48:00We must fix embedding and performance
🏃
48:29Plan to fix embedding
📖
48:29Plan to fix embedding
📖
48:29Plan to fix embedding
📖
49:48Plan to fix embedding: 1) Track tested voxel corners
📖
49:48Plan to fix embedding: 1) Track tested voxel corners
📖
49:48Plan to fix embedding: 1) Track tested voxel corners
📖
49:58Plan to fix embedding: 2) Track embedding, to prevent movement to an embedded cell
📖
49:58Plan to fix embedding: 2) Track embedding, to prevent movement to an embedded cell
📖
49:58Plan to fix embedding: 2) Track embedding, to prevent movement to an embedded cell
📖
51:00Disable the embedding recovery code in MoveEntity()
51:00Disable the embedding recovery code in MoveEntity()
51:00Disable the embedding recovery code in MoveEntity()
51:17Our collision still permits embedding
🏃
51:17Our collision still permits embedding
🏃
51:17Our collision still permits embedding
🏃
51:25Scrutinise MoveEntity() for code that permits embedding
📖
51:25Scrutinise MoveEntity() for code that permits embedding
📖
51:25Scrutinise MoveEntity() for code that permits embedding
📖
53:38Make MoveEntity() test for embedding before considering a cell
53:38Make MoveEntity() test for embedding before considering a cell
53:38Make MoveEntity() test for embedding before considering a cell
54:29Our collision still permits embedding
🏃
54:29Our collision still permits embedding
🏃
54:29Our collision still permits embedding
🏃
55:09Scrutinise MoveEntity() for code that permits embedding
📖
55:09Scrutinise MoveEntity() for code that permits embedding
📖
55:09Scrutinise MoveEntity() for code that permits embedding
📖
55:39Fix the embedding test loop in MoveEntity() to use Cell.Min
55:39Fix the embedding test loop in MoveEntity() to use Cell.Min
55:39Fix the embedding test loop in MoveEntity() to use Cell.Min
56:11Our collision now prevents embedding
🏃
56:11Our collision now prevents embedding
🏃
56:11Our collision now prevents embedding
🏃
56:39Our glove gets stuck on a corner
🏃
56:39Our glove gets stuck on a corner
🏃
56:39Our glove gets stuck on a corner
🏃
57:31Relieve MoveEntity() of testing for embedding before considering a cell
57:31Relieve MoveEntity() of testing for embedding before considering a cell
57:31Relieve MoveEntity() of testing for embedding before considering a cell
57:47Our collision continues to prevent embedding, but we can get stuck in the doorway
🏃
57:47Our collision continues to prevent embedding, but we can get stuck in the doorway
🏃
57:47Our collision continues to prevent embedding, but we can get stuck in the doorway
🏃
59:31Optimising the collision routine
📖
59:31Optimising the collision routine
📖
59:31Optimising the collision routine
📖
1:00:37Let MoveEntity() early-out of the collision voxel pushing loop if BestDistanceSq == 0
1:00:37Let MoveEntity() early-out of the collision voxel pushing loop if BestDistanceSq == 0
1:00:37Let MoveEntity() early-out of the collision voxel pushing loop if BestDistanceSq == 0
1:01:15Our glove can get embedded in the hero
🏃
1:01:15Our glove can get embedded in the hero
🏃
1:01:15Our glove can get embedded in the hero
🏃
1:01:42Our collision flood search tests all voxels in a clear straight line
🏃
1:01:42Our collision flood search tests all voxels in a clear straight line
🏃
1:01:42Our collision flood search tests all voxels in a clear straight line
🏃
1:03:20Determine to push collision voxels closest-first
📖
1:03:20Determine to push collision voxels closest-first
📖
1:03:20Determine to push collision voxels closest-first
📖
1:04:31Determine to improve our early-out condition in MoveEntity()
📖
1:04:31Determine to improve our early-out condition in MoveEntity()
📖
1:04:31Determine to improve our early-out condition in MoveEntity()
📖
1:05:32Change MoveEntity() to early-out if the BestCellI and TargetCellI match, introducing ClampToVoxelDim()
1:05:32Change MoveEntity() to early-out if the BestCellI and TargetCellI match, introducing ClampToVoxelDim()
1:05:32Change MoveEntity() to early-out if the BestCellI and TargetCellI match, introducing ClampToVoxelDim()
1:08:37Our collision is more efficient
🏃
1:08:37Our collision is more efficient
🏃
1:08:37Our collision is more efficient
🏃
1:09:12Rephrase the collision voxel expansion in MoveEntity()
1:09:12Rephrase the collision voxel expansion in MoveEntity()
1:09:12Rephrase the collision voxel expansion in MoveEntity()
1:10:00The glove can penetrate right through the wall
🏃
1:10:00The glove can penetrate right through the wall
🏃
1:10:00The glove can penetrate right through the wall
🏃
1:10:34Scan MoveEntity() for code that permits through-embedding
📖
1:10:34Scan MoveEntity() for code that permits through-embedding
📖
1:10:34Scan MoveEntity() for code that permits through-embedding
📖
1:11:00The glove can penetrate right through the wall when turning
🏃
1:11:00The glove can penetrate right through the wall when turning
🏃
1:11:00The glove can penetrate right through the wall when turning
🏃
1:11:40Scrutinise MoveEntity() for code that permits embedding
📖
1:11:40Scrutinise MoveEntity() for code that permits embedding
📖
1:11:40Scrutinise MoveEntity() for code that permits embedding
📖
1:12:33Try to single-step the collision detector
🏃
1:12:33Try to single-step the collision detector
🏃
1:12:33Try to single-step the collision detector
🏃
1:14:53Walk into the wall, getting the glove embedded
🏃
1:14:53Walk into the wall, getting the glove embedded
🏃
1:14:53Walk into the wall, getting the glove embedded
🏃
1:15:43Introduce Round() for MoveEntity() to use when setting VoxelStartingCorner and VoxelEndingCorner1
1:15:43Introduce Round() for MoveEntity() to use when setting VoxelStartingCorner and VoxelEndingCorner1
1:15:43Introduce Round() for MoveEntity() to use when setting VoxelStartingCorner and VoxelEndingCorner1
1:20:20Our glove's and the expanded collision search voxels are not aligned
🏃
1:20:20Our glove's and the expanded collision search voxels are not aligned
🏃
1:20:20Our glove's and the expanded collision search voxels are not aligned
🏃
1:21:15Investigate our voxel misalignment in MoveEntity()
📖
1:21:15Investigate our voxel misalignment in MoveEntity()
📖
1:21:15Investigate our voxel misalignment in MoveEntity()
📖
1:22:08Revert MoveEntity() to use Floor() when setting VoxelStartingCorner and VoxelEndingCorner
1:22:08Revert MoveEntity() to use Floor() when setting VoxelStartingCorner and VoxelEndingCorner
1:22:08Revert MoveEntity() to use Floor() when setting VoxelStartingCorner and VoxelEndingCorner
1:22:48Increase the VoxelMaxCorner by 2× the CellDim
1:22:48Increase the VoxelMaxCorner by 2× the CellDim
1:22:48Increase the VoxelMaxCorner by 2× the CellDim
1:23:35Our performance has tanked
🏃
1:23:35Our performance has tanked
🏃
1:23:35Our performance has tanked
🏃
1:24:05Reduce VOXEL_STACK_DIM from 16 to 8
1:24:05Reduce VOXEL_STACK_DIM from 16 to 8
1:24:05Reduce VOXEL_STACK_DIM from 16 to 8
1:24:26Our collision voxels remain misaligned
🏃
1:24:26Our collision voxels remain misaligned
🏃
1:24:26Our collision voxels remain misaligned
🏃
1:25:50Change MoveEntity() to include the starting point, factoring in a DeltaPClamp to the VoxelEndingCorner
1:25:50Change MoveEntity() to include the starting point, factoring in a DeltaPClamp to the VoxelEndingCorner
1:25:50Change MoveEntity() to include the starting point, factoring in a DeltaPClamp to the VoxelEndingCorner
1:31:44Our collision search bounds and embedding are improved
🏃
1:31:44Our collision search bounds and embedding are improved
🏃
1:31:44Our collision search bounds and embedding are improved
🏃
1:32:56Continue to optimise the collision routine, augmenting voxel_stack with Repulsion and introducing voxel_corners and CheckCorners() for MoveEntity() to use
1:32:56Continue to optimise the collision routine, augmenting voxel_stack with Repulsion and introducing voxel_corners and CheckCorners() for MoveEntity() to use
1:32:56Continue to optimise the collision routine, augmenting voxel_stack with Repulsion and introducing voxel_corners and CheckCorners() for MoveEntity() to use
1:52:49Hit an assertion on CornerI in CheckCorners()
🏃
1:52:49Hit an assertion on CornerI in CheckCorners()
🏃
1:52:49Hit an assertion on CornerI in CheckCorners()
🏃
1:53:32Rephrase assertions in CheckCorners()
1:53:32Rephrase assertions in CheckCorners()
1:53:32Rephrase assertions in CheckCorners()
1:54:06Add assertions in CheckCorners on the incoming CellI dimensions
1:54:06Add assertions in CheckCorners on the incoming CellI dimensions
1:54:06Add assertions in CheckCorners on the incoming CellI dimensions
1:55:18Hit an assertion on CellI in CheckCorners()
🏃
1:55:18Hit an assertion on CellI in CheckCorners()
🏃
1:55:18Hit an assertion on CellI in CheckCorners()
🏃
1:55:28Investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:55:28Investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:55:28Investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:56:52Respecify MaxVoxelDim as MaxDeltaDim in MoveEntity()
1:56:52Respecify MaxVoxelDim as MaxDeltaDim in MoveEntity()
1:56:52Respecify MaxVoxelDim as MaxDeltaDim in MoveEntity()
1:57:33Hit an assertion on CellI in CheckCorners()
🏃
1:57:33Hit an assertion on CellI in CheckCorners()
🏃
1:57:33Hit an assertion on CellI in CheckCorners()
🏃
1:57:43Continue to investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:57:43Continue to investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:57:43Continue to investigate our out-of-bounds collision voxel push in MoveEntity()
📖
1:58:18Change MoveEntity() to use FloorToV3S() when setting VoxelDim
1:58:18Change MoveEntity() to use FloorToV3S() when setting VoxelDim
1:58:18Change MoveEntity() to use FloorToV3S() when setting VoxelDim
1:58:34Hit an assertion on CellI in CheckCorners()
🏃
1:58:34Hit an assertion on CellI in CheckCorners()
🏃
1:58:34Hit an assertion on CellI in CheckCorners()
🏃
1:58:49Add assertions on the VoxelDim in MoveEntity()
1:58:49Add assertions on the VoxelDim in MoveEntity()
1:58:49Add assertions on the VoxelDim in MoveEntity()
1:59:24Hit an assertion on VoxelDim in MoveEntity()
🏃
1:59:24Hit an assertion on VoxelDim in MoveEntity()
🏃
1:59:24Hit an assertion on VoxelDim in MoveEntity()
🏃
1:59:44Run in -Od, hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
1:59:44Run in -Od, hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
1:59:44Run in -Od, hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
2:01:53Fix our assertions on the VoxelDim in MoveEntity()
2:01:53Fix our assertions on the VoxelDim in MoveEntity()
2:01:53Fix our assertions on the VoxelDim in MoveEntity()
2:02:08Hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
2:02:08Hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
2:02:08Hit an assertion on VoxelDim in MoveEntity() and inspect the values
🏃
2:03:27Decrease the MaxDeltaDim by 3 per axis in MoveEntity()
2:03:27Decrease the MaxDeltaDim by 3 per axis in MoveEntity()
2:03:27Decrease the MaxDeltaDim by 3 per axis in MoveEntity()
2:03:39No longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:03:39No longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:03:39No longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:04:02Run in -O2, and no longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:04:02Run in -O2, and no longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:04:02Run in -O2, and no longer hit that assertion on VoxelDim in MoveEntity()
🏃
2:04:34Corner roll-off now works, we no longer embed, but we can still get stuck on corners
🏃
2:04:34Corner roll-off now works, we no longer embed, but we can still get stuck on corners
🏃
2:04:34Corner roll-off now works, we no longer embed, but we can still get stuck on corners
🏃
2:07:04TODO(casey): Do initial check to see if we're embedded...
2:07:04TODO(casey): Do initial check to see if we're embedded...
2:07:04TODO(casey): Do initial check to see if we're embedded...
2:07:52Q&A
🗩
2:07:52Q&A
🗩
2:07:52Q&A
🗩
2:09:24insobot Q: Polling raw input make it reasonable to give it a coincidence that we do not worry about the nail salon?
🗪
2:09:24insobot Q: Polling raw input make it reasonable to give it a coincidence that we do not worry about the nail salon?
🗪
2:09:24insobot Q: Polling raw input make it reasonable to give it a coincidence that we do not worry about the nail salon?
🗪
2:10:28thesandvichmakerhandmade_hero, insobot has cheered me up, but I've been real down on programming lately. Have you ever had a phase where you were just totally over computers?
🗪
2:10:28thesandvichmakerhandmade_hero, insobot has cheered me up, but I've been real down on programming lately. Have you ever had a phase where you were just totally over computers?
🗪
2:10:28thesandvichmakerhandmade_hero, insobot has cheered me up, but I've been real down on programming lately. Have you ever had a phase where you were just totally over computers?
🗪
2:16:24mindmark42 Q: Do you think it is safe to assume if a CPU has AVX2 it has FMA, or should I always check the cpuflags? I'm not sure where to look if such a thing is true2
🗪
2:16:24mindmark42 Q: Do you think it is safe to assume if a CPU has AVX2 it has FMA, or should I always check the cpuflags? I'm not sure where to look if such a thing is true2
🗪
2:16:24mindmark42 Q: Do you think it is safe to assume if a CPU has AVX2 it has FMA, or should I always check the cpuflags? I'm not sure where to look if such a thing is true2
🗪
2:21:19mindmark42 Ya, I was wondering if all AVX2 CPUs on the market have the FMA extensions because all two of mine have them3,4
🗪
2:21:19mindmark42 Ya, I was wondering if all AVX2 CPUs on the market have the FMA extensions because all two of mine have them3,4
🗪
2:21:19mindmark42 Ya, I was wondering if all AVX2 CPUs on the market have the FMA extensions because all two of mine have them3,4