Junior Student Team Project (1st of 3 Semester Project Completed)
AimBots is my Junior Student Team Project as part of a 5 person team. This project is expected to last both semesters of my Junior Year as well as the first semester of my Senior year. The overall schedule for the project is for the 3 semesters to be pre-production, production and post-production respectively. As the Technical Lead, I spent much of the semester driving and supporting the technical development of the project.
Our project is built in the Unity Engine and is a 4-Player, Split Screen, Arena Shooter. The core mechanic is that players don’t need to aim at other players, as they are always locked onto one of the other players. Players change who they are locked onto and navigate the environment to engage and evade enemies.
Heat and Death Maps
To help assist our designers, I built a heat map system so that we could see where and how our playtesters were navigating the arena. The system is designed to be always on while the game is run inside of the Unity editor so that there is not the case of accidentally not recording a playtest session. The system works by recording the location of players every frame as a histogram within an array of the selected resolution. This data is processed with some simple mathematics to remove outliers, colorized, given a small gaussian blur and exported as a PNG. This PNG can then be displayed in the Unity scene via the Heat Map Tool that I built into the Unity editor.
In addition to selecting the saved maps that can be displayed in the Unity scene, the tool allows for swapping between the different player or all players combined maps, saving the map out by combining the data image with the overhead view of the environment and deleting all of the raw data images. In addition to the heat maps, the tool allows swapping the display over to the death maps.
At the request of my designers, I expanded the Heat Map Tool to have all the same functionality with maps displaying the location of player deaths. Behind the scenes, the death maps are less computationally intense due to both the lower number of data points and the simpler visual output. Player deaths are recorded as they happen and at the end of the playthrough a death sprite is merged into an array and exported as a PNG.
One of the UI elements in our game is a compass that shows where other players are generally located. This is done by an arrow pointing in the direction of each player that grows in size the closer the enemy is to the player. I created this UI component by manually setting the position and color of the vertices of a mesh attached to the compass element. The positions of the mesh’s vertices were determined through a handful of variables that are publicly settable through the Unity editor and vector mathematics.
Rocket Go Fast!
Sophomore Student Team Project
Rocket Go Fast! was my Sophomore Student Team Project as part of a 5 person team. It was a fully custom built 2D engine of which I was the Technical Lead and Graphics Programmer. As part of this project I set up the graphics asset and rendering pipeline. This included OpenGL implementation including some GLSL Shader implementation and post-processing via basic OpenGL Framebuffer implementation. In addition to the graphics system, I also supported the team in general technical support and debugging, particle system optimizations and a replay system that would play behind the results screen at the end of a level.
This project was also selected as one of a couple handful of Sophomore, Junior and Senior projects from 2017-2018 that were playable in DigiPen Arcade booth at PAX West 2018 to showcase the school. The game can be viewed and downloaded on the DigiPen Showcase website.