Some graphics and game programming from scratch
My first contact with proper graphics and game programming from scratch was in 2012. Using C++ and DX11, I implemented random terrain generation, layered terrain texturing, a skybox, basic shaders with directional lighting, loading textured meshes and particles. Eventually it became a very basic mech-shooter where you shoot enemy ships flying in random directions over the map. If you think “sounds like a university class”, you would be correct; it’s basic stuff. For some extra challenge, I also added things like “godrays”, instanced mesh rendering, and a data oriented (I already knew about DoD back then), fully SIMD-ified particle system that had some basic emitters and movement types and such.
The original game.
Some time later, I unburied the project and turned the game into a tank-shooter. I beefed up the graphics some more by first implementing cascaded variance shadow maps. Then I switched from forward rendering to tile based deferred shading. Admittedly, I mostly copy&pasted an example implementation for this one – I tried my best but it was a tough one for me at the time and I needed the time to finish everything else.
I got a tank mesh from somewhere and split it up in Blender to get a movable turret and gun to line up with the aiming vector. Previous experience with Blender and 3D modeling helped me here. For vehicle physics, collisions and and hit detection, I integrated Bullet Physics.
With two sliders and an accelerometer placed on a special controller, you could steer the tank by individually controlling the treads with the sliders and aim by tilting the controller. It could be also played by two people with two controllers, one driving the tank and one aiming and shooting. The game was actually somewhat fun to play in co-op and mapped quite naturally to the controllers. Overall I got some positive feedback from people I showed it to.
Random terrain, cascaded shadow maps, dynamic point lights, tank physics...
The game is just about collecting ammo boxes and shooting the targets that spawn at random locations. Aiming and driving looks clunky here because I emulated the controller that I don't have anymore with a keyboard.