Seaside Showdown

Game Director | System Designer | Technical Designer
Theme:
Top-down, local multiplayer, 2D , party game
Duration:
2024-2025 (9 months)
A fast-paced top-down, 2D fighter party game where you can choose three abilities of your choice to create your own combo. Fight and knock other players off the battlefield, be the last one standing to win!
My Contribution
Directed the game in a team of 7 people, including artists, engineers, and designers.
Developed a prototype of the game in Unity, proving the concept, decreasing the engineer's work on prototyping by half, and allowing them to focus on the game's OpenGL engine.
Developed a level-designing tool to assist level designers, enhanced the design iteration speed to 4 maps per week from 2 maps per week.
Developed a custom extension from Unity's tile map for the game's tile destruction and animations.
Production Journey
Conceptual Phase
During the early conceptual phase, Seaside Showdown was heavily based on Super Smash Bros Ultimate. With a twist of allow players to choose 3 abilities of their choice instead of fixed character and DESTRUCTABLE battlemaps.


Proving The Concept
With Unity, I developed the game prototype for proving the game concept and technical features of the game.

I recreated the collapsing tiles mechanic from Hammer Dongers in my game prototype to prove if the mechanic would go well with knockback abilities.
Redirecting the Concept Pillar

After a few tests, I find that the players just keep throwing projectiles at each other to knock each other off the map which is not the intended design as one of the core mechanics, collapsing tiles, isn't being used much as it should be.
I brought the matter up to the team and decided to strip the idea of trying to come up with complicated skills like Smash Bros. and then reference the gameplay based on Hammer Dongers instead to keep the core mechanic as destructible battle maps and keep the gameplay feeling like a casual party game.
Early Engine Build

With the early engine build being done, we get to know the limit of what can be done before the deadline better. The worst news is we know that our environment artist wouldn't be able to animate the wall breaking in time and would need to cut the wall feature out of the game, which altered the intended experience of the game a lot.
During this phase, I use the Unity prototype version to determine which abilities would be present in the OpenGL engine build and start cutting some of the abilities off the game and choose the meaningful ones.
Beta Build
After one academic year of development, Seaside Showdown was finally published on itch.io with 7 abilities to choose from and 1 battle map.


Custom Extension for Unity's Tilemap
Because our game is grid-based, it made sense to use Unity's Tilemap to shape the map for the level-designing tool. However, there were 2 big problems I came across while working on it.
It doesn't support animation transitions
Unity offers animated tiles, but they were made mainly for looping animations without any way to transition animations.
The tilemaps are counted as a single game object
If I use collision detection for checking which tiles got hit by an attack, the whole map is getting destroyed because they are counted as one single collider.

How I solve those?
I created a ScriptableObject class called TileData for storing the state of the tile and wrote a function for playing the animation of the tile being destroyed, using coroutine to control the speed of the animation.


To create the game's collapsing tiles mechanic, I use Breadth-First Search with coroutine timing added so tiles fall in a timed wave spreading outward from the starting tile.


In Seaside Showdown, attacks must interact with the environment from any direction across a full 360-degree angle. To support this, I designed a procedural attack system that dynamically samples both radial and area-based hit positions around the center of the attack position.
The explosion first calculates the bounds of a square centered on the object using trigonometric corner calculations, then iterates through this area, finding a grid of points that represent the filled interior of the explosion.

At this point, the attack looks too squarish. I wanted it to look more circular, so I edited the code to do a radial sweep from 0° to 360°, generating positions along the attack’s outer ring. The sampled positions are converted into tile coordinates, filtered for any duplicates, and applied to the environment through tile damage functions.


Conclusion
This is the first long-term project that I took part in. I understood how important it is to communicate with your teammates, checking each person's progress and estimating the time needed for each task.
I also learned about scoping in a very hard way. The game ended up getting launched with massive content being cut of the game, most of the feedback is lacking, and the gameplay isn't looking as good as the team was hoping, but everyone did the best on their part. It was a big mistake, a beautiful mistake in my opinion.


