Combat Prototype
A "Free-Flow" combat system inspired by the fantasy of a Battle Mage, developed through a theoretical framework and followed by a prototype to validate the core mechanics of the system.
Introduction
In my pursuit of developing a versatile profile, I have acquired TECHNICAL SKILLS THAT ALLOW ME TO PROTOTYPE some of my ideas independently. The goal is to minimize reliance on programmers, enabling me to test and modify various aspects of a feature on my own.
THIS PROJECT WAS A THREE-DAY EXERCISE in which, within artificial constraints, I CONCEPTUALIZED A NEW FEATURE to enhance a desired experience. I began with a THEORETICAL REFLECTION to design the feature (one workday), FOLLOWED BY PROTOTYPING (two workdays) to validate the idea and collect feedback from my peers regarding the feature's relevance within the game.
Theorical Approach
Base Constraints:
The core experience of the game revolves around a MARTIAL ARTIST WARLOCK FANTASY—playing as a skilled sorcerer who also excels in close-quarters combat.
The game features a "FREE-FLOW COMBAT" system, similar to titles like Shadow of War or the Batman: Arkham series.
The objective is to introduce a feature that seamlessly integrates spellcasting into the combat system.

Groundwork:
First, let's analyze the concept of "Free-Flow Combat." This combat style embodies a fantasy of high-mobility fighting, allowing the player to take on numerous enemies with fluidity and precision. It can be summarized using the following key elements:

The goal of this feature is to establish a proposition that aligns with both the combat experience and the narrative of a Martial Spellcaster. By this, I mean the narrative that emerges through the use of the mechanics. I envision the narrative as follows:
Casting a spell is RISKY. While offering significant support, it requires the fighter to focus on the casting, thereby DIVERTING THEIR EYES from the combat.
Casting a spell has a SIGNIFICANT IMPACT on the fighter's stamina.
Spellcasting must be a WELL-TIMED action to be effective.
From a game design perspective, and drawing from the principles of PENS (Player Experience of Need Satisfaction) and SDT (Self-Determination Theory), the mechanic should fulfill the player's inherent need for AUTONOMY, enhancing the replayability of the combat system.
Lastly, the mechanic should reinforce the core elements of the free-flow combat system, emphasizing KIT MASTERY, strategic engagement with encounter composition, and the interplay of multiple ATTRIBUTES.

Core Idea:
The player would have EQUIPABLE SPELLS TO ALIGN THE GAMEPLAY MORE CLOSELY WITH AN RPG SYSTEM and introduce the concept of a loadout approach. This loadout system allows for the creation of a framework that supports multiple skills and attribute-based spells, which can interact differently with various types of enemies, adding strategic depth.
During combat, or even before a fight, the player can CAST SPELLS BY PERFORMING A SEQUENCE OF INPUTS (e.g., up, down, left, right) to trigger the desired spell. Once the spell is cast, the player remains immobilized for the duration of the casting process. The input sequence is displayed on the screen and can be either memorized or read directly, requiring the player to momentarily shift their focus from the combat.
This system is directly inspired by the stratagems mechanic from Helldivers 2, but it is designed with the additional concept of combos in mind. This allows players to create chains of actions or multiple triggers, similar to mechanics found in games like Path of Exile 2.

THIS SPELLCASTING SYSTEM AIMS TO BLEND TACTICAL DECISION-MAKING WITH FAST-PACED ACTION, ENCOURAGING PLAYERS TO EXPERIMENT WITH DIFFERENT SPELL COMBINATIONS AND STRATEGIC APPROACHES, WHILE PROVIDING LOW CHALLENGES AND HIGH AUTONOMY.
To provide practical examples of spells and potential combos:
Example 1: The player can cast a pentagram on the ground, preventing enemies from entering it. While inside the pentagram, the player can cast a ranged spell, such as a beam attack, to deal significant damage from a safe position.
Example 2: The player can cast a curse on an enemy that increases the damage they take and spreads upon their death. Following this, they can cast an area-of-effect (AOE) spell that detonates all active curses, dealing instant damage to all affected enemies.
Example 3: The player can use a cone-shaped freezing spell to immobilize enemies. Once frozen, the player can cast a powerful but time-consuming fire spell to eliminate all enemies within a designated area.

