[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Debugging Cutscene Z and Traversable Creation" vod_platform=youtube id=KAO3f4oaqWM annotator=Miblo] [0:09][Reflect on our recent dynamically allocated arena upgrade] [2:54][todo.txt: Consult the TODO list] [4:52][Consider upgrading to a traditional 3D pipeline] [7:50][Reflect briefly on the series thus far] [10:45][Build and run and investigate what's happening with the cutscene] [14:36][handmade_cutscene.cpp: Make RenderLayeredScene() set the FloorZ, run the game and step through the code] [16:37][handmade_cutscene.cpp: Try flipping that computation of the FloorZ and run the game to see if that's the correct thing to do] [20:30][Step into GetRenderEntityBasisP() and inspect the P and OffsetP] [21:34][handmade_cutscene.cpp: Make RenderLayeredScene() set the OffsetP.z as well as the FloorZ, run the game and see that the cutscene has been restored] [23:53][Run the game and demo the bug with the traversables in the initial creation phase] [25:00][handmade_sim_region.cpp: Consider how entities are created and packed] [26:53][Run the game, step in to AddWall() and inspect StandingOn] [28:15][handmade_world_mode.cpp: Make AddStandardRoom() set the StandingOn.Entity.Ptr, run the game and see that all is fixed] [30:11][Consider how to clean up where arenas are used and how] [35:53][Look at all the places a memory_arena is used] [40:10][Run the game to verify that we're not leaking memory, and leave the arena where it is] [42:20][Blackboard: Overlapping Sim] [46:37][build.bat: Run in O2 and consult the profiler to gauge the cost of the simulation] [50:02][handmade_world_mode.cpp: Make PlayWorld() create more rooms, run the game and consider implementing a debug camera that shows multiple sim regions] [52:27][handmade_world_mode.cpp: Introduce UpdateAndRenderSimRegion() to do some of the work of UpdateAndRenderWorld()] [1:01:52][Q&A][:speech] [1:02:09][Run the game and try out the boost pad] [1:02:41][hadnmade_world_mode.cpp: Make AddStandardRoom() move the boosters down one tile, run the game and check it out] [1:04:33][@longboolean][Will the switch to 3D affect the artwork for Handmade Hero?] [1:05:48][@uliori][Can I ask an off-topic question?] [1:07:02][@uliori][Hi, I am way behind you in the series, but you talked about "mixin". I don’t know if you did this yet, but can you please explain it?] [1:11:44][@macielda][Are you working on entity interactions soon (like fire weapons vs ice monster, poisonous arrows and stuff like that)?] [1:11:55][@tinyconstruct][(Very off-topic) Can you think of the last time you took a dynamic programming approach to a problem (e.g. shortest edit distance, optimal BSTs, etc)? DP algorithms are allegedly a common interview topic, despite how silly that seems] [1:13:36][Blackboard: Divide & Conquer vs Dynamic Programming] [1:16:04][handmade_render.cpp: Describe RecursiveFrontToBack() as an example of dynamic programming] [1:18:26][@Miblo][How about movable boosters, that you can set up to chain-boost you?] [1:18:54][Consider possibilities for dynamic programming] [1:20:28][@dsjimenez][So part of the dynamic programming question mentioned the coding interview. Do you do one for new hires?] [1:20:57][On asking people about problems] [1:24:47][Chris Hecker's tech interviewing method] [1:30:19][On putting people on their own turf] [1:33:14][@mvandevander][Is there any time that you've talked about deep learning in depth? Also wondering if you've thought about it in terms of IF parsing problems] [1:33:45][@teryrords][Speaking of past jobs, would you rather see a job at a Java shop (industry experience) vs. a local college's faculty for High Performance Computing (academia)?] [1:36:11][@dsjimenez][Great interview answer, thanks. The only issue I've had with that is candidates who have no projects they're proud enough to really talk about, and I feel like I'm judging them unfairly for not having the same interest for programming outside of work / class] [1:37:42][@longboolean][What are some things that can cause a smart individual who has a good understanding of programming to not be productive, and what can be done to eliminate these causes?] [1:40:18][@roam00010011][But people do come with big claims on their resume, you got to at least ask about pointer math if you're hiring a C expert] [1:41:46][@chochmah][Who wouldn't know how to reverse a linked list? You can do that on the spot] [1:44:37][@jkugelman][Often I have a hard time digging in to people's past projects because they throw out tons of acronyms, jargon, frameworks, etc., that I'm not familiar with. Maybe they've worked in a completely different industry, like medical or defense, and their work context is totally unfamiliar to me. How do you handle that?] [1:46:34][@sssmcgrath][I like this interview methodology. Maybe in a chat stream one day you could mock interview someone (me?) as a demonstration] [1:47:10][@mvandevander][I think we need to title it "Casey Muratori's Enhanced Interview Techniques"] [1:47:43][@sssmcgrath][I'll do it another day if you want (can't tonight)!] [1:48:22][@superjercom][This is actually already how I do interviews. The problem is people tend to be totally blindsided by being asked about their own experience] [1:49:34][On how this technique is impervious to hacking][:speech] [1:52:08][Gotta go and reboot the machine][:speech] [/video]