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

88 lines
9.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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]