Assignment 1 is an intense practice about solution setup with a little touch on rendering. The solution setup process includes structuring, referencing, linking, platform-specific coding. It’s mainly about the good practice of keeping a solution clean.
Other than tightly following the instructions, a little bit of online research was needed to do this assignment properly.
The most confusing part of the assignment was to set dependencies for the Graphics project. To get rid of the link errors, I spent hours doing research. I also tried setting up OpenGL environment for Visual Studio manually, but it didn’t work. I finally had it figured out once I read through the code base and happened to find a library named glu32.lib.
A Windows application that renders a triangle mesh in a window where a fragment shader changes the color of the triangle continuously over time.
Application is the only project that needed to add Graphics as a reference.
The ShaderBuilder project mentioned Graphics namespace in its code, but there was no need for ShaderBuilder to keep a reference to Graphics. The reason for this is that ShaderBuilder never called any functions from Graphics. ShaderBuilder mentioned Graphics only for the declarations of some variables and data types.
Logging: Log important things during the game. It will help figure out what went wrong.
Platform-Specific Coding: Avoid duplicated code when dealing with multiple platforms. For small differences, use preprocessor. For large differences, use platform-specific files.
The code base is well-organized. It’s clean and easy to read. Definitely one of the neatest code bases I’ve seen in an assignment. The code style significantly increased the code readability. I like the spacing and indention in the code files.
Some parts of the assignment description need to be updated to reduce confusion. The project setup instructions were referring to Visual Studio 2017, which made me assume that the assignment should be done in VS 2017. But the actual requirement was to use VS 2019 to build, which tricked me a bit.
To be honest, it wasn’t fun doing such an intense assignment. I felt myself burned out after the triangle animation finally played. But I’m glad I did it. In this assignment I learn quite a few tricks about Visual Studio. Some of them seemed hacky but very practical. After this assignment I gained a better understanding about referencing, dependencies and linking between projects. I especially like the three sample projects, which not only taught me how to fulfill the assignment requirements but also explain good coding habits in depth.
After the first assignment I’m sure this is the class I need to sharpen my engineering skills. I hope I can gain a better understanding about game engine in both low-level implementation and high-level structure.