top of page
Game Download
Crusade Combat Design
In Crusade, combat is the heart of the player experience an intricate, rewarding system that challenges, immerses, and empowers players. As the Lead Developer and sole creator on this six-month solo project, I designed and implemented all core combat systems from the ground up, focusing on player agency, strategic depth, and responsive feedback.
The combat design in Crusade draws inspiration from Soulslike principles rewarding mastery, demanding precision, and punishing recklessness. Every mechanic is purpose-built to support a consistent, engaging, and fair gameplay loop.
Role
Lead Developer
team size
1 person
development time
6 months
Game Engine
Unity
Genre
Action Role-Play (Souls Like)
Technologies used

Unity

C#

GIT

Photoshop

Audacity

Trello
Core Combat Systems
Inspired by the design philosophies of Souls-like games, my goal was to create a combat system that felt fluid, responsive, and tactically deep. This required more than just implementing attacks and hitboxes—it meant engineering mechanics that empower player agency, encourage strategic thinking, and maintain a consistent challenge across every fight. The combat systems I designed include:
combat loop
The core combat loop in Crusade is designed to challenge players with a deliberate and rewarding system that emphasizes timing, resource management, and player skill. Players engage enemies by assessing their stance, attack patterns, and distance, then commit to attacks choosing between light, heavy, or charged strikes while managing stamina, poise, and positioning. Every action, from attacking to defending, drains stamina, forcing players to carefully weigh their options. Defensive options include dodging, blocking, and parrying, each offering different advantages based on timing and stamina cost. The poise system allows players to withstand hits up to a limit, rewarding calculated aggression and creating opportunities to break enemy stances for devastating riposte attacks. Combat encounters evolve into a dance of risk and reward, where the player must adapt, exploit openings, and manage their resources effectively. Victory grants progression, loot, and a sense of mastery, while defeat punishes the reckless and teaches the importance of patience and strategy. This system fosters a dynamic rhythm of tension and release, with every encounter presenting a test of skill, endurance, and adaptability.

weapon system
The Weapon System is a core pillar of my combat framework, designed to enable dynamic, skill-based interactions between players and AI enemies. Drawing inspiration from Soulslike mechanics. the weapon system is designed deliberately for high-stakes combat that emphasizes precise timing, risk-versus-reward decision-making, and responsive controls that reward player mastery. Each weapon type is crafted to deliver a unique gameplay experience, with its own set of attack animations, damage profiles, stamina costs, and gameplay properties such as poise damage, stance-breaking capabilities, and opportunities for critical hits like backstabs and ripostes.
Fundamentally the system is designed for modularity and scalability. By using Scriptable Objects to define weapon data, I’ve enabled a streamlined workflow where designing and developing new weapons with minimal friction complete with custom models, animation sets, sound effects and balance tuning. This architecture empowers rapid iteration, whether fine-tuning existing weapons or introducing entirely new categories, such as swords, axes, spears, or magic staffs.



armor and equipment system
I developed an armor and equipment system that empowers players to make strategic choices and enhances the depth of combat encounters. Players have access to four armor slots head, chest, arms and legs each contributing specific defensive values that directly impact how much damage is taken from enemy attacks. Since the enemy AI operates on the same damage model as the player, this design ensures fairness and transparency in combat. Armor isn’t just about defense; it’s a critical part of the buildcrafting process, encouraging players to balance protection, weight, and mobility to suit their preferred playstyle. For example, heavier armor provides more damage absorption but at the cost of increased stamina consumption and slower movement, while lighter armor offers agility but less protection. The equipment system also includes three weapon slots for each hand, enabling dual-wielding setups that allow for diverse combat styles, such as pairing a sword with a shield or dual-wielding heavy weapons for high-risk, high-reward encounters. Each weapon features customizable parameters like attack modifiers, stamina costs, and block absorption values ensuring a unique feel for every weapon and enabling fine-tuned balance across the arsenal. Together, the armor and equipment system forms the backbone of the combat experience, rewarding thoughtful planning, build experimentation, and tactical decision-making in every fight.

