Files
BreakEscape/planning_notes/npc/movement/NPC_FEATURES_DOCUMENTATION_INDEX.md
Z. Cliffe Schreuders adc5f3baa4 Add NPC Patrol Features Documentation and Implementation Scripts
- Created comprehensive documentation for two new NPC patrol features: Waypoint Patrol and Cross-Room Navigation.
- Added `QUICK_START_NPC_FEATURES.md` detailing configuration, implementation phases, and testing guidelines.
- Introduced `README_NPC_FEATURES.md` as an index for navigating the documentation package.
- Implemented `update_tileset.py` script to update Tiled map with all objects from the assets directory, ensuring proper GIDs.
- Updated test scenarios for NPC patrol behaviors, including waypoint patrol tests in `test-npc-waypoints.json`.
- Adjusted positions in existing test scenarios for better alignment with new patrol features.
2025-11-10 02:00:27 +00:00

12 KiB
Raw Permalink Blame History

NPC Patrol Features - Master Documentation Index

Overview

Two major NPC patrol features have been designed and fully documented:

  1. Waypoint Patrol - NPCs follow predefined tile coordinates (3-8 range)
  2. Cross-Room Navigation - NPCs patrol across multiple connected rooms

All documentation is complete and ready for implementation.


Documentation Structure

📋 For Quick Overview (Start Here)

NPC_FEATURES_COMPLETE_SUMMARY.md

  • What was requested vs what was designed
  • Feature comparison matrix
  • Architecture overview
  • Configuration examples (3 examples)
  • Implementation phases
  • Next steps

Recommended Reading Time: 10 minutes


🚀 For Implementation

NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md

  • Quick configuration guide
  • Both features side-by-side
  • Implementation roadmap
  • Code location reference
  • Configuration validation rules
  • Common questions & troubleshooting

Recommended Reading Time: 15 minutes Use When: Starting to code


📚 For Detailed Feature Documentation

NPC_PATROL_WAYPOINTS.md (Feature 1)

  • Complete waypoint patrol specification
  • Three waypoint modes (sequential, random, hybrid)
  • Coordinate system explanation
  • Implementation details with code samples
  • Validation rules
  • Configuration examples (3 examples)
  • Advantages/disadvantages
  • Testing checklist

Recommended Reading Time: 25 minutes Use When: Implementing Phase 1


NPC_CROSS_ROOM_NAVIGATION.md (Feature 2)

  • Complete multi-room architecture design
  • How cross-room navigation works
  • Implementation approach (5 steps)
  • State management details
  • Door transition detection
  • Room lifecycle coordination
  • Example multi-room scenario
  • Implementation phases (3 phases)
  • Validation & error handling
  • Performance considerations
  • Future enhancements

Recommended Reading Time: 35 minutes Use When: Planning Phase 2


🎨 For Architecture & Visualization

NPC_FEATURES_VISUAL_ARCHITECTURE.md

  • System diagrams (current, Feature 1, Feature 2)
  • Data flow diagrams (waypoint patrol, multi-room route)
  • State machine visualization (waypoint patrol)
  • Coordinate system explanation with ASCII art
  • Room connection example
  • Validation tree (both features)
  • Integration points with existing systems
  • Code change summary
  • Timeline estimate
  • Success criteria

Recommended Reading Time: 20 minutes Use When: Understanding architecture


📖 For Existing Patrol System

PATROL_CONFIGURATION_GUIDE.md

  • Current random patrol configuration
  • How patrol.enabled, speed, changeDirectionInterval, bounds work
  • How patrol works behind the scenes
  • Combining patrol with other behaviors
  • Debugging patrol issues

Recommended Reading Time: 15 minutes Use When: Understanding existing system


Quick File Reference

Document Purpose Length When to Read
NPC_FEATURES_COMPLETE_SUMMARY.md Overview & comparison 5 pages First
NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md Implementation guide 4 pages Before coding
NPC_PATROL_WAYPOINTS.md Feature 1 spec 6 pages Implementing Phase 1
NPC_CROSS_ROOM_NAVIGATION.md Feature 2 spec 8 pages Planning Phase 2
NPC_FEATURES_VISUAL_ARCHITECTURE.md Architecture & diagrams 7 pages Understanding design
PATROL_CONFIGURATION_GUIDE.md Existing system 5 pages Reference

Implementation Roadmap

Complete (Design Phase)

  • Feature 1 specification documented
  • Feature 2 architecture designed
  • Examples created
  • Validation rules defined
  • Integration points identified

🔄 Ready for Implementation

Phase 1: Single-Room Waypoints (2-4 hours)

Status: Ready to start Complexity: Medium Risk: Low

