View: Multi-Page Single Page

SimpleJRPG

A lean runtime battle API for JRPGs

Your rules, your formulas.

Philosophy

SimpleJRPG orchestrates battles — you bring your own stats, formulas, UI, and data storage. SimpleJRPG orchestrates battles. You bring your own stats, formulas, UI, and data storage.

There are no opinionated damage formulas, no built-in status effect logic, no UI layer. Instead, SimpleJRPG exposes clean combat verbs and fires events on every action. Your code decides what "Fire" means, how much damage a critical hit deals, and what happens when a character is knocked out. We just make sure the battle flows.

Turn Systems

Five pluggable turn systems ship out of the box. Implement ITurnSystem to build your own.

Classic

DQ-style speed-sorted round-robin. Each round, combatants act in speed order. Simple, predictable, timeless.

ATB

Active Time Battle. Gauges fill over ticks based on speed. When a gauge is full, that combatant acts. No waiting for the whole team.

Timeline / CTB

Charge Time Battle. Actions have cast times that place actors on a timeline. Heavier moves push your next turn further out.

Press Turn

SMT-style team phases. Each team gets a pool of turn points. Exploit weaknesses to gain extra points; miss to lose them.

Action Point

Save or spend Action Points. Bank AP by defending, then spend it for multiple actions in a single turn. Risk and reward.

Features

Instance-Based

No singletons, no statics, no MonoBehaviours. Create a Battle instance, pass in combatants, and go.

Pass-Through Design

Strings, not enums, for all game-specific values. We don't interpret "Fire" or "Poison" — we pass them through. Your system decides what they mean.

Combat Verbs

DealDamage(), Heal(), Kill(), Revive(), ApplyStatus(), ApplyBuff(), Flee() — simple imperative methods.

Events Over Callbacks

Every verb fires an event. Subscribe to OnDamageDealt, OnHealed, OnKO, and more to drive UI, sound, VFX, or logging.

Pluggable Turn Systems

Five built-in implementations of ITurnSystem. Swap between Classic, ATB, Timeline, Press Turn, or Action Point — or write your own.

No Unity Dependencies

Pure C# with noEngineReferences: true. No ScriptableObjects, no MonoBehaviours, no UnityEngine imports. Testable anywhere.

Getting Started

  1. Import SimpleJRPG from the Unity Asset Store into your project.
  2. Implement ICombatant on your character class — provide Name, IsAlive, Team, Speed, TakeDamage(), and Heal().
  3. Create a Battle instance and pass in your list of combatants along with a turn system.
  4. Choose a turn system: ClassicTurnSystem, ATBTurnSystem, TimelineTurnSystem, PressTurnSystem, or ActionPointTurnSystem.
  5. Subscribe to events like OnDamageDealt, OnHealed, and OnKO to wire up your UI, animations, and game logic.
↓ ↑