View: Multi-Page Single Page

About

The design philosophy behind SimpleJRPG.

Design Philosophy

SimpleJRPG orchestrates battles — turn order, events, state management. You implement damage formulas, design status effects, and build your UI.

SimpleJRPG has no opinions on your game design. It uses pass-through strings instead of enums for all game-specific values like damage types, elements, status IDs, and buff IDs. We never interpret what "Fire" or "Poison" means — your system decides.

Everything is instance-based. No singletons, no statics, no global state. Create a Battle instance, pass in your combatants and a turn system, subscribe to events, and call combat verbs. That's it.

What SimpleJRPG Is NOT

  • Not a complete battle system — it's the skeleton, you add the flesh. We provide orchestration; you provide the game.
  • Not opinionated about damage formulas, stat systems, or game balance — you do the math, pass us the result, and we route it through.
  • Not a UI framework — events let you drive any UI you want. We fire OnDamageDealt, you decide what that looks like on screen.
  • Not dependent on Unity — pure C#, no MonoBehaviours, no ScriptableObjects, no UnityEngine imports. The asmdef uses noEngineReferences: true.

Version History

  • v2.0 (February 2026) — Complete rewrite. Lean runtime API with an instance-based Battle class, pluggable turn systems (Classic, ATB, Timeline, Press Turn, Action Point), before-events for cancellation and modification, and battle helpers (multi-target, queries, history, results).
  • v1.0 (scrapped) — ScriptableObject-based composable effects system. Over-engineered abstraction layers. Lesson learned.

Support

For questions, bug reports, and feature requests:

↓ ↑