This was the first game we built using our own game engine, Cog3D. In this project, I was mainly responsible for integrating audio into our engine via FMOD. I created an audio system that allowed us to create audio events and tweak various parameters. Our component system allowed us to place audio components on game objects inside the world easily. I also worked closely with our audio designers to ensure the engine supported their workflow.
I worked on fog along with our technical artists to highlight depth in the levels and enhance the game's visual style. This was something I had never done before and I was happy to get to do because I learned a lot about how depth buffers work and how to use them as textures for different effects. I find the most enjoyment out of a game project when I get to work with graphics. I love the feeling of changing graphics code and seeing it what it looks like for the first time.
A collection of projects that I have gotten to work on in my time at The Game Assembly.
Our reference game for this project was Sparklite. I worked on UI and the state stack to easily go from menu to menu. Since this is a top down 2D game, we needed a way to sort objects based on distance for proper occlusion and I got to work on that. For gameplay, I worked on enemies along with another team member, creating attacks and movement. I also implemented audio. I added sounds to the game, and since it is a 2D game, I did audio culling so that objects outside of the view don't produce sound. I learned about how complicated a top-down adventure game can be and the steps we needed to take to make it performant. Making a large world in any game is a difficult task and this game put that into perspective for me.
In this project, I worked on level loading. Since the game is a Metroidvania, transitioning to different sections and scrolling the camera was a big part of the gameplay that I got to work on. I also worked on enemies that walk on walls and I implemented a prompt system that would trigger when the player got close to a checkpoint.
Another part of the gameplay that I worked on was the checkpoint system and restarting from a specific point after dying. This proved challenging because we needed to account for levels changing, since the levels were broken up into three different areas. If the player would activate a checkpoint in the first area and enter the second area and die there, we needed to reload the first area and respawn there. Instead, the player respawned at seemingly random locations outside of the borders of the second area. Getting to fix that was really fun.
I also added controller support for the game. We already had an input system for the game but it did not support controllers. I had never done that before and getting to learn how XInput works was great.
This game was made using The Game Assembly's in-house engine Tga2D and was the first game we wrote in C++. We had a course in C++ beforehand but it was only introductory and the assignment was creating a text-adventure game where you gamble in a casino. That was fun but this was the project that put all of our C++ knowledge to the test. I remember stumbling on basic C++ gotchas like trying to delete objects from a vector via a ranged for-loop. Learning how bad of an idea that was, was a humbling experience.
For the project, I got to create a dialogue interpreter that allowed our level designers to write dialogue which they could embed in the levels themselves. This allowed the game to display unique dialogues at different sections of the level with let us carry out the story of our game.
I also worked on the sprite sheet animation system, VFX and particle effects for bullets, enemies and asteroids getting destroyed. I also wrote a system for scene transitions.
Vermin was a mobile game that we got to make in Unity at The Game Assembly. I worked on the grid-based movement system and some hazards like the cogwheels. This was the first and only game we got to make for mobile so we had to think a lot about scale and remember that our users would be viewing the game on a small screen. Another challenge was making a game isometric . I remember struggling with controls and making the character move appropriately with the user's swipes. Thinking about rotation in an isometric space was a bit challenging.
This was the first project I got to work on at The Game Assembly. This game was made in Unity and I worked mostly on the tutorial and the collectibles.