This roadmap outlines the prioritized implementation of features for the Bob's Game Editor (Legacy Swing Editor), based on research from industry-standard tools like Aseprite, Tiled, and Pyxel Edit.
These features are essential for any usable editor and are currently missing or underdeveloped.
-
Layer System [COMPLETED]
- Description: Move from a single flat image to a multi-layer stack.
- Status: Implemented. Includes
List<Layer>model, Composite Rendering, andSELayerPanelUI. - Note: Layers are flattened to a single image on export for game engine compatibility.
-
Project Persistence [COMPLETED]
- Description: Save editor state (layers, visibility, opacity) to a dedicated project file (
.sprproj/ JSON). - Status: Implemented. Uses
SpriteProjectclass with GZIP+Base64 encoding for pixel data. - Why: Enables non-destructive editing and resuming work with layers intact.
- Description: Save editor state (layers, visibility, opacity) to a dedicated project file (
-
Universal Brush System [COMPLETED]
- Description: Abstract the drawing logic so "Pencil", "Eraser", and "Pattern Stamp" share a common interface.
- Status: Implemented.
Brushinterface created withPixelBrush,EraserBrush,FillBrush. AddedSEToolsPanel. - Requirements:
Brushinterface,PixelBrush,ShapeBrush,PatternBrush. Support for "Custom Brushes" (using a selection as a brush).
-
File Format Support (Interoperability) [COMPLETED]
- Description: Interoperability with standard tools.
- Status: Implemented
AsepriteImporterandAsepriteParser. Can import.ase/.asepritefiles (Indexed Mode). - Goal: Import
.ase/.aseprite(Aseprite) files. This allows users to create art in Aseprite and bring it into the engine.
Tools that speed up the creation process.
-
Selection Tools [COMPLETED]
- Description: Robust selection capabilities beyond rectangles.
- Status: Implemented
MagicWandBrush,PolygonLassoBrush, and mask-basedSelectionArea. - Goal: Magic Wand (Color Select), Polygon Lasso, "Select All of Color".
-
Symmetry / Mirror Drawing [COMPLETED]
- Description: Real-time mirroring of drawing operations on X and Y axes.
- Status: Implemented Y-Axis symmetry (Quad symmetry supported). Updated
SECanvasrendering andsetPixellogic. - Why: Standard feature in Pyxel Edit, Aseprite, Tiled.
-
Onion Skinning [COMPLETED]
- Description: See previous/next frames faintly while animating.
- Status: Implemented via
SECanvas.repaintBufferImagerendering prev/next frames with alpha blending. - Requirements: Animation timeline integration.
Differentiation features that provide unique value.
-
Tile Instancing (Pyxel Edit Style) [COMPLETED]
- Description: Editing a tile on the map updates the source tile and all other instances of it instantly.
- Status: Implemented
tileEditModeinMapCanvas. Allows drawing pixel-level edits directly on the map. - Why: Huge time saver for tilemap creation.
-
Auto-tiling (Wang/Blob) [COMPLETED]
- Description: Automatically selecting the correct tile variation based on neighbors (corners, edges).
- Status: Implemented 4-bit (16-tile) Edge Auto-tiling logic in
AutoTilerand integrated intoMapCanvasasautoTileMode.
-
Reference Layers [COMPLETED]
- Description: Layers that hold reference images but are excluded from the final export/game data.
- Status: Implemented
isReferenceboolean inSprite.Layer. Updated export methods (getAsIntArray,outputPNG, etc.) to skip these layers. Added UI toggle inSELayerPanel.
All major features from the roadmap have been implemented.
- Refine & Polish:
- Ensure all new features (Timeline, Animation List, History) work smoothly together.
- Verify Undo logic with the new
UndoManagerfeatures.
- Maintenance:
- Keep submodules updated.
- Monitor for regressions in legacy game functionality.