Shantanu Pandey
  • Projects
    • Hard Light Vector
    • Memory Manager
    • Samurai Crusader
    • Dyslexia VR
    • Geriatric Depression Suite
  • Prototypes
    • Game Mechanics
    • Diana's Inferno
    • MakeUp & BreakUp
    • 10Pest
    • Ninja Pinball
  • Blogs
    • Sic Parvis Magna
    • Game Engineering - Week 1
    • Game Engineering - Week 2
    • Game Engineering - Week 3
    • Game Engineering - Week 4
    • Game Engineering - Week 5
    • Game Engineering - Week 6
    • Game Engineering - Week 7
    • Game Engineering - Week 8
    • Game Engineering - Week 9
    • Engine Feature - Audio Subsystem
    • Final Project - GameEngineering III
    • AI Movement Algorithms
    • Pathfinding Algortihms
    • Decision Makiing
  • About

Week 1 - 08/22/2018 Class

8/29/2018

1 Comment

 

The first class of our C++ Game Engineering II was basically the introductory class of what to except in the semester. Below is my bullet-ed summary of what I learned from the class and assignment this week:
  • Property sheets allow us to set default properties for the engine. These allow to set macros which act as environment variables.
  • Solutions can have more than one property sheets. Order of property sheets is important as higher property sheet can override lower property sheets.
  • Project dependencies and build order is another important thing to keep in mind. Visual Studio defines build order automatically based on the dependencies specified by the user.
  • Project A is dependent on Project B if Project A cannot be built before Project B is built.
  • By default, Visual Studio uses the project file’s location for debugging. We can update the debugging information using macros in our solution. This debugging information is stored in the user setting file.
  •  Dynamic libraries are loaded at runtime while static libraries’ code gets embedded into the executable at the built time.
  • LNK 2019 error occurs when there are some unresolved external symbols in the program. This is because linker failed to find an externally defined function due to (possibly!) how the references have been defined.
  • Solutions should be built for every configuration and architecture. Preprocessors should be used to deal with small differences in function values based on configuration or platforms.
  • DO NOT use windows remote desktop connection for OpenGL. Something I learned the hard way when my previously working code stopped working after remotely connecting to a system.
As a part of the assignment, we had to integrate a graphics library to an existing solution. We didn’t create the graphics library but instead used an existing library. The solution was configured to use Direct3D for x64 architecture and OpenGL for x86 architecture. It is the first time I am working with the graphics libraries so this assignment was quite interesting for me. In the assignment, we had to display a triangle on the screen, color it and animate that color using some time manipulations.
​
Most interesting part of the assignment for me was working with shaders. Although bare-bones basic, we build our own shader and used it to color the triangle we displayed. Setting up the platform independent code is also something I learned which I am sure will be quite useful to me for any future development.
​
[Edit1: One fun thing that happened to me was that I got an error whenever I rebuild the solution. Specifically, it was the linker error where my game project was not able to find the graphics library the first time. Second time onwards, everything was working as expected. After discussing this issue in next week’s class, I got to know about the interesting way of Visual Studio debugging, how it shows when which project is getting build and how that could be used to track the issue. It was a project dependency issue. Something interesting to keep in mind for future projects.]

[Edit2: I completed one of the optional requirement of changing the simulation time based on the user input. I added a small code in Application update function to half the simulation time is 'A' key is pressed. I feel like there could be and should be a better way to handle this (Note to self: to wait till the last second if you want to play like this with the project). I am confident I will be able to better tackle this in coming weeks.]

Assignment Requirement: Application solution uses the Graphics library reference.

I found the first week of class quite interesting and I believe one of the important things for me to learn from this class is game engine architecture. We already made a game engine last year but I feel this semester I can build over that knowledge to improve its architecture better. I also hope to learn more about shaders and may be implement them from scratch. Working with platform independent code is also something I would like to better understand and implement and I feel this class will give me enough opportunities to do that.

Playable EXE Download
Picture
Game Screenshot
1 Comment

    Author

    Write something about yourself. No need to be fancy, just an overview.

    Archives

    August 2018

    Categories

    All

    RSS Feed

FOR ANY FURTHER DETAILS


Telephone

801-859-1131

Email

Resume
File Size: 227 kb
File Type: pdf
Download File

Visit Hard Light Vector
[email protected]
Git Hub
  • Projects
    • Hard Light Vector
    • Memory Manager
    • Samurai Crusader
    • Dyslexia VR
    • Geriatric Depression Suite
  • Prototypes
    • Game Mechanics
    • Diana's Inferno
    • MakeUp & BreakUp
    • 10Pest
    • Ninja Pinball
  • Blogs
    • Sic Parvis Magna
    • Game Engineering - Week 1
    • Game Engineering - Week 2
    • Game Engineering - Week 3
    • Game Engineering - Week 4
    • Game Engineering - Week 5
    • Game Engineering - Week 6
    • Game Engineering - Week 7
    • Game Engineering - Week 8
    • Game Engineering - Week 9
    • Engine Feature - Audio Subsystem
    • Final Project - GameEngineering III
    • AI Movement Algorithms
    • Pathfinding Algortihms
    • Decision Makiing
  • About