[video output=day287 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Adding Brains" vod_platform=youtube id=gwtSqvoxU14 annotator=Miblo] [0:56][Blackboard: Dynamically controlling snake-like multi-segment entities] [6:55][Blackboard: Controller templates] [14:42][4coder: Reproduce the pane creation bug] [17:03][handmade_entity.h: Remove entity_relationship and ReferenceIsValid and, from entity, PairedEntityCount and PairedEntities] [18:14][handmade_entity.h: Introduce entity_controller_type, entity_controller_slot and entity_controller_id, and add one of each to entity] [22:17][handmade_entity.h: Consider how this system will replace entity_type] [24:59][handmade_entity.h: Rename entity_controller_* to brain_*] [25:44][handmade_sim_region.h: Introduce brain_hash and add an array of them to sim_region] [30:30][handmade_world.cpp: Rename PackEntityReferenceArray to PackEntityReference and make it work on only one entity] [36:58][handmade_world.cpp: Make PackTraversableReference and PackEntityIntoChunk take a sim_region] [37:49][handmade_entity.h: Introduce IsDeleted] [38:55][handmade_sim_region.cpp: Move some functionality from LoadEntityReference to GetEntityByID and make it call the latter] [40:32][handmade_sim_region.cpp: Make PackEntityIntoWorld take a sim_region] [41:45][handmade_world_mode.cpp: Remove BodyRefs and HeadRefs from AddPlayer, and initialise a brain_id and some brain data for the Body and Head] [44:08][handmade_world_mode.cpp: Introduce AddBrain] [46:46][handmade_sim_region.h: Add MaxBrainCount, BrainCount and *Brains to sim_region] [47:00][handmade_world_mode.cpp: Excitedly make UpdateAndRenderWorld loop through the brains and do the brain logic] [49:01][handmade_sim_region.h: Add a brain_type to brain] [49:22][handmade_world_mode.cpp: #if 0 out the PairedEntities code for now] [50:46][Run the game with our disabled controllers] [51:19][handmade_world_mode.cpp: Loft the hero head controller code up into Brain_Hero and begin writing the brain logic] [53:14][4coder: Bright white bug] [55:12][handmade_sim_region.h: Add a brain_id to brain] [56:10][handmade.h: Change entity_id to brain_id in controlled_hero] [57:05][handmade_world_mode.cpp: Fix compile errors] [1:01:07][handmade_world_mode.cpp: Make AddPlayer return a brain_id] [1:02:02][Q&A][:speech] [1:04:16][@Miblo][I must have missed the bit about the snake. What is that?] [1:05:47][@nbm][It's actually a millipede] [1:06:10][@unrealdesign][How long do you hope this will go on for? Do you see yourself doing different game once this is finished?] [1:07:23][@lm4rcu5l][You mentioned you'd spend four hours cleaning code. Why not have a Handmade Hero day once every other month or so and deal with problems like that?] [1:07:43][@ezysigh][About the one entity per grid spot checking, how will you handle leaving a spot just before a monster lands there? Right now it's binary. Do you plan to add a fuzziness as you step off a square onto another one and a monster lands on your spot?] [1:09:53][@guitarm87][Someday I will have to ask you about how to think when representing data in a program. I understand structs, enums, arrays and such. But what regulates when to use which?] [1:14:06][@longboolean][So the idea is to have the entity system both be able to support groups of entities that change from one into another (like a monster that mimics other objects), and entities that when separated from the group can take action on their own (like a necromancer resurrecting a ripped off arm)?] [1:15:45][@lachieds][Slightly off-topic: On average how many hours a day do you work on 1935?] [1:16:28][@paganheart][On the note of UML, how much / often would you say you deal with that at work, if at all? In the gamedev industry, anyway] [1:16:42][@guitarm87][Good answer, I understand what you mean. Just do it enough and you'll see what works. Experience. Thanks!] [1:16:50][@elyasm][Have you thought about using Vulkan? It is super low-level access to hardware] [1:17:11][Wrap it up][:speech] [1:18:14][Announce AndrewJDR's annotated_cpp repository[ref site="GitHub" page="HandmadeHero/annotated_cpp" url="https://github.com/HandmadeHero/annotated_cpp"]][:research] [/video]