cinera_handmade.network/cmuratori/hero/code/code664.hmml

88 lines
9.3 KiB
Plaintext
Raw Permalink Normal View History

2022-12-07 21:46:30 +00:00
[video output=day664 member=cmuratori stream_platform=twitch stream_username=molly_rocket project=code title="Simplifying Entity Storage Part II" vod_platform=youtube id=fUGCccR-B3c annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[2:37][Reacquaint ourselves with the brain_type enum][:"entity system" :research]
[4:43][Delete Type_brain_monstar and AddMonstar()][:"entity system"]
[5:32][Seek simplification of UpdateAndRenderEntities()][:"entity system" :research]
[6:12][Delete the BoostTo branch from UpdateAndRenderEntities()][:"entity system"]
[6:21][Scan through code to rewrite and keep][:"entity system" :research]
[7:00][Consider moving the :camera with the entity in question, rather than by doing an entity lookup by ID][:"entity system" :research]
[9:12][Reacquaint ourselves with the Type_brain_familiar case in ExecuteBrain()][:"entity system" :research]
[12:29][Improve the wording of the Type_brain_familiar case in ExecuteBrain()][:"entity system"]
[14:38][Consider changes to the entity struct that may mostly obviate the need for the sim region][:"data structure" :"entity system" :research]
[16:36][Remove dAbsTileZ from entity][:"data structure" :"entity system"]
[16:44][Port the Type_brain_familiar case in ExecuteBrain() to our simplified entity storage scheme][:"entity system"]
[19:07][Consider performing TransactionalOccupy() in the :movement, rather than the brain, code][:"entity system" :research]
[20:16][Port the Type_brain_familiar case in ExecuteBrain() to our simplified entity storage scheme (cont.)][:"entity system"]
[22:06][Reacquaint ourselves with the familiar velocity setting code][:"entity system" :movement :research]
[24:04][Describe the purpose of TransactionalOccupy() in ExecuteBrain()][:"entity system" :movement :research]
[24:58][Port the Type_brain_familiar case in ExecuteBrain() to our simplified entity storage scheme (cont.)][:"entity system"]
[25:44][Note popping artifacts in this :movement code][:"entity system" :movement :research]
[26:14][Introduce a v2s overload of V2()]
[26:58][Port the Type_brain_familiar case in ExecuteBrain() to our simplified entity storage scheme (cont.)][:"entity system"]
[27:17][Port UpdateAnimation() to our simplified entity storage scheme][:animation :"entity system"]
[29:14][Port the move queue code in UpdateAndRenderEntities() to our simplified entity storage scheme, changing Delta in move_queue_entry to be a v2s][:"data structure" :"entity system"]
[30:00][Consider making UpdateAndRenderEntities() set the TileIndex directly][:"entity system" :movement :research]
[30:52][Port UpdateAndRenderEntities() to our simplified entity storage scheme, using a v2s TargetTile][:"entity system" :movement]
[31:48][Port ExecuteBrainHero() to our simplified entity storage scheme, changing CanonicalDelta in move_pattern_entry, and AttackX and AttackY to be a v2s, and introducing V2S() and a v2s overload of operator*()][:"data structure" :"entity system"]
[35:32][Port AddPlayer() to our simplified entity storage scheme][:"entity system"]
[37:48][Port CheckForJoiningPlayers() to our simplified entity storage scheme, introducing GetClosestEmptyTileTo() and augmenting sim_region with OriginTileIndex][:"data structure" :"entity system"]
[41:45][Consider introducing TileSpaceToSimRegion()][:"entity system" :research]
[43:26][Respecify UpdateAnimation() to orient :movement around the delta of the current and previous tile][:"entity system"]
[45:02][Fix typo in GetClosestEmptyTileTo()][:"entity system"]
[45:22][Remove the sim_region overloads of PlaceEntityAtTraversable() and PlaceEntityOnTraversable()][:"entity system" :movement]
[46:10][Consider also removing the edit_grid version of PlaceEntityAtTraversable() and related functions][:"entity system" :movement :"procedural generation" :research]
[49:17][Move the edit_tile traversal functions from handmade_edit_grid.cpp to handmade_sim_region.cpp][:"entity system" :"procedural generation"]
[50:00][Consider removing the edit grid entirely][:"entity system" :research :"procedural generation"]
[52:10][#if 0 GenerateApron() and GenerateRoom()][:"entity system" :"procedural generation"]
[52:34][Rename TraversableIsOpen() to TileIsOpen(), and IsOccupied() to TileIsOccupied(), removing the former's check][:"entity system" :movement]
[53:38][Consider changing FindRandomOpenTile() to spiral outwards][:"entity system" :research]
[54:31][Delete handmade_gen_math.{h,cpp}, stowing the cpp code in handmade_math.h][:admin :mathematics :programming]
[1:02:54][Remove the bulk of handmade_edit_grid.cpp][:"entity system" :"procedural generation"]
[1:06:34][Relieve GenerateBlock() of calling BeginGridEdit(), removing the latter, EndGridEdit() and GetAbsoluteTileIndex()][:"entity system" :"procedural generation"]
[1:10:56][Move IsOnEdge() from handmade_edit_grid.cpp to handmade_math.h][:"entity system" :mathematics :"procedural generation"]
[1:12:45][Consider keeping code from handmade_edit_grid.cpp][:"entity system" :"procedural generation" :research]
[1:14:04][Move GetTileVolume() from handmade_edit_grid.cpp to handmade_room_gen.cpp, and rewrite it][:"entity system" :"procedural generation"]
[1:16:25][Move GetMinZCenterP() and GetVolumeFromMinZ() from handmade_edit_grid.cpp to handmade_room_gen.cpp][:"entity system" :"procedural generation"]
[1:17:13][Relieve GenerateBlock() of calling IterateAsPlanarTiles(), removing the latter][:"entity system" :"procedural generation"]
[1:18:21][Delete handmade_edit_grid.{h,cpp}][:admin]
[1:19:16][Decide against debugging Visual Studio with Visual Studio][:admin]
[1:19:49][Change GEN_CREATE_ENTITY_PATTERN() to take a world_generator][:"entity system" :"procedural generation"]
[1:20:05][We can't compile][:admin]
[1:22:41][Declare world_generator before GEN_CREATE_ENTITY_PATTERN()][:"entity system" :"procedural generation"]
[1:23:17][Thoughts on compilers][:language :speech]
[1:25:05][@kwmar][This is awesome though, but work in progress Circle C++ Compiler[ref
site="Circle C++ Compiler"
url=https://www.circle-lang.org/] especially the extensions that should've been in C++ for a long time already][:language]
[1:25:23][@kwmar][It's a new C++ compiler][:language]
[1:25:26][@haeristudios][C++ itself is a mess][:language]
[1:25:55][Remove PlaceEntityAtP(), and the edit_grid versions of PlaceEntityAtTraversable() and PlaceEntityOnTraversable()]
[1:26:49][Write the edit grid out of SingleEnemyPattern()][:"entity system" :"procedural generation"]
[1:27:29][@haeristudios][@molly_rocket Have you already discussed Carbon and Go? Would be interesting to hear your take on those languages][:language]
[1:27:38][Write the edit grid out of SingleEnemyPattern() and SnakePattern(), augmenting world_generator with a *SimRegion][:"data structure" :"entity system" :"procedural generation"]
[1:30:41][Change TileAlreadyExists() and AppendTile() to take a v2s][:"entity system" :"procedural generation"]
[1:31:10][Write the edit grid out of TileSwitchPattern()][:"entity system" :"procedural generation"]
[1:34:02][Introduce tile_result for GetClosestEmptyTileTo(), FindRandomOpenTile() and FindAdjacentOpenTile() to return][:"entity system" :"procedural generation"]
[1:36:03][Update SingleEnemyPattern() and SnakePattern() to use our new tile_result][:"entity system" :"procedural generation"]
[1:38:05][Investigate our FindAdjacentOpenTile() compile error][:"entity system" :research]
[1:39:27][Make FindRandomOpenTile() and FindAdjacentOpenTile() NotImplemented][:"entity system"]
[1:40:04][Update CheckForJoiningPlayers() to use our new tile_result][:"entity system"]
[1:40:36][#if 0 the compile errors in BeginWorldChange()][:"entity system"]
[1:40:53][Introduce a v2s overload of operator+=()][:language]
[1:41:15][Update TileSwitchPattern() to use our new tile_result][:"entity system" :"procedural generation"]
[1:43:30][Consider making TileSwitchPattern() generate an index list for GenerateBlock() to use][:"entity system" :"procedural generation" :research]
[1:44:25][#if 0 TileSwitchPattern()][:"entity system" :"procedural generation"]
[1:44:45][Update NPCPattern() to use our new tile_result][:"entity system" :"procedural generation"]
[1:46:11][Fix compile errors in StandardLightingPattern() and remove CalcBasePForOffset()][:"entity system" :"procedural generation"]
[1:47:39][Remove Z from SetSize()][:"entity system" :"procedural generation"]
[1:48:10][Remove PlaceRoomInVolume(), PlaceRoom(), GetDeltaAlongAxisForCleanPlacement(), PlaceRoomAlongEdge(), GetRandomDirectionFromMask() and Layout()][:"entity system" :"procedural generation"]
[1:48:58][Switch the block rasterisation code in CreateWorld() to use v2s][:"entity system" :"procedural generation"]
[1:50:05][Switch rectangle2i to contain v2s Min and Max, and propagate this change][:"data structure"]
[1:55:24][@lamarrr___][What do you think about Rust?][:language]
[1:56:13][Switch HeroRoom in CreateWorld() to be a rectangle2i][:"entity system" :"procedural generation"]
[1:56:48][Switch GetCameraOffsetZForDim() to take a v2s][:camera]
[1:56:55][Switch GetMinZCenterP() and GetVolumeFromMinZ() to take a world_generator, not an edit_tile][:"entity system" :"procedural generation"]
[1:58:16][Port GenerateBlock() and WinMainCRTStartup() to our updated rectangle2i][:"entity system" :"procedural generation"]
[2:00:12][Rename Region to SimRegion in GenerateBlock(), and unset it at the end][:"entity system" :"procedural generation"]
[2:00:32][Call it there][:speech]
[/video]