AI framework
For Crusade, I designed and implemented a robust AI framework that enables enemies to exhibit intelligent and responsive behaviors, creating dynamic combat encounters that challenge the player. The system is built around a state-driven architecture, where each AI character transitions between states such as Idle, Chasing, Attacking, and Recovering, depending on the situation. Each state is managed through an AICharacterManager that handles animation triggers, combat logic, decision-making, and navigation using Unity’s NavMesh system. Enemy behavior is enhanced by poise-based mechanics, allowing them to stagger and recover dynamically based on player actions, creating satisfying feedback loops. I also integrated support for multiplayer compatibility, ensuring AI synchronization across clients. This modular AI system allows for the easy creation of new enemy types, attack patterns, and boss behaviors, while remaining scalable and adaptable for future content. My focus on clear visual telegraphs, reactive enemy decision-making, and seamless integration with other gameplay systems ensures that AI in Crusade not only challenges the player but feels fair, engaging, and deeply integrated into the game’s core combat loop.
Every mechanic was built with a focus on player choice and mastery, ensuring that success in combat comes from understanding the systems, adapting strategies, and honing skills. Whether it’s timing a riposte, managing stamina, or exploiting enemy weaknesses, the combat design in The Crusade encourages players to take ownership of their playstyle and rewards them for learning the game's intricacies.
This section of my portfolio dives deep into the technical and design aspects of these systems, illustrating not just how they work, but why they exist, and how they contribute to the overall player experience.
Design Process & Intentions
Combat pillars
Combat in Crusade is built around deliberate, skill-based decision-making, where every action carries weight and risk. Players must carefully manage stamina as a finite resource, balancing offense and defense through well-timed attacks, dodges, blocks, and parries. The poise system rewards aggression and precision, creating dynamic combat scenarios where breaking an enemy's stance opens opportunities for devastating counterattacks. High-stakes encounters demand mastery, as both players and enemies can be punished for overextending or mistiming an action. Clarity in visual and audio feedback ensures that enemy telegraphs are readable, enabling players to react effectively. Combat diversity is emphasized through a variety of weapons, playstyles, and enemy types, encouraging players to adapt their strategies and experiment with different builds. Ultimately, Crusade’s combat challenges players to engage thoughtfully and skillfully, with success being the result of careful planning, execution, and learning from each encounter.
Balancing goals
My balancing goals for the combat system centered on creating a fair, transparent, and engaging gameplay loop that rewards strategic thinking and build diversity. A core design pillar was ensuring that both players and enemy AI operate on the same damage model meaning the damage players deal and receive is governed by consistent rules. This promotes clarity in combat interactions and helps players better understand how factors like armor values, weapon scaling, and stamina costs affect outcomes. I aimed to make armor a meaningful part of the balance by ensuring it directly mitigates damage and influences playstyle heavier armor offers stronger defense but limits mobility and increases stamina costs, while lighter armor favors agility but provides less protection. Weapons were balanced through individual tuning of damage modifiers, stamina costs, and block absorption, allowing each to feel unique and support different combat strategies. The goal was to encourage players to experiment with various builds, understanding that no single setup is optimal for every situation. By designing systems that reward knowledge, adaptability, and thoughtful preparation, the balance promotes fairness without homogenizing gameplay, ensuring that every weapon, armor piece, and stat choice has a real impact on the player’s performance in combat.
Iterations & testing
Throughout development, I followed an iterative approach to balancing and refining the combat system, ensuring that every mechanic felt fair, intuitive, and rewarding. Each iteration began by identifying pain points through playtesting whether it was weapons feeling too overpowered or certain armor combinations rendering players too fragile or too tanky. I adjusted parameters like damage scaling, stamina costs, and armor absorption values in small, deliberate increments, focusing on how these changes impacted the flow of combat and the overall player experience. For example, I would fine-tune the stamina cost of heavy weapons to encourage risk-reward decision-making or adjust the block absorption of shields to ensure defensive playstyles remained viable but not overpowered. I also tested how different AI behaviors interacted with player builds, ensuring that the shared damage model created consistent and engaging encounters across different enemy types. This iterative testing process involved gathering feedback, analyzing data from combat encounters, and continually refining the system to maintain balance while supporting diverse playstyles. The result is a combat system where every choice whether in weapon selection, armor setup, or stat allocation feels impactful, fair, and engaging.
Enemy Design & AI Behaviors
Enemy archetypes
In Crusade, enemy archetypes play a crucial role in shaping the combat experience, providing variety, challenge, and opportunities for players to test their mastery of the game’s core systems. Each archetype is designed to embody distinct combat behaviors, encouraging players to adapt their strategies and experiment with different builds. For example, standard grunts act as foundational enemies, introducing basic attack patterns and allowing players to practice core mechanics like dodging and stamina management. In contrast, elite enemies present a greater challenge, featuring advanced behaviors such as delayed attack timings, combo chains, and higher poise thresholds, rewarding players who learn to read subtle telegraphs and commit to high-risk counters like parries or stance breaks. Bosses build upon these archetypes by combining unique abilities, multi-phase patterns, transforming combat encounters into layered, tactical puzzles that reward patience, observation, and precise execution. By designing enemies that challenge different aspects of the combat loop—be it stamina management, poise breaking, or timing defensive actions—the enemy archetypes in Crusade reinforce the game’s combat pillars and ensure that every fight remains fresh, demanding, and rewarding.
standard grunts



