Update Strategic Direction

John McCardle 2025-12-02 03:17:01 +00:00
parent 07c41c4f7b
commit b574bf8f22
1 changed files with 366 additions and 366 deletions

@ -1,366 +1,366 @@
# Strategic Direction # Strategic Direction
**Last Updated:** October 2025 (post-profiling system implementation) **Last Updated:** October 2025 (post-profiling system implementation)
**Source:** FINAL_RECOMMENDATIONS.md (October 2023 strategic analysis) **Source:** FINAL_RECOMMENDATIONS.md (October 2023 strategic analysis)
**Status:** Active guidance for development priorities **Status:** Active guidance for development priorities
**Related Pages:** **Related Pages:**
- [[Performance-and-Profiling]] - Profiling system (completed ✅) - [[Performance-and-Profiling]] - Profiling system (completed ✅)
- [[Animation-System]] - Current animation architecture - [[Animation-System]] - Current animation architecture
- [[Proposal-Next-Gen-Grid-Entity-System]] - Major architectural proposal - [[Proposal-Next-Gen-Grid-Entity-System]] - Major architectural proposal
--- ---
## Current State Assessment ## Current State Assessment
### Achievements (2023-2025) ### Achievements (2023-2025)
- ✅ Comprehensive C++/Python game engine with SFML/libtcod integration - ✅ Comprehensive C++/Python game engine with SFML/libtcod integration
- ✅ Animation system with 24+ easing functions - ✅ Animation system with 24+ easing functions
- ✅ Profiling infrastructure (F3 overlay, ScopedTimer, metrics) - **Completed Oct 2025** - ✅ Profiling infrastructure (F3 overlay, ScopedTimer, metrics) - **Completed Oct 2025**
- ✅ 70% complete tutorial series (parts 0-6 implemented) - ✅ 70% complete tutorial series (parts 0-6 implemented)
- ✅ Three-audience strategy (beginners, game jammers, researchers) - ✅ Three-audience strategy (beginners, game jammers, researchers)
### Known Problems ### Known Problems
- ⚠️ Animation system has API inconsistencies and bugs - ⚠️ Animation system has API inconsistencies and bugs
- ⚠️ Grid rendering lacks dirty flag optimization (re-renders static content every frame) - ⚠️ Grid rendering lacks dirty flag optimization (re-renders static content every frame)
- ⚠️ Tutorial continuation blocked by animation issues - ⚠️ Tutorial continuation blocked by animation issues
- ⚠️ No public release (features not stable enough) - ⚠️ No public release (features not stable enough)
### Recent Progress (October 2025) ### Recent Progress (October 2025)
- ✅ **Profiling system implemented** - Issue #104 completed - ✅ **Profiling system implemented** - Issue #104 completed
- ✅ **Benchmarks created** - tests/benchmark_static_grid.py, tests/benchmark_moving_entities.py - ✅ **Benchmarks created** - tests/benchmark_static_grid.py, tests/benchmark_moving_entities.py
- 🔄 **Next:** Grid dirty flags (#116), SpatialHash (#115), Animation system overhaul (#120) - 🔄 **Next:** Grid dirty flags (#116), SpatialHash (#115), Animation system overhaul (#120)
--- ---
## Core Recommendation: Foundation First ## Core Recommendation: Foundation First
**Principle:** Fix foundation systems before expanding features. **Principle:** Fix foundation systems before expanding features.
### Immediate Focus (Next 3-6 Months) ### Immediate Focus (Next 3-6 Months)
1. **Grid rendering optimization** - Dirty flags, viewport culling 1. **Grid rendering optimization** - Dirty flags, viewport culling
2. **Animation system overhaul** - Fix APIs, squash bugs, consistent behavior 2. **Animation system overhaul** - Fix APIs, squash bugs, consistent behavior
3. **Performance profiling** - ~~Measure~~ ✅, optimize, compete with TCOD 3. **Performance profiling** - ~~Measure~~ ✅, optimize, compete with TCOD
### Defer Until Foundation Stable ### Defer Until Foundation Stable
- ECS architecture rewrite - ECS architecture rewrite
- Living world/MMO features - Living world/MMO features
- Python wheel distribution - Python wheel distribution
- Tutorials 7-13 (advanced content) - Tutorials 7-13 (advanced content)
- Research platform features - Research platform features
**Why:** Stable, performant engine with consistent APIs is achievable in 3-6 months. Chasing bigger visions before fixing foundation repeats burnout cycle. **Why:** Stable, performant engine with consistent APIs is achievable in 3-6 months. Chasing bigger visions before fixing foundation repeats burnout cycle.
--- ---
## What to Pursue, Defer, or Abandon ## What to Pursue, Defer, or Abandon
### ✅ PURSUE (Active Development) ### ✅ PURSUE (Active Development)
**Core Features:** **Core Features:**
- Three-audience strategy (beginners, jammers, researchers) - Three-audience strategy (beginners, jammers, researchers)
- Pythonic API with clean abstractions - Pythonic API with clean abstractions
- "Batteries included but removable" philosophy - "Batteries included but removable" philosophy
- Forward-only tutorial progression - Forward-only tutorial progression
- Performance competitive with libtcod - Performance competitive with libtcod
**Foundation Systems:** **Foundation Systems:**
- Grid rendering optimization (#116, #115, #113) - Grid rendering optimization (#116, #115, #113)
- Animation system fixes (#120, #119, #100) - Animation system fixes (#120, #119, #100)
- Python binding consistency (#126, #109, #101) - Python binding consistency (#126, #109, #101)
- Documentation infrastructure (#92, #91, #97) - Documentation infrastructure (#92, #91, #97)
### ⏸️ DEFER (Until After v1.0) ### ⏸️ DEFER (Until After v1.0)
**Good Ideas, Wrong Timing:** **Good Ideas, Wrong Timing:**
- Python wheel packaging (`pip install mcrogueface`) - Wait for stable API - Python wheel packaging (`pip install mcrogueface`) - Wait for stable API
- Advanced tutorials 7-13 - Complete basic tutorials first - Advanced tutorials 7-13 - Complete basic tutorials first
- Research platform features - Build community first - Research platform features - Build community first
- Multi-window support (#62) - Limited demand - Multi-window support (#62) - Limited demand
- Shader support (#106) - Advanced feature - Shader support (#106) - Advanced feature
- Particle system (#107) - Advanced feature - Particle system (#107) - Advanced feature
**Rationale:** These are valuable but require stable foundation. Attempting them now creates scope creep and burnout risk. **Rationale:** These are valuable but require stable foundation. Attempting them now creates scope creep and burnout risk.
### ❌ ABANDON (Not Aligned with Project Vision) ### ❌ ABANDON (Not Aligned with Project Vision)
**Out of Scope:** **Out of Scope:**
- Living world MMO features - Wrong project, years of work, no user demand - Living world MMO features - Wrong project, years of work, no user demand
- Full ECS rewrite - Wrong timing, makes tutorials harder for beginners - Full ECS rewrite - Wrong timing, makes tutorials harder for beginners
- 50,000 tile ecosystem - Wrong scale for target audience - 50,000 tile ecosystem - Wrong scale for target audience
- Tile state machines - Too complex for beginner-friendly engine - Tile state machines - Too complex for beginner-friendly engine
**Rationale:** McRogueFace is a **beginner-friendly roguelike engine**, not an MMO platform or research simulator. Stay focused on core mission. **Rationale:** McRogueFace is a **beginner-friendly roguelike engine**, not an MMO platform or research simulator. Stay focused on core mission.
--- ---
## Critical Path to v1.0 ## Critical Path to v1.0
### Phase 1: Performance Foundation (✅ Partially Complete) ### Phase 1: Performance Foundation (✅ Partially Complete)
**Timeline:** October-November 2025 **Timeline:** October-November 2025
- [✅] Task #104: Profiling infrastructure (F3 overlay, ScopedTimer) - [✅] Task #104: Profiling infrastructure (F3 overlay, ScopedTimer)
- [✅] Benchmarks: static grid, moving entities - [✅] Benchmarks: static grid, moving entities
- [🔄] Task #116: Grid dirty flag system - [🔄] Task #116: Grid dirty flag system
- [🔄] Task #115: SpatialHash for entity queries - [🔄] Task #115: SpatialHash for entity queries
- [⏳] Task #113: Batch operations API - [⏳] Task #113: Batch operations API
**Success Metric:** 60 FPS with 10,000 entities and 100x100 grid **Success Metric:** 60 FPS with 10,000 entities and 100x100 grid
### Phase 2: Animation System Overhaul ### Phase 2: Animation System Overhaul
**Timeline:** December 2025 - January 2026 **Timeline:** December 2025 - January 2026
- [⏳] Task #120: Property locking system - [⏳] Task #120: Property locking system
- [⏳] Task #100: Rotation support - [⏳] Task #100: Rotation support
- [⏳] API consistency audit - [⏳] API consistency audit
- [⏳] Comprehensive test suite - [⏳] Comprehensive test suite
- [⏳] Documentation update - [⏳] Documentation update
**Success Metric:** Tutorial-ready animation system with consistent API **Success Metric:** Tutorial-ready animation system with consistent API
### Phase 3: Tutorial Completion ### Phase 3: Tutorial Completion
**Timeline:** February - March 2026 **Timeline:** February - March 2026
- [✅] Parts 0-6: Implemented and working - [✅] Parts 0-6: Implemented and working
- [⏳] Parts 7-10: Complete on stable foundation - [⏳] Parts 7-10: Complete on stable foundation
- [⏳] Parts 11-13: Advanced content (optional) - [⏳] Parts 11-13: Advanced content (optional)
- [⏳] Tutorial testing framework - [⏳] Tutorial testing framework
- [⏳] Documentation sprint - [⏳] Documentation sprint
**Success Metric:** Professional tutorial ready for public release **Success Metric:** Professional tutorial ready for public release
### Phase 4: Public Release ### Phase 4: Public Release
**Timeline:** April 2026 **Timeline:** April 2026
- API freeze (v1.0) - API freeze (v1.0)
- Python wheel packaging - Python wheel packaging
- Documentation finalization - Documentation finalization
- Public announcement - Public announcement
**Success Metric:** First stable public release **Success Metric:** First stable public release
--- ---
## Key Principles ## Key Principles
### 1. Fix Foundation Before Features ### 1. Fix Foundation Before Features
**Wrong:** "Let's add ECS while animation system has bugs" **Wrong:** "Let's add ECS while animation system has bugs"
**Right:** "Let's fix animation bugs, THEN evaluate if ECS is needed" **Right:** "Let's fix animation bugs, THEN evaluate if ECS is needed"
### 2. Measure Before Optimizing ### 2. Measure Before Optimizing
**Wrong:** "Grid rendering seems slow, let's rewrite it" **Wrong:** "Grid rendering seems slow, let's rewrite it"
**Right:** "Let's profile grid rendering (✅), identify bottlenecks, optimize hot paths" **Right:** "Let's profile grid rendering (✅), identify bottlenecks, optimize hot paths"
### 3. Simplicity Over Completeness ### 3. Simplicity Over Completeness
**Wrong:** "Let's support every possible use case" **Wrong:** "Let's support every possible use case"
**Right:** "Let's nail the beginner experience first" **Right:** "Let's nail the beginner experience first"
### 4. Ship Incrementally ### 4. Ship Incrementally
**Wrong:** "Can't release until everything is perfect" **Wrong:** "Can't release until everything is perfect"
**Right:** "Release tutorial parts 0-4 as Early Access while fixing rest" **Right:** "Release tutorial parts 0-4 as Early Access while fixing rest"
### 5. Listen to Burnout Signals ### 5. Listen to Burnout Signals
**Wrong:** "Power through tutorial frustrations" **Wrong:** "Power through tutorial frustrations"
**Right:** "Tutorial burnout = foundation problem. Stop and fix foundation." **Right:** "Tutorial burnout = foundation problem. Stop and fix foundation."
--- ---
## Decision Framework ## Decision Framework
When considering new work, ask: When considering new work, ask:
### 1. Does it fix foundation? ### 1. Does it fix foundation?
- ✅ Grid dirty flags - Yes (core performance) - ✅ Grid dirty flags - Yes (core performance)
- ✅ Animation bug fixes - Yes (tutorial blocker) - ✅ Animation bug fixes - Yes (tutorial blocker)
- ❌ ECS rewrite - No (architectural experiment) - ❌ ECS rewrite - No (architectural experiment)
### 2. Does it unblock tutorials? ### 2. Does it unblock tutorials?
- ✅ Animation API consistency - Yes (tutorial depends on it) - ✅ Animation API consistency - Yes (tutorial depends on it)
- ❌ Living world features - No (tutorials don't need it) - ❌ Living world features - No (tutorials don't need it)
### 3. Does it align with "beginner-friendly"? ### 3. Does it align with "beginner-friendly"?
- ✅ Pythonic API improvements - Yes (easier to learn) - ✅ Pythonic API improvements - Yes (easier to learn)
- ❌ Advanced shader system - No (intimidating for beginners) - ❌ Advanced shader system - No (intimidating for beginners)
### 4. Can it wait until v1.0? ### 4. Can it wait until v1.0?
- ⏸️ Python wheel packaging - Yes (good feature, not urgent) - ⏸️ Python wheel packaging - Yes (good feature, not urgent)
- ❌ Performance fixes - No (embarrassing performance hurts adoption) - ❌ Performance fixes - No (embarrassing performance hurts adoption)
**Rule of Thumb:** If it doesn't fix foundation, unblock tutorials, or improve beginner experience, defer it. **Rule of Thumb:** If it doesn't fix foundation, unblock tutorials, or improve beginner experience, defer it.
--- ---
## Synergies & Dependencies ## Synergies & Dependencies
### Critical Path Dependencies ### Critical Path Dependencies
``` ```
Profiling System (✅ Done) Profiling System (✅ Done)
Grid Optimization (#116, #115) Grid Optimization (#116, #115)
Animation System Overhaul (#120) Animation System Overhaul (#120)
Tutorial Completion (Parts 7-10) Tutorial Completion (Parts 7-10)
Public Release (v1.0) Public Release (v1.0)
``` ```
**Each phase blocks the next.** Don't skip ahead. **Each phase blocks the next.** Don't skip ahead.
### Parallel Work (Can Do Anytime) ### Parallel Work (Can Do Anytime)
Independent improvements that don't block critical path: Independent improvements that don't block critical path:
- Documentation updates (#92, #91, #97) - Documentation updates (#92, #91, #97)
- Python binding patterns (#101, #109) - Python binding patterns (#101, #109)
- Test infrastructure improvements - Test infrastructure improvements
- Bug fixes not affecting tutorials - Bug fixes not affecting tutorials
**Rule:** These can fill time while waiting on reviews or builds, but never at expense of critical path. **Rule:** These can fill time while waiting on reviews or builds, but never at expense of critical path.
--- ---
## Warnings & Anti-Patterns ## Warnings & Anti-Patterns
### Warning Signs of Scope Creep ### Warning Signs of Scope Creep
- "Let's add just one more feature before release" - "Let's add just one more feature before release"
- "This ECS idea is so cool, let's explore it" - "This ECS idea is so cool, let's explore it"
- "We should support [edge case] before v1.0" - "We should support [edge case] before v1.0"
- "Let's redesign [working system] to be more elegant" - "Let's redesign [working system] to be more elegant"
**Response:** Stop. Refer to this document. Is it on critical path? No? Defer. **Response:** Stop. Refer to this document. Is it on critical path? No? Defer.
### Known Burnout Triggers ### Known Burnout Triggers
Based on September 2025 tutorial burnout: Based on September 2025 tutorial burnout:
1. **Teaching broken features** - Tutorial work on unstable APIs 1. **Teaching broken features** - Tutorial work on unstable APIs
2. **Working around bugs** - Complex code to avoid animation issues 2. **Working around bugs** - Complex code to avoid animation issues
3. **Scope creep during tutorial** - Adding features mid-tutorial 3. **Scope creep during tutorial** - Adding features mid-tutorial
4. **Perfectionism** - Rewriting working code 4. **Perfectionism** - Rewriting working code
**Response:** Recognize burnout signals early. Stop tutorial work. Fix foundation. Resume tutorials on stable base. **Response:** Recognize burnout signals early. Stop tutorial work. Fix foundation. Resume tutorials on stable base.
--- ---
## Success Metrics ## Success Metrics
### v1.0 Release Criteria ### v1.0 Release Criteria
**Performance:** **Performance:**
- ✅ 60 FPS with 100x100 grid - ✅ 60 FPS with 100x100 grid
- ✅ 60 FPS with 10,000 entities (requires #115) - ✅ 60 FPS with 10,000 entities (requires #115)
- Grid render time <2ms for static content (requires #116) - Grid render time <2ms for static content (requires #116)
**API Stability:** **API Stability:**
- Animation system has consistent APIs (#120) - Animation system has consistent APIs (#120)
- Python bindings follow patterns (#126, #101) - Python bindings follow patterns (#126, #101)
- No major breaking changes expected - No major breaking changes expected
**Documentation:** **Documentation:**
- Tutorial parts 0-6 polished (✅ code exists) - Tutorial parts 0-6 polished (✅ code exists)
- Tutorial parts 7-10 completed - Tutorial parts 7-10 completed
- API documentation generated (#97) - API documentation generated (#97)
- Python type stubs available (#91) - Python type stubs available (#91)
**User Experience:** **User Experience:**
- Tutorial can be followed start-to-finish - Tutorial can be followed start-to-finish
- Examples run without errors - Examples run without errors
- Performance competitive with libtcod - Performance competitive with libtcod
**Release Readiness:** **Release Readiness:**
- API frozen - API frozen
- Changelog prepared - Changelog prepared
- Python wheel available - Python wheel available
- Public announcement ready - Public announcement ready
--- ---
## Monthly Check-In Questions ## Monthly Check-In Questions
At end of each month, evaluate: At end of each month, evaluate:
1. **Are we on critical path?** 1. **Are we on critical path?**
- If not, why did we deviate? - If not, why did we deviate?
- Was deviation justified? - Was deviation justified?
2. **Did we ship anything?** 2. **Did we ship anything?**
- Code merged to master - Code merged to master
- Tutorial parts completed - Tutorial parts completed
- Documentation updated - Documentation updated
- Issues closed - Issues closed
3. **Is burnout risk increasing?** 3. **Is burnout risk increasing?**
- Working on frustrating bugs? - Working on frustrating bugs?
- Scope creeping? - Scope creeping?
- Losing motivation? - Losing motivation?
- **Response:** Return to foundation work - **Response:** Return to foundation work
4. **What's blocking next phase?** 4. **What's blocking next phase?**
- Dependencies clear? - Dependencies clear?
- Resources available? - Resources available?
- Technical unknowns identified? - Technical unknowns identified?
5. **Should we adjust timeline?** 5. **Should we adjust timeline?**
- Faster than expected? - Faster than expected?
- Unforeseen blockers? - Unforeseen blockers?
- Change priorities? - Change priorities?
--- ---
## Current Status (October 2025) ## Current Status (October 2025)
### ✅ Recent Wins ### ✅ Recent Wins
- Profiling system implemented (Issue #104) - Profiling system implemented (Issue #104)
- Benchmarks created - Benchmarks created
- F3 overlay functional - F3 overlay functional
- ScopedTimer infrastructure in place - ScopedTimer infrastructure in place
### 🔄 In Progress ### 🔄 In Progress
- Grid System wiki documentation (this sprint) - Grid System wiki documentation (this sprint)
- Issue organization and labeling - Issue organization and labeling
### ⏳ Next Up (November 2025) ### ⏳ Next Up (November 2025)
- Issue #116: Grid dirty flag system - Issue #116: Grid dirty flag system
- Issue #115: SpatialHash implementation - Issue #115: SpatialHash implementation
- Issue #120: Animation property locking - Issue #120: Animation property locking
### 📅 Upcoming Milestones ### 📅 Upcoming Milestones
- **Q4 2025:** Performance foundation complete - **Q4 2025:** Performance foundation complete
- **Q1 2026:** Animation system overhaul - **Q1 2026:** Animation system overhaul
- **Q2 2026:** Tutorial completion - **Q2 2026:** Tutorial completion
- **Q2 2026:** v1.0 public release - **Q2 2026:** v1.0 public release
--- ---
## Resources ## Resources
**Source Documents:** **Source Documents:**
- `FINAL_RECOMMENDATIONS.md` - Full strategic analysis (October 2023) - `FINAL_RECOMMENDATIONS.md` - Full strategic analysis (October 2023)
- `MASTER_TASK_SCHEDULE.md` - Comprehensive task catalog - `MASTER_TASK_SCHEDULE.md` - Comprehensive task catalog
- `ROADMAP.md` - High-level project roadmap - `ROADMAP.md` - High-level project roadmap
**Related Issues:** **Related Issues:**
- [#104](../../issues/104) - Profiling system (✅ complete) - [#104](../../issues/104) - Profiling system (✅ complete)
- [#115](../../issues/115) - SpatialHash optimization - [#115](../../issues/115) - SpatialHash optimization
- [#116](../../issues/116) - Grid dirty flags - [#116](../../issues/116) - Grid dirty flags
- [#120](../../issues/120) - Animation property locking - [#120](../../issues/120) - Animation property locking
- [#126](../../issues/126) - Perfect Python interface - [#126](../../issues/126) - Perfect Python interface
**Related Wiki Pages:** **Related Wiki Pages:**
- [[Performance-and-Profiling]] - Profiling infrastructure - [[Performance-and-Profiling]] - Profiling infrastructure
- [[Animation-System]] - Current animation implementation - [[Animation-System]] - Current animation implementation
- [[Proposal-Next-Gen-Grid-Entity-System]] - Future architecture proposal - [[Proposal-Next-Gen-Grid-Entity-System]] - Future architecture proposal
--- ---
**Navigation:** **Navigation:**
- [[Home]] - Documentation hub - [[Home]] - Documentation hub
- [[Performance-and-Profiling]] - Current performance work - [[Performance-and-Profiling]] - Current performance work
- [[Animation-System]] - Animation system details - [[Animation-System]] - Animation system details