- Browse
- » Game programming in C++: creating 3D games
Game programming in C++: creating 3D games
Author
Publisher
Addison-Wesley
Publication Date
[2018]
Language
English
Description
Loading Description...
Table of Contents
From the Book
Machine generated contents note: Setting Up a Development Environment
Microsoft Windows
Apple macOS
Getting This Book's Source Code
Beyond the C++ Standard Library
The Game Loop and Game Class
Anatomy of a Frame
Implementing a Skeleton Game Class
Main Function
Basic Input Processing
Basic 2D Graphics
The Color Buffer
Double Buffering
Implementing Basic 2D Graphics
Drawing Walls, a Ball, and a Paddle
Updating the Game
Real Time and Game Time
Logic as a Function of Delta Time
Updating the Paddle's Position
Updating the Ball's Position
Game Project
Summary
Additional Reading
Exercises
Exercise 1.1
Exercise 1.2
Game Objects
Types of Game Objects
Game Object Models
Integrating Game Objects into the Game Loop
Sprites
Loading Image Files
Drawing Sprites
Animating Sprites
Scrolling Backgrounds
Game Project
Summary
Additional Reading
Exercises
Exercise 2.1
Note continued: Exercise 2.2
Exercise 2.3
Vectors
Getting a Vector between Two Points: Subtraction
Scaling a Vector: Scalar Multiplication
Combining Two Vectors: Addition
Determining a Distance: Length
Determining Directions: Unit Vectors and Normalization
Converting from an Angle to a Forward Vector
Converting a Forward Vector to an Angle: Arctangent
Determining the Angle between Two Vectors: Dot Product
Calculating a Normal: Cross Product
Basic Movement
Creating a Basic MoveComponent Class
Creating an InputComponent Class
Newtonian Physics
Linear Mechanics Overview
Computing Positions with Euler Integration
Issues with Variable Time Steps
Basic Collision Detection
Circle-Versus-Circle Intersection
Creating a CircleComponent Subclass
Game Project
Summary
Additional Reading
Exercises
Exercise 3.1
Exercise 3.2
Exercise 3.3
State Machine Behaviors
Designing a State Machine
Note continued: Basic State Machine Implementation
States as Classes
Pathfinding
Graphs
Breadth-First Search
Heuristics
Greedy Best-First Search
A Search
Dijkstra's Algorithm
Following a Path
Other Graph Representations
Game Trees
Minimax
Handling Incomplete Game Trees
Alpha-Beta Pruning
Game Project
Summary
Additional Reading
Exercises
Exercise 4.1
Exercise 4.2
Initializing OpenGL
Setting Up the OpenGL Window
The OpenGL Context and Initializing GLEW
Rendering a Frame
Triangle Basics
Why Polygons?
Normalized Device Coordinates
Vertex and Index Buffers
Shaders
Vertex Shaders
Fragment Shaders
Writing Basic Shaders
Loading Shaders
Drawing Triangles
Transformation Basics
Object Space
World Space
Transforming to World Space
Matrices and Transformations
Matrix Multiplication
Transforming a Point by Using a Matrix
Note continued: Transforming to World Space, Revisited
Adding World Transforms to Actor
Transforming from World Space to Clip Space
Updating Shaders to Use Transform Matrices
Texture Mapping
Loading the Texture
Updating the Vertex Format
Updating the Shaders
Alpha Blending
Game Project
Summary
Additional Reading
Exercises
Exercise 5.1
Exercise 5.2
The Actor Transform in 3D
Transform Matrices for 3D
Euler Angles
Quaternions
New Actor Transform in Action
Loading 3D Models
Choosing a Model Format
Updating the Vertex Attributes
Loading a gpmesh File
Drawing 3D Meshes
Transforming to Clip Space, Revisited
Out with the Painter's Algorithm, in with Z-Buffering
The BasicMesh Shader
The MeshComponent Class
Lighting
Revisiting Vertex Attributes
Types of Lights
Phong Reflection Model
Implementing Lighting
Game Project
Summary
Additional Reading
Exercises
Exercise 6.1
Note continued: Exercise 6.2
Bootstrapping Audio
FMOD
Installing FMOD
Creating an Audio System
Banks and Events
The SoundEvent Class
3D Positional Audio
Setting Up a Basic Listener
Adding Positional Functionality to SoundEvent
Creating an AudioComponent to Associate Actors
with Sound Events
The Listener in a Third-Person Game
The Doppler Effect
Mixing and Effects
Buses
Snapshots
Occlusion
Game Project
Summary
Additional Reading
Exercises
Exercise 7.1
Exercise 7.2
Input Devices
Polling
Positive and Negative Edges
Events
Basic InputSystem Architecture
Keyboard Input
Mouse Input
Buttons and Position
Relative Motion
Scroll Wheel
Controller Input
Enabling a Single Controller
Buttons
Analog Sticks and Triggers
Filtering Analog Sticks in Two Dimensions
Supporting Multiple Controllers
Input Mappings
Game Project
Summary
Additional Reading
Note continued: Exercises
Exercise 8.1
Exercise 8.2
First-Person Camera
Basic First-Person Movement
Camera (Without Pitch)
Adding Pitch
First-Person Model
Follow Camera
Basic Follow Camera
Adding a Spring
Orbit Camera
Spline Camera
Unprojection
Game Project
Summary
Additional Reading
Exercises
Exercise 9.1
Exercise 9.2
Geometric Types
Line Segments
Planes
Bounding Volumes
Intersection Tests
Contains Point Tests
Bounding Volume Tests
Line Segment Tests
Dynamic Objects
Adding Collisions to Game Code
The BoxComponent Class
The PhysWorld Class
Ball Collisions with SegmentCast
Testing Box Collisions in PhysWorld
Player Collision Against the Walls
Game Project
Summary
Additional Reading
Exercises
Exercise 10.1
Exercise 10.2
Exercise 10.3
Font Rendering
UI Screens
The UI Screen Stack
The Pause Menu
Buttons
Dialog Boxes
HUD Elements
Note continued: Adding an Aiming Reticule
Adding Radar
Localization
Working with Unicode
Adding a Text Map
Other Localization Concerns
Supporting Multiple Resolutions
Game Project
Summary
Additional Reading
Exercises
Exercise 11.1
Exercise 11.2
Exercise 11.3
Foundations of Skeletal Animation
Skeletons and Poses
The Inverse Bind Pose Matrix
Animation Data
Skinning
Implementing Skeletal Animation
Drawing with Skinning Vertex Attributes
Loading a Skeleton
Loading the Animation Data
The Skinning Vertex Shader
Updating Animations
Game Project
Summary
Additional Reading
Exercises
Exercise 12.1
Exercise 12.2
Improving Texture Quality
Texture Sampling, Revisited
Mipmapping
Anisotropic Filtering
Rendering to Textures
Creating the Texture
Creating a Framebuffer Object
Rendering to a Framebuffer Object
Drawing the Mirror Texture in the HUD
Deferred Shading
Note continued: Creating a G-Buffer Class
Writing to the G-buffer
Global Lighting
Adding Point Lights
Improvements and Issues
Game Project
Summary
Additional Reading
Exercises
Exercise 13.1
Exercise 13.2
Level File Loading
Loading Global Properties
Loading Actors
Loading Components
Saving Level Files
Saving Global Properties
Saving Actors and Components
Binary Data
Saving a Binary Mesh File
Loading a Binary Mesh File
Game Project
Summary
Additional Reading
Exercises
Exercise 14.1
Exercise 14.2
Excerpt
Loading Excerpt...
Author Notes
Loading Author Notes...
More Details
ISBN
9780134597201
9780134598208
9780134598185
9780134598208
9780134598185
Staff View
Loading Staff View.