Bosses

I also have plans on adding Ranged enemies add spatial pressure, forcing players to prioritize targets and manage positioning, while fast, agile foes exploit gaps in player timing, punishing hesitation or overextension. Additionally, heavy enemies function as defensive walls, testing the player’s ability to break through poise or exploit elemental weaknesses, and swarm units create chaos by overwhelming the player, challenging their spatial awareness and crowd control skills.
Break down AI logic
The AI system in the AICharacterManager is structured around a modular, state-driven architecture designed for flexibility, scalability, and maintainability. At its core, the AI operates as a finite state machine (FSM) where the AICharacterManager holds a reference to the current AIState. Each frame, the AI’s logic is processed via the Tick() method of the active state, allowing for real-time decision-making.
The AI’s logic flow can be summarized as follows:
-
Initialization: On spawning, the AICharacterManager instantiates key state objects (e.g., IdleState, PursueTargetState, CombatStanceState, AttackState) and sets the starting state (typically IdleState).
-
State Processing: Each frame in FixedUpdate(), the system calls ProcessStateMachine(), which triggers the current state’s Tick() function. The active state performs its logic like checking distances, evaluating target visibility, or deciding when to attack and may return a new state based on the situation.
-
State Transitions: If the state returns a new state, AICharacterManager updates its currentState reference, seamlessly transitioning the AI’s behavior (e.g., from IdleState to PursueTargetState when a target is detected).
-
NavMesh Pathfinding: The AI uses Unity’s NavMeshAgent for pathfinding, moving towards targets while respecting obstacles and dynamic terrain. The AICharacterManager ensures the agent’s local position and rotation are reset each frame to align with the networked object, preventing drift.
-
Combat Awareness: The AI continuously updates critical combat data, such as the direction and distance to its current target, using helper utilities like WorldUtilityManager. These values inform combat logic, such as whether to engage, pursue, or retreat.
-
Network Synchronization: In multiplayer scenarios, the AI’s key variables (e.g., currentHealth, isMoving) are synchronized across the network using NetworkVariables in the AICharacterNetworkManager. This ensures all clients see consistent AI behavior.
-
Modular Subsystems: The AI logic is further divided across dedicated manager classes (AICharacterCombatManager, AICharacterLocomotionManager, etc.), each responsible for specific tasks like handling combat animations, movement logic, or inventory management. This separation of concerns makes the AI system easier to maintain, extend, and debug.
Overall, the AI logic is a layered and modular system, enabling reactive, dynamic, and engaging NPC behavior that can evolve over time with minimal refactoring.
bottom of page