Files
BreakEscape/planning_notes/npc/hostile/review1/ux_review.md
Z. Cliffe Schreuders 660105421a Add Hostile NPC mode
Fix NPC interaction and event handling issues

- Added a visual problem-solution summary for debugging NPC event handling.
- Resolved cooldown bug in NPCManager by implementing explicit null/undefined checks.
- Modified PersonChatMinigame to prioritize event parameters over state restoration.
- Updated security guard dialogue in Ink scenarios to improve interaction flow.
- Adjusted vault key parameters in npc-patrol-lockpick.json for consistency.
- Changed inventory stylesheet references to hud.css in test HTML files for better organization.

feat(combat): Integrate chair kicking with punch mechanic

Update chair interaction to use the punch system instead of direct kicking:

**Changes to interactions.js:**
- Modified swivel chair interaction to trigger player punch instead of
  directly applying kick velocity
- Simplified chair interaction handler to just call playerCombat.punch()

**Changes to player-combat.js:**
- Extended checkForHits() to detect chairs in punch range and direction
- Added kickChair() method that applies the same velocity calculation:
  - Calculates direction from player to chair
  - Applies 1200 px/s kick force in that direction
  - Triggers spin direction calculation for visual rotation
  - Adds visual feedback (flash chair, light screen shake)
- Chairs now respond to punch AOE damage like hostile NPCs

Now clicking a chair or pressing 'E' near it triggers a punch, and if the
chair is in punch range and facing direction, it gets kicked with the
original velocity physics. Multiple chairs can be kicked with one punch.

feat(combat): Implement hostile NPC behavior and final integration (Phase 6-7)

Complete hostile NPC combat system with chase behavior and integration:

**Phase 6: Hostile NPC Behavior**
- Modified npc-behavior.js determineState() to check hostile state from npcHostileSystem
- Implemented updateHostileBehavior() with chase and attack logic:
  - NPCs chase player when hostile and in aggro range
  - NPCs stop and attack when in attack range
  - NPCs use directional movement with proper animations
  - Integration with npcCombat system for attack attempts
- Added KO state check to prevent KO'd NPCs from acting

**Phase 7: Final Integration**
- Modified player.js to disable movement when player is KO
- Added visual KO effect (50% alpha) to NPC sprites in npc-hostile.js
- Connected all combat systems end-to-end:
  - Ink dialogue → hostile tag → hostile state → chase behavior → combat
  - Player interaction → punch → NPC damage → KO → visual feedback
  - NPC chase → attack → player damage → HP UI → game over

Full combat loop now functional: hostile NPCs chase and attack player,
player can punch hostile NPCs, complete visual/audio feedback, game over on KO.

feat(combat): Add feedback, UI, and combat mechanics (Phase 2-5)

Implement comprehensive combat feedback, UI, and mechanics:

**Phase 2: Enhanced Feedback Systems**
- damage-numbers.js: Floating damage numbers with object pooling
- screen-effects.js: Screen flash and shake for combat feedback
- sprite-effects.js: Sprite tinting, flashing, and visual effects
- attack-telegraph.js: Visual indicators for incoming NPC attacks

**Phase 3: UI Components**
- health-ui.js: Player health display as hearts (5 hearts, shows when damaged)
- npc-health-bars.js: Health bars above hostile NPCs with color coding
- game-over-screen.js: KO screen with restart/main menu options

**Phase 4-5: Combat Mechanics**
- player-combat.js: Player punch system with AOE directional damage
- npc-combat.js: NPC attack system with telegraph and cooldowns
- Modified interactions.js to trigger punch on hostile NPC interaction
- Integrated all systems into game.js create() and update() loops

Combat now functional with complete visual/audio feedback pipeline.
Player can punch hostile NPCs, NPCs can attack player, health tracking works.

feat(combat): Add hostile NPC system foundation (Phase 0-1)

Implement core hostile NPC combat system infrastructure:

- Add #hostile tag handler to chat-helpers.js for Ink integration
- Fix security-guard.ink to use proper hub pattern with -> hub instead of -> END
- Add #hostile:security_guard tags to hostile conversation paths
- Create combat configuration system (combat-config.js)
- Create combat event constants (combat-events.js)
- Implement player health tracking system with HP and KO state
- Implement NPC hostile state management with HP tracking
- Add combat debug utilities for testing
- Add error handling utilities for validation
- Integrate combat systems into game.js create() method
- Create test-hostile.ink for testing hostile tag system

