Game Programming

Linus Torvalds: "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

Introduction to Game Programming with DirectX

To follow this tutorial, you will need a programming IDE, the DirectX SDK (since Windows 8, the DirectX SDK is included as part of the Windows SDK) and a basic knowledge of C++.

Windows Game Programming Fundamentals

Before learning how to program DirectX games, basic knowledge about Win32 programming must be acquired. In the following tutorials, a first fundamental framework for any Windows-based games is created, featuring a robust game loop with time management. The framework encapsulates all the tedious details about Windows programming, such that later, more advanced tutorials, can simply focus on their core ideas, without having to worry about being bothered by Windows.

DirectX Fundamentals

With all the nasty Windows stuff nicely hidden away, we will learn about Direct3D (we will use Direct3D 11.0, which works on Windows 7, Windows 8 and Windows 10) and the High Level Shader Language to draw vertices to the screen. We will also learn how to make Direct2D and DirectWrite co-operate with Direct3D to output text to our game window.

Please note that none of the following tutorials have been revisited, edited or verified for correctness. I have written them as I learned and implemented the topics in question. They might be a ton of grammatical mistakes, the explanations might not be well written and the code is neither free of errors, nor optimized. Nonetheless, the demos run fine, and you can surely learn something new. I will revisit those tutorials once I have more time. Thank you for your understanding.

Shader Programming

The following short tutorials cover the High-Level Shading Language in more details than the previous tutorials.

Entering Flatland

Now that a robust DirectX game framework is in place, it is time to study Direct2D in more detail. We will learn how to use Direct2D to render 2D-images, starting with simple geometrical figures and working our way up to complete 2D-sprites. At the end of these tutorials, we will have a very robust DirectX and Direct2D framework, with DirectWrite and Windows Imaging Component support.

To round things off, we will learn how to handle user input and we will add sounds and music to our framework.

User Input will be handled by Windows events for the keybard and mouse, DirectInput for Joysticks and XInput for Gamepads. An event queue will be implemented to allow different application components and game entities to interact with each other.

To add sounds and music, we will have a look at XAudio2 and the Windows Media Foundation (in later tutorials, FMOD and Wwise will be introduced as well).

I can't think of a better place to start the journey into computer graphics than Flatland itself! To fully use all of the features in these tutorials, Windows 10 is necessary.

Direct2D Fundamentals

Input System (I)

User Interface (I)

File System (I)

Input System (II)

Programming Patterns (I)

Music and Sound (I)

XAudio2 with the Windows Media Foundation


(in alphabetic order)

  • Game Programming Algorithms, by Sanjay Madhav
  • Game Programming Patterns, by Robert Nystrom
  • Introduction to 3D Game Programming with DirectX 11, by Frank D. Luna
  • Microsoft Developer Network (MSDN)
  • Tricks of the Windows Game Programming Gurus, by AndrĂ© LaMothe


If you found those tutorials helpful, consider donating a small amount via Paypal or visit my Patreon page.