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
- Import SimpleJRPG from the Unity Asset Store into your project.
- Implement
ICombatanton your character class — provide Name, IsAlive, Team, Speed, TakeDamage(), and Heal(). - Create a
Battleinstance and pass in your list of combatants along with a turn system. - Choose a turn system:
ClassicTurnSystem,ATBTurnSystem,TimelineTurnSystem,PressTurnSystem, orActionPointTurnSystem. - Subscribe to events like
OnDamageDealt,OnHealed, andOnKOto wire up your UI, animations, and game logic.