Shopping Cart :Check Out

C++ for Game Programmers

Course Description:

C++ has become one of the favourite programming language for game programmers. Reasons for wide spread acceptability of C++ are plenty, but primary reasons are, that it allows programmers to better manage program complexity without loosing performance.

C++ popularity will only grow further in the coming years with games increasing in complexity and size. Having a good command over C++ is essential to anyone planning a career in game or graphics programming. It is to fulfil this objective that we have designed this course. Focus in this course will be to get programmers started with and then eventually gain a firm grounding in C++ with a focus on game and graphics programming. The course would be highly interactive with lots of example code and programming exercises to give the student a hands on experience.

The course is divided in 2 Parts, Part I will deal with basic and intermediate C++ programming, Part II will cover more advanced C++ topics and windows programming. Part II will also cover game programming fundamentals and finally a complete 2D game will be developed using the knowledge in the previous topics.

Code portability will not be covered as a separate topic, however tips will be given on how to keep code portable

Platform and Tools

We will be using Windows platform for this course.

Microsoft Visual Studio 2008 edition will be used for programming during the course. All example code also is based on MS Visual studio 2008.

Paint.Net will be used to create and edit graphics for the game.

The same will be provided to the student. It is an open source project and executable can be downloaded for free.


This course should be the first stepping stone in the journey to be a master game programmer. Pre-requisites are as follows:

Knowledge of computer programming (any computer language) is required. The student should be familiar with editing and compiling source code.

Knowing how to use Microsoft Visual Studio will be helpful.

Course Contents

Comparison of C & C++ Run Time Type Identification (RTTI)
Getting Started with Visual Studio C++. Runtime Polymorphism & RTTI
How to create a C++ project Typeid & type_info
Introduction to Visual Studio C++ compiler RTTI framework
Visual Studio C++ settings Casting operators
Hello World in C++ Effective C++ usage and Performance Optimization
Your first C++ program Dealing with large projects
Hello World explained Smart Pointers
Basic program structure Object Creation and Management
Pre-processor Directives Inline functions
Declaration and Definition Preventing excessive object copies
Variables & Constants Object Serialization
Fundamental Data types Windows programming
Naming Introduction to windows programming
Variable Scope Introduction to windows mensu, dialogs etc.
Initialization Programming windows DLLs(Synamic Linked Libraries)
Constants Multi-threading
Pointers and References Introduction to GDI (Graphic Device Interface)
Pointer basics Drawing basic graphics
De-referencing Pointers Drawing Images
Using pointers to pass data to functions Animation
Using pointers to return multiple values from functions
Pointer arithmetic User interaction programming
Function Pointers Keyboard
Reference basics Mouse
Constant References Joystick
Passing references to functions
Returning references from functions Basic Audio programming
Creating a basic audio framework
Arrays and Structures
Defining and Initializing Arrays Game Programming basics
Passing arrays to functions Developing a basic game framework
Multidimensional Arrays Adding user interactivity
Defining and Initializing Structures Building the game options
Practical use of structures Adding sound support to the game
Adding basic AI into the game
Expressions Adding basic AI into the game
Arithmetic Operators
Logical Operators
Relational Operators
Bit-wise Operators
Arrow Operator
sizeof Operator
Program Flow
Decision making – if, switch, conditional operator
Loops – for, while, do-while statements
Goto statement
Variable scope
User defined functions
Default Arguments
Function Overloading
Friend functions
Inline functions
Math functions
Class declaration
Access specifiers
Object and References
Object on heap
Constructors and Destructors
Separating Interface from Implementation
Objects and References
Array of Objects
Static members of class
“this” pointer
Const objects and const class members
Nested classes
Basic Memory Management
Heap vs stack
Object Construction & Destruction
Copy constructor
Operators new and delete
Temporary Objects
Pass by value and reference
Returning objects, object references and object pointers
Operator Overloading
Operator Function
Operators that cannot be overloaded
Overloading Unary Operators
Overloading Binary Operators
Interpreting Operator function call
Assignment Operator
Implicit and Explicit Overloading mechanism
Overloading “new” and “delete” operators
Object Oriented Programming
“Is A” relationship
Single vs Multiple inheritance
Inheritance in private, protected and public mode
Constructors and destructors in derived class
Compile time vs Runtime Polymorphism
Function/method overriding
Base class pointers and derived class objects
Virtual functions
Virtual inheritance
Virtual destructors
Why are there no virtual constructors?
Developing a class hierarchy framework
Interface based programming
Abstract class
Pure virtual functions
Defining an interface
Implementing an interface
Developing a plugin framework
File I/O
Text File I/O
Binary File I/O
Function Templates
Class Templates
Non-Type template parameters
Tricky basics
Errors & Exception Handling
Error Codes
Exception handling fundamentals
Standard Template Library (STL) – Containers and Algorithms
Introduction to STL
Linked Lists

Training Programs