Project Hypnos is an innovative turn-based combat system that combines traditional JRPG mechanics with real-time timer management and rhythm-game-inspired defensive mechanics. The system features a unique "pseudo-reverse ATB" approach where player actions are constrained by time rather than strict turn counts.
Unlike traditional turn-based RPGs where each character gets exactly one action per turn, Project Hypnos uses a time-based set system:
- Each party member has a limited time window (default: 12 seconds) to act
- Multiple actions can be taken if time remains
- A "set" continues until all party members' timers reach zero
- Strategic time management becomes as important as action selection
The battlefield uses a compass-oriented positioning system with four quadrants:
- North - Top position
- East - Right position
- South - Bottom position
- West - Left position (starting position for all party members)
- Center - Enemy position
All units are positioned logically/UI-based rather than moving in 3D space. Multiple party members can occupy the same position simultaneously.
- Battle begins with up to 4 party members (m1-m4) at the West position
- Units act in turn order (m1 → m2 → m3 → m4)
- Each unit has a real-time countdown timer (customizable, default 12s)
- Timer decreases while making decisions (moving, targeting, menu navigation)
- Only attack/skill animations pause the timer
- After all units act once, if any unit has remaining time, the cycle repeats
- Set ends when all unit timers reach zero
- Uses traditional single-action turn system
- Can target specific positions
- Can exploit elemental weaknesses
- Multiple actions based on enemy strength
Actions that END the current unit's turn:
- Melee attack
- Use item
- Use EO skill
- Use Ranti skill
- Pass (explicitly skip turn)
Actions that DO NOT end the turn:
- Transform to EO form
- Move to different position
- Check enemy turn order (T key)
- Triggered by hitting enemy weaknesses
- Applies to the next unit in turn order
- Slows their timer tick rate (e.g., 0.75x, 0.5x speed)
- Capped at minimum 0.25x speed
- Visually displayed in UI with speed multiplier indicator
- Also earned by hitting weaknesses
- Adds bonus time to that unit's timer in the next set
- Example: +2s SP means 14s instead of 12s next set
- Displayed in unit status area
Features a Mario & Luigi / Paper Mario inspired action command system:
- Select enemy target using WASD
- Attack animation begins
- Action command ring appears with buttons: E, Q, R, ⎵ (Space)
- Four prompts appear randomly assigned to buttons:
- Delta - 100% damage (Amazing)
- Theta - 75% damage (Great)
- Alpha - 50% damage (Good)
- Beta - 25% damage (OK)
- Player has 0.8 seconds to press the correct button
- Sequence repeats 3 times per attack
- Total damage = sum of all three inputs (max 300%)
- Successful timing grants EO gauge increase
In EO Form: Melee attacks are single animated strikes with no action commands.
- Only accessible in EO (Egbe Orun) form
- Consume MP (Mana Points)
- Accessed via Skills menu (E button when in EO form)
- Accessed via Items menu (R button)
- Available in both base and EO forms
- Require specific unit combinations and positions
- Can be unit-activation specific (only certain units can initiate)
- May require units in base form, EO form, or mixed states
- Consume MP/HP depending on the skill
- Example: "m1 in North + m2 & m3 in East" configuration requirement
Defense varies based on position occupancy:
- Guard: Always successful, reduces damage, minor EO gain
- Dodge: Timed input, zero damage on success, moderate EO gain
- Parry is not available in group positions
- Dodge: Easier timing window, zero damage, minor EO gain
- Parry: Tight timing window, counterattacks + major EO gain
- Guard is not available when alone
Defense Timing Windows:
- Dodge Perfect: 0.1s (100ms)
- Dodge Good: 0.3s (300ms)
- Parry Perfect (Counter): 0.05s (50ms)
- Parry Good: 0.15s (150ms)
All defensive actions are rhythm-game style real-time reactions during enemy attacks.
- Gradual fill after each turn/set
- Blocking, dodging, and especially parrying build EO
- Successful action commands during melee also build EO
When the gauge is full, units can transform:
Visual Changes (planned for future):
- 2D sprite → 3D low-poly PS1-style model
Mechanical Changes:
- Stat boosts applied
- Unlock MP bar and magic/special skills
- HP damage redirects to EO bar instead
- If EO bar depletes from damage → forced de-transformation
Triggered when EO bar is fully depleted by enemy attacks:
- HP immediately drops to 25% of max (if higher)
- Unit reverts to base form
- EO gain rate reduced by 50%
- Makes future transformations harder to achieve
Units have elemental weaknesses and resistances:
- Physical - Standard melee damage
- Fire, Water, Earth, Air - Classic elements
- Light, Dark - Special elements
Weakness Exploitation:
- Deals increased damage (multiplier based on resistance value)
- Grants SP time to attacker
- Applies TFN to next unit
- If in EO form, depletes EO bar faster
- Enemies gain extra turns if exploiting player weaknesses
- W/A/S/D - Positional movement indicators
- T - View enemy turn order
A circular menu (placeholder, will be dreamcatcher graphic) with four buttons:
| Button | Position | Base Form Function | EO Form Function |
|---|---|---|---|
| E | North | EO Transform | Skills Menu |
| ⎵ | West | Melee Attack | Simple Melee |
| R | East | Items Menu | Items Menu |
| Q | South | Ranti Skills | Ranti Skills |
Below Command Circle:
- 1 Key - Retry battle (reset to start state)
- N Key - Pass turn
- Active unit name header
- Enlarged timer bar for current unit
- Timer speed indicator (when TFN active)
- Player Set / Enemy Set indicator (text placeholder for icon)
Party Status Display (vertical, by turn order):
- Current unit shown largest at top
- Remaining units below in turn order
- Each unit shows:
- HP bar + value
- EO bar + value
- MP bar + value (only visible in EO form)
- Status effect icons/labels (SO, TFN, SP)
Other Units (Not Active):
- Small timer bars displayed above their heads in the battlefield
The base class for all combatants (players and enemies).
Key Properties:
- Health (HP), Timer, EO gauge, MP
- Elemental resistances
- Position tracking
- Status effects (Stressed Out, Incapacitated)
Key Functions:
ResetTimer()- Applies SP bonuses and resets for new setTakeDamageCustom()- Handles elemental damage and EO/HP routingTransformToEO()/ExitEOForm()- Transformation managementGainEO()- EO gauge buildingApplyStressedOut()- SO debuff application
Central controller for battle flow and state management.
Key Responsibilities:
- Turn order management
- Set completion tracking
- Timer tick management (paused during animations)
- TFN/SP system orchestration
- Battle state transitions
Key Functions:
StartBattle()- Initialize battle stateEndCurrentUnitTurn()- Progress to next unit or end setPassTurn()- Explicit turn skipRetryBattle()- Reset to battle startAttackUnit()- Process attacks with elemental calculationsHandleWeaknessHit()- Apply TFN and SP rewards
Manages unit positioning and position-based logic.
Key Functions:
MoveUnitToPosition()- Handle unit movementGetUnitsAtPosition()- Query position occupancyCanUseGuard()/CanUseParry()- Position-based defense availability
Handles all defensive mechanics and timing evaluation.
Key Functions:
AttemptGuard()/AttemptDodge()/AttemptParry()- Process defense attemptsEvaluateDefenseResult()- Timing accuracy evaluationCalculateDamageReduction()- Defense effectivenessProcessDefenseAttempt()- Complete defense resolution with EO gainOnCounterAttack()- Trigger parry counterattacks
UMG widget for the battle UI.
Key Responsibilities:
- Real-time timer display updates
- Unit status visualization (HP/EO/MP bars)
- Button state management (enabled/disabled based on context)
- TFN/SP/SO status indicators
- Command circle interaction
- Core battle flow (sets, turn order, timer system)
- Position management (4 quadrants + center)
- Basic attack system with elemental damage
- TFN (Time For Now) mechanic
- SP (Stockpile) mechanic
- EO gauge building and transformation
- Stressed Out debuff
- Defense system framework (Guard/Dodge/Parry)
- Position-based defense availability
- UI widget structure
- Retry battle functionality
- Turn skip detection for KO/incapacitated units
- Melee action command minigame (button prompts, timing system)
- Defense timing minigame (rhythm-game input detection)
- Enemy AI (currently placeholder)
- Skills system (skill definitions, MP costs, targeting)
- Items system (inventory, item effects)
- Ranti skills system (combo configurations, multi-unit requirements)
- Visual transformations (2D sprite → 3D model for EO form)
- Animation system (attack animations, skill VFX)
- Sound effects (action feedback, transformation audio)
- Enemy turn order display (T key functionality)
- Complete UI polish (dreamcatcher command circle, icons)
- Unreal Engine 5.6
- Visual Studio 2022 (or compatible C++ IDE)
- Basic understanding of UMG (Unreal Motion Graphics)
- Clone the repository
- Open
ProjectHypnos.uprojectin Unreal Engine - Compile the C++ code (Build → Build Solution in Visual Studio)
- Open the Content Browser and navigate to Battle System blueprints
- Place
BattleManageractor in your level - Place
PositionManageractor in your level - Place
DefenseManageractor in your level - Create 4
CombatUnitblueprints for player units - Create 1+
CombatUnitblueprints for enemy units - Assign units to
BattleManagerarrays:- Add player units to
PlayerUnitsarray - Add enemy units to
EnemyUnitsarray
- Add player units to
- Create a
BattleHUDWidgetblueprint (parent: UBattleHUDWidget) - Design the UI layout with required widget bindings
- Call
BattleManager->StartBattle()to begin
BattleManager:
BaseTimerDuration- Time per unit (default: 12s)TFNSpeedMultiplier- Timer slowdown amount
CombatUnit:
MaxHP- Unit healthMaxEO- EO gauge capacityMaxMP- Mana capacity (EO form only)TimerDuration- Per-unit timer overrideElementalResistances- Weakness/resistance configuration
DefenseManager:
DodgePerfectWindow- Perfect dodge timing (0.1s)ParryPerfectWindow- Perfect parry timing (0.05s)GuardDamageReduction- Guard effectiveness (50%)ParryEOGain- EO gained from successful parry (25)
This battle system draws inspiration from:
- Persona 3 Reload / Persona 5 - UI design, weakness system, turn order display
- Metaphor: ReFantazio - Command circle layout, retry functionality, menu aesthetics
- Paper Mario: TTYD / Mario & Luigi - Action command timing mechanics
- Final Fantasy X - Turn order visualization, status display
- Clair Expedition 33 - Rhythm-based defensive reactions
- Deltarune - Turn-based structure with interactive elements
- Basic battle flow
- Action command minigames
- Defense timing system
- Enemy AI
- Skills database and implementation
- Items and inventory
- Ranti skill configurations
- Enemy variety and behaviors
- Visual effects and animations
- Sound design and music integration
- UI refinement (dreamcatcher command circle)
- EO transformation visuals (2D → 3D)
- Multiple enemy encounters
- Battle formations
- Status effect variety
- Equipment system
- Difficulty scaling
This is currently a proof of concept for a personal project. Feedback and suggestions are welcome!
Copyright © 2025. All rights reserved.
Project Hypnos - Where time is your greatest weapon and your harshest limitation.