Vulkan Game Framework

Game engine/framework developed with C++/Vulkan
Page last updated on 5/30/2022

I began working on this project in Fall 2019 and paused development on it in Summer 2021. I started this project because I wanted to make a video game from scratch, going as low level as reasonably possible, so I could learn for myself how the graphics rendering process works. This led me to choose Vulkan as my graphics API, which is the successor to OpenGL and is notorious for its steep learning curve but great performance. I initially followed a tutorial online for getting started with Vulkan and learning the boilerplate to render something on the screen, and from there I just read the API's documentation. I implemented a working Blinn-Phong shading system written in GLSL, and I can use the framework to render scenes modeled in Blender and exported using a custom Python script I wrote. I adopted NVIDIA PhysX as the game engine's physics system, which allows character movement and environment interaction, and then implemented proper character skinning, where a model, animations, and rig are all imported from a GLTF file and played back in real time. I was able to get text rendering working (see the second image) where I use FreeType to render bitmaps from .ttf files. Towards the end of the project I began developing technology to allow the framework to play cutscenes specified in GLTF files, and this is where I ended development on the project due to busyness with schoolwork. The two pictures on the right are not representative of the game's final state; they are both just development screenshots. The first doesn't have proper Blinn-Phong lighting implemented, and the second has broken materials where everything appears green. I hope to return to this project one day to learn more about Vulkan!