Adding More Camera Behaviors
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
1:48Run the game to see how the camera is working and consider introducing the notion of camera movement while lingering
1:48Run the game to see how the camera is working and consider introducing the notion of camera movement while lingering
1:48Run the game to see how the camera is working and consider introducing the notion of camera movement while lingering
5:59handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to move the camera gradually towards a target
5:59handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to move the camera gradually towards a target
5:59handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to move the camera gradually towards a target
7:15A few words on the commonness in games of moving gradually to a target
7:15A few words on the commonness in games of moving gradually to a target
7:15A few words on the commonness in games of moving gradually to a target
8:12handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() set the camera's target
8:12handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() set the camera's target
8:12handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() set the camera's target
10:05Run the game to see no camera movement
10:05Run the game to see no camera movement
10:05Run the game to see no camera movement
10:37handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to snap the camera to its target
10:37handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to snap the camera to its target
10:37handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to snap the camera to its target
14:05Run the game to see the camera snap between locations
14:05Run the game to see the camera snap between locations
14:05Run the game to see the camera snap between locations
14:19handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to gradually drive the camera from its current location to its target
14:19handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to gradually drive the camera from its current location to its target
14:19handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to gradually drive the camera from its current location to its target
14:45Run the game to see that camera interpolation in action
14:45Run the game to see that camera interpolation in action
14:45Run the game to see that camera interpolation in action
15:05Blackboard: Moving along a vector by a simplified rate
15:05Blackboard: Moving along a vector by a simplified rate
15:05Blackboard: Moving along a vector by a simplified rate
21:19Run the game to show the constant velocity of the camera
21:19Run the game to show the constant velocity of the camera
21:19Run the game to show the constant velocity of the camera
21:47Blackboard: Prentending that our velocity is encoded in the length of p
21:47Blackboard: Prentending that our velocity is encoded in the length of p
21:47Blackboard: Prentending that our velocity is encoded in the length of p
24:02Blackboard: Computing instantaneous velocity, without acceleration, using a resolved rate equation
24:02Blackboard: Computing instantaneous velocity, without acceleration, using a resolved rate equation
24:02Blackboard: Computing instantaneous velocity, without acceleration, using a resolved rate equation
27:57Run the game and determine to move the camera when lingering
27:57Run the game and determine to move the camera when lingering
27:57Run the game and determine to move the camera when lingering
28:33handmade_entity.h: Add CameraBehavior to the entity struct
28:33handmade_entity.h: Add CameraBehavior to the entity struct
28:33handmade_entity.h: Add CameraBehavior to the entity struct
29:41handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to handle camera behaviors
29:41handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to handle camera behaviors
29:41handmade_sim_region.cpp: Begin to enable UpdateCameraForEntityMovement() to handle camera behaviors
30:35handmade_world_mode.cpp: Make AddStandardRoom() generate a CollisionVolume near the hole to trigger camera movement
30:35handmade_world_mode.cpp: Make AddStandardRoom() generate a CollisionVolume near the hole to trigger camera movement
30:35handmade_world_mode.cpp: Make AddStandardRoom() generate a CollisionVolume near the hole to trigger camera movement
34:22Run the game and try triggering that CollisionVolume
34:22Run the game and try triggering that CollisionVolume
34:22Run the game and try triggering that CollisionVolume
34:48handmade_sim_region.cpp: Introduce the notion of a SpecialCamera, and make UpdateCameraForEntityMovement() handle it on a timer
34:48handmade_sim_region.cpp: Introduce the notion of a SpecialCamera, and make UpdateCameraForEntityMovement() handle it on a timer
34:48handmade_sim_region.cpp: Introduce the notion of a SpecialCamera, and make UpdateCameraForEntityMovement() handle it on a timer
39:02Run the game to try out the timed triggering
39:02Run the game to try out the timed triggering
39:02Run the game to try out the timed triggering
39:54handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to zoom the SpecialCamera
39:54handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to zoom the SpecialCamera
39:54handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to zoom the SpecialCamera
44:24Run the game to see that timed camera movement with zoom, and tweak the movement
44:24Run the game to see that timed camera movement with zoom, and tweak the movement
44:24Run the game to see that timed camera movement with zoom, and tweak the movement
46:58handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() only trigger the camera movement when the hero is not moving
46:58handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() only trigger the camera movement when the hero is not moving
46:58handmade_sim_region.cpp: Make UpdateCameraForEntityMovement() only trigger the camera movement when the hero is not moving
48:45Run the game to try the camera, and determine to create a camera movement for the stairwell
48:45Run the game to try the camera, and determine to create a camera movement for the stairwell
48:45Run the game to try the camera, and determine to create a camera movement for the stairwell
50:26handmade_world_mode.cpp: Prevent AddStandardRoom() from randomising the stair positions
50:26handmade_world_mode.cpp: Prevent AddStandardRoom() from randomising the stair positions
50:26handmade_world_mode.cpp: Prevent AddStandardRoom() from randomising the stair positions
58:25Run the game to see our even stairwell, and tweak its dimensions
58:25Run the game to see our even stairwell, and tweak its dimensions
58:25Run the game to see our even stairwell, and tweak its dimensions
1:04:22handmade_world_mode.cpp: Enable AddStandardRoom() to generate the stair tiles separately from the hole generation
1:04:22handmade_world_mode.cpp: Enable AddStandardRoom() to generate the stair tiles separately from the hole generation
1:04:22handmade_world_mode.cpp: Enable AddStandardRoom() to generate the stair tiles separately from the hole generation
1:06:33Run the game to try out our wider stairwell, and tweak it
1:06:33Run the game to try out our wider stairwell, and tweak it
1:06:33Run the game to try out our wider stairwell, and tweak it
1:10:34handmade_world_mode.cpp: Define the two StairsCam CollisionVolumes in AddStandardRoom()
1:10:34handmade_world_mode.cpp: Define the two StairsCam CollisionVolumes in AddStandardRoom()
1:10:34handmade_world_mode.cpp: Define the two StairsCam CollisionVolumes in AddStandardRoom()
1:17:31Run the game and determine to create movement logic
1:17:31Run the game and determine to create movement logic
1:17:31Run the game and determine to create movement logic
1:18:42handmade_sim_region.cpp: Implement some velocity constraints for the SpecialCamera in UpdateCameraForEntityMovement()
1:18:42handmade_sim_region.cpp: Implement some velocity constraints for the SpecialCamera in UpdateCameraForEntityMovement()
1:18:42handmade_sim_region.cpp: Implement some velocity constraints for the SpecialCamera in UpdateCameraForEntityMovement()
1:32:45handmade_math.h: Introduce IsInRange()
1:32:45handmade_math.h: Introduce IsInRange()
1:32:45handmade_math.h: Introduce IsInRange()
1:33:39handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to distinguish between a Player and an Area camera
1:33:39handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to distinguish between a Player and an Area camera
1:33:39handmade_sim_region.cpp: Enable UpdateCameraForEntityMovement() to distinguish between a Player and an Area camera
1:35:25Run the game to try out those cameras
1:35:25Run the game to try out those cameras
1:35:25Run the game to try out those cameras
1:36:03handmade_entity.h: Introduce the notion of a CameraMinTime in entity
1:36:03handmade_entity.h: Introduce the notion of a CameraMinTime in entity
1:36:03handmade_entity.h: Introduce the notion of a CameraMinTime in entity
1:37:16Run the game to try out the timers
1:37:16Run the game to try out the timers
1:37:16Run the game to try out the timers
1:37:37handmade_world_mode.cpp: Set GeneralVelocityConstraints for the HoleCam and StairsCam
1:37:37handmade_world_mode.cpp: Set GeneralVelocityConstraints for the HoleCam and StairsCam
1:37:37handmade_world_mode.cpp: Set GeneralVelocityConstraints for the HoleCam and StairsCam
1:42:14Run the game to try triggering the StairsCam, and investigate the snapping
1:42:14Run the game to try triggering the StairsCam, and investigate the snapping
1:42:14Run the game to try triggering the StairsCam, and investigate the snapping
1:48:53handmade_world_mode.cpp: Determine to enable UpdateAndRenderWorld() to correctly update the camera position when changing sim region
1:48:53handmade_world_mode.cpp: Determine to enable UpdateAndRenderWorld() to correctly update the camera position when changing sim region
1:48:53handmade_world_mode.cpp: Determine to enable UpdateAndRenderWorld() to correctly update the camera position when changing sim region
1:57:17Q&A
🗩
1:57:17Q&A
🗩
1:57:17Q&A
🗩
1:57:52sahfortv 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:57:52sahfortv 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:57:52sahfortv 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:38rooctag Why are the trees below smaller than the trees up top?
🗪
1:58:38rooctag Why are the trees below smaller than the trees up top?
🗪
1:58:38rooctag Why are the trees below smaller than the trees up top?
🗪
2:01:36butwhynot1 Are you going to experiment zooming by changing the FOV rather than changing the distance?
🗪
2:01:36butwhynot1 Are you going to experiment zooming by changing the FOV rather than changing the distance?
🗪
2:01:36butwhynot1 Are you going to experiment zooming by changing the FOV rather than changing the distance?
🗪
2:02:09macielda Why use velocity and not, for instance, acceleration as a constraint parameter?
🗪
2:02:09macielda Why use velocity and not, for instance, acceleration as a constraint parameter?
🗪
2:02:09macielda Why use velocity and not, for instance, acceleration as a constraint parameter?
🗪
2:02:43m0re85 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:02:43m0re85 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:02:43m0re85 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:30handmade_entity.cpp: Enable DrawHitpoints() to prevent Z-fighting
2:03:30handmade_entity.cpp: Enable DrawHitpoints() to prevent Z-fighting
2:03:30handmade_entity.cpp: Enable DrawHitpoints() to prevent Z-fighting
2:04:19radovik Off-topic: Is it normal for a trivial code change to lead to a 250MB diff file? Is this optimization / MIPS architecture weirdness?
🗪
2:04:19radovik Off-topic: Is it normal for a trivial code change to lead to a 250MB diff file? Is this optimization / MIPS architecture weirdness?
🗪
2:04:19radovik 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:18rooctag 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:18rooctag 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:18rooctag 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:53ahoward1024 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:05:53ahoward1024 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:05:53ahoward1024 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:21handmade_render_group.cpp: Move in PushSetup() and transient_clip_rect from handmade_render_group.h1
2:07:21handmade_render_group.cpp: Move in PushSetup() and transient_clip_rect from handmade_render_group.h1
2:07:21handmade_render_group.cpp: Move in PushSetup() and transient_clip_rect from handmade_render_group.h1
2:09:19teamrandb 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:09:19teamrandb 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:09:19teamrandb 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:40handmade_render_group.cpp: Fix GetClipRect() to correctly clip the profiler's text
2:10:40handmade_render_group.cpp: Fix GetClipRect() to correctly clip the profiler's text
2:10:40handmade_render_group.cpp: Fix GetClipRect() to correctly clip the profiler's text
2:15:39handmade_render_group.cpp: Introduce GetScreenPoint() for GetClipRect() to call
2:15:39handmade_render_group.cpp: Introduce GetScreenPoint() for GetClipRect() to call
2:15:39handmade_render_group.cpp: Introduce GetScreenPoint() for GetClipRect() to call
2:19:11Run the game to see that it's getting closer to working
2:19:11Run the game to see that it's getting closer to working
2:19:11Run the game to see that it's getting closer to working
2:20:03Blackboard: Mapping screen dimensions to -1 to 1
2:20:03Blackboard: Mapping screen dimensions to -1 to 1
2:20:03Blackboard: Mapping screen dimensions to -1 to 1
2:22:18handmade_opengl.cpp: Try disabling the ClipRect bounds setting
2:22:18handmade_opengl.cpp: Try disabling the ClipRect bounds setting
2:22:18handmade_opengl.cpp: Try disabling the ClipRect bounds setting
2:26:33Run the game to see what's going on with the clipping
2:26:33Run the game to see what's going on with the clipping
2:26:33Run the game to see what's going on with the clipping
2:28:09teamrandb Thanks Casey, appreciate you walking through it
🗪
2:28:09teamrandb Thanks Casey, appreciate you walking through it
🗪
2:28:09teamrandb Thanks Casey, appreciate you walking through it
🗪
2:28:44handmade_render_group.cpp: Temporarily prevent the clipping from occuring and run the game to see that
2:28:44handmade_render_group.cpp: Temporarily prevent the clipping from occuring and run the game to see that
2:28:44handmade_render_group.cpp: Temporarily prevent the clipping from occuring and run the game to see that
2:29:41macielda Can you click "Threads" on the Profile window?
🗪
2:29:41macielda Can you click "Threads" on the Profile window?
🗪
2:29:41macielda Can you click "Threads" on the Profile window?
🗪
2:31:15macielda Is the mouse over text working now?
🗪
2:31:15macielda Is the mouse over text working now?
🗪
2:31:15macielda Is the mouse over text working now?
🗪
2:31:55Sign off
🗩
2:31:55Sign off
🗩
2:31:55Sign off
🗩