Front Cover
Real-Time Cameras: A Guide for Game Designers and Developers
Copyright Page
Contents
Foreword
Preface
Acknowledgements
About the Author
Introduction
PART 1 CORE CONCEPTS
CHAPTER 1 Game overview
Real-Time Applications
Game Systems
Game Update Loop
Input
Think
Move
Messaging
Camera
Post-Camera
Render
General Performance Issues
The Camera System
Controls
Scripting
Summary
CHAPTER 2 Camera fundamentals
Real-World Cameras
Usage and properties
Movie projection
Game Cameras
Basic terminology
Transitions
Camera constraints
Camera Presentation Styles
Orthographic presentation (2D)
Perspective presentation (3D)
Hybrid presentation (2.5D)
Camera Behaviors
Cinematic cameras
First person/point of view
Third person/detached view
Hybrid FP/TP cameras
Predictive versus reactive cameras
View Generation
View frustum
View transform
Projection transform
Player Controls
Summary
CHAPTER 3 Cinematography
Nomenclature
Standard cinematography terminology
Real-time cinematography terminology
Movie Cinematic Cameras
Camera motion
Camera orientation
Dynamically Generated Movies/Replay Cameras
Reproduction cameras/keyframed cameras
Scripted cameras
Dynamically generated
Replay camera effects
Scripting
Editing
Shot selection
Framing/composition
Transitions
Tools
Summary
PART 2 DESIGN PRINCIPLES
CHAPTER 4 Camera design
Interactive 2d Camera Systems
Desirable features
View determination
Cinematic 2D Camera Systems
Interactive 3D Camera Systems
Perspective projection
Parallel projection
Cinematic 3D Camera Systems
2.5D Camera Systems
Display Devices
Aspect ratio
Camera Design Process
Game play and technical requirements
Design process overview
Camera design questions
Production pipeline
Staffing requirements
Camera Design Guidelines
Summary
CHAPTER 5 Camera solutions
Game Genre Camera Solutions
First person shooter/adventure
Character/action adventure
Stealth
3D platform
Role-playing games/massively-multi-player online games
Scrolling
Sports
Racing games
Ground (or surface) vehicles
Real-time strategy
Flight simulation
Adventure
Puzzle/party games/board games
Fighting/close combat
Multi-Player Camera Solutions
Single-screen techniques
Split-screen techniques
Transitioning from full-screen to split-screen
Transitioning from split-screen to full-screen
Summary
CHAPTER 6 Camera scripting
What is Meant by Scripting?
Types of Scripting
Scripting languages
Event messaging
Hybrid scripting solutions
Script Objects
Object relationships
Scriptable game hints
Camera Scripting
Camera scripting methods
Camera control
Rules of thumb
Scripting Tools
World editor support
Communication between target platform and development PC
Message/event logging
Object properties debugging
Replay
Console window
Script Debugging
Summary
PART 3 CAMERA ENGINEERING
CHAPTER 7 Position and orientation
Coordinate Schemes
World space
Camera (or eye) space
Screen space
Local (or character) space
Object relative
Desired Position
First person camera positioning
Third person camera positioning
Desired Position Determination Methods
Stationary
Slaved/tracking
Path
Surface constrained
Volume constrained
Framing
Object-framing relative
Axis rotational/spindle
Common Position Problems
Orientation
Orientation representations
Desired Orientation Determination
Constant orientation
Tracking a target object or position
Look-at offset
Locked look-at position
Target object position prediction
Object framing
Idle wandering
Automated orientation control
Reorientation Methods
Applying rotations
Reorientation lag
Offsets
Smoothing and damping
Springs and PID controllers
Look-at position interpolation
Free-Look
First person free-look
Third person free-look
Player motion
Free-look orientation determination
Common orientation problems
Summary
CHAPTER 8 Navigation and occlusion
The Camera as an AI Game Object
Navigation Techniques
Dynamic navigation techniques
Pre-defined navigation techniques
Occlusion
What is considered occlusion?
Why and when does occlusion matter?
Occlusion determination
Occlusion prediction methodologies
Predicting the look-at position
Line of Sight
Resolving line of sight problems
Path generation
Avoiding loss of LOS
Fail-safes
Summary
CHAPTER 9 Motion and collision
Camera Movement Sequence
Character motion
Movement methods
Smoothing and damping techniques
Motion constraints
Player camera control
Camera position control schemes
Manipulation of camera orientation
Automated camera positioning and orientation
Debug camera control
Camera Collisions
The importance of camera collisions
Is collision testing necessary?
Collision determination
Collision geometry design
Collision resolution
Disabling collision detection
Avoiding camera collisions
CHAPTER 10 Camera mathematics
Basic Camera Math
Camera position
Camera orientation
Camera motion
Rendering
General camera math
Camera math problems and fixes
Common Mathematical Techniques
Look-at
Roll removal
Twist reduction
World space to screen space conversion
Screen space to camera/world space conversion
FOV conversion
Quaternions
Bump and Ease Functions
Exponentials
Proportional
Spherical linear interpolation
Transcendentals
Piecewise spline curve
springs
Digital Filters
Low pass
High pass
Band
Finite impulse response
Infinite impulse response
Spline Curves
Camera spline usage
Cubic polynomials
Spline types
Continuity
Spline definitions
Spline evaluation
Control point generation
Parameterized arc length
Total spline length
Closest position
Spline editing
Interpolation
What exactly is interpolation?
Camera Property Interpolation
Position interpolation
Orientation interpolation
FOV interpolation
Viewport Interpolation
Player Control Interpolation
First person cameras
Third person cameras
Interpolation Choices
Linear interpolation
Piecewise interpolation
Methods of Interpolation
Linear time interpolation
Parametric functions
Spherical linear interpolation
Potential Interpolation Problems
Aesthetic problems
Mathematical problems
Interruption of Interpolation
Transitions
Position during transitions
Orientation during transitions
Camera Math Problems
Floating-point precision
Epsilon usage
Compiler differences
Hardware FPU differences
Vector normalization
Matrix concatenation floating-point drift
Periodic Camera Mathematical Fixes
CHAPTER 11 Implementation
Game Engine Architecture
Game update loop
Game system managers
Delta time
Input processing
Camera System Architecture
Viewport manager
Render manager
Camera manager
Camera update loop
Hint manager
Shake manager
Game Cameras
Inherited camera behaviors
Component-based camera behaviors
Cinematic cameras
Debug camera
Scripting System Implementation
Camera script objects
Ordering of scripting logic
Messaging
Prioritization
Interpolation
Performance Considerations
Amortization
Preprocessing
Tools Support
World editor
Camera collision mesh
Camera Debugging Techniques
Interactive debugging
Data logging
Game replaying
Summary
Appendix A: Glossary
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z
Appendix B: Extras
References and Bibliography
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z