69 lines
6.1 KiB
Plaintext
69 lines
6.1 KiB
Plaintext
[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Adding More Camera Behaviors" vod_platform=youtube id=4hDRp2VDeEU annotator=Miblo]
|
|
[0:08][Recap and set the stage for the day]
|
|
[1:48][Run the game to see how the camera is working and consider introducing the notion of camera movement while lingering]
|
|
[5:59][handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to move the camera gradually towards a target]
|
|
[7:15][A few words on the commonness in games of moving gradually to a target]
|
|
[8:12][handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() set the camera's target]
|
|
[10:05][Run the game to see no camera movement]
|
|
[10:37][handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to snap the camera to its target]
|
|
[14:05][Run the game to see the camera snap between locations]
|
|
[14:19][handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to gradually drive the camera from its current location to its target]
|
|
[14:45][Run the game to see that camera interpolation in action]
|
|
[15:05][Blackboard: Moving along a vector by a simplified rate]
|
|
[21:19][Run the game to show the constant velocity of the camera]
|
|
[21:47][Blackboard: Prentending that our velocity is encoded in the length of p]
|
|
[24:02][Blackboard: Computing instantaneous velocity, without acceleration, using a resolved rate equation]
|
|
[27:57][Run the game and determine to move the camera when lingering]
|
|
[28:33][handmade_entity.h: Add CameraBehavior to the entity struct]
|
|
[29:41][handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to handle camera behaviors]
|
|
[30:35][handmade_world_mode.cpp: Make AddStandardRoom() generate a CollisionVolume near the hole to trigger camera movement]
|
|
[34:22][Run the game and try triggering that CollisionVolume]
|
|
[34:48][handmade_sim_region.cpp: Introduce the notion of a SpecialCamera, and make UpdateCameraForEntityMovement() handle it on a timer]
|
|
[39:02][Run the game to try out the timed triggering]
|
|
[39:54][handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to zoom the SpecialCamera]
|
|
[44:24][Run the game to see that timed camera movement with zoom, and tweak the movement]
|
|
[46:58][handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() only trigger the camera movement when the hero is not moving]
|
|
[48:45][Run the game to try the camera, and determine to create a camera movement for the stairwell]
|
|
[50:26][handmade_world_mode.cpp: Prevent AddStandardRoom() from randomising the stair positions]
|
|
[58:25][Run the game to see our even stairwell, and tweak its dimensions]
|
|
[1:04:22][handmade_world_mode.cpp: Enable AddStandardRoom() to generate the stair tiles separately from the hole generation]
|
|
[1:06:33][Run the game to try out our wider stairwell, and tweak it]
|
|
[1:10:34][handmade_world_mode.cpp: Define the two StairsCam CollisionVolumes in AddStandardRoom()]
|
|
[1:17:31][Run the game and determine to create movement logic]
|
|
[1:18:42][handmade_sim_region.cpp: Implement some velocity constraints for the SpecialCamera in UpdateCameraForEntityMovement()]
|
|
[1:32:45][handmade_math.h: Introduce IsInRange()]
|
|
[1:33:39][handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to distinguish between a Player and an Area camera]
|
|
[1:35:25][Run the game to try out those cameras]
|
|
[1:36:03][handmade_entity.h: Introduce the notion of a CameraMinTime in entity]
|
|
[1:37:16][Run the game to try out the timers]
|
|
[1:37:37][handmade_world_mode.cpp: Set GeneralVelocityConstraints for the HoleCam and StairsCam]
|
|
[1:42:14][Run the game to try triggering the StairsCam, and investigate the snapping]
|
|
[1:48:53][handmade_world_mode.cpp: Determine to enable UpdateAndRenderWorld() to correctly update the camera position when changing sim region]
|
|
[1:57:17][Q&A]
|
|
[1:57:52][@sahfortv][There seems to be a second problem with StairCam 1 vs StairCam 2, i.e. you need to be moving even though you're on the first stair, so the collision areas are out a bit?]
|
|
[1:58:38][@rooctag][Why are the trees below smaller than the trees up top?]
|
|
[2:01:36][@butwhynot1][Are you going to experiment zooming by changing the FOV rather than changing the distance?]
|
|
[2:02:09][@macielda][Why use velocity and not, for instance, acceleration as a constraint parameter?]
|
|
[2:02:43][@m0re85][Why are the health bars flickering? Seems to be most noticeable when the hero is at standstill (the familiars move all the time and they don't flicker as much)]
|
|
[2:03:30][handmade_entity.cpp: Enable DrawHitpoints() to prevent Z-fighting]
|
|
[2:04:19][@radovik][Off-topic: Is it normal for a trivial code change to lead to a 250MB diff file? Is this optimization / MIPS architecture weirdness?]
|
|
[2:05:18][@rooctag][What do you want to fit in the camera view? Whole room, or some amount of tiles so camera movement per room is needed]
|
|
[2:05:53][@ahoward1024][Hey Casey, in the PushBitmap function of the handmade_render_group you have a shadowed v4 parameter Color that is masked by the u32 Color. Compiles as a warning (to an error) in VS 2015]
|
|
[2:07:21][handmade_render_group.cpp: Move in PushSetup() and transient_clip_rect from handmade_render_group.h[ref
|
|
site="GitHub"
|
|
page="HandmadeHero/cpp Issues"
|
|
url="https://github.com/HandmadeHero/cpp/issues"]]
|
|
[2:09:19][@teamrandb][Does the profiler still work? If not, what is a quick overview of the work that is needed to get it working again? And was it purely a display issue that we could not see it?]
|
|
[2:10:40][handmade_render_group.cpp: Fix GetClipRect() to correctly clip the profiler's text]
|
|
[2:15:39][handmade_render_group.cpp: Introduce GetScreenPoint() for GetClipRect() to call]
|
|
[2:19:11][Run the game to see that it's getting closer to working]
|
|
[2:20:03][Blackboard: Mapping screen dimensions to -1 to 1]
|
|
[2:22:18][handmade_opengl.cpp: Try disabling the ClipRect bounds setting]
|
|
[2:26:33][Run the game to see what's going on with the clipping]
|
|
[2:28:09][@teamrandb][Thanks Casey, appreciate you walking through it]
|
|
[2:28:44][handmade_render_group.cpp: Temporarily prevent the clipping from occuring and run the game to see that]
|
|
[2:29:41][@macielda][Can you click "Threads" on the Profile window?]
|
|
[2:31:15][@macielda][Is the mouse over text working now?]
|
|
[2:31:55][Sign off]
|
|
[/video]
|