
Flowstone Saga
Flowstone Saga is a hybrid JRPG-puzzle game that mixes the storytelling, art and character advancement of classic RPGs with a unique battle system based around a Tetris-like falling block mechanic.
Studio: Impact Gameworks
Team Size: 10+
Platforms: Steam, Switch
My Role: Game Design Intern
My responsibilities:
Collaborate with the team to design system mechanics, monsters, and player abilities.
Implement systems, monster and abilities using C# in Unity.
Aid with other miscellaneous implementation tasks such as setting up sound triggers in code, and setting up VFX using the Unity editor.
Monster Design
Most of my work on Flowstone has gone into monster design and implementation. The Wave Knave is one of the monsters I designed for the game.
For this monster, I thought of its name as a starting point. The team was brainstorming monsters for an ocean-themed zone, and a lot of the monsters in the game have goofy or whimsical themes, so when I thought of that name I felt like it was a fun jumping off point.
Since knaves are thieving characters, its main ability is to steal gold when it attacks the player. Once it is damaged enough, it will try to flee the battle, keeping the gold.
I like to design like this, starting with a vibe-first approach. It makes it easier to create monsters that fit well in the world and don’t feel like they’re out of place.
Our artists played off my design by illustrating the monster holding a bag of treasure.
In addition to designing its abilities, I coded those abilities in C#, and used art assets provided by the team to create VFX for its gold stealing ability.
System Design
Monster passives are a good example of a system I implemented in the game. When I joined the team all monster abilities were tied to attacks. I implemented a new system for adding broader abilities to monsters. For example, the ability pictured is a special tornado stance one of our bosses uses to reflect damage.
I implemented the monster passive system in C# by inheriting from Unity’s Scriptable Object class. This allows passives to be created as an easily-editable asset that myself or other designers can conveniently tweak for balancing purposes. Any number of passives can be assigned to monsters, and their effects can vary greatly from one another.
This system also made it easy for us to balance passives for the easy, medium and hard modes in the game. You can simply duplicate a passive, and adjust its variables to make an easier or harder version of it.
Sample Code
Here is a piece of sample code from this project. This class inherits from Scriptable Object, which allows myself or other designers to easily rebalance the ability in the Unity editor outside the context of a specific scene. It can be assigned to different monsters in the game. Its CanUse function is called during battles to see if it’s an appropriate time to use the ability, and its ExecuteAttack function is called when the ability is used. It includes a simple custom Editor script at the bottom to create a field in the inspector that is only required under certain circumstances.
This script is a good example of a piece of simple gameplay programming. It is also built in a flexible way, in that it’s easy for designers to tweak the balance and rules of the ability without the need for any programming knowledge.



