Writing a complete game from scratch can be difficult, even for a seasoned programmer. In this tutorial series, I'll walk you through the development process of a full-fledged game written from the ground up. It may sound easy, but it has a pretty steep learning curve. If at any point thoughout this series you have trouble or are unable to figure out how to get something to work properly, feel free to PM me and I'll get back to you ASAP (please do a web-search of your question first though).
Now, some of you might be wondering why we are using Win32 rather than a cross-platform wrapper like SDL or GLFW. Well, since we'll be using Microsoft DirectX to handle everything from our graphics to our sound, there's really no need for a cross-platform solution. Using Win32 may not be as easy as SDL or GLFW, but it will allow for a much more customizable user experience.
Before we get started though, we need to make sure you have all the prerequisites required for this tutorial series.
The first and most important prerequisite for this tutorial is C++ experience. This tutorial is not intended for C++ newcomers. I recommend you have knowledge of, and experience working with all or most of the following C++ concepts:
- Using and writing operator methods
- Dynamic memory management
- Using and writing namespace, classes, and structures
- Using friendship, inheritance, and polymorphism
- Type casting
- C++11 changes
If you believe you do not fully understand one or more of the topics listed above, I recommend you 1) Bookmark this page so you can come back to it later, and 2) Research and learn about the topic(s) in which you believe (or know) you are lacking in. In order to keep the lessons quick and to-the-point, I will refrain from explaining and teaching about C++ related topics (unless it is extremely rare and I have no expectation that you would know about it without having used it before).
I also recommend you have some experience actually writing programs in C++ using some of the topics listed above (it's one thing to read about a concept and another to put it into practice).
Knowledge and experience aren't the only things needed for this tutorial series. You'll need the help of a few software packages to get the most out of this tutorial series. Though it is possible to substitute most of the packages listed below with other packages (possibly open-source), I will not explain how to do so as this tutorial series is designed to be used with the packages below.
Obviously this is the most important piece of software you'll need. Without a complete, working Windows environment, you would have nowhere to compile or test your code. I recommend that you do not install Windows through a virtual machine as this will severely increase compiling time and keep you from being able to properly test your project. For this tutorial series I will be using Windows 7 Professional 64-bit. This tutorial is not tailored for use with any other Windows version (e.g. Vista or 8), although I don't see any reason why it wouldn't work with Windows 8 (though I currently am unable to test it). I also recommend using a 64-bit install of Windows as it will allow you the ability to use more than 4GB of RAM, allowing for more available memory (if you have more than 4GB).
Microsoft Visual Studio 2010
Now, we'll need a compiler. I've opted for Visual Studio rather than open-source equivalents because I have a lot of experience with it. Now, if you want to download Visual Studio, you can go to the Visual Studio download page
and grab Visual C++ Express 2010. I will be using Visual Studio 2010 Professional, but this turorial series is designed for use with Express. If you will be using Visual Studio 2012, you will need to change your Platform Toolset setting for the project (please find a tutorial on how to do so).
Microsoft DirectX SDK
Without the DirectX SDK, you would have no way of using any of the DirectX modules. You will need to pick up the latest one (June 2010) from the download page
. After installation, it should create a folder in your Program Files (or Program Files (x86) on 64-bit Windows) called Microsoft DirectX SDK (June 2010). In here is pretty much everything you need to get working with any of the DirectX modules. Please note that for graphics, we will be using Direct3D 11. The June 2010 SDK is currently the only SDK version that supports Direct3D 11 and thus using a prior one will not allow you to complete this tutorial series properly.
Please perform the following actions to prepare yourself for the next tutorial:
- Install all of the software packages described above (or your chosen equivalent).
In the next tutorial, we'll get the Visual Studio project set up and make sure all the dependencies are in order.