Prototype Plan - FatherNoTimeGames/JRPG-Classless GitHub Wiki
Prototype Plan
Prototype Goal
Build a small battle sandbox that proves the core combat loop, turn queue, target selection, and input flow.
The prototype is not trying to be fun yet. It is trying to validate architecture, input, and UI flow.
Implementation Method
Current direction:
- No direct code will be provided.
- Implementation will be taught step-by-step.
- The developer will create the project structure, scenes, resources, and input mappings manually.
- The purpose is to learn Godot through guided construction, not copy/paste implementation.
Prototype Scope
Included:
- One battle scene.
- Four placeholder player combatants.
- Three placeholder enemy combatants.
- Dynamic round queue based on Speed.
- Dexterity tie fallback.
- One turn per round by default.
- Basic Attack command.
- Defend command.
- Wait command.
- Target selection UI.
- Controller, keyboard, and touch support.
- Simple battle summary stub.
- Dedicated
TurnManagernode inside the battle scene. - Dedicated
BattleInputControllernode inside the battle scene.
Not included yet:
- Procedural generation.
- Real equipment.
- Safe rooms.
- Hub.
- Skill point spending.
- Discipline progression UI.
- 3D animation polish.
- Camera rotation.
- Loot generation.
- Crafting.
- Shop.
- Full save/load.
Prototype Commands
Confirmed prototype commands and behaviors:
- Attack: Requires target selection. Deals damage based on placeholder stats.
- Defend: Does not require target selection. Reduces damage taken until the character's next turn.
- Wait: Does not require target selection. Passes the turn with no effect.
Prototype Flow
- Battle scene loads.
TurnManagerbuilds the first round queue.- Timeline UI displays turn order.
- When a player combatant’s turn starts, command UI opens.
- Player chooses a command.
- If command requires target (Attack), target selection UI opens.
- Player navigates targets with controller/keyboard or taps with touch.
- Tap selects a target but does not immediately execute.
- Player confirms target.
- Action resolves.
- Turn ends.
- Next combatant acts.
- When all enemies are defeated, battle summary appears.
- Player confirms summary and prototype scene ends or restarts.
Target Selection Direction
Confirmed direction:
- Start with UI buttons/portraits for targets.
- Clickable/tappable 3D enemy models may be added later.
- Touch flow is tap-to-select, then Confirm.
Screen Orientation Direction
Confirmed direction:
- Sensor-based rotation is allowed for the final game.
- The prototype will be designed landscape-first, as development and initial testing will happen in landscape.
- Portrait adaptation will be handled later once the landscape baseline is proven.
Prototype Input Requirements
Target selection must support:
- Controller D-pad/left stick navigation.
- Keyboard arrow/WASD navigation.
- Enter/Space confirm.
- Escape/Back cancel.
- Touch tap selection.
- Separate Confirm button for touch.
Command menu must support:
- Controller navigation.
- Keyboard navigation.
- Touch tap.
Next/previous page actions:
- Confirmed as general UI tab/page navigation actions.
- Reserved for UI tabs/pages (e.g., switching summary tabs).
Proposed Prototype Scenes
Battle Scene
Root scene containing:
- Battle manager.
- Turn manager.
- Battle input controller.
- Party container.
- Enemy container.
- Battle UI.
- Camera.
- Placeholder visuals.
Battle UI
UI layer containing:
- Timeline bar.
- Active combatant label.
- Command menu.
- Target selection panel.
- Battle summary panel.
- Message/log panel.
Character Data
Resource containing:
- Display name.
- Stats.
- Current HP.
- Current MP.
- Is alive.
- Is player faction.
- Basic weapon scaling data for prototype.
Turn Manager
Dedicated node responsible for:
- Building round queue.
- Sorting by Agility.
- Breaking ties with Dexterity.
- Emitting turn-start signals.
- Removing dead combatants.
- Ending round.
- Detecting victory/defeat.
Battle Input Controller
Dedicated node responsible for:
- Reading input actions.
- Routing input to command menu or target selection.
- Handling confirm/cancel.
- Handling touch taps.
- Supporting keyboard and controller navigation.
Related pages: