docs: update roadmap for Phase 6 preparation
- Mark Phase 5 (Window/Scene Architecture) as complete - Update issue statuses (#34, #61, #1, #105 completed) - Add Phase 6 implementation strategy for RenderTexture overhaul - Archive Phase 5 test files to .archive/ - Identify quick wins and technical approach for rendering work
This commit is contained in:
parent
eaeef1a889
commit
4b2ad0ff18
147
ROADMAP.md
147
ROADMAP.md
|
@ -55,14 +55,17 @@
|
||||||
## 🔧 CURRENT WORK: Alpha Streamline 2 - Major Architecture Improvements
|
## 🔧 CURRENT WORK: Alpha Streamline 2 - Major Architecture Improvements
|
||||||
|
|
||||||
### Recent Completions:
|
### Recent Completions:
|
||||||
- ✅ **ISSUE_FIX_PLAN.md merged** - Fixed 10+ critical issues
|
- ✅ **Phase 1-4 Complete** - Foundation, API Polish, Entity Lifecycle, Visibility/Performance
|
||||||
- ✅ **Grid.at() flexible arguments** - Tuple, keyword, and pos support
|
- ✅ **Phase 5 Complete** - Window/Scene Architecture fully implemented!
|
||||||
- ✅ **Alpha 0.1 Release achieved** - All blockers resolved!
|
- Window singleton with properties (#34)
|
||||||
|
- OOP Scene support with lifecycle methods (#61)
|
||||||
|
- Window resize events (#1)
|
||||||
|
- Scene transitions with animations (#105)
|
||||||
|
|
||||||
### Active Development:
|
### Active Development:
|
||||||
- **Branch**: alpha_streamline_2
|
- **Branch**: alpha_streamline_2
|
||||||
- **Goal**: Complete architectural improvements for solid Beta foundation
|
- **Current Phase**: Phase 6 - Rendering Revolution (preparing to start)
|
||||||
- **Timeline**: 10-12 weeks comprehensive plan
|
- **Timeline**: 3-4 weeks for Phase 6 implementation
|
||||||
- **Strategic Vision**: See STRATEGIC_VISION.md for platform roadmap
|
- **Strategic Vision**: See STRATEGIC_VISION.md for platform roadmap
|
||||||
|
|
||||||
### 🏗️ Architectural Dependencies Map
|
### 🏗️ Architectural Dependencies Map
|
||||||
|
@ -186,57 +189,79 @@ Rendering Layer:
|
||||||
```
|
```
|
||||||
*Rationale*: Performance is feature. Finding elements by name is huge QoL.
|
*Rationale*: Performance is feature. Finding elements by name is huge QoL.
|
||||||
|
|
||||||
### Phase 5: Window/Scene Architecture (2-3 weeks)
|
### Phase 5: Window/Scene Architecture ✅ COMPLETE! (2025-07-06)
|
||||||
**Goal**: Modern, flexible architecture
|
**Goal**: Modern, flexible architecture
|
||||||
```
|
```
|
||||||
1. #34 - Window object (singleton first)
|
1. ✅ #34 - Window object (singleton first)
|
||||||
window = mcrfpy.Window.get()
|
window = mcrfpy.Window.get()
|
||||||
window.resolution = (1920, 1080)
|
window.resolution = (1920, 1080)
|
||||||
window.fullscreen = True
|
window.fullscreen = True
|
||||||
window.vsync = True
|
window.vsync = True
|
||||||
|
|
||||||
2. #1 - Window resize events
|
2. ✅ #1 - Window resize events
|
||||||
scene.on_resize = lambda w, h: handle_resize(w, h)
|
scene.on_resize(self, width, height) callback implemented
|
||||||
|
|
||||||
3. #61 - Scene object (OOP scenes)
|
3. ✅ #61 - Scene object (OOP scenes)
|
||||||
class MenuScene(mcrfpy.Scene):
|
class MenuScene(mcrfpy.Scene):
|
||||||
def on_keypress(self, key):
|
def on_keypress(self, key, state):
|
||||||
# handle input
|
# handle input
|
||||||
def on_enter(self):
|
def on_enter(self):
|
||||||
# setup UI
|
# setup UI
|
||||||
|
def on_exit(self):
|
||||||
|
# cleanup
|
||||||
|
def update(self, dt):
|
||||||
|
# frame update
|
||||||
|
|
||||||
4. #14 - SFML exposure research
|
4. ✅ #14 - SFML exposure research
|
||||||
- Option 1: Use existing pysfml
|
- Completed comprehensive analysis
|
||||||
- Option 2: mcrfpy.sfml submodule
|
- Recommendation: Direct integration as mcrfpy.sfml
|
||||||
- Option 3: Direct integration
|
- SFML 3.0 migration deferred to late 2025
|
||||||
|
|
||||||
5. 105 - Scene transitions
|
5. ✅ #105 - Scene transitions
|
||||||
scene.fade_to(next_scene, duration=1.0)
|
mcrfpy.setScene("menu", "fade", 1.0)
|
||||||
scene.slide_out(direction="left")
|
# Supports: fade, slide_left, slide_right, slide_up, slide_down
|
||||||
```
|
```
|
||||||
*Rationale*: This is the "big leap" - modernizes the entire API.
|
*Result*: Entire window/scene system modernized with OOP design!
|
||||||
|
|
||||||
### Phase 6: Rendering Revolution (3-4 weeks)
|
### Phase 6: Rendering Revolution (3-4 weeks) 🚀 NEXT!
|
||||||
**Goal**: Professional rendering capabilities
|
**Goal**: Professional rendering capabilities
|
||||||
```
|
```
|
||||||
1. #6 - RenderTexture overhaul
|
1. #6 - RenderTexture overhaul [CORE PRIORITY]
|
||||||
- All UIDrawables render to RenderTexture
|
- All UIDrawables render to RenderTexture
|
||||||
- Enables clipping to parent bounds
|
- Enables clipping to parent bounds
|
||||||
- Off-screen rendering for effects
|
- Off-screen rendering for effects
|
||||||
|
- Technical challenges:
|
||||||
|
* Scene transition system now uses RenderTextures
|
||||||
|
* Need to preserve compatibility
|
||||||
|
* Performance implications for nested rendering
|
||||||
|
|
||||||
2. #8 - Viewport-based rendering
|
2. #8 - Viewport-based rendering
|
||||||
- RenderTexture matches viewport
|
- RenderTexture matches viewport
|
||||||
- Proper scaling/letterboxing
|
- Proper scaling/letterboxing
|
||||||
|
- Coordinate system transformations
|
||||||
|
|
||||||
3. #50 - Grid background colors
|
3. #50 - Grid background colors [QUICK WIN]
|
||||||
grid.background_color = mcrfpy.Color(50, 50, 50)
|
grid.background_color = mcrfpy.Color(50, 50, 50)
|
||||||
|
grid.background_texture = texture # stretch/tile options
|
||||||
|
|
||||||
4. #106 - Shader support
|
4. #106 - Shader support [STRETCH GOAL]
|
||||||
sprite.shader = "glow.frag"
|
sprite.shader = mcrfpy.Shader.load("glow.frag")
|
||||||
|
frame.shader_params = {"intensity": 0.5}
|
||||||
|
|
||||||
5. #107 - Particle system
|
5. #107 - Particle system [STRETCH GOAL]
|
||||||
particles = mcrfpy.ParticleEmitter()
|
emitter = mcrfpy.ParticleEmitter()
|
||||||
|
emitter.texture = spark_texture
|
||||||
|
emitter.emission_rate = 100
|
||||||
|
emitter.lifetime = (0.5, 2.0)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Phase 6 Technical Notes**:
|
||||||
|
- RenderTexture is the foundation - everything else depends on it
|
||||||
|
- Grid backgrounds (#50) can be done quickly as a warm-up
|
||||||
|
- Shader/Particle systems might be deferred to Phase 7 or Gamma
|
||||||
|
- Must maintain performance with nested RenderTextures
|
||||||
|
- Scene transitions already use RenderTextures - good integration test
|
||||||
|
|
||||||
*Rationale*: This unlocks professional visual effects but is complex.
|
*Rationale*: This unlocks professional visual effects but is complex.
|
||||||
|
|
||||||
### Phase 7: Documentation & Distribution (1-2 weeks)
|
### Phase 7: Documentation & Distribution (1-2 weeks)
|
||||||
|
@ -286,16 +311,60 @@ Rendering Layer:
|
||||||
**Week 7-9**: Rendering revolution (or defer to gamma)
|
**Week 7-9**: Rendering revolution (or defer to gamma)
|
||||||
**Week 10**: Documentation + release prep
|
**Week 10**: Documentation + release prep
|
||||||
|
|
||||||
### 🆕 **New Issues to Create**
|
### 🆕 **New Issues to Create/Track**
|
||||||
|
|
||||||
1. **Timer Objects** - Pythonic timer management (#103)
|
1. [x] **Timer Objects** - Pythonic timer management (#103) - *Completed Phase 3*
|
||||||
2. **Event System Enhancement** - Mouse enter/leave, drag, right-click
|
2. [ ] **Event System Enhancement** - Mouse enter/leave, drag, right-click
|
||||||
3. **Resource Manager** - Centralized asset loading
|
3. [ ] **Resource Manager** - Centralized asset loading
|
||||||
4. **Serialization System** - Save/load game state
|
4. [ ] **Serialization System** - Save/load game state
|
||||||
5. **Scene Transitions** - Fade, slide, custom effects (#105)
|
5. [x] **Scene Transitions** - Fade, slide, custom effects (#105) - *Completed Phase 5*
|
||||||
6. **Profiling Tools** - Performance metrics (#104)
|
6. [x] **Profiling Tools** - Performance metrics (#104) - *Completed Phase 4*
|
||||||
7. **Particle System** - Visual effects framework (#107)
|
7. [ ] **Particle System** - Visual effects framework (#107)
|
||||||
8. **Shader Support** - Custom rendering effects (#106)
|
8. [ ] **Shader Support** - Custom rendering effects (#106)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Phase 6 Implementation Strategy
|
||||||
|
|
||||||
|
### RenderTexture Overhaul (#6) - Technical Approach
|
||||||
|
|
||||||
|
**Current State**:
|
||||||
|
- UIGrid already uses RenderTexture for entity rendering
|
||||||
|
- Scene transitions use RenderTextures for smooth animations
|
||||||
|
- Direct rendering to window for Frame, Caption, Sprite
|
||||||
|
|
||||||
|
**Implementation Plan**:
|
||||||
|
1. **Base Infrastructure**:
|
||||||
|
- Add `sf::RenderTexture* target` to UIDrawable base
|
||||||
|
- Modify `render()` to check if target exists
|
||||||
|
- If target: render to texture, then draw texture to parent
|
||||||
|
- If no target: render directly (backward compatible)
|
||||||
|
|
||||||
|
2. **Clipping Support**:
|
||||||
|
- Frame enforces bounds on children via RenderTexture
|
||||||
|
- Children outside bounds are automatically clipped
|
||||||
|
- Nested frames create render texture hierarchy
|
||||||
|
|
||||||
|
3. **Performance Optimization**:
|
||||||
|
- Lazy RenderTexture creation (only when needed)
|
||||||
|
- Dirty flag system (only re-render when changed)
|
||||||
|
- Texture pooling for commonly used sizes
|
||||||
|
|
||||||
|
4. **Integration Points**:
|
||||||
|
- Scene transitions already working with RenderTextures
|
||||||
|
- UIGrid can be reference implementation
|
||||||
|
- Test with deeply nested UI structures
|
||||||
|
|
||||||
|
**Quick Wins Before Core Work**:
|
||||||
|
1. **Grid Background (#50)** - 30 min implementation
|
||||||
|
- Add `background_color` and `background_texture` properties
|
||||||
|
- Render before entities in UIGrid::render()
|
||||||
|
- Good warm-up before tackling RenderTexture
|
||||||
|
|
||||||
|
2. **Research Tasks**:
|
||||||
|
- Study UIGrid's current RenderTexture usage
|
||||||
|
- Profile scene transition performance
|
||||||
|
- Identify potential texture size limits
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -341,7 +410,7 @@ Rendering Layer:
|
||||||
- [ ] **#70** - PyPI wheel distribution - *Extensive Overhaul*
|
- [ ] **#70** - PyPI wheel distribution - *Extensive Overhaul*
|
||||||
- [~] **#32** - Executable behave like `python` command - *Extensive Overhaul* *(90% Complete: -h, -V, -c, -m, -i, script execution, sys.argv, --exec all implemented. Only stdin (-) support missing)*
|
- [~] **#32** - Executable behave like `python` command - *Extensive Overhaul* *(90% Complete: -h, -V, -c, -m, -i, script execution, sys.argv, --exec all implemented. Only stdin (-) support missing)*
|
||||||
- [ ] **#35** - TCOD as built-in module - *Extensive Overhaul*
|
- [ ] **#35** - TCOD as built-in module - *Extensive Overhaul*
|
||||||
- [ ] **#14** - Expose SFML as built-in module - *Extensive Overhaul*
|
- [~] **#14** - Expose SFML as built-in module - *Research Complete, Implementation Pending*
|
||||||
- [ ] **#46** - Subinterpreter threading tests - *Multiple Integrations*
|
- [ ] **#46** - Subinterpreter threading tests - *Multiple Integrations*
|
||||||
|
|
||||||
#### UI/Rendering System (12 issues)
|
#### UI/Rendering System (12 issues)
|
||||||
|
@ -366,11 +435,11 @@ Rendering Layer:
|
||||||
- [x] **#12** - GridPoint/GridPointState forbid direct init - *Isolated Fix*
|
- [x] **#12** - GridPoint/GridPointState forbid direct init - *Isolated Fix*
|
||||||
|
|
||||||
#### Scene/Window Management (5 issues)
|
#### Scene/Window Management (5 issues)
|
||||||
- [ ] **#61** - Scene object encapsulating key callbacks - *Extensive Overhaul*
|
- [x] **#61** - Scene object encapsulating key callbacks - *Completed Phase 5*
|
||||||
- [ ] **#34** - Window object for resolution/scaling - *Extensive Overhaul*
|
- [x] **#34** - Window object for resolution/scaling - *Completed Phase 5*
|
||||||
- [ ] **#62** - Multiple windows support - *Extensive Overhaul*
|
- [ ] **#62** - Multiple windows support - *Extensive Overhaul*
|
||||||
- [ ] **#49** - Window resolution & viewport controls - *Multiple Integrations*
|
- [ ] **#49** - Window resolution & viewport controls - *Multiple Integrations*
|
||||||
- [ ] **#1** - Scene resize event handling - *Isolated Fix*
|
- [x] **#1** - Scene resize event handling - *Completed Phase 5*
|
||||||
|
|
||||||
### 🔧 Quality of Life Features
|
### 🔧 Quality of Life Features
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue