The first assignment of the Engineering 2 class was mostly focused on getting the solution set up in a manner that suits game development.
Our solution setup in the first year was a step in the right direction but it was very simplistic. This time there’s an emphasis on separation, even within the engine, into different projects.
This mimics the way the solution and projects were set up at my internship. In-fact they had hundreds of projects which meant it took VS over a minute to initialize everything on startup. And IntelliSense had to be disabled because VS couldn’t handle it.
John-Paul(instructor) is also trying to teach us cross-platform development. This makes a lot of sense as games these days need to be built for different kinds of platforms (consoles, PC, handhelds). To stay within scope, we are kind of simulating cross-platform by artificially restricting OpenGL to x86 builds and Direct3D to x64 builds. This requires us to use preprocessor defines to properly exclude/include code when building for a specific platform.
We also have an asset build system. I’m happy to see this, as this again brings us closer to how the industry works. The asset build system builds assets from an author friendly format into a runtime friendly optimized format. It also moves the built assets to $(GameDir)\data. $(GameDir) is a shippable directory where the exe is finally placed along with the data. This means that we can just zip $(GameDir) and give it to someone to play the game.
We also have a temp/ directory where all the build files go. This includes the game binary, intermediates, library files and built assets. Basically everything that we don’t want to check in to source control goes here. This makes it super-easy to keep our git project clean.
I was able to put together the solution from the many examples that were given by JP. These examples were well done in their own right. They are really good for someone trying to learn something they don’t know. But I have to say that the assignment page itself could use more structure, formatting and direction. Often I would skip an example because I knew the concept and start on my own only to later realize that I actually need the files from the example. A distinction between what to do and how to do will be good I think. I think one of the easiest to follow pages was the include-direct3d page.
I think the goal of this class is to better understand software architecture and how games do it. We will also be doing graphics in this class which is a first in my time here at EAE. I personally want to be able to have a 3D renderer that is capable of rendering basic shapes. I am planning to build this code into a personal project which I can showcase to future interviewers.
Here is a glamorous triangle that my game currently is:
You can download it here.
Press Esc to exit.