Author(s): Robert Madsen; Stephen Madsen
Publisher: Packt Publishing
Year: 2016
Language: English
Pages: 340
Cover
Copyright
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Table of Contents
Preface
Chapter 1: Building the Foundation
Introducing the development environment
A quick look at Visual Studio
Start screen
The Solution Explorer panel
The Standard Toolbar panel
The code window
The output window
Starting your project
The game loop
The game structure
Initialization
The game loop
Shutdown
Creating the game structure
Port of access
The Windows message loop
Introducing OpenGL
What is OpenGL?
The other GL
Downloading OpenGL
Adding OpenGL to the project
Linking to the OpenGL library
Summary
Chapter 2: Your Point of View
Plotting your revenge
The OpenGL coordinate system
Making your point
Understanding the code
Running the program
Stretching your point
Getting primitive
A triangle by any other name
A primitive example
From triangles to models
Introducing textures
Using textures to fill the triangles
A matter of reference
Hanging out in the quad
Coding the quad
Rendering a texture
Loading the texture
Texture wrapping
Creating a textured quad
Putting the pieces together
Summary
Chapter 3: A Matter of Character
Spritely speaking
Sprites versus non-sprites
Flipbook animation
Framed animation
Creating sprites
Working with PNGs
Linking to the SOIL library
Including the SOIL header file
Opening an image file
Coding a sprite class
Creating sprite frames
Saving each frame
Loading a sprite from individual textures
Creating a sprite sheet
Loading a sprite sheet
Loading our sprites
Rendering
Adding a render to the game loop
Implementing the main Render function
Implementing Render in the Sprite class
UV mapping
One more detail
A moving example
Adding update to the game loop
Implementing the main Update call
Implementing Update in the Sprite class
Character movement
Using delta time
Calculating delta time
Flipping
Scrolling the background
Using an atlas
Summary
Chapter 4: Control Freak
A penny for your input
The keyboard input
Using the mouse
Touch
Other inputs
Someone is listening
The WndProc event listener
Handling the message queue
Handling mouse and keyboard inputs
Creating the Input class
Virtual key codes
Querying for input
Implementing the Input class
Adding input to the game loop
Processing our input
Changes to the Sprite class
Graphical User Interface
Creating a button
Enhancing the Input class
Adding UI elements to the list
Checking each UI element
Pushing your buttons
Adding our pauseButton
State management
Creating a state manager
Pausing the game
Summary
Chapter 5: Hit and Run
Out of bounds!
Getting anchored
Collision rectangles
Embedding
Fixing the background
Collideables
Ready to score
A friend indeed
Time to spawn
Circular collision detection
The Pythagorean Theorem
Adding the circular collision code
Why use circular collision detection?
Wiring in the collision detection
Rectangular collision detection
The enemy within
Spawning the enemy
Adding the rectangular collision code
Wiring continued
Summary
Chapter 6: Polishing the Silver
The state of the game
State machines
Why do we need a state machine?
Planning for state
Defining the new state
Implementing the state machine
Making a splash
Creating the splash screen
Defining the splash screen
Loading our resources
What's on the menu?
Creating the menu
Defining the menu buttons
Getting some credit
Creating the credits screen
Getting back to the main menu
Working with fonts
Creating the font
Drawing text
Wiring in the font support
Level up!
Displaying the score
Game progression
Defining game levels
Game stats
The next level screen
Continuing the game
Game over
The game over screen
Replaying the game
Summary
Chapter 7: Audio Adrenaline
Bits and bytes
A sound by any other name
Making noise
Revving up your engine
Accessing the FMOD .dll file
Linking to the library
Point to the include files
Initializing FMOD
Virtual channels
Channel priority
Bleeps and bloops
Sound effects
Setting up the sounds
Playing sounds
UI feedback
The sound of music
Cleaning up the house
Release sprites
Release input
Releasing fonts
Releasing audio
Summary
Chapter 8: Expanding Your Horizons
Into the third dimension!
Simulating 3D
Real 3D
3D Coordinate Systems
The camera
Remember those home movies?
Steady as she goes!
The viewport
Entering the matrix
Vectors
Combining vectors
Identity matrix
Coding in 3D
Creating the project
Retrieving OpenGL files
Linking projects to OpenGL libraries
Setting up the OpenGL window
Including header files
Defining global variables
Creating a function to create the OpenGL window
Sizing the OpenGL window
Initializing the OpenGL window
Creating a function to remove the OpenGL window
Creating the OpenGL window
Creating the Windows event handler
The Game loop
The finale
Summary
Chapter 9: Super Models
New Space
A computer in a computer
Drawing your weapons
Getting primitive
Drawing primitives
Making your point
Gl_Points
Getting in line
Gl_Lines
Gl_Line_Strip
Gl_Line_Loop
Triangulation
Gl_Triangles
Gl_Triangle_Strip
Gl_Triangle_Fan
Being square
Gl_Quads
Gl_Quad_Strip
Saving face
Back to Egypt
A modeling career
Blending in
Blender overview
Building your spaceship
Exporting the object
Getting loaded
Summary
Chapter 10: Expanding Space
Creation 101
Preparing the project
Loading game objects
The Model class header
Implementing the Model class
Modifying the game code
Taking control
Implementing input
Asteroid slalom
Setting up collision detection
Turning on collision
Summary
Chapter 11: Heads Up
Mixing things up
The saving state
Push and pop
Two state rendering
A matter of state
Adding the state machine
Getting ready for a splash
Creating the user interface
Defining the text system
Defining textures
Wiring in render, update, and the game loop
Summary
Chapter 12: Conquer the Universe
A fun framework
Setting up the Visual Studio project
Setting up the Windows environment
Setting up the OpenGL environment
Setting up the game loop
Texture mapping
Loading the texture
Rendering the cube
Mapping operations
Let there be light!
Defining a light source
The skybox
Advanced topics
Game physics
AI
The future
Summary
Index