Shape Slasher Logo

Shape Slasher

In Spring 2025, I was the teamlead and head programmer for Shape Slasher, a platformer where each time you play, the map is procedurally generated, making the experience different every time. I handled the art and music direction and help give the game a consistent visual and audio style. I also handled the UI and procedural map generation algorithm the game uses.

Role Team Lead & Gameplay/UI Programmer
Team Size 25 Developers
Duration 3 Months
Engine/Tools Unity / C#

Map Generation

In order to make each run feel different and unique, I created a two-pass procedural generation algorithm that separates dungeon layout from room placement. It first uses a random-walk strategy with constraint checks to build a cohesive grid layout of standard rooms, backtracking whenever it hits a dead end. Once a layout is made, a second pass analyzes the map to swap specific standard rooms with key focal points like boss, shop, and challenge rooms. The number of total rooms and focal points can be adjusted as well. Given the limited time frame, rather than generating each room, the game uses prebuilt rooms and places a number of them during the map building process.


Combat System

For combat, I implemented a system which uses 2D box colliders to indicate both hitboxes and hurtboxes. I wanted to separate this from the player or any particular enemy so objects/hazards in the scene could utilize these to deal or take damage. For the player and enemys I sync the hitboxes to their attack visuals via the in-engine animator. This way the level designers can easily manipulate where these hitboxes are as well as other values like damage and knockback.


Enemy AI

All enemies, including the boss, use a state machine combined with triggers and semi-frequent raycasts to move around and attack. If the player is not within one of their detection triggers, they will move around idly, using raycasts to avoid walls/ledges. If the player is in the detection trigger, and a raycast from the enemy to the player hits, then depending on factors like the player's relative location, which attacks the enemy has done previously, and if the enemy was just recently attacked, enemies have set moves they can do. This way they feel more alive, reacting to the player's actions.


Credits/Concept Art Menu

For Shape Slasher, I wanted a menu that held all the concept art not shown off in the main gameplay portion of the game, so everyone's work can be properly shown off. I passed the idea onto the team's UI artist/designer and they came up with the idea for half/half menu with credits on one side and a scrolling concept art menu on the other side. The concept art menu was a bit difficult to implement due to the shape and alignment of the buttons, but I made a script to control navigation input and automatically scroll the menu depending on which button was highlighted, making sure the scrolling stops when the top or bottom is reached.

Back to Games