Index hero/code665

This commit is contained in:
Miblo 2022-12-20 22:37:16 +00:00
parent 6d14b2b066
commit 85e55669fd
1 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,60 @@
[video output=day665 member=cmuratori stream_platform=twitch stream_username=molly_rocket project=code title="Changing How Entities are Packed and Unpacked" vod_platform=youtube id=jcEMRyqJHEg annotator=Miblo]
[0:01][Recap and set the stage for the day][:"entity system" :speech]
[1:09][Describe our storage of the world as geographic / geometric chunks][:"data structure" :"entity system" :research]
[5:26][Consider removing sim_region][:"data structure" :"entity system" :research]
[6:34][Note our need for entity lookup tables by ID][:"data structure" :"entity system" :research]
[7:19][Geometric / spatial query entity operations: :collision, :movement or :lighting gather][:"data structure" :"entity system" :research]
[7:54][Non-geometric entity operations][:"entity system" :research]
[8:13][Non-geometric entity operations: 1) Matching gamepad with entity][:"entity system" :"input handling" :research]
[8:43][Non-geometric entity operations: 2) Focusing :camera on player's entity][:"entity system" :research]
[9:54][Non-geometric entity operations: 3) Grouping entities][:"entity system" :research]
[11:35][Consider the need for entity identification irrespective of world location][:"entity system" :research]
[12:24][Non-positional entity identification][:"entity system" :research]
[12:38][Non-positional entity identification: 1) Giant direct addressing table][:"entity system" :research]
[13:23][Non-positional entity identification: 2) Localised direct addressing table][:"entity system" :research]
[14:13][Non-positional entity identification: 3) Disallowed, everything is a spatial query][:"entity system" :research]
[17:00][Consider storing moving and static entities separately][:"entity system" :research]
[18:02][Consider augmenting world_chunk with a table of movable entities, or unpacked_entity_block with a movable / skippable signifier][:"data structure" :"entity system" :research]
[20:06][Remove the #if 0 from unpacked_entity_block and fix the order of declarations][:"data structure" :"entity system"]
[21:23][Determine to store moving and static entities separately, with everything as a spatial query][:"entity system" :research]
[21:50][Determine to implement world_chunk (un)compressing][:compression :"entity system" :research]
[23:44][world_chunk: TODO(casey): Probably need to track access patterns here so we know what to repack for lack of use][:"data structure" :"entity system"]
[24:18][Consider changing the entity management :threading scheme][:"entity system" :research]
[26:19][Describe EnsureRegionIsUnpacked()][:"entity system" :research]
[28:11][Determine to enable interleaving of entity unpacking and updating for cache-friendliness][:"entity system" :research]
[29:24][@rct33][I just got here, so no]
[29:34][@frizzku][Yeah]
[29:39][@fat_dratini][Yes, you gotta eat your food while it's hot]
[29:46][Respecify EnsureRegionIsUnpacked() to support unpack and update interleaving, introducing world_chunk_iterator, IterateChunks(), IsValid() and Next()][:"data structure" :"entity system"]
[37:16][Implement our world chunk iterator: IterateChunks(), IsValid() and Next(), introducing EnsureValidChunk()][:"data structure" :"entity system"]
[54:50][Fix compile errors in the world chunk iterator][:"data structure" :"entity system"]
[56:43][Consider making the caller unpack the entity block][:"entity system" :research]
[57:21][Change world_chunk_iterator to contain a world_chunk for the caller to unpack as required][:"data structure" :"entity system"]
[59:56][Introduce EnsureChunkIsUnpacked() and EnsureChunkIsPacked()][:"data structure" :"entity system"]
[1:00:49][Consider not having a lookup table for unpacked entities in the world][:"data structure" :"entity system" :research]
[1:04:01][Implement EnsureChunkIsPacked() based on PackEntity()][:"entity system"]
[1:06:00][Consider who is responsible for moving entities between chunks][:"entity system" :research]
[1:07:47][Temporarily introduce MoveEntityToNewChunk()][:"entity system"]
[1:08:16][Determine to move entities between chunks immediately][:"entity system" :research]
[1:09:18][Introduce MoveEntityToNewPosition()][:"entity system"]
[1:11:14][Simplify EnsureRegionIsUnpacked()][:"entity system"]
[1:14:40][Implement EnsureChunkIsUnpacked() based on EnsureRegionIsUnpacked()][:"entity system"]
[1:14:50][Plan our :memory strategy for entity chunk unpacking][:"entity system" :research]
[1:15:39][Make EnsureChunkIsPacked() call AddToFreeList()][:"entity system"]
[1:16:20][Remove EnsureRegionIsUnpacked(), RepackEntitiesAsRequired(), ClearUnpackedEntityCache() and AcquireUnpackedEntitySlot()][:"entity system"]
[1:18:56][Note the orientation chunk dimensions around their centre][:"data structure" :"entity system"]
[1:20:09][Check the time][:admin]
[1:20:39][Remove MAX_SIM_REGION_ENTITY_COUNT][:"entity system"]
[1:20:49][Introduce entity_block_storage to contain packed_entity_block and unpacked_entity_block, making them roughly the same size][:"data structure" :"entity system"]
[1:26:01][Remove entity packing data from world][:"data structure" :"entity system"]
[1:26:42][Finish implementing EnsureChunkIsUnpacked(), renaming FirstBlock to FirstPacked in world_chunk][:"data structure" :"entity system"]
[1:30:54][Reacquaint ourselves with FillUnpackedEntity()][:"entity system" :research]
[1:31:29][Relieve FillUnpackedEntity() of taking the SimRegion][:"entity system"]
[1:31:42][Reacquaint ourselves with FillUnpackedEntity() (cont.)][:"entity system" :research]
[1:32:09][Change UpdateAndRenderEntities(), not EnsureChunkIsUnpacked(), to call FillUnpackedEntity(), adding EntityFlag_Unpacked][:"entity system"]
[1:35:16][End our streaming with a plug of Molly Rocket's 25% Off Everything sale[ref
author="Molly Rocket"
title="Holiday Sale: 25% Off Everything We Make!"
publisher=YouTube
url=https://www.youtube.com/watch?v=HI0IALE2g-M]][:research]
[/video]