diff --git a/docs/vision.md b/docs/vision.md index ce50773..ac37187 100644 --- a/docs/vision.md +++ b/docs/vision.md @@ -1,50 +1,53 @@ # Turn-Based Rhythm Roguelite — Working Combat Spec -## Core Pitch +## Pitch A focused, combat-first roguelite built around classic Final Fantasy-style party-vs-enemy battles, but with a rhythmic performance layer at the heart of every fight. -The game is not a rhythm game with RPG stats. It is a turn-based RPG where every action, enemy attack, defense, and build synergy has a rhythm phrase. +Less: +- Guitar Hero +- Note charts/lanes -The intended feeling is: +More: +- Turn-based RPG +- build synergy / emergent gameplay +- rhythmic combat -> A speedrunner playing Slay the Spire crossed with Expedition 33, driven by incredible backing tracks, expressive party builds, and fast call-and-response combat. +Feeling: -The player should feel like they are not merely selecting commands. They are conducting a fight. +A speedrunner playing Slay the Spire crossed with Expedition 33, driven by incredible backing tracks, expressive party builds, and fast call-and-response combat. --- ## Design Pillars -### 1. Rhythm Enhances, It Does Not Tax +Combat is built around "phrases" which guide the flow of combat seamlessly between planning and execution. -The rhythm layer should make combat feel better, deeper, and more expressive. It should not become busywork. +### 1. Rhythm Enhances -The difficulty is not in performing complex Guitar Hero-style note charts. The difficulty is in matching your performance to your build, your party, the enemy phrase, and the current combat state. +Rhythm should feel additive, not busywork/reaction tax. + +The difficulty is not in performing complex Guitar Hero-style note charts, rather it is matching your performance to your build, your party, enemies, and combat state. A simple build should be playable with simple timing. A high-risk build can ask for more precision, faster reactions, off-beat execution, or longer phrase chains. ### 2. Strategic Between Phrases, Rhythmic Inside Phrases -The game should preserve RPG strategy: party composition, jobs, passives, target priority, stagger, resources, defensive planning, and synergy. - -But once a phrase begins, combat should move. The player should be performing, reacting, guarding, countering, chaining, and recovering. - -The game should avoid long, detached planning turns that break the musical flow. +Preserve RPG strategy: party composition, jobs, passives, target priority, stagger, resources, defensive planning, and synergy. -### 3. Call and Response +But once a phrase begins, combat should move. The player should be reacting, guarding, countering, chaining, and recovering. -Enemy attacks are not just damage events. They are phrases. +Avoid long, detached planning turns that break the musical flow. -The enemy calls. The player answers. +### 3. Act and Response -The player may answer by guarding, dodging, parrying, interrupting, countering, exploiting recovery, or setting up a later payoff. +An enemy signals an action and the player responds by guarding, dodging, parrying, interrupting, countering, exploiting recovery, or setting up a later payoff. -Combat mastery comes from learning enemy rhythm, reading body language, feeling the music, and using the party build to answer threats elegantly. +Mastery comes from learning enemy rhythm, reading body language, feeling the music, and using the party build to answer threats. ### 4. Builds Change How You Perform -Jobs, characters, relics, and passives should alter the player’s relationship to rhythm. +Jobs, characters, relics, and passives alter the player’s relationship to rhythm. One build may care about downbeats. Another may care about off-beats. Another may reward perfect guards. Another may automate support actions. Another may extend combo windows. Another may create delayed spell detonations. @@ -68,8 +71,6 @@ The ideal feeling is fast, confident decision-making under rhythmic momentum. ## Target Feel -The best version of this game should feel like: - * classic JRPG battle presentation * roguelite build escalation * rhythmic combat mastery @@ -77,15 +78,9 @@ The best version of this game should feel like: * Slay the Spire-style run decisions * speedrunner-like flow * party synergy as performance -* boss fights that feel like songs without being “pick a song” rhythm stages - -The player should eventually enter a state where they are not thinking in menus as much as they are feeling the fight. +* fights that feel like songs without being “pick a song” rhythm stages ---- - -## Non-Goals - -The game should not become: +## Anti-feel * Guitar Hero with RPG damage numbers * a pure action game @@ -96,8 +91,6 @@ The game should not become: * a game where rhythm mastery invalidates build strategy * a game where build strategy invalidates execution ---- - ## Core Combat Loop Each battle flows through repeated combat phrases. @@ -111,9 +104,7 @@ At a high level: 5. Damage, stagger, tempo, buffs, debuffs, and passives resolve. 6. The fight continues without fully losing musical momentum. -Combat should feel like alternating pockets of micro-planning and rhythmic execution. - ---- +Combat feels like alternating pockets of micro-planning and rhythmic execution. ## Measures and Beats @@ -123,7 +114,7 @@ Most early combat should probably use 4/4 timing for readability. Example internal structure: -```text +``` Beat: 1 2 3 4 Enemy: windup strike recover idle Player: choose guard counter chain @@ -135,219 +126,9 @@ The beat system exists to make actions legible, authorable, and tunable. --- -## Combat Phrases - -Every major action has a phrase shape. - -Examples: - -```text -Quick Slash -Beat 1: input -Beat 2: hit -``` - -```text -Heavy Strike -Beat 1: windup -Beat 2: hold -Beat 3: release / hit -``` - -```text -Fire -Beat 1: begin cast -Beat 2: timing input -Beat 3: timing input -Beat 4: spell lands -``` - -```text -Counter -Beat 1-4: wait -On enemy impact: timed parry triggers counterattack -``` - -```text -Flurry -Beat 1: hit -Beat 2: hit -Beat 3: hit -Beat 4: finisher if chain was clean -``` - -Phrase design is the main combat design language. - ---- - -## Timing Grades - -Actions can resolve with timing quality. - -Suggested grades: - -```text -Miss -Good -Perfect -``` - -Possible effects: - -### Miss - -* reduced damage -* no bonus effect -* lose Tempo -* leave character exposed -* fail to interrupt -* spell fizzles or weakens - -### Good - -* normal expected outcome -* safe baseline -* no major penalty -* modest resource generation - -### Perfect - -* bonus damage -* bonus stagger -* gain Tempo -* trigger passives -* improve combo state -* create counter opportunities -* amplify job identity - -The baseline should be generous enough that the game remains strategic. Perfects should feel exciting and build-defining, not mandatory for basic survival. - ---- - -## Universal Defensive Verbs +## Composure -Defense should be as important as offense. - -The player needs a small, readable defensive vocabulary. - -### Guard - -Reliable defense. - -* large timing window -* reduces damage -* safe default -* may generate small Tempo on good timing -* may generate larger bonuses on perfect timing - -### Dodge - -Avoidance defense. - -* medium timing window -* avoids damage -* may cost stamina, Tempo, or position -* useful against heavy attacks -* may not work against wide or magical attacks - -### Parry - -High-skill defense. - -* small timing window -* prevents damage -* generates Tempo -* may counterattack -* may deal stagger -* may trigger job passives - -### Interrupt - -Proactive defense. - -* must happen before enemy impact -* requires a valid action or character -* cancels or weakens enemy phrase -* highly strategic -* rewards reading the phrase before it resolves - -### Brace - -Planned defense. - -* chosen before a dangerous phrase -* sacrifices offense or Tempo -* widens defensive timing windows -* helps newer players survive -* enables defensive builds - ---- - -## Enemy Phrase Design - -Enemies should be defined by rhythmic identity, not only stats. - -An enemy is interesting when the player can describe its timing. - -Examples: - -### Rat Duelist - -A simple early enemy. - -```text -Beat 1: crouch -Beat 2: lunge -Beat 3: recover -Beat 4: idle -``` - -Lesson: guard, dodge, or parry on beat 2. - -### Bellwisp - -A delayed caster. - -```text -Beat 1: bell glows -Beat 2: ring gathers -Beat 3: silence -Beat 4: spell lands -``` - -Lesson: do not panic during the silence. Wait for the true hit. - -### Brute - -A slow heavy hitter. - -```text -Beat 1: stomp -Beat 2: windup -Beat 3: windup -Beat 4: slam -``` - -Lesson: interrupt during windup or prepare for a heavy beat-4 defense. - -### Trickster - -A syncopated enemy. - -```text -Beat 1: fake windup -Beat 2: no hit -Beat 3: real hit -Beat 4: vanish -``` - -Lesson: rhythm is not just reflex. It is reading intention. - ---- - -## Stagger / Composure - -Enemies have a Stagger or Composure meter. +Enemies have Composure (stagger) meter. This is the bridge between rhythm execution and RPG strategy. @@ -372,30 +153,17 @@ When Composure breaks: This allows enemies to have rhythmic weaknesses. -Examples: - -```text -Bellwisp is weak during beat 2 of its cast phrase. -Brute takes bonus stagger if parried on beat 4. -Trickster takes bonus stagger if the player ignores the fake beat. -``` - -This is more interesting than only elemental weaknesses. - --- ## Tempo -Tempo is the shared party flow resource. +Tempo is the shared party flow resource (mana). Tempo represents whether the party is in control of the performance. The party gains Tempo from: -* perfect attacks -* perfect guards -* parries -* interrupts +* perfect actions * exploiting recovery windows * clean combo chains * job synergies @@ -405,24 +173,14 @@ The party gains Tempo from: The party loses Tempo from: * misses -* failed parries +* failed actions * unguarded hits * interrupted casts * broken combo chains * panic actions * certain enemy attacks -Possible Tempo states: - -```text -0 — Scrambling -1 — Stable -2 — Flowing -3 — In the Pocket -4 — Crescendo -``` - -Tempo can power: +Tempo might power: * job abilities * emergency defenses @@ -441,306 +199,58 @@ Tempo should create emotional battle arcs. At high Tempo, the party feels unstop The game needs enough pressure to avoid detached over-planning. -Possible approaches: - -### Option A: Soft Time Pressure +Need to prototype different ideas here and see what works. -The player can take time in menus, but the music, UI, and enemy animation continue to imply momentum. +## Characters -Taking too long may reduce potential bonuses but does not instantly punish the player. +A character has: +1. A *Job* +2. *Passive(s)* -Example: +A *Job* has: +1. *Stance(s)* -```text -Fast decision: start action with +1 Tempo potential -Slow decision: normal action -Very slow decision: enemy phrase advances or party loses flow bonus -``` +A *Stance* has: +- An *Ability* +- *Gambit(s)* -### Option B: Beat-Locked Command Windows +### Jobs -The player chooses actions during short command windows. +Jobs provide abilities and gambits and can be upgraded. Jobs are the power milestones for characters. -If they act quickly, they maintain Tempo. +### Stances -If they hesitate, the party defaults to basic actions, guards, or gambits. +Stances are combat modes granting an ability and gambit(s). +- stances can be "swapped" in combat to cycle from a set of abilities to another +- swapping stances is an *action* with a cast time (usually short) +- swapping stances interrupts actions -This creates pressure but may be stressful. +### Passives -### Option C: Hybrid Flow System +Innate, permanent effects. -Early game allows generous planning. +### Abilities -Higher difficulties, relics, bosses, or optional rewards introduce stronger timing pressure. +Abilities are *actions* that may be manually activated by the player. +- has a *cast time* (a "windup" period prior to *firing*) and *effect(s)* (the outcome of the ability, e.g. deals `5` damage) +- if cast time is `0`, the effect fires on the *beat* that the player activates it +- can either be tapped (single press) to cast immediately *or* held (hold button down) to begin casting and released to fire at a player-determined time +- can be interrupted (by enemies and self via stance-swapping) +- can be input buffered -This is probably the safest direction. +### Gambits -The game can let players opt into speed through build incentives rather than forcing constant haste. - ---- - -## Recommended Planning Model - -Use a hybrid model: - -* The player gets brief command windows. -* Time pressure is real but forgiving. -* Taking too long does not usually kill the player. -* Fast, confident play is rewarded. -* Some builds automate parts of planning. -* Some relics increase rewards for speed. -* Some enemy types punish hesitation. -* Accessibility settings can loosen or remove planning timers. - -The game should encourage flow without making the player feel bullied by the clock. +Gambits are *actions* that cast automatically if no other action is casting +- may have *pre-requisites* before activating (e.g. `health` < 50%) +- can be interrupted --- ## Party Structure -A party likely contains 3 active characters. - -Each character has a small identity kit: - -```text -Character -- Basic Action -- Active Ability -- Passive Ability -- Defensive Specialty -- Current Job -``` - -This keeps characters readable while allowing jobs, relics, and upgrades to create build variety. - ---- - -## Character Abilities - -Each character may have: - -### Basic Action - -A reliable action always available. - -Examples: - -* Strike -* Guard -* Spark -* Heal -* Shoot -* Slash - -### Active Ability - -The character’s main unique combat button. - -Examples: - -* Shield Bash -* Flurry -* Fire -* Feint -* Draw Cut -* Step Shift - -### Passive Ability - -The character’s identity rule. - -Examples: - -* Perfect Guards grant Barrier. -* Consecutive Perfect hits increase stagger. -* Dodges refund Tempo. -* Delayed spells deal bonus damage. -* Healing after enemy impact gives a shield. -* Interrupting an enemy marks it. - -### Defensive Specialty - -Each character may be naturally better at a defensive verb. - -Examples: - -* Knight: wider guard/parry window -* Thief: better dodge -* Monk: counter after perfect parry -* Mage: magical brace -* Bard: protects Tempo on mistakes - ---- - -## Job System - -Jobs should not only change stats. They should change rhythm identity. - -A job answers: - -> How does this character want to play the beat? - -### Knight - -Downbeat defender. - -* strong on beat 1 -* guards and parries well -* protects allies -* rewards stable timing - -### Monk - -Combo chain specialist. - -* repeated inputs -* perfect streaks -* escalating stagger -* loses value when rhythm breaks - -### Thief - -Off-beat opportunist. - -* acts between beats -* dodges well -* steals Tempo -* exploits recovery windows - -### Black Mage - -Delayed payoff caster. - -* multi-beat casts -* high damage -* vulnerable during windup -* rewards landing spells on measure endings - -### White Mage - -Recovery and safety. - -* heals after impact -* catches mistakes -* cleanses on perfect timing -* stabilizes low-Tempo states - -### Bard - -Tempo manipulator. - -* shifts timing windows -* preserves combo streaks -* amplifies party rhythm -* turns Good into Perfect under conditions - -### Samurai - -Precision burst. - -* waits through beats -* releases on exact timing -* punishes enemy recovery -* high-risk, high-reward - -### Dancer - -Flow and repositioning. - -* alternates beats -* swaps turn order -* buffs allies through rhythmic movement -* rewards changing targets or stances - -### Berserker - -Pressure and danger. - -* aggressive chains -* sacrifices defense -* huge damage during high Tempo -* punishes missed timing - ---- - -## Build Synergy Examples - -### Knight + Black Mage - -The Knight protects the Mage during a long cast. - -```text -Knight Passive: -Perfect Guard grants Barrier. - -Black Mage Active: -Meteor takes 4 beats to cast. - -Synergy: -If the Mage remains protected through the full phrase, Meteor lands as Perfect. -``` - -### Monk + Bard +A party contains 1-3 characters. -The Bard stabilizes the Monk’s execution-heavy chains. - -```text -Monk Active: -Flurry gains power for each Perfect hit. - -Bard Passive: -Once per phrase, convert a Miss into Good. - -Synergy: -Monk can chase aggressive combo routes with less risk. -``` - -### Thief + Samurai - -The Thief creates openings for Samurai burst. - -```text -Thief Active: -Feint extends enemy recovery by 1 beat. - -Samurai Active: -Draw Cut deals bonus damage against recovering enemies. - -Synergy: -Thief manipulates the enemy phrase so Samurai can punish it. -``` - -### White Mage + Berserker - -The White Mage enables dangerous offensive builds. - -```text -Berserker Active: -Frenzy disables Guard during its attack phrase. - -White Mage Passive: -First lethal mistake per battle can be caught by a timed heal. - -Synergy: -Berserker can take extreme risks without making the run feel unfair. -``` - -### Dancer + Party - -The Dancer alters party order and beat positioning. - -```text -Dancer Active: -Step Shift swaps two allies’ action slots. - -Dancer Passive: -Swapped allies gain bonus Tempo if they act on opposite beats. - -Synergy: -The player can tune the party’s phrase mid-fight. -``` - ---- +This keeps characters readable and simple while allowing jobs, relics, and upgrades to create build variety. ## Roguelite Structure @@ -748,84 +258,7 @@ The overworld uses node-based movement similar to Slay the Spire. The combat is the primary focus. The map exists to create run structure, risk/reward decisions, and build variation. -### Node Types - -#### Battle - -Standard fight. - -Rewards may include: - -* gold -* job XP -* relic choice -* healing -* party upgrade -* new ability modifier - -#### Elite - -Harder fight with more complex enemy phrases. - -Rewards: - -* stronger relics -* rare job upgrades -* new party member options -* Tempo-related upgrades - -#### Camp - -Recovery and build management. - -Options: - -* heal -* upgrade an active ability -* upgrade a passive -* change jobs -* tune gambits -* remove a curse -* practice a phrase - -#### Shrine - -Run modifier choice. - -Examples: - -* Perfect Guards generate extra Tempo. -* Enemy attacks arrive one beat sooner. -* Spells cast one beat faster but have tighter windows. -* Off-beat actions deal bonus stagger. -* Misses cost less Tempo but Perfects generate less. -* Bosses repeat their final phrase. - -#### Recruit - -Gain or swap a party member. - -Could also unlock jobs, passives, or gambit behaviors. - -#### Event - -Narrative/mechanical events. - -Examples: - -* trade health for a rare relic -* alter the region tempo -* gain a cursed job upgrade -* preview the next boss motif -* accept a harder rhythm condition for better rewards - -#### Boss - -Major phrase-based encounter with musical motifs, phases, and variations. - ---- - -## Boss Design +## Boss design Bosses should feel composed, but not like selected songs. @@ -833,36 +266,6 @@ A boss is a combat musician with a motif. The fight should teach a phrase, mutate it, then test mastery. -Example boss: The Hollow Conductor - -### Phase 1 - -```text -Beat 1: baton raise -Beat 2: slash -Beat 3: rest -Beat 4: slash -``` - -### Phase 2 - -```text -Beat 1: baton raise -Beat 2: fake slash -Beat 3: real slash -Beat 4: summon -``` - -### Phase 3 - -```text -Beat 1: slash -Beat 2: summon -Beat 3: slash -Beat 4: silence -After silence: hidden hit -``` - The player feels progress because they recognize the pattern, then adapt to variations. The best boss fights should feel like learning a duet. @@ -887,101 +290,6 @@ Important principles: * misses create subtle disruption * high Tempo creates richer mix layers -The player should not stare at notes. The player should feel the groove. - ---- - -## Visual / UI Direction - -Avoid a prominent note highway. - -Prefer subtle rhythmic feedback: - -* battlefield floor pulse -* character timing rings -* enemy windup glow -* measure ring -* beat pips -* weapon glint on perfect window -* hit-stop on impact -* sound/VFX accents on perfects -* enemy animation tied to phrase timing - -The UI should teach rhythm without becoming the game. - -Optional accessibility/training overlays can show more explicit timing information. - ---- - -## Rhythm Burden - -Not every action should demand the same execution. - -Actions can be categorized by rhythm burden: - -### Low Burden - -* basic attacks -* guard -* potion -* simple heal -* stable job abilities - -### Medium Burden - -* two-beat attacks -* delayed spells -* dodge/parry windows -* basic combo chains - -### High Burden - -* long combo strings -* off-beat attacks -* tight parries -* multi-character chains -* high-risk boss counters - -A good run can be built at any burden level. - -The player should be able to choose whether they want a stable defensive build, a precise combo build, an off-beat trickster build, or a high-pressure burst build. - ---- - -## Gambits / Automatic Actions - -Potential future system. - -Party members may have automatic behaviors that trigger under conditions. - -These should reduce planning friction and increase build expression, not play the whole game for the player. - -Examples: - -```text -If ally is below 30% HP, cast Heal on the next downbeat. -``` - -```text -If enemy is staggered, use basic attack. -``` - -```text -If party Tempo reaches 4, trigger Bard’s Chorus. -``` - -```text -If Mage begins casting, Knight auto-guards. -``` - -```text -If enemy enters recovery, Thief auto-marks it. -``` - -Gambits could be especially useful if combat becomes fast enough that full manual planning is too disruptive. - -They may also support co-op, accessibility, and advanced build crafting. - --- ## Co-op Potential @@ -998,23 +306,13 @@ The appeal: * one player sets up stagger while another bursts * boss fights become ensemble performances -Risks: - -* netcode/timing complexity -* readability problems -* coordination chaos -* harder balance -* more input latency sensitivity - -Co-op should not be part of the first prototype, but the combat model should avoid decisions that make it impossible later. - --- ## Accessibility Because rhythm and timing are core, accessibility needs to be considered early. -Possible settings: +Ideas: * widen timing windows * reduce planning pressure @@ -1027,204 +325,4 @@ Possible settings: * practice mode for enemy phrases * separate rhythm difficulty from strategic difficulty -Important principle: - -> The game should remain interesting when timing is easier, because build strategy, enemy reading, and resource management still matter. - ---- - -## Prototype Scope - -Do not build the roguelite first. - -Build one great fight. - -The first prototype should answer: - -> Is it fun to read enemy phrases, choose RPG actions, and perform them on beat? - -### Prototype Party - -#### Knight - -```text -Basic: Strike -Active: Shield Bash -Passive: Perfect Guard grants Barrier -Defense Specialty: Guard / Parry -``` - -#### Monk - -```text -Basic: Strike -Active: Flurry -Passive: Consecutive Perfect hits increase stagger -Defense Specialty: Counter after Perfect Parry -``` - -#### Mage - -```text -Basic: Spark -Active: Fire -Passive: Spells deal bonus damage when landing on beat 4 -Defense Specialty: Magical Brace -``` - -### Prototype Enemies - -#### Rat Duelist - -```text -Phrase: -Beat 1: crouch -Beat 2: lunge -Beat 3: recover -Beat 4: idle - -Lesson: -Basic guard/dodge/parry timing. -``` - -#### Bellwisp - -```text -Phrase: -Beat 1: bell glows -Beat 2: ring gathers -Beat 3: silence -Beat 4: spell lands - -Lesson: -Delayed timing and patience. -``` - -#### Brute - -```text -Phrase: -Beat 1: stomp -Beat 2: windup -Beat 3: windup -Beat 4: slam - -Lesson: -Interrupts, heavy defense, and exploiting windup. -``` - -### Prototype Systems - -Required: - -* 4/4 beat clock -* one music loop -* Good / Perfect / Miss timing -* Guard -* Parry -* one interrupt -* Stagger / Composure -* Tempo -* three party members -* three enemy types -* one basic victory reward - -Not required yet: - -* full roguelite map -* many jobs -* relics -* progression -* co-op -* gambits -* story -* many songs -* boss fight - ---- - -## First Boss Prototype - -After the basic fight works, build one boss. - -Boss should have: - -* one motif -* one variation -* one final pressure phase -* at least one fake-out -* at least one interruptible phrase -* at least one recovery punish -* at least one Tempo payoff - -This boss should prove whether the combat can create learning, mastery, and excitement. - ---- - -## Open Design Questions - -### How much planning pressure is right? - -Need to test: - -* no timer -* soft timer -* command window -* Tempo bonus for fast decisions -* enemy advantage if player hesitates -* optional speed rewards only - -### How visible should rhythm be? - -Need to test: - -* no explicit beat UI -* subtle beat ring -* measure pips -* timing ring on character -* optional training overlay - -### How punishing should misses be? - -Need to test: - -* lower damage only -* Tempo loss -* exposure to counterattack -* combo break -* no punishment for defensive basics - -### Should enemy phrases be deterministic? - -Likely yes early. - -Predictable phrases create mastery. Variation should come from phase changes, enemy combinations, and build interactions rather than pure randomness. - -### How many actions should each character have? - -Starting recommendation: - -```text -1 basic -1 active -1 passive -1 defensive specialty -1 job modifier -``` - -Keep this small until the rhythm system proves itself. - ---- - -## Current Best Definition - -The game is a: - -> Call-and-response rhythm RPG roguelite where party builds determine how you perform, enemy phrases determine what you must answer, and Tempo measures whether you are controlling the fight or losing the groove. - -The core verb is: - -> Read the phrase. Answer the phrase. Keep tempo. - -Everything else should serve that. - +The game should remain interesting when timing is easier, because build strategy, enemy reading, and resource management still matter.