|See what's going on with flipcode!|
Game Institute Review
by Alex Tchernychov (09 January 2002)
|Return to The Archives|
Remember the flipCode
news about online game development courses at GameInsitute.com
? Being a slightly skeptical kind of guy, I of course followed the link expecting
to, figuratively speaking, point my finger at them and laugh; since I was quite
convinced of the impossibility of learning anything useful about game programming
with mere online courses. We all know it takes dedication and self directed
hard work to achieve anything in this subject! |
Fortunately, I was pleasantly surprised. If like me, you were expecting Klick n' Kreate, you should think again (and maybe actually go visit Game Institute once). Even the first impressions I got from the site were quite promising. As evidenced by the syllabus the course contents are not your average one page tutorials, and the instructors at Game Institute are all quite experienced professionals of the field. Reading about the courses was inspiring, and by the end of my first visit there, I was already hoping to take a couple of them sometime. To my great surprise and happiness that wish came true, and now I have an opportunity to write this review about my experiences with Game Institute for fellow flipcoders.
Game Institute has courses on a variety of interesting topics which are related one way or another to game programming. You won't find a step by step series of classes that claim to make you the next John Carmack, though. Instead, its a set of "intensive" courses on particular areas of programming. Usually they last from 7 to 12 weeks each. There is no preset sequence of courses that you must take, you simply pick the areas of study where you would like to improve and do so. Here are some examples of the courses they have, to give you an idea:
- RealTime 3D Terrain Rendering
- 3D Game Programming with Direct3D
- Network Game Programming with DirectX 8
- Understanding Pathfinding Algorithms
- Game Mathematics
- 3D Game Programming with OpenGL
- Advanced 3D BSP, PVS and CSG Techniques ... and so on.
New courses seem to get added constantly, so check the GI website for the details. http://www.gameinstitute.com/gi/courses/courses.asp
The page you see when you login into your courses looks something like this:
Each course you take has its own detailed webpage, but as you see there is a convenient tab for recent lessons in each of your courses.You can access the weekly multimedia lecture, the online text version of thereof, and the downloads section. Personally, I used the multimedia presentations more, since hearing the instructor's voice and seeing the material slides can sometimes make ideas more memorable. However, if your connection speed is limited, you need not worry - with the text versions you never miss anything, and actually I find these versions to be generally more detailed. It is a personal preference. The downloads section has materials for each week. These usually are full PDF versions of the lectures and code.
The code provided with each week is typically in the form of complete MSVC projects. Some are small throw-away demos created by the instructors for specific weeks, and others (such as in the CGBSP course) are stepwise implementations of a larger course-length projects. While the code won't earn any OO purity awards, it was in my opinion very good, understandable and generally did the job. The "practical spirit" of GI overall is most evident here - no junk comments, no lengthy architectural deliberations and hand-holding. I appreciated the quality and quantity of code every week at GI yielded.
I wanted to talk a bit about the general focus of the courses. Yeah, it is game programming, but that is a very wide specification. What the GI courses really emphasize is programming game engines, that is, training you and assisting you in developing a (hopefully) reusable set of tools and components for building something game-like. There is plenty of coverage of theoretical foundations, but these always take a secondary role. These are very much practical courses, ideally involving a lot of coding , experimenting. On the other hand, there is little or no guidance as to what you should do with this newly obtained knowledge - you are left to your own devices. For me, this was the perfect study arrangement.
Perhaps in future we will see GI offer courses on game design, or advanced type of courses which focus on building a particular type of game. Currently though, its stuff by coders and for coders (not that this is a bad thing). You shouldn't expect to be guided through the entire process of making a complete game.
An online lecture screen. A speech snippet is playing.
So what APIs are in use at GI? Well, I found that the courses make use of both DirectX and OpenGL, it seems to be a choice made by the course instructors when they prepare the material. In the courses I took, every attempt was made to have the theory portion as API-independent as possible.So if you only know a single API or have "issues" with its counterpart, you can usually still get a lot of good from a course. Of course, this will involve some extra work related to the sample code. All of the code is in C++.
The material can be fast-paced sometimes. If you want to take a course on landscape rendering for instance, its a good idea to make sure you are comfortable with a graphics API , as well as having some previous knowledge of the landscape subject area. Similarly, in the introductory OpenGL and DirectX courses you are expected to be familiar with the requisite mathematics and not faint the first time you see a naked matrix. The different courses vary in technical level, but overall, I would rate the difficulty of the courses as medium - they focus on getting you to the level of knowledge necessary to do serious practical work within a subject area. To see for yourself, go to this page and check out the course contents for the subjects that interest you.
I took 3 courses at GI so far. You can find all the the detailed descriptions of the courses on the GI website, but I thought that some of you might be interested in hearing my personal impression/opinion. So here it is for each of the 3 courses that I've done recently. Of course all my opinions are to be taken with a healthy grain of salt :
- 3D Game Programming with OpenGL (instructor: Alex Ferrier)
A. Ferrier is a professional game developer working in Scotland. His course is about the practical aspects of engine development which involve OpenGL. It covers a variety of OGL rendering techniques in detail and has a fast paced introduction / refresher on 3D computer graphics in general. I personally found that this was a great course, even though I am somewhat experienced with OpenGL already. The instructor has a distinctive no-nonsense style which carries over into all the course material, which I thought was top-notch in terms of clarity and relevance (I think for game programming, this course easily beats the Red Book). For example, the abilities of modern 3D hardware are a constant consideration in all theoretic presentations, and Alex's code emphasizes thinking about the future when programming with OpenGL. I recommend this course to people with experience in graphics but not OpenGL, or people who would like to modernize their knowledge of the API and explore some cool rendering code directly relevant to today's games.The only prerequisite knowledge for this course is a workable understanding of the mathematics involved, and some experience in programming C++.
- RealTime 3D Terrain Rendering Part I ( instructor: Bryan Turner )
This course "felt" a lot like a traditional university course on data structures and algorithms, only instead of covering linked lists and very strange types of trees, this covers landscape rendering algorithms. This means a lot of time is spent looking into a few different kinds of CLOD algorithms which power most of the current landscape engines. Every algorithm is presented with reference to the research papers where it has originated, and feature comparisons are drawn. The algorithms presented in detail include Rottger's Quad Tree based algorithm and ROAM. Different types of implementations are also considered where appropriate. At the end of the first part of the course, a hybrid algorithm is presented, which attempts to combine the advantages of all the previous approaches, for game rendering purposes. In parallel with this, material on view metrics, height map generation and so on is presented. Its a pretty material heavy course, you should probably only attempt it if you have a grasp of the basic ideas in the area (read: you already wrote a couple of simple landscape demos before). In this course, I found that the multimedia presentations were often not enough to give you a full understanding of the material, and sadly neither were the PDFs. A lot of time needed to be spent working with the code and getting things to make sense. It is however, much easier to tackle this complicated subject with the detailed guidance of someone experienced, and the instructor in this course unquestionably is . The course is split in two separately offered parts, with the second part focusing on view metric design and more indepth coverage of using landscapes in games.
- Advanced 3D BSP, PVS and CSG Techniques (instructors: Gary Simmons & Adam Hoult)
I was impressed with this course. The idea is to present a detailed explanation of the current techniques used for 'indoor' rendering. Starting with a basic BSP tree implementation that could be used for properly rendering transparent objects, the course progresses into more and more exciting techniques each week, covering both the rendering and optimization side of the topic. Great in-depth discussion of PVS construction/use, bounding box/frustrum rejection methods, and even constructive solid geometry techniques later in the course. The e-textbooks here were the densest compared to all the other courses I took at GI, but Gary's easy going writing style helps significantly. He tends to answer all the "what if" questions you come up with while reading one paragraph right away in the paragraph following it. You will really appreciate that when dealing with a complex subject like this one. There are also lots of diagrams, and code snippets. I'd definitely recommended this course for experienced coders who'd like to look into the topic of constructing 'indoor' rendering engines...
In the end, the only thing that really matters in education is who your teachers are. The greatest course on Earth, full of exciting content can be completely ruined by an incapable or boring teacher. I have actually experienced some courses in my 'regular university' academic career where I came out knowing less than what I knew going in. In this sense, Game Institute has been great - I have learned a lot. All of the instructors I had the pleasure of interacting with were top notch, and always responded to people's issues in a down to earth and practical manner.
There are tests at the end of each course, in the form of a multiple choice quiz similar to this one:
...And there are about a hundred questions like that on a final exam. They range from funny to tricky. Since the focus of GI courses is teaching you something and not accreditation per se, there isn't much emphasis on tests and grades. But you do recieve a numerical grade (with instructor approval) and can print out a certificate at the end of each course if you like that sort of thing.
Every course has its own messageboard. These were generally of not in use much, unless a problem has come up. The instructors were prompt and effective in dealing with these, explaining the code, addressing minor bugs and so on. Beyond the introductions and course welcomes I didn't notice a whole lot of discussion up on the boards. They were great for troubleshooting and enlisting the help of the instructors and other students. My blurry picture gives you some taste of it, but don't expect the GI messageboards to be anything like the technical forums here on flipCode.
I hope that my review has given you some idea about what to expect from GI. This article doesn't really present any kind of an objective evaluation - I tried to keep it as personal as possible, all the official details are there for you to read on the GI website. My whole experience with Game Institute has been very positive overall. I am definitely going to continue to make use of their courses in future. I'd recommend you look into it too, should any of the course abstracts sound like your theory "to do" list. You'll probably be able to learn faster and achieve a more solid understanding of things if you judiciously take advantage of GI.
PS: Special thanks go out to Kurt Miller and Joe Meenaghan for making this article possible!