Steps:
1. Modify npc-behavior.js parseConfig()
2. Add waypoint validation
3. Update chooseNewPatrolTarget()
4. Add dwell time support
5. Test with scenario

See: NPC_PATROL_WAYPOINTS.md (section: "Code Changes Required")


Phase 2: Multi-Room Routes (4-8 hours)

Status: Design complete, wait for Phase 1 Complexity: Medium-High Risk: Medium

Steps:
1. Extend patrol config for routes
2. Implement room transition logic
3. Add pathfinding across rooms
4. Update sprite management
5. Test with multi-room scenario

See: NPC_CROSS_ROOM_NAVIGATION.md (section: "Implementation Approach")


  1. Start Here:

    • Read NPC_FEATURES_COMPLETE_SUMMARY.md (5 min)
    • Understand: what was requested, what was designed
  2. Review Examples:

    • Look at configuration examples in summary
    • See: 3 example configurations
  3. Before Coding:

    • Read NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md (15 min)
    • Know: code locations, validation rules
  4. For Phase 1 Implementation:

    • Read NPC_PATROL_WAYPOINTS.md (25 min)
    • Reference: code samples, validation logic
    • Use: NPC_FEATURES_VISUAL_ARCHITECTURE.md for state machine
  5. For Phase 2 Implementation (after Phase 1):

    • Read NPC_CROSS_ROOM_NAVIGATION.md (35 min)
    • Reference: implementation approach, error handling
    • Use: architecture diagrams for room transitions

Key Concepts

Feature 1: Waypoint Patrol

{
  "patrol": {
    "waypoints": [
      {"x": 3, "y": 3},
      {"x": 6, "y": 6},
      {"x": 3, "y": 6}
    ],
    "waypointMode": "sequential"  // or "random"
  }
}

Key Points:

  • Tile coordinates (3-8 range)
  • Validates walkable
  • Sequential or random selection
  • Optional dwell time
  • Falls back gracefully

Feature 2: Cross-Room Navigation

{
  "startRoom": "lobby",
  "patrol": {
    "multiRoom": true,
    "route": [
      {"room": "lobby", "waypoints": [...]},
      {"room": "hallway", "waypoints": [...]}
    ]
  }
}

Key Points:

  • Spans multiple connected rooms
  • All route rooms pre-loaded
  • NPC teleports between rooms
  • Validates connections
  • Falls back gracefully

Configuration Examples

Simple Waypoint Patrol

{
  "id": "guard",
  "behavior": {
    "patrol": {
      "enabled": true,
      "speed": 100,
      "waypoints": [
        {"x": 3, "y": 3},
        {"x": 6, "y": 3},
        {"x": 6, "y": 6}
      ]
    }
  }
}

Result: Guard follows 3-waypoint route sequentially


Waypoint with Dwell

{
  "id": "checkpoint_guard",
  "behavior": {
    "patrol": {
      "enabled": true,
      "speed": 60,
      "waypoints": [
        {"x": 4, "y": 3, "dwellTime": 3000},
        {"x": 4, "y": 7, "dwellTime": 3000}
      ]
    }
  }
}

Result: Guard stands at each checkpoint for 3 seconds


Multi-Room Patrol

{
  "id": "security",
  "startRoom": "lobby",
  "behavior": {
    "patrol": {
      "enabled": true,
      "speed": 80,
      "multiRoom": true,
      "route": [
        {"room": "lobby", "waypoints": [{"x": 4, "y": 3}]},
        {"room": "hallway", "waypoints": [{"x": 3, "y": 4}]},
        {"room": "office", "waypoints": [{"x": 5, "y": 5}]}
      ]
    }
  }
}

Result: Guard patrols through 3 rooms in sequence


File Changes Summary

Phase 1 (Waypoint Patrol)

Modified Files:

  • js/systems/npc-behavior.js
    • parseConfig() - Add waypoint parsing
    • chooseNewPatrolTarget() - Add waypoint selection
    • updatePatrol() - Add dwell time

New Methods:

  • validateWaypoints() - Waypoint validation
  • getNextWaypoint() - Waypoint selection logic

Phase 2 (Multi-Room Routes)

Modified Files:

  • js/systems/npc-behavior.js

    • transitionToNextRoom() - Room transition logic
  • js/systems/npc-pathfinding.js

    • findPathAcrossRooms() - Cross-room pathfinding
    • getRoomConnectionDoor() - Door detection
  • js/systems/npc-sprites.js

    • relocateNPCSprite() - Sprite relocation
  • js/core/rooms.js

    • Pre-load multi-room routes

Performance Impact

