No level editor or custom levels #23

Closed
opened 2026-05-10 16:07:17 +00:00 by Mark · 4 comments
Owner

Description

Only predefined levels. No user-created content.

Impact

Limited replayability.

Suggested Fix

Add a level editor with save/load.

## Description Only predefined levels. No user-created content. ## Impact Limited replayability. ## Suggested Fix Add a level editor with save/load.
Author
Owner

Feature Triage Assessment

Scope: large
Risk: low
Spec Alignment: partial
Summary: Wants a visual level editor allowing users to create, save, load, and play custom marble maze tracks to improve replayability.
Recommendation: Build as an isolated editor route (/editor) with a canvas-based grid and floating palette for placing walls, obstacles, collectibles, and spawn/finish points. Serialize to the existing LevelData interface so the engine consumes them unchanged. Persist in localStorage with JSON export/import for sharing. Add a 'Custom' tab to the track picker when user levels exist.
Rationale: Large: LevelData has 18 fields spanning 9 obstacle types, 5 power-up types, 3 collectible types, themes, hazards, ice tiles, boost pads, and checkpoints — each needs editor tooling, plus serialization, persistence, and a custom level browser. Risk is low because it's pure additive — custom levels use the existing LevelData interface, no game engine paths are touched. Spec alignment is partial since the plan.md mentions a 'level design system (tile-based or procedural)' in Stage 4 but targeted at the developer, not end-user custom content. The editor itself would be ~10-20 new/modified files.

Labeled blocked:needs-decision — unblock on Forgejo to dispatch to the fixer pipeline.

## Feature Triage Assessment **Scope:** large **Risk:** low **Spec Alignment:** partial **Summary:** Wants a visual level editor allowing users to create, save, load, and play custom marble maze tracks to improve replayability. **Recommendation:** Build as an isolated editor route (/editor) with a canvas-based grid and floating palette for placing walls, obstacles, collectibles, and spawn/finish points. Serialize to the existing LevelData interface so the engine consumes them unchanged. Persist in localStorage with JSON export/import for sharing. Add a 'Custom' tab to the track picker when user levels exist. **Rationale:** Large: LevelData has 18 fields spanning 9 obstacle types, 5 power-up types, 3 collectible types, themes, hazards, ice tiles, boost pads, and checkpoints — each needs editor tooling, plus serialization, persistence, and a custom level browser. Risk is low because it's pure additive — custom levels use the existing LevelData interface, no game engine paths are touched. Spec alignment is partial since the plan.md mentions a 'level design system (tile-based or procedural)' in Stage 4 but targeted at the developer, not end-user custom content. The editor itself would be ~10-20 new/modified files. Labeled `blocked:needs-decision` — unblock on Forgejo to dispatch to the fixer pipeline.
Author
Owner

This is broad — filed as #24 (Break down #23 into phased implementation) with 5 phases covering editor route, grid interaction, serialization, level browser, and advanced features. The decomposition issue is auto-approved for the fixer pipeline.

This is broad — filed as #24 (Break down #23 into phased implementation) with 5 phases covering editor route, grid interaction, serialization, level browser, and advanced features. The decomposition issue is auto-approved for the fixer pipeline.
Author
Owner

Decomposition filed at #30 with 5 phases: editor route, grid interaction, serialization, level browser, advanced features. This issue is addressed by the decomposition.

Decomposition filed at #30 with 5 phases: editor route, grid interaction, serialization, level browser, advanced features. This issue is addressed by the decomposition.
Author
Owner

Fixed in commit. Closing.

Fixed in commit. Closing.
Mark closed this issue 2026-05-27 07:55:57 +00:00
Sign in to join this conversation.
No description provided.