Programmer, Animator, Game Dev.
The final team project in my course; this one required us to make a 3D game, so we developed a first-person arena shooter with an ocean diving theme.
I wanted to try my hand in audio, so I took on the role of an audio programmer, and provided feedback on the game's soundscape. I've also reprised my role as a physics programmer to refine my knowledge and understanding of what a physics system should do.
Exposure to Jolt was quite eye opening regarding the jump in quality in game physics. It provided a peek into how high a standard AAA quality physics must be (Jolt is used in Horizon Forbidden West and Death Stranding 2) and shows how far I still need to go, such as figuring out torque, multithreading collision detection, aggregated collision detection to name a few.
The project also exposed me to FMod and how audio is managed in games. While the current solution I developed works well enough, there are some improvements I wish I could implement to make the system work more seamlessly with FMod Studio.
Responsibilities:
Main Physics Programmer
Audio Programmer
Gameplay Programmer (minor)
The first major programming team project I undertook, I took the role of the physics programmer, and the animation programmer. The former because I was curious and loved game physics implementations, the latter because I love animation and was interested in creating tools and systems for artists. I also took a minor role as a gameplay programmer wherever it is needed.
A particular highlight was the development of animation tools to allow for editing, playback, and saving sprites in-engine. There was also one much more advanced animation feature which allowed transformational animation but got scrapped as no one in the project needed it.
Responsibilities:
Physics Programmer
Animation Programmer
Gameplay Programmer (minor)
This assignment was to create a level without any gameplay mechanics while being able to tell a narrative just by progressing through the level. It did not help that this was also my first time actually developing a level for a game.
Inspired by the STALKER and Metro series, and the gloomy look of Soviet apartment blocs, I thought that a mystery theme would be a perfect fit for the assignment; a seemingly old and abandoned facility still being operated provided a good enough mystery on its own.
An unexpected tool to my rescue was the mood board, which allowed me to draft a scenario really quickly by illustrating the look and feel of the atmosphere without having to think about the minutiae. It also provided a glimpse of how the visuals would change through the progression of the level which allowed me to adjust the pacing of the level.
Overall I found an unexpected amount of joy just developing this level. Perhaps this storyboarding approach that I learnt as an animator could be used to create future levels as side projects.
This assignment required us to use procedural generation techniques to develop a dungeon with a narrative (in the sense of an increasingly difficult dungeon)
At the time, I was in the mood for some Call of Duty Zombies, so I modelled the gameplay around that. However, my lecturer pointed out that zombies typically have a closed arena map instead of the expected linear level design by the assignment, and that its gameplay did not have a defined end, which was required in the assignment. Thus I restructured the goals such that there is a more defined beginning and end.
Although it can be improved in multiple places (balance and stability aside), I still ended up enjoying the development of the project. Perhaps in the future I could focus on developing a level layout generator first, see wha I can do with it.
I am currently working on my own game engine as a side project. This project functions primarily as a sandbox for me to learn coding concepts, engine design and the design of engine components.
It also serves as a learning platform to learn graphics as graphics was not in my curriculum. The ultimate goal is to develop tools that mimic widgets found in 3D applications such as a shader editor, compositor, and an animation graph editor. This is to enhance my foundations in the different aspects of graphics and 3D software packages.
The main constraint of the project is to build everything from scratch that is possible. Aside from model and texture loading which use assimp, UI which uses ImGUI, and JSON loading which uses rapidJSON, the rest of the application uses maximally the standard library provided in C++.
Originally I had higher ambitions of designing a multi-platform application which supported Vulkan and DirectX but settled with only using OpenGL as I still had to get with grips with the rendering pipeline.
I animate in my free time (when I'm not coding at the moment) and occasionally upload to Youtube. Mainly first person animations and some character animations.
I use Blender for my animations, and compose videos with DaVinci Resolve. However I have experience with 3DS Max and Maya, along with After Effects.
NOTE: The Youtube Channel uses my personal email instead of the one provided below. I may be unable to respond if you send to my personal email.