Rush Park is a fast-paced 2D multiplayer action sports game. Long ago, a joyous theme park, owned and operated by a friendly gorilla, suffered a tragic malfunction. The ghost of the young girl who lost her life that day still returns to the now abandoned structures to play RazzBall with her dear friends. Players join locally and pick from 1 of 4 unique characters with special abilities. The object of the game is to push the ball all the way into your opponent's goal on either end of the park.
This game was made during Sophomore year with a team of 11 people. The team was composed of 5 programmers, 3 designers and 3 artists. This game was made from scratch using OpenGL and fmod. Before this game, I had very minimal experience working with a custom engine and had never collaborated with more than a few people.
The engine made for Rush Park was made from scratch in C++. This brought many challenges for our inexperienced team. Previously we had done some implementation of basic game engine architecture but it was a trivial undertaking compared to created a fully-featured 2D engine that would allow collaboration with artists and designers as well.
Ultimately we ran into some problems with working on scenes simultaneously and it was coupled with a setback from refactoring the engine after about a semester. The architecture that we settled on was an entity-component system that resembles some commercial engines. The idea was to update each set of components independently from the entities they were associated with in order to save time retrieving from memory.
Graphics and VFX programmer
On this team my primary role was graphics programmer. I assisted the tech director in the very early stages of setting up the rendering pipeline and created the bounding volumes that we could use for a high-speed game such as this. This was done using OpenGL and it was before we had any formal education with the specification.
After the engine began to take shape, I moved to VFX programming and worked on making a robust particle factory for effects. This is where I spent most of my time when polishing the game as well which served well when trying to make the characters feel powerful hitting the ball around.
Towards the end of the project I settled on a vector field for the ball trail particles. The idea was to create a comet trail for the ball that reacted seemingly randomly as particles remained in the scene after coming out of the ball. This led me to research 2D (and 3D) vector fields to create an array of movement vectors that was copied across the level for particles to follow.