Unity implementation of a level-based blast puzzle with deterministic core gameplay rules and scene-driven presentation.
- Main menu flow with persisted level progress and finished-state handling.
- Level scene flow for taps, moves, win/fail transitions, and objective tracking.
- Deterministic board systems for cube groups, rocket chains/combos, obstacle damage, and gravity refill.
- Presentation layer for board rendering, popup theming, and gameplay VFX.
- Unity Editor: 6000.0.59f2
- Language: C# (.NET Standard 2.1 assemblies)
- UI: Unity UI + TextMeshPro
- Tests: NUnit EditMode tests
Layering follows docs/ARCHITECTURE.md:
- Core: deterministic gameplay domain logic, no scene dependencies.
- Infrastructure: parsing and persistence adapters.
- Presentation: scene controllers and rendering/VFX.
- Editor: Unity editor tooling.
- MainScene level button displays current level or Finished after final completion.
- Local persistence for last played level via PlayerPrefs.
- Editor tool to set last played level.
- Level loading from JSON level definitions.
- Group blast and rocket creation logic.
- Rocket chain and adjacent-rocket combo behavior with border-safe traversal.
- Obstacle rules for Box, Stone, Vase (including damaged vase state).
- Gravity/refill after board resolution.
- Win and fail popup flows with configurable visual settings.
- Win celebration and vase shatter VFX hooks in presentation.
- Assets/Scripts/Core: gameplay domain logic.
- Assets/Scripts/Infrastructure: persistence and parser adapters.
- Assets/Scripts/Presentation: scene flow and board rendering.
- Assets/Scripts/Editor: editor-only tools and custom inspectors.
- Assets/Tests/EditMode: NUnit EditMode test suite.
- Assets/Levels: level JSON data.
From repository root:
dotnet build DreamGames_BlastCase.slnOptional Unity test execution can be run from the Unity Test Runner (EditMode).
- MainScene:
- Level button text reflects persisted progress.
- Finished state does not attempt to load a non-existent level.
- LevelScene:
- Win/fail transitions behave correctly.
- Rocket paths clear expected cells and handle borders.
- Adjacent rocket combo produces 3x3 cross-lane behavior.
- Obstacle interactions match rule definitions.
- VFX do not block board resolution.
- Persistence:
- Last played level survives editor restart.
- Editor progress setter updates runtime flow.
- Keep .meta files versioned to preserve stable GUID references.
- Ignore Unity cache folders (Library, Temp, Logs, UserSettings).
- Use small, reviewer-focused commits.