[Proc Gen] BSP.find_path - Room connectivity graph #210
Labels
No labels
Alpha Release Requirement
Bugfix
Demo Target
Documentation
Major Feature
Minor Feature
priority:tier1-active
priority:tier2-foundation
priority:tier3-future
priority:tier4-deferred
Refactoring & Cleanup
system:animation
system:documentation
system:grid
system:input
system:performance
system:procgen
system:python-binding
system:rendering
system:ui-hierarchy
Tiny Feature
workflow:blocked
workflow:needs-benchmark
workflow:needs-documentation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#202 [Proc Gen] BSP - Core class with splitting
john/McRogueFace
#204 [Proc Gen] BSP - Iteration (leaves, traverse)
john/McRogueFace
Reference
john/McRogueFace#210
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent Issue: #192
Depends On: #202 (BSP core), #203 (BSPNode), #204 (BSP iteration)
Priority: Lower - Nice to have for 7DRL, not blocking
Overview
Add method to find a path through BSP leaf nodes based on shared walls, enabling "longest path" corridor generation.
Problem Statement
The BSP tree structure represents containment, not adjacency:
Two leaf nodes are adjacent if they share a wall segment (not just a corner).
Proposed Specification
Find a sequence of adjacent leaf nodes connecting start to end.
Get all leaf nodes that share a wall with the given node.
Example Use Case
Design Questions
Adjacency Definition: How to detect shared walls?
Pathfinding Algorithm:
Edge Cases:
Implementation Approach
Build adjacency graph of all leaves:
BFS/DFS from start to end on adjacency graph
Cache adjacency graph on BSP (invalidate on split/clear)
Alternative: Expose Adjacency Only
Instead of
find_path, just expose the adjacency information:Then users can implement their own pathfinding (A*, longest path, etc.)
Acceptance Criteria