
Programming 2D Games
Preview
Book Description
A First Course in Game Programming
Most of today’s commercial games are written in C++ and are created using a game engine. Addressing both of these key elements, Programming 2D Games provides a complete, up-to-date introduction to game programming. All of the code in the book was carefully crafted using C++. As game programming techniques are introduced, students learn how to incorporate them into their own game engine and discover how to use the game engine to create a complete game.
Enables Students to Create 2D Games
The text covers sprites, animation, collision detection, sound, text display, game dashboards, special graphic effects, tiled games, and network programming. It systematically explains how to program DirectX applications and emphasizes proper software engineering techniques. Every topic is explained theoretically and with working code examples. The example programs for each chapter are available at www.programming2dgames.com.
Table of Contents
Getting Started
Overview
The Development Environment
What Is DirectX?
Why C++?
Naming Conventions
Game Engine
Tips and Tools
Windows Programming Fundamentals
Windows Programming Fundamentals
"Hello World" Windows Style
Device Context
Keyboard Input with Windows API
Using a Mutex to Prevent Multiple Instances
Multitasking in Windows
Introduction to DirectX
Introduction to DirectX
Initializing DirectX
Creating a Device
Clearing a Display Buffer
Page Flipping
A Clean Exit
The Graphics Class
Our First DirectX Program
Fullscreen or Windowed
Debug vs. Retail DLLs
Determining Device Capabilities
The Game Engine
The Game Engine, Part 1
The Game Class
The Input Class
The Spacewar Class
Sprites and Animation
Obtaining Game Graphics
The Graphics Pipeline
Drawing with Transparency
The TextureManager Class
The Image Class
Game Engine
Simple Animation
Collisions and Entities
Vectors
Collisions
The Entity Class
Physics for 2D Games
Sound
Obtaining Audio Files
Creating Audio Files
Using XACT
Adding Audio to the Game Engine
Adding Sound to the Game
Adjusting Audio Playback
Text
Sprite Text
Creating Custom Fonts
Text Class Details
DirectX Text
TextDX Class Details
Adding an FPS Display
Adding a Console
Console Class
Incorporating the Console into the Game Engine
Enhanced Appearance
Bitmap Scrolling
Painter's Algorithm
Parallax Scrolling
Shadows and Reflections
Message Dialog
Input Dialog
Windows Dialogs in Fullscreen DirectX Applications
Dashboard
Tiled Games
Why Tiled?
Creating a Tile Set
Creating Levels
Displaying the Tiles
Orthogonal Projection
Oblique Projection
Isometric Projection
Isometric Terrain
Elevation Layers
Building a Complete Game
Evolutionary Prototyping
Project Management
Design Document
Prototype Textures
Spacewar Tasks
Spacewar v1.0
Saving and Loading
Network Programming
Network Overview
The Net Class
Initialize the Network
Creating a Server
Creating a Client
Get the Local IP Address
Sending
Receiving
Closing a Socket
Get Error
Client/Server Chat
Client/Server Spacewar
Spacewar Server
Spacewar Client
The Journey
Index
Questions and Exercises appear at the end of each chapter.
Author(s)
Biography
Charles Kelly is an associate professor at Monroe County Community College, where he teaches game programming and other computer science courses. He is also the project lead of and major contributor to the open source assembler/simulator "EASy68K." He earned a master’s degree in computer science from the University of Michigan-Dearborn, where he is also an adjunct instructor.