Further Informations:
To balance the use of spells, the following narrative is chosen:
LIKE MANY SPELLCASTERS, AS POWERFUL OR REPETITIVE SPELLS ARE CAST, THE CASTER BEGINS TO FEEL EXHAUSTED, WHICH IMPACTS THEIR ABILITY TO FIGHT EFFECTIVELY.
To achieve this, a hidden stamina gauge is implemented to introduce uncertainty through impartial information, thereby enhancing the system's pattern-learning requirements. Each spell cast consumes a certain amount of stamina. AS STAMINA REDUCES, THE PLAYER'S COMBAT EFFECTIVENESS GRADUALLY DECLINES—enemies attack more quickly, the player's attack cooldowns become longer, movement speed is reduced, and other limitations come into play.

The goal of this system is to create a "soft constraint" on ability usage, encouraging a thoughtful risk-reward approach and careful consideration of spell loadouts and usage strategies.

Prototype Approach
Project Layout:
With this in mind, it was time to test it!
The first step was to create the combat system for Free-Flow Combat. Thanks to the abundance of resources and documentation available online, I was able to quickly put together a simple version. Since combat wasn't the primary focus of this exercise, I OPTED FOR A PURELY FUNCTIONAL IMPLEMENTATION, which I completed within a single workday. This version included:
The attack mechanic
The parry mechanic
A basic AI loop with movement and attacking
With these elements in place, the core gameplay was functional even without animations. This allowed me to shift my focus to developing the spell system.

Main System:
The goal was to create an EASILY ITERATABLE SYSTEM. With that in mind, the system was structured as follows:
I CREATED AN ABSTRACT CLASS CALLED SPELLDATA, which allows me to generate ScriptableObjects. Inside this class, I included the common variables as well as an abstract function to cast the spell.
FOR EACH SPELL, I CREATED A SCRIPT THAT INHERITS FROM SPELLDATA. In these scripts, I defined the specific variables for each spell as well as its effects. Some effects required calling functions from the enemy or player scripts, which were organized into a dedicated region to maintain clean code.
A FINAL MONOBEHAVIOUR SCRIPT WAS CREATED TO HANDLE PLAYER INPUT AND EXECUTE THE SPELLS. This script is responsible for managing the input buffer and determining the direction based on the chain referenced in the ScriptableObject.
Next, a UI script was set up to automatically generate the necessary HUD elements based on the spells equipped by the player.

Once this structure was in place, I created three test spells to iterate on the system:
Teleport Spell: Allows the player to teleport a set distance in front of them.
Short input chain / short cast time / stamina cost
Shockwave Spell: Knocks back and stuns enemies around the player for a few seconds.
Medium input chain / medium cast time / stamina cost
Berserk Spell: Empowers the player’s combat abilities for a few seconds (reduces attack cooldown and increases damage).
Long input chain / long cast time / stamina cost
With the core spells implemented, I finished by ADDING THE STAMINA SYSTEM. This part was straightforward and primarily required integrating it with the existing codebase.

Game Feel:
Due to the time constraints I set for myself and the time spent replicating the combat system, I WASN’T ABLE TO DIVE AS DEEPLY INTO REFINING THE GAME FEEL AS I WOULD HAVE LIKED. As a result, the game feels a bit lacking in visual effects and feedback, which would help convey the current situation more clearly.
That said, I did manage to implement a few camera shakes, improve the UI, and add some basic feedback elements to give players a better sense of what’s happening on screen.
Conclusion
After testing the prototype and letting some friends try out the controller, the overall system is performing better than expected!
PLAYERS REALLY ENJOY EXPERIMENTING WITH THE SPELLS, constantly asking themselves which one to use and how to streamline their combat. The system also ENCOURAGES THEM TO WANT MORE SPELLS TO PLAY WITH and to carefully consider their loadout and combo setups.
However, during testing, I identified an area for improvement. PLAYERS SEEM TO STRUGGLE WITH CLEAR CUES FOR CASTING SPELLS AND KNOWING THE RIGHT MOMENT TO ACTIVATE THEM. This challenge is compounded by the lack of animations and feedback, even though some mechanical adjustments could help. I plan to address this in an upcoming update, as the potential in the prototype is becoming more apparent.