Becoming a Game Developer - Lesson 1 and 2
By: Kurt Knudsen
This edition of the journal finds me utilizing a considered background in C/C++ programming to delve enthusiastically into the Game Institute’s DirectX programming Module 1. Seeing as the institute uses its own material for the majority of the courses—including DirectX—purchasing personal reference books, or anything text related, will not be necessary. However, the procurement of a compiler is required—obviously—as well as the DirectX 9.0c SDK. The compiler recommend by both the Game Institute and myself is Visual Studio .NET (VC7). You can, of course, select a free compiler such as DevC++, but you will subsequently run the ill-advised risk of it not working efficiently. If you are currently studying at college you can pick up a student version of Visual Studio for a mere few dollars in most outlets, whereas other colleges and universities offer major discounts.
It should be noted at this point that select colleges are accepting courses taken through the Game Institute as genuine college credits. You can locate a list of said colleges via the institute’s website, found here(http://www.gameinstitute.com/apps/affiliate_viewer.php). And as time and reputation progress, it’s likely that more colleges will accept classes offered by the Game Institute, so check that list regularly.
DirectX Module 1 is divided into 12 sections, which also includes the final exam. Lesson 1 begins with the course basics, and offers very little in terms of code. It teaches coordinate systems, vertices and winding order, translation, rotation, and a few other integral subject points. The topics covered during Lesson 1 can be found in most reference books, and I have certainly labored over them in prior self-motivated attempts. However, and to the Game Institute’s credit, the information they present is considerably easier to follow and absorb, and every step is explained with great care and detail.
Also included in Lesson 1 is a set of summary slides that generalize everything you have read up to that point. These aren’t meant to act as replacements for actual reading but rather to remind and refresh you concerning covered elements while extrapolating further details. Personally speaking, I’ve never seen a book that includes slides as a summation tool to help explain points that might have been overlooked by the pupil during the core lesson itself. Indeed, their inclusion is a definite plus and the information they offer never takes too long to consume.
All in all, Lesson 1 was fairly painless and its mathematical elements weren’t too involved. In truth, I knew almost all of what was covered by the course’s introduction, but I still learned plenty of new things to help bolster my programming armament. The book ploughs through considerable detail and covers everything mentioned with varied examples. But, if there is still something you don’t quite understand then you can set up a time block via the website and talk directly with the staff assigned to the opening lesson. And who better to explain things to you? The lesson itself ends right before the introduction of core 3D math and vectors. I could feel it in my bones that the next lesson would be heavy on 3D math, but surely it couldn’t be as bad as calculus!
And so, Lesson 2 began right where we left off, this lesson relying heavily on matrix math and trigonometry. If you’re already in college, or plan on attending, then may I suggest taking a course in linear algebra. Linear algebra is all about matrices and definitely makes learning DirectX much easier. Luckily, or perhaps unluckily, I took that course a few years ago. I do know the basics of matrices, but I did forget quite a bit over time. Thankfully, all that I’ve forgotten has proven irrelevant in regards to this course—so far.
Lesson 2 begins with vectors and offers in-depth explanations concerning their application. Then it proceeds to showing you how to manipulate vectors mathematically. This is all necessary should you wish to learn how to use matrices, which will be coming up next in the lesson. Matrices perform a vital role in 3D graphics, without them it would be an absolute pain to rotate, move, and scale objects in a 3D world. The lesson’s explanatory body of text concerning matrices is very well put together, and teaches you how to proceed through the world matrix, view matrix, and projection matrix. Plus, it also displays a lot of progressive code along the way, which certainly helped me to move effectively from theory to practice.
This section on matrices was extremely easy to pass through. There was a lot of information to process and understand, but the specific lesson slides undoubtedly helped define its explanation. There were instances where I read through some sections repeatedly to garner a sense of fully understanding the content, but eventually everything made perfect sense. The lesson does contain a great deal of instructional text but, once you embark on the road to coding the information, all the necessary pieces soon come together.
From my own standpoint, I’ve read Drunken Hyena’s tutorials and I’ve gone over several text books, but the lesson presented by the Game Institute stands as one of the better and more user-friendly descriptions of matrices and how to use them. Considerable thought was obviously invested in its execution, and this definitely shows. Much of this information can still readily be obtained from various tutorials and books, but, while certainly informative, many of them simply don’t cover the essentials with as much detail as the Game Institute.
The workbook that runs concurrently with the course explains the lab projects in great detail. This proves essential, and without a firm background in C++ you will probably become lost, because they dive right into creating the classes in order structure the code properly. Each class is explained in great detail in regard to what it does, and how its functions work. Without the workbook it would be especially difficult for programming beginners to fully understand the included lab project.
At the end of some of the workbook sections there is an exercise for the student to try. For example, the lab project doesn’t allow the camera to be moved. The student would then be asked to allow the camera to move left and right depending on which arrow key was pressed. At first glace this might seem difficult but, after reading through the workbook, it becomes much easier to accomplish. Indeed, to extract optimum value and knowledge from both the courses and lab projects you must read the workbook thoroughly.
You can find my modified program here. The .dll file included is needed to run the program. It exists as part of the SDK, so if you don’t have it installed you will need it. The initial program had a static camera; the goal being to make the camera movable, which I did. In reality it only took a few minutes to modify the code after reading the textbook and workbook.
Overall, it’s not difficult to state that I’m impressed up to this point. The textbook is extremely easy to follow, and the accompanying website has a very friendly interface, which anyone could use effectively. The following isn’t meant as a slight in any way, but I definitely wasn’t expecting a learning tool of quite this professional standard; rather I thought I’d receive a defined syllabus and some seriously muddy text. Game Institute has done a great job surpassing expectation thus far…let’s see if that welcome trend continues.
For the next section of the journal please click here.
Questions can be sent to Kurt (dot) K [at] GamersHell (dot) com.