Roguelike Action Game | 2D Animation | Rigging | Shaders | VFX | Unity
Overview
Graveyard Shift is a Roguelike Action game where you take on the role of a courier for STX, the afterlife’ soul delivery service. Your mission is to collect lost souls from the graveyard before they become corrupted. Skate through the eerie grounds, dodging hazards and racing against time—because if you’re not careful, you might end up corrupted yourself.
My Role
Tech Art & Integration - Implemented assets into the game based on design needs and contributed to script edits for better visual feedback and interactions.
Animation & Shaders and VFX - Led the creation of all animations, 2D rigging, visual effects, shader graphs and post-processing to enhance game feel and responsiveness.
Juicifying - Focused on game feedback, ensuring smooth, engaging animations and effects that heightened the overall player experience.
Project Breakdown
2D Rigging & Animation
One of my main goals in this project was to enhance my knowledge of 2D rigging. Collaborating with my fellow designer, we prepared the character design for animation before I imported it into Unity to experiment with the rig. I gained hands-on experience with IK animation, geometry, weight distribution, and the overall fundamentals of rigging.
For the animations, we had three main states—idle, skate, and dash. To make them more modular and flexible, I explored Unity’s animation layers for the first time. I split the character’s movement into three layers: top, bottom, and accessories (tie and horns). To my surprise, the rig transitioned smoothly between states, resulting in fluid and dynamic animations. The final outcome exceeded my expectations and I am very satisfied with the results.
Souls Animations & Visual Effects
Initially, we had 2 types of souls—good souls and corrupted souls—both sharing the same frame-by-frame animation with color variations handled through Shader Graph with a custom color and contrast variable that can adjust the color of the asset.

Each soul followed a consistent animation pattern:
Spawn animation (+poof particles)
Idle animation (+matching particles)
Corrupting animation (+exponential shake)
Corruption change (+poof particles)
Corruption idle (+matching particles)
Corrupting hit/explode (+poof particles)
As development progressed, we expanded the variety of souls, introducing pure souls, corrupted pure souls and vile souls. With this growing roster, I created animations for each type and adjusted their colors using the custom color shader graph, ensuring every soul remained unique and recognizable.
Wind Shader Graph
We wanted to add subtle animation to the trees in the scene, but since the assets weren’t prepared for animation due to time constraints, I opted for a shader-based solution. I followed Code Monkey’s "Simple Wind Shader Effect in Unity" tutorial on YouTube and implemented a wind shader to bring the trees to life, adding movement and atmosphere to the environment.
Invert Color Shader Graph
To save time and explore shader creation, I adapted our regular soul assets to create the corrupted souls. With help from ChatGPT, I created a shader that inverts the colors using the Minus One node on each channel. While the initial result worked, the colors appeared muddy and didn’t fit with the current palette. I refined the shader by increasing contrast and adding a custom color variable, allowing precise adjustments to match the game's color palette.

Check out more projects:

Back to Top