is presently its sole maintainer,
You can support him:
Set the stage for the day with a few words on compiling for multiple platforms
Determine to make the debug system compatible with CLANG
handmade_debug_interface.h: Explain the RecordDebugEvent() and DEBUG_NAME macros
Describe our problem and demo string concatenation
Consult the GCC documentation (see Resouces, GCC Manual)
handmade.cpp: Demo the difference between GCC's and Visual Studio's implementations of string concatenation
Consider how to workaround the problem
Consider adding support for constant string concatenation to CLANG
handmade_debug.cpp: Reacquaint ourselves with the code
4coder feature request: A standard way to send a platform message to 4coder in order to jump to a file at a given line
handmade_debug.interface.h: Consider having two versions of UniqueFileCounterString__()
handmade_debug_interface.h: Add Name to the debug_event struct and make BEGIN_BLOCK and END_BLOCK take it
handmade_debug.cpp: Change DebugParseName() to take a ProperName
handmade_debug_interface.h: Make the TIMED_BLOCK macros take a Name
Run the game to see what that produces
Step through DebugParseName() and inspect what it does
handmade_debug.cpp: Make GetElementFromEvent() set a Name rather than NameStartsAt
handmade_debug.cpp: Make DEBUGInit() set the Name
Run the game and see what we're recording
handmade_debug_interface.h: Ensure that everyone is passing the correct information down
Inspect the assembly for the debug system during the cutscene rendering
Step through GetElementFromEvent() and StoreEvent() to see what they do
handmade_debug.cpp: Make DEBUGEventToText() use our newly passed Name and run the game to see what it produces
Determine that we've solved our problem and close the issue
Run the game and assess our situation
Determine to fix the camera tracking
Step into UpdateCameraForEntityMovement() and investigate why the player is never being found by EntityOverlapsRectangle()
handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() test on IsInRectangle() rather than EntityOverlapsRectangle()
Step into UpdateCameraForEntityMovement() and receive a positive result
handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() record the RoomDelta differently
Run the game and find that the camera is incorrectly positioned
handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() correctly set the RoomRelP, run the game and find that it's having trouble snapping back
handmade_sim_region.cpp: Change UpdateCameraForEntityMovement() to snap to the room centers
Run the game and find that the camera snaps correctly
handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to interpolate between camera positions
Run the game to see that it correctly interpolates between camera positions
Consider supporting differently sized rooms
handmade_world_mode.cpp: Make AddStandardRoom() take RadiusX and RadiusY in order to create variably sized rooms
Run the game to see that we're creating rooms as we were doing
handmade_world_mode.cpp: Enable AddStandardRoom() to align the rooms and support different radii
Run the game to see what that does
handmade_world_mode.cpp: Try changing the sizes of the rooms
Run the game to find that we have different sized rooms
handmade_world_mode.cpp: Enable AddStandardRoom() to know the sizes of abutting rooms
Run the game to see our variably sized rooms and consider making the camera zoom to correctly frame the rooms
zilarrezko Q: Hey Casey, is anyone planning on doing a more boiled down version of Handmade Hero, to take apart the game and give a breakdown of the aspect of each system in the project?
Miblo Q: Or make the camera pan within the room?
highergravity Q: Long time archive viewer, but first time live streamer! I have two pre-stream questions but I can never make the pre-stream time. 1) Do you have a strong opinion about why int *p is "superior style" than int* p, or are you impartial to whatever the developer prefers?
Demo: Pointer declaration style
highergravity Q: 2) Do compiler optimisations (-O2) guarantee that the same output is generated for time-independent code? That is, does the out-of-order processing ever introduce some nasty logic / contol flow bugs that -Od wouldn't?
mtsmox Q: You said you didn't want to use PRETTY_FUNCTION because that wouldn't work because of duplicate GUIDs. But the only place where PRETTY_FUNCTION would have been used is in TIMED_FUNCTION, which should never be used more then once in any function anyway. So not using DEBUG_NAME in TIMED_FUNCTION would solve the problem. All the other calls to TIMED_BLOCK_ would still work with DEBUG_NAME and thus use the COUNTER to be unique. So I think the extra field for the Name is really not necessary.
zennmystic Q: You talked about GCC / CLANG at the start. To be clear, you will be dropping visual studio at some point?
linike860 Q: What is your opinion on Minkowski Portal Refinement for collision detection and response? I feel it is much nicer as it gives you much of the collision information (normal, depth, etc.) without having to implement an entire separate algorithm like GJK does
zilarrezko Q: Have you tried -Ox for optimizations? I believe it gives even faster code (it's a fast hand for multiple optimization flags, I believe)
garryjohanson Q: I would like to cast my vote that we should do the slides some day
tukimitzu Q: How long do you think it will take for JAI to take over the C++ space in the game industry? It's not even out yet and I can already say that language is the best thing ever designed
ray_caster Q: Are you using SDL? If not and, assuming the answer isn't just "everything needs to be hand-made", is there another reason? What are your thoughts in general on SDL?
zennmystic Q: I guess what I was really asking was will you be dropping it?
azmreece Q: Do you have any thoughts on when to use multiple threads? Is the answer any more in depth than "when single-threaded isn't fast enough"?
tuxiak Q: Do you still have a TODO list like you used to? Could you show it? I'm still on Day ~110 with the videos
Wrap it up