Caching Unpacked Entities Across Frames
?
?

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:01Recap and set the stage for the day, judiciously packing and unpacking entities
🗩
0:01Recap and set the stage for the day, judiciously packing and unpacking entities
🗩
0:01Recap and set the stage for the day, judiciously packing and unpacking entities
🗩
4:05Show the game running
🏃
4:05Show the game running
🏃
4:05Show the game running
🏃
4:12Remove entity_reference in favour of making the traversable_reference and entity structs identify entities by entity_id
4:12Remove entity_reference in favour of making the traversable_reference and entity structs identify entities by entity_id
4:12Remove entity_reference in favour of making the traversable_reference and entity structs identify entities by entity_id
18:51Hit our assertion in GetHashFromID()
🏃
18:51Hit our assertion in GetHashFromID()
🏃
18:51Hit our assertion in GetHashFromID()
🏃
19:11Change GetEntityByID() to only call GetHashFromID() if the ID.Value is valid
19:11Change GetEntityByID() to only call GetHashFromID() if the ID.Value is valid
19:11Change GetEntityByID() to only call GetHashFromID() if the ID.Value is valid
20:15Find that we're back to good
🏃
20:15Find that we're back to good
🏃
20:15Find that we're back to good
🏃
21:59Set up to cache our entities, likening our plan to L1 and L2 caches in CPUs
🗩
21:59Set up to cache our entities, likening our plan to L1 and L2 caches in CPUs
🗩
21:59Set up to cache our entities, likening our plan to L1 and L2 caches in CPUs
🗩
28:49Make RepackEntitiesAsNecessary() repack entities that do not fall within a given chunk volume, introducing IsContainedInChunkVolume() and respecifying the world's version of CreateEntity() as AcquireUnpackedEntitySlot()
28:49Make RepackEntitiesAsNecessary() repack entities that do not fall within a given chunk volume, introducing IsContainedInChunkVolume() and respecifying the world's version of CreateEntity() as AcquireUnpackedEntitySlot()
28:49Make RepackEntitiesAsNecessary() repack entities that do not fall within a given chunk volume, introducing IsContainedInChunkVolume() and respecifying the world's version of CreateEntity() as AcquireUnpackedEntitySlot()
45:31Clean up the entity slot stuff, introducing a free_entity for the world to contain and CreateWorld() to chain up
45:31Clean up the entity slot stuff, introducing a free_entity for the world to contain and CreateWorld() to chain up
45:31Clean up the entity slot stuff, introducing a free_entity for the world to contain and CreateWorld() to chain up
1:04:23See nothing in-game
🏃
1:04:23See nothing in-game
🏃
1:04:23See nothing in-game
🏃
1:04:49Walk through our new entity caching code
📖
1:04:49Walk through our new entity caching code
📖
1:04:49Walk through our new entity caching code
📖
1:09:33Consult the profiler
🏃
1:09:33Consult the profiler
🏃
1:09:33Consult the profiler
🏃
1:10:34Temporarily make RegisterEntity() operate on every Entity it is passed, even if it resides outside our sim region
1:10:34Temporarily make RegisterEntity() operate on every Entity it is passed, even if it resides outside our sim region
1:10:34Temporarily make RegisterEntity() operate on every Entity it is passed, even if it resides outside our sim region
1:11:06Crash on a call to END_BLOCK()
🏃
1:11:06Crash on a call to END_BLOCK()
🏃
1:11:06Crash on a call to END_BLOCK()
🏃
1:15:14Consider performing heap compaction on our entities
1:15:14Consider performing heap compaction on our entities
1:15:14Consider performing heap compaction on our entities
1:17:39Remove free_entity in favour of making RepackEntitiesAsNecessary() perform heap compaction on our entities
1:17:39Remove free_entity in favour of making RepackEntitiesAsNecessary() perform heap compaction on our entities
1:17:39Remove free_entity in favour of making RepackEntitiesAsNecessary() perform heap compaction on our entities
1:24:13Crash again on a call to END_BLOCK()
🏃
1:24:13Crash again on a call to END_BLOCK()
🏃
1:24:13Crash again on a call to END_BLOCK()
🏃
1:30:29Revert RegisterEntity() to only operate on an Entity if in resides outside our sim region
1:30:29Revert RegisterEntity() to only operate on an Entity if in resides outside our sim region
1:30:29Revert RegisterEntity() to only operate on an Entity if in resides outside our sim region
1:31:32Step through many calls to RegisterEntity(), watching the Entity->P values
🏃
1:31:32Step through many calls to RegisterEntity(), watching the Entity->P values
🏃
1:31:32Step through many calls to RegisterEntity(), watching the Entity->P values
🏃
1:34:50Step through AddPlayer() and through the camera initialisation code to see no obvious incorrectness
🏃
1:34:50Step through AddPlayer() and through the camera initialisation code to see no obvious incorrectness
🏃
1:34:50Step through AddPlayer() and through the camera initialisation code to see no obvious incorrectness
🏃
1:41:00Carefully read through EnsureRegionIsUnpacked() and RepackEntitiesAsNecessary()
📖
1:41:00Carefully read through EnsureRegionIsUnpacked() and RepackEntitiesAsNecessary()
📖
1:41:00Carefully read through EnsureRegionIsUnpacked() and RepackEntitiesAsNecessary()
📖
1:43:10Try to break in to RepackEntitiesAsNecessary() to find that we never actually repack entities
🏃
1:43:10Try to break in to RepackEntitiesAsNecessary() to find that we never actually repack entities
🏃
1:43:10Try to break in to RepackEntitiesAsNecessary() to find that we never actually repack entities
🏃
1:44:54Consider our bug to be in EnsureRegionIsUnpacked() and RegisterEntity()
📖
1:44:54Consider our bug to be in EnsureRegionIsUnpacked() and RegisterEntity()
📖
1:44:54Consider our bug to be in EnsureRegionIsUnpacked() and RegisterEntity()
📖
1:47:44See our world off in the distance, with our camera and entities misplaced
🏃
1:47:44See our world off in the distance, with our camera and entities misplaced
🏃
1:47:44See our world off in the distance, with our camera and entities misplaced
🏃
1:49:04Scour the code in the knowledge that we're tackling a positional bug
📖
1:49:04Scour the code in the knowledge that we're tackling a positional bug
📖
1:49:04Scour the code in the knowledge that we're tackling a positional bug
📖
1:51:43Offsetting the sim region origin across frames
🖌
1:51:43Offsetting the sim region origin across frames
🖌
1:51:43Offsetting the sim region origin across frames
🖌
1:54:56Fix the order of arguments passed to Subtract() by EnsureRegionIsUnpacked()
1:54:56Fix the order of arguments passed to Subtract() by EnsureRegionIsUnpacked()
1:54:56Fix the order of arguments passed to Subtract() by EnsureRegionIsUnpacked()
1:55:20Find that we've solved the problem
🏃
1:55:20Find that we've solved the problem
🏃
1:55:20Find that we've solved the problem
🏃
1:56:06Start to enable RepackEntitiesAsNecessary() to repack entities that are some distance outside our sim region
1:56:06Start to enable RepackEntitiesAsNecessary() to repack entities that are some distance outside our sim region
1:56:06Start to enable RepackEntitiesAsNecessary() to repack entities that are some distance outside our sim region
1:58:31Make EnsureRegionIsUnpacked() responsible for packing entities
1:58:31Make EnsureRegionIsUnpacked() responsible for packing entities
1:58:31Make EnsureRegionIsUnpacked() responsible for packing entities
2:08:05Hit our assertion in EnsureRegionIsUnpacked()
🏃
2:08:05Hit our assertion in EnsureRegionIsUnpacked()
🏃
2:08:05Hit our assertion in EnsureRegionIsUnpacked()
🏃
2:08:46Fix EnsureRegionIsUnpacked() to square our MaxAllowedDistance
2:08:46Fix EnsureRegionIsUnpacked() to square our MaxAllowedDistance
2:08:46Fix EnsureRegionIsUnpacked() to square our MaxAllowedDistance
2:09:08Find that we're fine
🏃
2:09:08Find that we're fine
🏃
2:09:08Find that we're fine
🏃
2:09:25Q&A
🗩
2:09:25Q&A
🗩
2:09:25Q&A
🗩
2:10:29uplinkcoder Q: Would you do Linux programming if you had a RemedyBG on Linux?
🗪
2:10:29uplinkcoder Q: Would you do Linux programming if you had a RemedyBG on Linux?
🗪
2:10:29uplinkcoder Q: Would you do Linux programming if you had a RemedyBG on Linux?
🗪
2:11:180lpbm Q: Will there be any memory difference with TooFarFromPrecision vs no TooFarFromPrecision? (If so, can we see in the memory viewer?)
🗪
2:11:180lpbm Q: Will there be any memory difference with TooFarFromPrecision vs no TooFarFromPrecision? (If so, can we see in the memory viewer?)
🗪
2:11:180lpbm Q: Will there be any memory difference with TooFarFromPrecision vs no TooFarFromPrecision? (If so, can we see in the memory viewer?)
🗪
2:12:10brimonk Q: I'm working on a project where "the client" has written some prototyped mathematics code in Matlab. I've translated most of it, however, I have some discrepancies with the output, and I can't figure out if there's a better way to debug the problem than a whole bunch of printf debugging. Thoughts?
🗪
2:12:10brimonk Q: I'm working on a project where "the client" has written some prototyped mathematics code in Matlab. I've translated most of it, however, I have some discrepancies with the output, and I can't figure out if there's a better way to debug the problem than a whole bunch of printf debugging. Thoughts?
🗪
2:12:10brimonk Q: I'm working on a project where "the client" has written some prototyped mathematics code in Matlab. I've translated most of it, however, I have some discrepancies with the output, and I can't figure out if there's a better way to debug the problem than a whole bunch of printf debugging. Thoughts?
🗪
2:14:00Brian Q: When you are hopping around in a large room, it appears when you are hopping up, it seems that the outer area is lighter than that around around the player. Is this on purpose? Or used temporarily to demonstrate something?
🗪
2:14:00Brian Q: When you are hopping around in a large room, it appears when you are hopping up, it seems that the outer area is lighter than that around around the player. Is this on purpose? Or used temporarily to demonstrate something?
🗪
2:14:00Brian Q: When you are hopping around in a large room, it appears when you are hopping up, it seems that the outer area is lighter than that around around the player. Is this on purpose? Or used temporarily to demonstrate something?
🗪
2:15:26lkraider Q: How large a world does the float precision allow in this case? (I remember it being a problem in some games with large maps where the edges lose precision)
🗪
2:15:26lkraider Q: How large a world does the float precision allow in this case? (I remember it being a problem in some games with large maps where the edges lose precision)
🗪
2:15:26lkraider Q: How large a world does the float precision allow in this case? (I remember it being a problem in some games with large maps where the edges lose precision)
🗪
2:16:08Step in to EnsureRegionIsUnpacked() and inspect our ChunkDimInMeters to see the sheer size of our world
🏃
2:16:08Step in to EnsureRegionIsUnpacked() and inspect our ChunkDimInMeters to see the sheer size of our world
🏃
2:16:08Step in to EnsureRegionIsUnpacked() and inspect our ChunkDimInMeters to see the sheer size of our world
🏃
2:18:14wolverinegator Q: The assertion that we didn't find was a debugtable assertion: assert macro inside record event macro inside destructor of the timed function. Can we put a MessageBox into the assert macro to find these kinds of asserts more easily?
🗪
2:18:14wolverinegator Q: The assertion that we didn't find was a debugtable assertion: assert macro inside record event macro inside destructor of the timed function. Can we put a MessageBox into the assert macro to find these kinds of asserts more easily?
🗪
2:18:14wolverinegator Q: The assertion that we didn't find was a debugtable assertion: assert macro inside record event macro inside destructor of the timed function. Can we put a MessageBox into the assert macro to find these kinds of asserts more easily?
🗪
2:18:26vtlmks Q: Heard about posits? Better precision and faster than normal floats (not in hardware yet obviously)1
🗪
2:18:26vtlmks Q: Heard about posits? Better precision and faster than normal floats (not in hardware yet obviously)1
🗪
2:18:26vtlmks Q: Heard about posits? Better precision and faster than normal floats (not in hardware yet obviously)1
🗪
2:20:10centhusiast Q: Do you have time to explain on the zooming towards the mouse position and how it can be implemented (not coding just the concept and algorithm)? Thanks a million
🗪
2:20:10centhusiast Q: Do you have time to explain on the zooming towards the mouse position and how it can be implemented (not coding just the concept and algorithm)? Thanks a million
🗪
2:20:10centhusiast Q: Do you have time to explain on the zooming towards the mouse position and how it can be implemented (not coding just the concept and algorithm)? Thanks a million
🗪
2:20:41iwrestledabeer Q: Do you have any advice on how to ensure the uniqueness of UI element ids in an immediate mode UI in a setting in which the number of elements changes from frame to frame (so using monotonically increasing counter won't work)?
🗪
2:20:41iwrestledabeer Q: Do you have any advice on how to ensure the uniqueness of UI element ids in an immediate mode UI in a setting in which the number of elements changes from frame to frame (so using monotonically increasing counter won't work)?
🗪
2:20:41iwrestledabeer Q: Do you have any advice on how to ensure the uniqueness of UI element ids in an immediate mode UI in a setting in which the number of elements changes from frame to frame (so using monotonically increasing counter won't work)?
🗪
2:24:14organoompkin handmade_hero What's the most effective way of testing code? I come from a web development background and there's a very heavy focus on unit testing and test driven development. I'm not sold on the dogma of that and I don't think it's really used in game development, which makes me curious as to how you do test effectively in game development
🗪
2:24:14organoompkin handmade_hero What's the most effective way of testing code? I come from a web development background and there's a very heavy focus on unit testing and test driven development. I'm not sold on the dogma of that and I don't think it's really used in game development, which makes me curious as to how you do test effectively in game development
🗪
2:24:14organoompkin handmade_hero What's the most effective way of testing code? I come from a web development background and there's a very heavy focus on unit testing and test driven development. I'm not sold on the dogma of that and I don't think it's really used in game development, which makes me curious as to how you do test effectively in game development
🗪
2:29:31centhusiast Q: You said last week you will explain the zooming towards the mouse pointer on the white board. If it is not too much bother, otherwise I try to find something on google. Thanks a lot again
🗪
2:29:31centhusiast Q: You said last week you will explain the zooming towards the mouse pointer on the white board. If it is not too much bother, otherwise I try to find something on google. Thanks a lot again
🗪
2:29:31centhusiast Q: You said last week you will explain the zooming towards the mouse pointer on the white board. If it is not too much bother, otherwise I try to find something on google. Thanks a lot again
🗪
2:30:21Zooming towards mouse pointer, using a Stretch() function
🖌
2:30:21Zooming towards mouse pointer, using a Stretch() function
🖌
2:30:21Zooming towards mouse pointer, using a Stretch() function
🖌
3:04:37End
🗩
3:04:37End
🗩
3:04:37End
🗩