top of page
Portfolio
Portfolio
Portfolio
Graphics Rendering
Solo Project



Graphics Programming
Gameplay
Programming
Git and Version Control
This project was a fantastic stepping stone in my C++ journey. Teaching me concepts like RAII memory optimisation, smart pointers and templates.
For this project, I created the game engine tools that would be necessary for building a platformer game. Similarly to how old games like DOOM built technology from scratch.
Development Time : 2 Months
Language: C++
3D AABB Collision

For collision I decided to use traditional AABB collision but adapted it for use on 3 Axes, checking if theres overlap with the negated axis.
When a collision is detected, I rendered another cube as a debug and also added a force pushing the player away from the cube in the direction of the players vector to the cube center with an equal force, just like how forces work in real life to keep people against a surface.
I also used collision as a ground check for activating gravity
Newtonian Gravity


Because I wasn't using a game engine, there's no "tick" that you can use to interpolate movement over time which necessitates the usage of global enum states paired with a custom deltatime variable to simulate change in movement over time.
Instead of applying gravity while jumping, I instead wanted to create the parabola projectile arc that you see in most platforming games by using the variable airtime to calculate how long the player can be in the air before gravity begins to act upon them
Dynamic AI
Wander and Chase



In it's default state, the AI wanders around within a clamped box by adding a randomised positive or negative distance onto its last position in order to make it feel as real as possible.
The AI employs a squared distance check between itself and the player and goes into attack mode if the player gets too close to the threshold set by whoever is using the system.
In chase mode the AI uses the normalised direction to the player multipled by a value over time.
Dynamic AI
Line of Sight

This gives the user more options if they would like to change the type of AI. Works the same as wander and chase behaviour but uses a dot product calculation to simulate a viewing angle of the enemy AI controlled by the user.
When the player enters the enemys viewing angle, the chase begins
Conclusion
All in all, this project was an interesting experience, a good opportunity to flesh out my knowledge of C++ and refresh myself on space transformation, Matrices, Generics and linear algebra.
In future, I may come back to this and flesh it out into a game engine. I'd like to explore an entity component system with C++.
bottom of page