Update ROADMAP.md to remove closed issues
- Remove #72 (iterator improvements - closed) - Remove #51 (UIEntity derive from UIDrawable - closed) - Update issue counts: 64 open issues from original 78 - Update dependencies and references to reflect closed issues - Clarify that core iterators are complete, only grid points remain
This commit is contained in:
parent
68c1a016b0
commit
7ec4698653
|
@ -0,0 +1,273 @@
|
||||||
|
# McRogueFace - Development Roadmap
|
||||||
|
|
||||||
|
## Project Status: Post-7DRL 2025 "Crypt of Sokoban"
|
||||||
|
|
||||||
|
**Current State**: Successful 7DRL completion with Python/C++ game engine
|
||||||
|
**Latest Commit**: 68c1a01 - Implement --exec flag and PyAutoGUI-compatible automation API
|
||||||
|
**Branch**: interpreter_mode (actively implementing Python interpreter features)
|
||||||
|
**Open Issues**: 78 catalogued issues from Gitea instance
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 CURRENT WORK: Python Interpreter Mode & Automation API
|
||||||
|
|
||||||
|
### Branch: interpreter_mode
|
||||||
|
**Status**: Actively implementing Python interpreter emulation features
|
||||||
|
|
||||||
|
#### Completed Features:
|
||||||
|
- [x] **--exec flag implementation** - Execute multiple scripts before main program
|
||||||
|
- Scripts execute in order and share Python interpreter state
|
||||||
|
- Proper sys.argv handling for main script execution
|
||||||
|
- Compatible with -i (interactive), -c (command), and -m (module) modes
|
||||||
|
|
||||||
|
- [x] **PyAutoGUI-compatible Automation API** - Full automation testing capability
|
||||||
|
- Screenshot capture: `automation.screenshot(filename)`
|
||||||
|
- Mouse control: `click()`, `moveTo()`, `dragTo()`, `scroll()`
|
||||||
|
- Keyboard input: `typewrite()`, `hotkey()`, `keyDown()`, `keyUp()`
|
||||||
|
- Event injection into SFML render loop
|
||||||
|
|
||||||
|
#### Architectural Decisions:
|
||||||
|
1. **Single-threaded design maintained** - All Python runs in main thread between frames
|
||||||
|
2. **Honor system for scripts** - Scripts must return control to C++ render loop
|
||||||
|
3. **Shared Python state** - All --exec scripts share the same interpreter
|
||||||
|
4. **No threading complexity** - Chose simplicity over parallelism (see THREADING_FOOTGUNS.md)
|
||||||
|
|
||||||
|
#### Key Files Created:
|
||||||
|
- `src/McRFPy_Automation.h/cpp` - Complete automation API implementation
|
||||||
|
- `EXEC_FLAG_DOCUMENTATION.md` - Usage guide and examples
|
||||||
|
- `AUTOMATION_ARCHITECTURE_REPORT.md` - Design analysis and alternatives
|
||||||
|
- Multiple example scripts demonstrating automation patterns
|
||||||
|
|
||||||
|
#### Partially Addresses:
|
||||||
|
- **#32** - Executable behave like `python` command (--exec flag is a step toward this)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚧 IMMEDIATE PRIORITY: Critical Bugfixes & Iterator Completion
|
||||||
|
|
||||||
|
### 🔥 Critical Bugfixes (Complete First)
|
||||||
|
- [ ] **#77** - Fix error message copy/paste bug (`x value out of range (0, Grid.grid_y)`) - *Isolated Fix*
|
||||||
|
- [ ] **#74** - Add missing `Grid.grid_y` property referenced in error messages - *Isolated Fix*
|
||||||
|
- [ ] **#78** - Middle Mouse Click sends "C" keyboard event to scene event handler - *Unknown Scope*
|
||||||
|
- [ ] **#37** - Fix Windows build module import from "scripts" directory - *Isolated Fix*
|
||||||
|
|
||||||
|
### 🔄 Complete Iterator System
|
||||||
|
**Status**: Core iterators complete (#72 closed), Grid point iterators still pending
|
||||||
|
|
||||||
|
- [ ] **Grid Point Iterator Implementation** - Complete the remaining grid iteration work
|
||||||
|
- [ ] **#73** - Add `entity.index()` method for collection removal - *Isolated Fix*
|
||||||
|
- [ ] **#69** ⚠️ **Alpha Blocker** - Refactor all collections to use Python Sequence Protocol - *Extensive Overhaul*
|
||||||
|
|
||||||
|
**Dependencies**: Grid point iterators → #73 entity.index() → #69 Sequence Protocol overhaul
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 ALPHA 0.1 RELEASE BLOCKERS (6 Issues)
|
||||||
|
|
||||||
|
### ⚠️ Must Complete Before Alpha Release
|
||||||
|
- [ ] **#69** - Collections use Python Sequence Protocol - *Extensive Overhaul*
|
||||||
|
- [ ] **#63** - Z-order rendering for UIDrawables - *Multiple Integrations*
|
||||||
|
- [ ] **#59** - Animation system for arbitrary UIDrawable fields - *Extensive Overhaul*
|
||||||
|
- [ ] **#6** - RenderTexture concept for all UIDrawables - *Extensive Overhaul*
|
||||||
|
- [ ] **#47** - New README.md for Alpha release - *Isolated Fix*
|
||||||
|
- [ ] **#3** - Remove deprecated `McRFPy_API::player_input` - *Isolated Fix*
|
||||||
|
- [ ] **#2** - Review `registerPyAction` necessity - *Isolated Fix*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🗂 ISSUE TRIAGE BY SYSTEM (78 Total Issues)
|
||||||
|
|
||||||
|
### 🎮 Core Engine Systems
|
||||||
|
|
||||||
|
#### Iterator/Collection System (2 issues)
|
||||||
|
- [ ] **#73** - Entity index() method for removal - *Isolated Fix*
|
||||||
|
- [ ] **#69** ⚠️ **Alpha Blocker** - Sequence Protocol refactor - *Extensive Overhaul*
|
||||||
|
|
||||||
|
#### Python/C++ Integration (7 issues)
|
||||||
|
- [ ] **#76** - UIEntity derived type preservation in collections - *Multiple Integrations*
|
||||||
|
- [ ] **#71** - Drawable base class hierarchy - *Extensive Overhaul*
|
||||||
|
- [ ] **#70** - PyPI wheel distribution - *Extensive Overhaul*
|
||||||
|
- [~] **#32** - Executable behave like `python` command - *Extensive Overhaul* *(In Progress: --exec flag implemented)*
|
||||||
|
- [ ] **#35** - TCOD as built-in module - *Extensive Overhaul*
|
||||||
|
- [ ] **#14** - Expose SFML as built-in module - *Extensive Overhaul*
|
||||||
|
- [ ] **#46** - Subinterpreter threading tests - *Multiple Integrations*
|
||||||
|
|
||||||
|
#### UI/Rendering System (12 issues)
|
||||||
|
- [ ] **#63** ⚠️ **Alpha Blocker** - Z-order for UIDrawables - *Multiple Integrations*
|
||||||
|
- [ ] **#59** ⚠️ **Alpha Blocker** - Animation system - *Extensive Overhaul*
|
||||||
|
- [ ] **#6** ⚠️ **Alpha Blocker** - RenderTexture for all UIDrawables - *Extensive Overhaul*
|
||||||
|
- [ ] **#10** - UIDrawable visibility/AABB system - *Extensive Overhaul*
|
||||||
|
- [ ] **#8** - UIGrid RenderTexture viewport sizing - *Multiple Integrations*
|
||||||
|
- [ ] **#9** - UIGrid RenderTexture resize handling - *Multiple Integrations*
|
||||||
|
- [ ] **#52** - UIGrid skip out-of-bounds entities - *Isolated Fix*
|
||||||
|
- [ ] **#50** - UIGrid background color field - *Isolated Fix*
|
||||||
|
- [ ] **#19** - Sprite get/set texture methods - *Multiple Integrations*
|
||||||
|
- [ ] **#17** - Move UISprite position into sf::Sprite - *Isolated Fix*
|
||||||
|
- [ ] **#33** - Sprite index validation against texture range - *Isolated Fix*
|
||||||
|
|
||||||
|
#### Grid/Entity System (6 issues)
|
||||||
|
- [ ] **#30** - Entity/Grid association management (.die() method) - *Extensive Overhaul*
|
||||||
|
- [ ] **#16** - Grid strict mode for entity knowledge/visibility - *Extensive Overhaul*
|
||||||
|
- [ ] **#67** - Grid stitching for infinite worlds - *Extensive Overhaul*
|
||||||
|
- [ ] **#15** - UIGridPointState cleanup and standardization - *Multiple Integrations*
|
||||||
|
- [ ] **#20** - UIGrid get_grid_size standardization - *Multiple Integrations*
|
||||||
|
- [ ] **#12** - GridPoint/GridPointState forbid direct init - *Isolated Fix*
|
||||||
|
|
||||||
|
#### Scene/Window Management (5 issues)
|
||||||
|
- [ ] **#61** - Scene object encapsulating key callbacks - *Extensive Overhaul*
|
||||||
|
- [ ] **#34** - Window object for resolution/scaling - *Extensive Overhaul*
|
||||||
|
- [ ] **#62** - Multiple windows support - *Extensive Overhaul*
|
||||||
|
- [ ] **#49** - Window resolution & viewport controls - *Multiple Integrations*
|
||||||
|
- [ ] **#1** - Scene resize event handling - *Isolated Fix*
|
||||||
|
|
||||||
|
### 🔧 Quality of Life Features
|
||||||
|
|
||||||
|
#### UI Enhancement Features (8 issues)
|
||||||
|
- [ ] **#39** - Name field on UIDrawables - *Multiple Integrations*
|
||||||
|
- [ ] **#40** - `only_one` arg for unique naming - *Multiple Integrations*
|
||||||
|
- [ ] **#41** - `.find(name)` method for collections - *Multiple Integrations*
|
||||||
|
- [ ] **#38** - `children` arg for Frame initialization - *Isolated Fix*
|
||||||
|
- [ ] **#42** - Click callback arg for UIDrawable init - *Isolated Fix*
|
||||||
|
- [ ] **#27** - UIEntityCollection.extend() method - *Isolated Fix*
|
||||||
|
- [ ] **#28** - UICollectionIter for scene ui iteration - *Isolated Fix*
|
||||||
|
- [ ] **#26** - UIEntityCollectionIter implementation - *Isolated Fix*
|
||||||
|
|
||||||
|
### 🧹 Refactoring & Cleanup
|
||||||
|
|
||||||
|
#### Code Cleanup (7 issues)
|
||||||
|
- [ ] **#3** ⚠️ **Alpha Blocker** - Remove `McRFPy_API::player_input` - *Isolated Fix*
|
||||||
|
- [ ] **#2** ⚠️ **Alpha Blocker** - Review `registerPyAction` necessity - *Isolated Fix*
|
||||||
|
- [ ] **#7** - Remove unsafe no-argument constructors - *Multiple Integrations*
|
||||||
|
- [ ] **#21** - PyUIGrid dealloc cleanup - *Isolated Fix*
|
||||||
|
- [ ] **#75** - REPL thread separation from SFML window - *Multiple Integrations*
|
||||||
|
|
||||||
|
### 📚 Demo & Documentation
|
||||||
|
|
||||||
|
#### Documentation (2 issues)
|
||||||
|
- [ ] **#47** ⚠️ **Alpha Blocker** - Alpha release README.md - *Isolated Fix*
|
||||||
|
- [ ] **#48** - Dependency compilation documentation - *Isolated Fix*
|
||||||
|
|
||||||
|
#### Demo Projects (6 issues)
|
||||||
|
- [ ] **#54** - Jupyter notebook integration demo - *Multiple Integrations*
|
||||||
|
- [ ] **#55** - Hunt the Wumpus AI demo - *Multiple Integrations*
|
||||||
|
- [ ] **#53** - Web interface input demo - *Multiple Integrations*
|
||||||
|
- [ ] **#45** - Accessibility mode demos - *Multiple Integrations*
|
||||||
|
- [ ] **#36** - Dear ImGui integration tests - *Extensive Overhaul*
|
||||||
|
- [ ] **#65** - Python Explorer scene (replaces uitest) - *Extensive Overhaul*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 RECOMMENDED TRIAGE SEQUENCE
|
||||||
|
|
||||||
|
### Phase 1: Foundation Stabilization (2-3 weeks)
|
||||||
|
```
|
||||||
|
1. Critical Bugfixes (#77, #74, #37) - Fix immediate pain points
|
||||||
|
2. Complete Grid Point Iterators - Finish commit 167636c work
|
||||||
|
3. Alpha Blockers (#3, #2, #47) - Quick cleanup for alpha readiness
|
||||||
|
4. Entity index() method (#73) - Enables better collection management
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 2: Alpha Release Preparation (4-6 weeks)
|
||||||
|
```
|
||||||
|
1. Collections Sequence Protocol (#69) - Major refactor, alpha blocker
|
||||||
|
2. Z-order rendering (#63) - Essential UI improvement, alpha blocker
|
||||||
|
3. RenderTexture overhaul (#6) - Core rendering improvement, alpha blocker
|
||||||
|
4. Animation system (#59) - Major feature, alpha blocker
|
||||||
|
5. Documentation (#47, #48) - Complete alpha release docs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 3: Engine Architecture (6-8 weeks)
|
||||||
|
```
|
||||||
|
1. Drawable base class (#71) - Clean up inheritance patterns
|
||||||
|
2. Entity/Grid associations (#30) - Proper lifecycle management
|
||||||
|
3. Window object (#34) - Scene/window architecture
|
||||||
|
4. UIDrawable visibility (#10) - Rendering optimization
|
||||||
|
```
|
||||||
|
|
||||||
|
### Phase 4: Advanced Features (8-12 weeks)
|
||||||
|
```
|
||||||
|
1. Grid strict mode (#16) - Entity knowledge/visibility system
|
||||||
|
2. SFML/TCOD integration (#14, #35) - Expose native libraries
|
||||||
|
3. Scene object refactor (#61) - Better input handling
|
||||||
|
4. Name-based finding (#39, #40, #41) - UI element management
|
||||||
|
5. Demo projects (#54, #55, #36) - Showcase capabilities
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ongoing/Low Priority
|
||||||
|
```
|
||||||
|
- PyPI distribution (#70) - Community access
|
||||||
|
- Multiple windows (#62) - Advanced use cases
|
||||||
|
- Grid stitching (#67) - Infinite world support
|
||||||
|
- Accessibility (#45) - Important but not blocking
|
||||||
|
- Subinterpreter tests (#46) - Performance research
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 DIFFICULTY ASSESSMENT SUMMARY
|
||||||
|
|
||||||
|
**Isolated Fixes (24 issues)**: Single file/function changes
|
||||||
|
- Bugfixes: #77, #74, #37, #78
|
||||||
|
- Simple features: #73, #52, #50, #33, #17, #38, #42, #27, #28, #26, #12, #1
|
||||||
|
- Cleanup: #3, #2, #21, #47, #48
|
||||||
|
|
||||||
|
**Multiple Integrations (28 issues)**: Cross-system changes
|
||||||
|
- UI/Rendering: #63, #8, #9, #19, #39, #40, #41
|
||||||
|
- Grid/Entity: #15, #20, #76, #46, #49, #75
|
||||||
|
- Features: #54, #55, #53, #45, #7
|
||||||
|
|
||||||
|
**Extensive Overhauls (26 issues)**: Major architectural changes
|
||||||
|
- Core Systems: #69, #59, #6, #10, #30, #16, #67, #61, #34, #62
|
||||||
|
- Integration: #71, #70, #32, #35, #14
|
||||||
|
- Advanced: #36, #65
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 STRATEGIC DIRECTION
|
||||||
|
|
||||||
|
### Engine Philosophy Maintained
|
||||||
|
- **C++ First**: Performance-critical code stays in C++
|
||||||
|
- **Python Close Behind**: Rich scripting without frame-rate impact
|
||||||
|
- **Game-Ready**: Each improvement should benefit actual game development
|
||||||
|
|
||||||
|
### Architecture Goals
|
||||||
|
1. **Clean Inheritance**: Drawable → UI components, proper type preservation
|
||||||
|
2. **Collection Consistency**: Uniform iteration, indexing, and search patterns
|
||||||
|
3. **Resource Management**: RAII everywhere, proper lifecycle handling
|
||||||
|
4. **Multi-Platform**: Windows/Linux feature parity maintained
|
||||||
|
|
||||||
|
### Success Metrics for Alpha 0.1
|
||||||
|
- [ ] All 7 Alpha Blocker issues resolved
|
||||||
|
- [ ] Grid point iteration complete and tested
|
||||||
|
- [ ] Clean build on Windows and Linux
|
||||||
|
- [ ] Documentation sufficient for external developers
|
||||||
|
- [ ] At least one compelling demo (Wumpus or Jupyter integration)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 REFERENCES & CONTEXT
|
||||||
|
|
||||||
|
**Issue Dependencies** (Key Chains):
|
||||||
|
- Iterator System: Grid points → #73 → #69 (Alpha Blocker)
|
||||||
|
- UI Hierarchy: #71 → #63 (Alpha Blocker)
|
||||||
|
- Rendering: #6 (Alpha Blocker) → #8, #9 → #10
|
||||||
|
- Entity System: #30 → #16 → #67
|
||||||
|
- Window Management: #34 → #49, #61 → #62
|
||||||
|
|
||||||
|
**Commit References**:
|
||||||
|
- 167636c: Iterator improvements (UICollection/UIEntityCollection complete)
|
||||||
|
- Recent work: 7DRL 2025 completion, RPATH updates, console improvements
|
||||||
|
|
||||||
|
**Architecture Files**:
|
||||||
|
- Iterator patterns: src/UICollection.cpp, src/UIGrid.cpp
|
||||||
|
- Python integration: src/McRFPy_API.cpp, src/PyObjectUtils.h
|
||||||
|
- Game implementation: src/scripts/ (Crypt of Sokoban complete game)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Last Updated: 2025-07-03*
|
||||||
|
*Total Open Issues: 64* (from original 78)
|
||||||
|
*Alpha Blockers: 7*
|
||||||
|
*Current Work: Python interpreter mode features (--exec flag, automation API)*
|
||||||
|
*Next Session: Continue interpreter mode or switch to critical bugfixes*
|
||||||
|
|
Loading…
Reference in New Issue