mirror of
https://github.com/project-dorado/dorado-hd.git
synced 2026-10-11 21:10:01 +00:00
Phase 1 completion: every official package now has a synthesized spec with screens/flow, rules/scoring/AI, controls, content inventory, implementation plan and an Assembly!Type.Method citation log. 62 specs / ~9,000 lines; documentation-first gate is closed. Notable corpus findings recorded in the specs: - color-spill is blocked upstream: its marketplace package shares a GUID with Reversi, so the archive payload is Reversi.exe (register notes + spec gap). - W2 AI tiers, W3 score/simulation constants, W6 30 Hz deterministic simulation and content inventories are now pinned for implementation. No Microsoft content is committed; analysis only.
7.1 KiB
7.1 KiB
SuperNova
- Official package:
Supernova.exe(SuperNova) - Corpus:
supernova(external, untracked) - Wave: W3 · Category: games
- Status:
todo· Complexity: TBD - Dorado-HD id: —
Synthesized from the decompiled reference. No Microsoft code, strings, or assets are copied; behavior is re-derived and all content is re-authored.
1. Device behavior (mined)
| Assembly | Types | Methods | Source lines |
|---|---|---|---|
Supernova.exe |
21 | 109 | 3,304 |
Microsoft.Xna.Zune.dll |
dep | 829 | 15,852 |
ZuneCoreLib.dll |
dep | 308 | 6,420 |
ZuneGamesLib.dll |
dep | 170 | 3,669 |
Portrait 272x480. A one-touch chain-reaction game: a pool of drifting coloured
star dots bounces around the playfield; one tap anywhere spawns a white
explosion dot, and every star it touches explodes and passes the chain on. A
52 px strip at the bottom is reserved for HUD/time. Top-10 high scores persist
through the Settings store.
2. Screens & navigation
- Main Menu:
Play, aModetoggle cycling Normal → Hard → Endless,Sounds,About, and a slide-outHigh Scorespanel (10 entries). Mode is persisted in settings; the game boots in Normal. - Level flow: every level opens with a Level Start overlay showing the
goal (
needed of total Stars); play begins after it is dismissed. A Level Complete overlay shows the level and its score with aContinuebutton; a Retry overlay appears when the goal is missed or the timer expires. - Game HUD: star counter
current, goalneeded/total, a star on/off indicator, pause button, and a large shrinkingtimeLeftnumeral during Normal/Hard. - Pause:
Resume/quit plus an exit-confirm page; a settings/volume string is shown on the menu. App deactivation pushes pause automatically. - About page scrolls in beside the menu; transitions use the shared slide-screen machinery.
3. Rules, scoring & progression
- Pool: 60 dots pre-built from 19 star colours (
star_blue,star_cobalt, …star_yellow); one extra white (star_white) "spawner" dot. On level start,totalDotsdots spawn at random positions (x anywhere, y in [0, 480−52)) with a random direction and speed50 + rand·50(Hard:50 + rand·25, then ×0.85) px/s. Spawn uses a 0.5 s grow interpolation and then entersMoving. - One tap per level:
HandleInputis accepted only whilemoveAvailable; a tap spawns the white dot already exploded at the touch point (plus a white screen flash and the initial-explosion cue) and disables further input. - Chain: every moving dot that enters an exploding dot's radius explodes
too; the chain number increments per generation and the score awarded for a
dot is
chainNumber · value, wherevalue= 5 (Hard: 10, and the grow/stay/shrink timings are ×0.75). Explosion animation grows to 5× the 10 px base over 0.5 s, holds 0.75 s, then shrinks over 0.5 s; the floating score value is printed at the dot. - Motion: moving dots bounce off all four edges; the bottom limit is
480 − 10 − 52 = 418px. After the chain ends (no explosion left and no pending input) all remaining active dots shrink away and the level resolves. - Levels: Normal and Hard each have 12 fixed levels given as
(total dots, needed to pass):
(60,50) (55,48) (50,43) (45,38) (40,30) (35,22) (30,17) (25,13) (20,9) (15,6) (10,4) (5,2); Hard differs only at level 12 →(5,3). Clearing ≥ needed completes the level; otherwise Retry. Normal/Hard end after level 12; the separate Endless mode runs 60 dots with 0 needed and loops (level counter capped at 99). - Timer: 30 s per level on Normal, 15 s on Hard, no timer in Endless. Reaching 0 fails the level (units tick down audibly).
- Score:
levelScore(chain sum) is multiplied by the level's score multiplier and added to the running total. Multipliers by level:1,1,1,2,2,4,4,8,12,30,60,150; Endless always ×1. A new best score inserts into the top-10 list and shows aNew High Scorebadge.
4. Controls
- Tap anywhere below the top HUD strip (the pause button's bounds are
excluded) to fire the single shot;
HandleTouchesEndeduses the first touch. - No drag, tilt or multitouch; menus are tap targets, the high-score panel slides via the menu button.
- App inactive → pause; exit-confirm handles back-style quits.
5. Content inventory (must be re-authored)
68 files: 52 PNG + 14 XNB.
Images/(54):star_*colour set (19 colours + white), 12 level backgrounds (bg_lv01–bg_lv12),bg_main,bg_about, UI chrome (buttons, panels, overlays), explosion/particle textures.- Audio (12): button_click, countdown, explosion_initial, explosion_regular_1/3/5, fail, intro_theme_vo, level_win, level_win_bad, mechanical_popup, screen_whoosh.
- Fonts XML and
en.xmlstrings (Normal-Mode,Hard-Mode,Endless-Mode,Continue,Mode, scores). - Replace all star/background art with token-coloured generated shapes.
6. Implementation plan
- Engine:
ui/apps/games/Supernova.kt—object SupernovaEnginewith immutableNovaState(mode, level, dots, exploding, score, timeLeft)and a deterministicstep(dt);LevelTableconstant for the 12 (total, needed) pairs and the multiplier table;tap(x, y)returns a new state with the spawner inserted. - Screen:
SupernovaScreeninDetailScaffold("supernova"), Canvas circles with per-colour tokens, explosion radius animation, floating score text, HUD star/timer, mode toggle, level-start/complete/retry overlays and high-score panel. - Persistence/SFX: mode + high scores via
graph.appState/graph.games(graph.games.record("supernova", totalScore, "L$level"));SfxBankfor countdown, initial/regular explosions (rotating variants), win/fail. - Tests (
app/src/test/java/com/heretek/dorado_hd/SupernovaEngineTest.kt): level table and Hard level-12 exception; one-tap lock; chain propagation andchainNumber·valuescoring; Hard ×2 value / ×0.75 timings / ×0.85 speed; edge bounces with the 418 px bottom limit; timeout 30/15 s; multiplier table; Endless loops past level 12; high-score top-10 insert.
7. Citation log
Supernova!DotManager..ctor— 60-dot pool, 19 colours, white spawner.Supernova!DotManager.ResetLevel— Normal/Hard 12-level tables, Endless CreateLevel(60,0), invalid-level guard.Supernova!DotManager.StartLevel— spawn spread, speed formula, Hard modifier, 0.5 s grow.Supernova!DotManager.HandleInput— moveAvailable lock, white flash, spawn.Supernova!DotManager.CheckCollisions/Update— chain scoring, needed check, complete/retry callbacks.Supernova!Dot— 10 px base, ×5 explosion, 0.5/0.75/0.5 timings, edge bounce,MaxHeight = 480 − 10 − 52, score text.Supernova!LevelScreen.ScoreMultiplier— multiplier table.Supernova!LevelScreen.OnUncovered— 30 s / 15 s timers, Endless 0.Supernova!LevelScreen.Update/HandleTouchesEnded— timer fail, HUD exclusion, tap routing.Supernova!HighScores— top-10 insert and persistence.Supernova!MainMenuScreen— Play/Mode/Sounds/About/high-score panel,GetModeString.