This establishes the foundation for hostile NPC behavior, allowing NPCs to
become hostile through Ink dialogue and tracking health for both player and NPCs.

docs(npc): Apply codebase-verified corrections to hostile NPC plans

Apply critical corrections based on actual codebase verification:

CORRECTIONS.md (Updated):
-  Confirms #exit_conversation tag ALREADY IMPLEMENTED
  * Location: person-chat-minigame.js line 537
  * No handler needed in chat-helpers.js
-  Hostile tag still needs implementation in chat-helpers.js
- Provides exact code for hostile tag handler
- Clarifies tag format: #hostile:npcId or #hostile (uses current NPC)
- Updated action items to reflect what's already working

INTEGRATION_UPDATES.md (New):
- Comprehensive correction document
- Issue 1 Corrected: Exit conversation already works
- Issue 6 Corrected: Punch mechanics are interaction-based with AOE
- Details interaction-based punch targeting:
  * Player clicks hostile NPC OR presses 'E' nearby
  * Punch animation plays in facing direction
  * Damage applies to ALL NPCs in range + direction (AOE)
  * Can hit multiple enemies if grouped (strategic gameplay)
- Provides complete implementation examples
- Removes complexity of target selection systems
- Uses existing interaction patterns

quick_start.md (Updated):
- Removed exit_conversation handler (already exists)
- Updated hostile tag handler code
- Added punch mechanics design section
- Clarified interaction-based targeting
- Added troubleshooting for exit_conversation

Key Findings:
 Exit conversation tag works out of the box
 Punch targeting uses existing interaction system (simpler!)
 AOE punch adds strategic depth without complexity
 Only ONE critical task remains: Add hostile tag to chat-helpers.js

