- 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.
12 KiB
NPC Patrol Features - Master Documentation Index
Overview
Two major NPC patrol features have been designed and fully documented:
- Waypoint Patrol - NPCs follow predefined tile coordinates (3-8 range)
- 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")
📋 Recommended Reading Order
-
Start Here:
- Read
NPC_FEATURES_COMPLETE_SUMMARY.md(5 min) - Understand: what was requested, what was designed
- Read
-
Review Examples:
- Look at configuration examples in summary
- See: 3 example configurations
-
Before Coding:
- Read
NPC_WAYPOINTS_AND_CROSSROOM_QUICK_REFERENCE.md(15 min) - Know: code locations, validation rules
- Read
-
For Phase 1 Implementation:
- Read
NPC_PATROL_WAYPOINTS.md(25 min) - Reference: code samples, validation logic
- Use:
NPC_FEATURES_VISUAL_ARCHITECTURE.mdfor state machine
- Read
-
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
- Read
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.jsparseConfig()- Add waypoint parsingchooseNewPatrolTarget()- Add waypoint selectionupdatePatrol()- Add dwell time
New Methods:
validateWaypoints()- Waypoint validationgetNextWaypoint()- Waypoint selection logic
Phase 2 (Multi-Room Routes)
Modified Files:
-
js/systems/npc-behavior.jstransitionToNextRoom()- Room transition logic
-
js/systems/npc-pathfinding.jsfindPathAcrossRooms()- Cross-room pathfindinggetRoomConnectionDoor()- Door detection
-
js/systems/npc-sprites.jsrelocateNPCSprite()- 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
-
NPC not following waypoints
- Check console for validation errors
- Verify waypoints are within bounds (3-8 range)
- Verify waypoints are walkable (not in walls)
-
NPC stuck on waypoint
- Verify waypoint reachable via pathfinding
- Check for obstacles between waypoints
- Try adjusting waypoint position
Multi-Room Issues
-
NPC not transitioning between rooms
- Verify all route rooms exist in scenario
- Check rooms are connected with doors
- Verify
startRoomexists
-
Performance issues
- Check total rooms loaded (may exceed memory)
- Consider reducing number of route rooms
- Add dwell time to slow movement
Next Steps
Immediate
- ✅ Read
NPC_FEATURES_COMPLETE_SUMMARY.md - ✅ Review configuration examples
- ✅ Understand feature comparison
Before Implementation
- Read
NPC_PATROL_WAYPOINTS.md - Review code change requirements
- Check integration points
Implementation
- Start Phase 1 (2-4 hours)
- Create test scenario
- Verify with console debugging
- 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:
- Read
NPC_FEATURES_COMPLETE_SUMMARY.md(5 min) - Review configuration examples
- Start Phase 1 implementation using
NPC_PATROL_WAYPOINTS.md
Good luck! Let me know if you have questions about the design. ✅