Memory

  • Phase 1: ~1KB per NPC (waypoint list)
  • Phase 2: ~160KB per loaded room × number of rooms

CPU

  • Phase 1: No additional cost (uses existing pathfinding)
  • Phase 2: ~50ms per room (one-time pathfinder init)

Result

  • Phase 1: Negligible impact
  • Phase 2: 🟡 Acceptable for most scenarios

Testing Checklist

Phase 1 Tests

  • Waypoint patrol enabled
  • NPC follows waypoints in order
  • NPC reaches each waypoint
  • NPC loops back to start
  • Waypoint validation rejects invalid waypoints
  • Fallback to random patrol works
  • Dwell time pauses correctly
  • Console shows waypoint selection

Phase 2 Tests

  • NPC spawns in startRoom
  • NPC patrols first room
  • NPC transitions to next room
  • Sprite appears in new room
  • NPC continues patrol in new room
  • NPC loops through all rooms
  • Route validation catches errors
  • Graceful fallback if route invalid

Common Questions

Q: Which feature do I implement first? A: Phase 1 (waypoints) first. It's simpler and Foundation for Phase 2.

Q: Are these backward compatible? A: Yes! Existing scenarios work unchanged. New features are opt-in.

Q: Can both features be used together? A: Yes! Waypoints are used within multi-room routes.

Q: What if a waypoint is unreachable? A: NPC logs warning and falls back to random patrol.

Q: How much memory do multi-room routes need? A: ~160KB per loaded room. For 3 rooms: ~480KB total.


Troubleshooting Guide

Waypoint Issues

  1. NPC not following waypoints

    • Check console for validation errors
    • Verify waypoints are within bounds (3-8 range)
    • Verify waypoints are walkable (not in walls)
  2. NPC stuck on waypoint

    • Verify waypoint reachable via pathfinding
    • Check for obstacles between waypoints
    • Try adjusting waypoint position

Multi-Room Issues

  1. NPC not transitioning between rooms

    • Verify all route rooms exist in scenario
    • Check rooms are connected with doors
    • Verify startRoom exists
  2. Performance issues

    • Check total rooms loaded (may exceed memory)
    • Consider reducing number of route rooms
    • Add dwell time to slow movement

Next Steps

Immediate

  1. Read NPC_FEATURES_COMPLETE_SUMMARY.md
  2. Review configuration examples
  3. Understand feature comparison

Before Implementation

  1. Read NPC_PATROL_WAYPOINTS.md
  2. Review code change requirements
  3. Check integration points

Implementation

  1. Start Phase 1 (2-4 hours)
  2. Create test scenario
  3. Verify with console debugging
  4. Then proceed to Phase 2

Document Statistics

Total Documentation: 7 comprehensive guides
Total Word Count: ~15,000+ words
Total Code Examples: 20+ examples
Total Diagrams: 12+ diagrams/flowcharts
Implementation Effort: 6-12 hours total
Risk Level: Low (Phase 1) to Medium (Phase 2)
Complexity: Medium overall

Document Cross-References

NPC_FEATURES_COMPLETE_SUMMARY.md
├─ References: All other documents
└─ Referenced by: Quick reference guide

NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md
├─ References: Implementation details in feature specs
└─ Referenced by: All implementation documents

NPC_PATROL_WAYPOINTS.md (Feature 1)
├─ References: Visual architecture, quick reference
└─ Referenced by: Implementation guide

NPC_CROSS_ROOM_NAVIGATION.md (Feature 2)
├─ References: Visual architecture, quick reference
└─ Referenced by: Implementation guide

NPC_FEATURES_VISUAL_ARCHITECTURE.md
├─ References: All feature documents
└─ Referenced by: Implementation guides

PATROL_CONFIGURATION_GUIDE.md
├─ References: Existing system (random patrol)
└─ Referenced by: Quick reference, complete summary

Support & Questions

For Overview

NPC_FEATURES_COMPLETE_SUMMARY.md

For Configuration

NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md

For Implementation (Phase 1)

NPC_PATROL_WAYPOINTS.md

For Implementation (Phase 2)

NPC_CROSS_ROOM_NAVIGATION.md

For Architecture

NPC_FEATURES_VISUAL_ARCHITECTURE.md

For Existing System

PATROL_CONFIGURATION_GUIDE.md


Ready to Implement? 🚀

All documentation is complete and ready for development!

Recommended Next Step:

  1. Read NPC_FEATURES_COMPLETE_SUMMARY.md (5 min)
  2. Review configuration examples
  3. Start Phase 1 implementation using NPC_PATROL_WAYPOINTS.md

Good luck! Let me know if you have questions about the design.