A physics-inspired approach to story analysis that treats narrative as movement through multidimensional phase space.
Quick Start
For immediate analysis, specify:
- •Content level: concept, outline, chapter, book, or series
- •Genre: romance, dark-romance, thriller, mystery, sci-fi, fantasy, or hybrid
- •What to analyze: structure, pacing, tension, character arcs, or full diagnostic
Core Concept
Stories exist as trajectories through N-dimensional space where each dimension represents an independent narrative variable. Tension and other dramatic qualities emerge from the configuration of these dimensions.
State Vector: s(t) = [intimacy, power_diff, info_asym, alignment, proximity, vulnerability, desire, stakes, trust]
Basis Dimensions (Independent Variables)
Primary Dimensions (0-10 scale unless noted)
- •INTIMACY - Emotional closeness between characters
- •POWER_DIFFERENTIAL - Agency imbalance (-5 to +5, where 0 = balanced)
- •INFORMATION_ASYMMETRY - Knowledge gaps between characters
- •GOAL_ALIGNMENT - How much characters want the same thing
- •PHYSICAL_PROXIMITY - Literal spatial distance
- •VULNERABILITY - Emotional walls up/down state
- •DESIRE - Attraction/pull between characters
- •STAKES - Magnitude of consequences
- •TRUST - Belief in other's reliability
Secondary Dimensions (genre-specific)
- •DANGER - Physical threat level (thriller/suspense)
- •MYSTERY - Unknown elements to reader (mystery/thriller)
- •WORLD_COMPLEXITY - Setting intricacy (fantasy/sci-fi)
- •SOCIAL_PRESSURE - External judgment (contemporary romance)
- •MORAL_AMBIGUITY - Ethical grayness (dark romance)
Emergent Properties (Calculated)
Tension Formula
Base tension emerges from dimensional configuration:
TENSION = w₁(stakes) + w₂(info_asymmetry) + w₃(goal_misalignment) +
w₄(vulnerability - trust) + w₅(desire - proximity) + w₆(|power_diff|)
Genre-specific weights in references/genre-weights.json
Other Emergent Properties
- •CONFLICT = f(power_diff, goal_misalignment, desire with proximity deficit)
- •CHEMISTRY = f(desire, proximity, vulnerability, productive info_asymmetry)
- •PACING = ||ds/dt|| (velocity through phase space)
- •DRAMATIC_IRONY = reader_info - character_info
Analysis Procedures
Structure Analysis
- •Map current dimensional configuration
- •Check genre constraint satisfaction
- •Identify trajectory patterns
- •Validate ending coordinates match genre requirements
Pacing Diagnostic
Calculate velocity vector: v(t) = ds/dt
- •Stuck: ||v|| ≈ 0 (no dimensional movement)
- •Rushed: ||v|| > threshold (teleportation between states)
- •Optimal: 2-3 dimensions shifting per unit
Tension Engineering
To increase tension:
- •Maximize (stakes - trust)
- •Maximize (desire - proximity)
- •Increase information asymmetry with high vulnerability
- •Force proximity with misaligned goals
Arc Validation
Check if dimensional changes are "earned":
- •Each jump > 2 points needs catalyst event
- •Trajectory must be continuous (no teleportation)
- •Character growth shows across multiple dimensions
The "Black Moment" Formula
Peak crisis configuration:
- •Stakes → MAX
- •Trust → MIN
- •Goal Alignment → SHATTERED
- •Desire → HIGH (maintains investment)
Genre-Specific Configurations
See references/genre-configs.md for detailed patterns
Quick Genre Templates
Romance: Must end at intimacy ≥ 8, trust ≥ 7 Dark Romance: Maintain power_diff fluctuation, high stakes throughout Thriller: Danger + stakes high, trust variable Mystery: Information asymmetry drives plot until revelation Enemies-to-Lovers: Goal alignment slowest mover
Diagnostic Outputs
Scene-Level Analysis
- •Current dimensional state
- •Dimensional velocity (what's changing)
- •Tension calculation
- •Suggested adjustments
Chapter-Level Analysis
- •Dimensional trajectory map
- •Pacing assessment
- •Arc progression check
- •Genre compliance status
Book-Level Analysis
- •Full phase space trajectory
- •Character arc paths
- •Pacing heat map
- •Black moment validation
- •Ending coordinate check
Scripts
- •
scripts/calculate_tension.py- Compute tension from dimensional state - •
scripts/validate_trajectory.py- Check if arc is properly earned - •
scripts/generate_report.py- Create full dimensional analysis report
References
- •
references/genre-weights.json- Tension formula weights by genre - •
references/genre-configs.md- Detailed genre conventions and constraints - •
references/catalyst-events.md- Events that justify dimensional jumps - •
references/diagnostic-patterns.md- Common problems and solutions
Usage Examples
Diagnosing a Flat Scene
# Current state shows no movement
state = {"intimacy": 5, "trust": 5, "stakes": 5, ...}
# All dimensions static = death
# Solution: Move 2-3 dimensions
Planning Dark Romance Arc
Start: power_diff=+5, trust=0, stakes=10, desire=3 Mid: power_diff oscillates, trust climbs slowly, stakes high End: power_diff=0, trust=8, stakes=personal, desire=10
Engineering High Tension Chapter
Target configuration: - Stakes: 9 - Trust: 2 - Information Asymmetry: 8 - Vulnerability: 7 - Physical Proximity: 8 (forced closeness)
Key Principles
- •Stories are trajectories - Not events but dimensional movement
- •Tension emerges - From configuration, not arbitrary assignment
- •Pacing is velocity - How fast you move through phase space
- •Genres constrain paths - Not destinations but allowable trajectories
- •Earned moments - Require proper path integration, not jumps
Remember: The same kiss hits differently at intimacy=2 vs intimacy=8. Context is configuration.