Impact:
- Less work required (don't need exit_conversation handler)
- Simpler implementation (use existing interaction patterns)
- Better gameplay (AOE punches, directional attacks)
- Clear path forward with exact code examples

docs(npc): Add critical corrections and codebase integration review

Add comprehensive review of hostile NPC plans against actual codebase:

CORRECTIONS.md:
- Identifies critical Ink pattern error (-> END vs -> hub)
- Documents correct hub-based conversation pattern
- Provides corrected examples for all Ink files
- Explains why -> hub is required after #exit_conversation

FORMAT_REVIEW.md:
- Validates JSON scenario format against existing scenarios
- Reviews NPC object structure and required fields
- Documents correct Ink hub pattern from helper-npc.ink
- Proposes hostile configuration object for NPC customization
- Provides complete format reference and checklists

review2/integration_review.md:
- Comprehensive codebase analysis by Explore agent
- Identifies 2 critical blockers requiring immediate attention:
  * Missing tag handlers for #hostile and #exit_conversation
  * Incorrect Ink pattern (-> END) in planning documents
- Documents 4 important integration differences:
  * Initialization in game.js not main.js
  * Event dispatcher already exists (window.eventDispatcher)
  * Room transition behavior needs design decision
  * Multi-hostile NPC targeting needs design decision
- Confirms 8 systems are fully compatible with plan
- Provides existing code patterns to follow
- Corrects integration sequence

review2/quick_start.md:
- Step-by-step guide for Phase 0-1 implementation
- Includes complete code examples for critical systems
- Browser console test procedures
- Common issues and solutions
- Success criteria checklist

Key Findings:
 90% compatible with existing codebase
 Must add tag handlers to chat-helpers.js before implementation
 Must fix all Ink examples to use -> hub not -> END
⚠️ Should follow game.js initialization pattern not main.js
⚠️ Should use existing window.eventDispatcher
⚠️ Need design decisions on room transitions and multi-targeting

All critical issues documented with solutions ready.
Implementation can proceed with high confidence after corrections applied.

docs(npc): Add comprehensive planning documents for hostile NPC system

Add detailed implementation plans for hostile NPC feature including:
- Complete implementation plan with phase-by-phase breakdown
- Architecture overview with system diagrams and data flows
- Detailed TODO list with 200+ actionable tasks
- Phase 0 foundation with design decisions and base components
- Enhanced combat feedback implementation guide
- Implementation roadmap with 6-day schedule

Add comprehensive review documents:
- Implementation review with risk assessment and recommendations
- Technical review analyzing code patterns and best practices
- UX review covering player experience and game feel

Key features planned:
- NPC hostile state triggered via Ink tags
- Player health system with heart-based UI
- NPC health bars and combat mechanics
- Punch combat for both player and NPCs
- Strong visual/audio feedback for combat
- Game over system and KO states
- Attack telegraphing for fairness
- Enhanced NPC chase behavior with LOS
- Debug utilities and error handling
- Comprehensive testing strategy
2025-11-14 19:47:54 +00:00

17 KiB

UX Review - NPC Hostile State Feature

Player Experience Analysis

Overview

This review examines the hostile NPC feature from a player experience perspective, focusing on clarity, feedback, fairness, and fun.

1. Combat Initiation

Current Design

  • Player triggers hostile state through dialogue choices
  • NPC becomes hostile via #hostile tag
  • Conversation exits immediately
  • NPC begins chasing player

UX Analysis

Strengths:

  • Clear cause and effect (player choice → consequence)
  • Immediate feedback (conversation exits)

Concerns:

C1: Sudden Transition

  • Issue: Player might not realize NPC is now hostile
  • Impact: Confusion, unexpected damage
  • Severity: Medium

Recommendation: Add transition feedback:

Player makes hostile dialogue choice
      ↓
Dialogue shows NPC angry response
      ↓
Screen flash or warning indicator
      ↓
Sound effect (alarm, anger)
      ↓
Conversation exits with visual cue
      ↓
Brief camera zoom/shake
      ↓
NPC begins chase

Visual indicators:

  • Red screen flash when hostile triggered
  • "!" exclamation mark above NPC head
  • NPC sprite changes color briefly (red flash)
  • Warning sound effect

C2: No Warning System

  • Issue: Player can't tell NPC is about to become hostile
  • Impact: Feels unfair, no chance to avoid
  • Severity: Medium

Recommendation: Add warning levels in dialogue:

  • 😊 Neutral - No threat
  • 😐 Annoyed - Low threat
  • 😠 Angry - High threat (will become hostile soon)
  • 💢 Hostile - Combat mode

Show indicator next to NPC portrait:

┌─────────────────────┐
│   Security Guard    │
│   😠 Angry          │
│                     │
│ "This is your       │
│  final warning!"    │
└─────────────────────┘

C3: Point of No Return Unclear

  • Issue: Player doesn't know which choices lead to combat
  • Impact: Accidental combat encounters
  • Severity: Medium

Recommendation: Add choice indicators:

+ [I'm just passing through]
+ [I need to access that door]
+ [Mind your own business] ⚠️ HOSTILE
+ [You can't tell me what to do] ⚠️ HOSTILE

Or color-code choices:

  • Green: Safe/friendly
  • Yellow: Risky
  • Red: Will trigger combat

2. Combat Feedback

Current Design

  • Player presses SPACE to punch
  • Walk animation plays with red tint
  • Damage applied if in range
  • NPC health bar updates

UX Analysis

C4: Hit/Miss Unclear

  • Issue: Player can't tell if punch connected
  • Impact: Feels unresponsive
  • Severity: High

Recommendation: Add multi-layered feedback:

Visual Feedback:

  • Hit:
    • Damage number floats up from NPC
    • NPC flashes white briefly
    • Impact particle effect (stars, dust)
    • Health bar shakes
  • Miss:
    • "MISS" text appears
    • Whoosh particle effect
    • No damage number

Audio Feedback:

  • Hit: Punch impact sound (thud)
  • Miss: Whoosh/swish sound
  • Critical hit: Stronger impact sound

Haptic Feedback (if available):

  • Hit: Brief vibration
  • Miss: No vibration

C5: Damage Amount Unclear

  • Issue: Health bar updates but player doesn't know exact damage
  • Impact: Can't strategize effectively
  • Severity: Medium

Recommendation: Add floating damage numbers:

      -20
       ↑
    [NPC]
   ▓▓▓▓▓░░ 70/100

Design:

  • White for normal damage
  • Red for critical hits
  • Larger font for bigger damage
  • Floats up and fades out over 1 second

C6: Player Taking Damage Unclear

  • Issue: Hearts update but no immediate feedback
  • Impact: Player doesn't notice they're being hurt
  • Severity: High

Recommendation: Add strong damage feedback:

Visual:

  • Red screen flash (outer edges)
  • Player sprite red tint (200ms)
  • Screen shake (subtle, 2-3 pixels)
  • Vignette effect (red edges pulse)

Audio:

  • Grunt/pain sound
  • Heartbeat sound at low HP

UI:

  • Hearts shake when damaged
  • Damaged hearts glow red briefly
  • Screen edge pulsing red at <30% HP

Intensity scales with damage:

  • Small damage (5-10): Subtle flash
  • Medium damage (10-20): Flash + shake
  • Large damage (20+): Strong flash + shake + sound

3. Health System Clarity

Current Design

  • Hearts hidden at full HP
  • Appear when damaged
  • 5 hearts, 20 HP each
  • Half hearts at 10 HP increments

UX Analysis

C7: Hearts Hidden Initially

  • Issue: Player doesn't know they have health until hit
  • Impact: First damage is surprising
  • Severity: Medium

Recommendation:

Option A: Always show hearts

  • Pro: Player always knows their status
  • Pro: Standard in most games
  • Con: Clutters UI slightly

Option B: Show semi-transparent

  • Pro: Clean UI when healthy
  • Pro: Player can see hearts exist
  • Con: Might not be noticed

Option C: Show briefly at start

  • Show for 3 seconds when entering combat-capable area
  • Hide after no combat
  • Reveal when damaged
  • Pro: Best of both worlds
  • Con: More complex logic

Recommendation: Option C

C8: Heart Calculation Confusing

  • Issue: 100 HP to 5 hearts math not intuitive
  • Impact: Player doesn't know exact HP
  • Severity: Low

Recommendation: Add HP number option (in settings):

❤️❤️❤️💔🖤  70/100 HP

Or tooltip on hover:

❤️❤️❤️💔🖤
    ↓
 70/100 HP

C9: No Health Regeneration

  • Issue: No way to recover health (as designed)
  • Impact: One mistake = permanent consequence
  • Severity: Medium (depends on game design intent)

Recommendation:

If this is intentional (high stakes):

  • Make it very clear to player
  • Add tutorial explaining permanent damage
  • Consider checkpoints or save points

If health regen desired:

  • Add med kits as items
  • Slow regeneration out of combat
  • Safe rooms that restore health
  • Pay for healing (game currency)

4. Combat Flow

Current Design

  • Player can punch when near hostile NPC
  • Cooldown prevents spam
  • NPC attacks when in range
  • No dodge/block mechanics

UX Analysis

C10: Combat Feels Stiff

  • Issue: Stand and trade hits, no mobility options
  • Impact: Combat is repetitive
  • Severity: Medium

Recommendation:

Add mobility to combat:

  • Dodge roll: Quick dash with i-frames
  • Backstep: Small backward movement
  • Sprint: Hold Shift to run faster (drains stamina?)

Adds skill expression:

  • Good players can dodge attacks
  • Positioning matters
  • Not just DPS race

C11: No Defensive Options

  • Issue: Can only attack or run
  • Impact: Limited tactical options
  • Severity: Medium

Recommendation:

Add one defensive option:

Option A: Block

  • Hold key to block (e.g., Shift)
  • Reduces damage by 50%
  • Can't move while blocking
  • Good for new players

Option B: Dodge

  • Tap key for quick dodge (e.g., Space)
  • Brief invulnerability (200ms)
  • Small cooldown (2 seconds)
  • Skill-based defense

Option C: Counter

  • Block just before hit = counterattack
  • High skill, high reward
  • Might be too complex for this game

Recommendation: Option A (block) for accessibility

C12: Single Attack Type

  • Issue: Only one punch attack
  • Impact: Combat is one-dimensional
  • Severity: Low (acceptable for MVP)

Future Enhancement:

  • Light attack (fast, low damage)
  • Heavy attack (slow, high damage)
  • Special attack (costs resource)

5. NPC Behavior Clarity

Current Design

  • Hostile NPC chases player
  • Attacks when in range
  • No warning before attacking

UX Analysis

C13: No Attack Telegraph

  • Issue: NPC attacks without warning
  • Impact: Feels unfair, hard to react
  • Severity: High

Recommendation:

Add attack wind-up:

NPC in range → Wind-up (500ms) → Attack → Cooldown
                    ↓
              Player can react
              (dodge, block, retreat)

Visual telegraph:

  • NPC sprite flashes red
  • Fist raises (different animation)
  • Exclamation mark appears
  • Attack indicator (red circle expanding)

Audio telegraph:

  • Grunt sound before punch
  • Whoosh sound during wind-up

Gives player 500ms to react = fair combat

C14: Chase Behavior Unclear

  • Issue: Player doesn't know NPC is chasing
  • Impact: Unexpected attacks
  • Severity: Medium

Recommendation:

Add chase indicators:

  • Angry emoji above NPC head
  • Red name plate when hostile
  • Footstep sounds getting closer
  • Warning when NPC is approaching from off-screen

Alert levels:

  • 🔴 Alert: "Security Guard is pursuing!"
  • 🟡 Warning: "Security Guard nearby"
  • 🟢 Clear: "Area secure"

C15: Lost Sight Behavior Confusing

  • Issue: What happens when player escapes?
  • Impact: Player doesn't know if safe
  • Severity: Medium

Recommendation:

Clear state communication:

Hostile + In Sight: 🔴 "CHASING"
Hostile + Lost Sight: 🟡 "SEARCHING"  (30 seconds)
Hostile + Timeout: 🟢 "CALMED DOWN"  (returns to patrol)

Visual feedback:

  • Question mark above head when searching
  • Search animation (looking around)
  • Return to normal color when calmed

6. Win/Loss Conditions

Current Design

  • Player at 0 HP = KO = Game Over
  • NPC at 0 HP = KO = Replaced with sprite

UX Analysis

C16: Instant Game Over Too Harsh

  • Issue: 0 HP = immediately lose
  • Impact: Frustrating, no comeback chance
  • Severity: Medium

Recommendation:

Add grace period:

0 HP → Player KO'd → 5 second countdown → Game Over
              ↓
         Can be revived?
         (if item/mechanic exists)

Or second chance system:

  • First KO: Warning, restored to 10 HP
  • Second KO: Game Over

Makes failure less punishing, encourages learning

C17: No Victory Celebration

  • Issue: NPC KO'd, no fanfare
  • Impact: Victory feels hollow
  • Severity: Low-Medium

Recommendation:

Add victory feedback:

  • Victory sound effect
  • XP/points gained display
  • Brief slow-motion on KO hit
  • Item drop from NPC (optional)
  • Achievement toast: "Defeated Security Guard!"

Makes combat feel rewarding

C18: Game Over Screen Too Simple

  • Issue: Just "GAME OVER" and restart
  • Impact: No context, stats, or learning
  • Severity: Low-Medium

Recommendation:

Enhanced game over screen:

┌──────────────────────────────────┐
│         KNOCKED OUT              │
├──────────────────────────────────┤
│  Defeated by: Security Guard     │
│  Damage dealt: 45                │
│  Damage taken: 100               │
│  Time survived: 2:34             │
├──────────────────────────────────┤
│  [Restart Level]  [Main Menu]    │
│  [Load Save]      [Quit]         │
└──────────────────────────────────┘

Shows what went wrong, gives options

7. Tutorial and Onboarding

Current Design (Not Specified)

  • No tutorial in plan
  • Player must discover combat

UX Analysis

C19: No Combat Tutorial

  • Issue: Player doesn't know how to fight
  • Impact: Frustrating first encounter
  • Severity: High

Recommendation:

Add first combat tutorial:

Approach A: Popup Tips When first hostile encounter:

┌────────────────────────────────┐
│ ⚠️ NPC has become hostile!     │
│                                │
│ Press SPACE to punch           │
│ Stay in range to hit           │
│ Watch your health (top right)  │
│                                │
│ [Got it!]                      │
└────────────────────────────────┘

Approach B: Safe Training

  • Add training dummy in safe area
  • Optional tutorial before first combat
  • Practice punching without risk

Approach C: Contextual Hints

  • "Press SPACE to punch" appears near hostile NPC
  • "Out of range!" when punch misses
  • "Low health!" when HP < 30%

Recommendation: Combination of A and C

C20: Control Scheme Not Intuitive

  • Issue: SPACE for punch might conflict with other actions
  • Impact: Accidental punches or missed punches
  • Severity: Medium

Recommendation:

Consider alternative control schemes:

  • Option 1: SPACE for punch (current)
    • Pro: Common key
    • Con: Often used for jump/interact in games
  • Option 2: Left Mouse Click
    • Pro: Very intuitive for attacking
    • Con: Might conflict with movement if click-to-move
  • Option 3: F key
    • Pro: Dedicated action key
    • Con: Less discoverable

Recommendation: Support multiple inputs

  • SPACE, F, or Left Click all work
  • Show all options in tutorial
  • Player can rebind in settings

8. Accessibility

Current Design

  • Visual and audio feedback
  • No accessibility features specified

UX Analysis

C21: No Colorblind Support

  • Issue: Red/green health indicators
  • Impact: Colorblind players can't distinguish
  • Severity: Medium

Recommendation:

  • Use shapes in addition to colors
    • Full heart: ❤️
    • Half heart: 💔
    • Empty heart: 🖤
  • Add colorblind mode in settings
    • Replace red with blue/yellow
  • Use text labels when possible

C22: No Difficulty Options

  • Issue: Combat might be too hard/easy for some
  • Impact: Not accessible to all skill levels
  • Severity: Medium

Recommendation:

Add difficulty settings:

  • Easy:
    • Player HP: 150
    • NPC damage: 5
    • Longer attack telegraphs (750ms)
    • Slower NPC movement
  • Normal:
    • Current values
  • Hard:
    • Player HP: 75
    • NPC damage: 15
    • Shorter telegraphs (250ms)
    • Faster NPCs

Allow changing mid-game

C23: No Visual/Audio Toggles

  • Issue: Some players sensitive to screen shake, flashes
  • Impact: Accessibility issues
  • Severity: Low-Medium

Recommendation:

Add settings toggles:

  • Screen shake
  • Screen flash effects
  • Combat sounds
  • Damage numbers
  • Motion blur (if added)

Labeled: "Reduce visual effects"

9. Pacing and Encounter Design

Current Design

  • Combat triggered by dialogue choices
  • No specified encounter pacing

UX Analysis

C24: No Safe Zones

  • Issue: Player might not have break from combat
  • Impact: Stress, no recovery time
  • Severity: Medium

Recommendation:

  • Designate safe rooms (no hostile NPCs)
  • Save points in safe rooms
  • Healing/rest areas
  • Clear visual distinction (blue vs red lighting)

C25: No Escalation Curve

  • Issue: First combat same difficulty as last
  • Impact: No sense of progression
  • Severity: Low-Medium

Recommendation:

Design difficulty curve:

  1. First encounter: Weak guard (50 HP, 5 damage)
    • Tutorial fight
  2. Mid-game: Normal guards (100 HP, 10 damage)
    • Standard combat
  3. Late-game: Tough guards (150 HP, 15 damage)
    • Challenges player mastery

Communicate difficulty:

  • Guard title: "Junior Guard" vs "Elite Guard"
  • Visual difference: Different sprites/colors
  • Health bar color indicates difficulty

10. Overall Game Feel

Assessment

Strengths:

  • Clear cause and effect (dialogue → combat)
  • Simple mechanics (easy to learn)
  • Immediate consequences (stakes)

Weaknesses:

  • Feedback could be much stronger
  • Limited tactical options
  • Fairness concerns (telegraphing)
  • No tutorial or onboarding
  • Potentially too punishing

Must Have (MVP):

  1. Attack telegraphing for NPCs
  2. Strong damage feedback (visual/audio)
  3. Hit/miss indicators
  4. Combat tutorial/hints
  5. Warning before hostile state

Should Have: 6. Floating damage numbers 7. Better game over screen 8. Safe zones 9. Victory celebration 10. Health display improvements

Nice to Have: 11. Block/dodge mechanics 12. Difficulty settings 13. Accessibility options 14. Escalation curve 15. Visual polish

Summary

The core hostile NPC system is solid, but the player experience needs significant feedback and clarity improvements. The biggest UX gaps are:

  1. Feedback Intensity - Players need stronger visual/audio feedback
  2. Attack Telegraphing - NPCs need wind-up animations for fairness
  3. Combat Tutorial - First encounter needs guidance
  4. Clarity - All states and transitions need clear communication

With these improvements, the feature will feel responsive, fair, and fun rather than confusing and frustrating.

UX Testing Checklist

When implementing, test these scenarios:

  • Player doesn't realize NPC is hostile
  • Player doesn't notice taking damage
  • Player can't tell if punch hit
  • Player doesn't know how much damage dealt
  • Player surprised by NPC attack
  • Player doesn't understand heart system
  • Player lost in combat, no clear objective
  • Player doesn't know controls
  • Player feels combat is unfair
  • Player finds combat too easy/hard
  • Player KO'd without understanding why
  • Player defeats NPC, feels no satisfaction
  • Colorblind player can't read health
  • Player sensitive to screen effects

Each "doesn't" above should become "clearly understands" after improvements.