Files
BlockSeasons/docs/superpowers/specs/2026-06-13-phase6-design.md
T
airkjw 84a6749b5e docs: Phase 6 design spec (icon + l10n finalize + juice + store assets)
App icon = clean 2x2 glossy block mark (vector, no AI image). l10n EN/KO
finalize + KO overflow pass. Light juice: sound/haptics toggle, themed
settings, button press feedback, screen transitions. Store feature graphic +
EN/KO screenshots. Procedural visuals mean no raster background assets needed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 15:06:39 +09:00

5.3 KiB
Raw Blame History

Phase 6 — Localization Finalize + Icon + Juice + Store Assets (Design)

Date: 2026-06-13 Status: Approved (owner approved design 2026-06-13)

Context

Phases 05 are complete (gameplay, seasons, endless, commercial polish, remote content, Firebase analytics, AdMob + IAP). Phase 6 is the pre-release polish round. The master plan assumed AI-generated background/tilesheet images, but Phase 3.5 implemented all in-game visuals procedurally (CustomPainter glossy tiles, painted season backgrounds). So image assets are NOT needed for gameplay; the only image deliverables are the app icon and store graphics, both of which are produced as vectors in the game's existing visual language — no external AI image generation required.

Owner is a non-developer; Claude produces all code and all vector art.

Visual identity (established, reused here)

  • Deep navy background gradient #101736 → #192555 → #2C3168 (season-1 palette).
  • Glossy rounded blocks in four brand colors: pink #FF7EB3, yellow #FFD166, cyan #6FCDF5, green #7EDB9C (each rendered light→base→dark vertical gradient + a soft white highlight ellipse near the top — same look as the in-game paintGlossyTile).

Workstreams

1. App icon (DECIDED: "Clean 2×2 block mark")

  • Composition: rounded-square, deep-navy background, a centered 2×2 grid of the four glossy brand-color blocks (pink top-left, yellow top-right, cyan bottom-left, green bottom-right). No cherry-blossom accent (icon must be a permanent, season-independent brand asset). Mirrors the existing in-app _logoMark.
  • Blocks kept within the central safe zone so Android's circular/rounded mask never clips them.
  • Deliverables:
    • A master SVG committed to the repo (source of truth).
    • A 1024×1024 PNG, opaque (no alpha) for the iOS App Store.
    • Android adaptive icon: foreground = the 2×2 blocks (transparent surround), background = the navy gradient (flat or gradient drawable).
    • All platform sizes generated via the flutter_launcher_icons package (config in pubspec.yaml / flutter_launcher_icons.yaml), replacing the default Flutter icon on both platforms.
  • Tooling: rasterize SVG→PNG with a deterministic, scriptable converter (rsvg-convert, or a tiny Dart/image script, or flutter_svg render). The conversion command is checked in so the icon can be regenerated.

2. Localization finalize (EN + KO)

  • Audit every user-facing screen for hardcoded (non-l10n) strings; move any to ARB. Screens to sweep: splash, season title, home, season map, game (HUD + result overlays), settings, tutorial, snackbars.
  • Verify EN copy is store-quality and KO copy reads natively (no machine-y phrasing).
  • KO integrity pass: run the app under the ko locale on the simulator and confirm no text overflow/truncation/clipping on any screen (Korean strings are often longer/shorter than English — buttons, chips, result cards, settings rows). Fix overflows (wrap, ellipsis, sizing) where found.
  • Add any new keys introduced by workstream 3 (sound/haptics toggle labels).

3. Juice / polish pass (light, on top of Phase 3.5; BGM stays on hold)

  • Sound on/off setting (real gap — commercial games need it): a single toggle in Settings that enables/disables SFX, persisted in SaveRepository (additive flag, saveVersion stays 1) and applied through AudioService. The same flag also gates gameplay haptics (no separate haptics toggle — one "Sound & vibration" control keeps Settings simple).
  • Settings screen theming: the just-added Settings screen is a plain ListView; give it the game's look (transparent scaffold over SeasonBackground, themed text/cards) so it matches the rest of the app.
  • Button press feedback: subtle scale-on-press for the primary buttons (home Adventure/Classic, map nodes) for a more tactile "game" feel.
  • Screen transitions: a gentle shared fade(-through) transition for home → map → game navigation instead of the default platform slide.

4. Store assets

  • Feature graphic (Play, 1024×500): navy + glossy blocks + "Block Seasons" wordmark + a short tagline, in the icon's visual language. Produced as vector → PNG and committed under docs/store/.
  • Screenshots: captured from the running app on the simulator — home, season map, gameplay (mid-combo), stage win (stars), endless game-over — in both EN and KO. Stored under docs/store/screenshots/<locale>/.
  • Exact per-store framing/sizes (iOS 6.7"/6.5", Play phone) are finalized at submission time in Phase 7; Phase 6 captures the raw, clean source shots.

Out of scope (explicit)

  • BGM / music (on hold by prior decision).
  • AI-generated raster backgrounds/tilesheets (visuals are procedural).
  • Real AdMob unit IDs and store IAP product creation (owner prerequisites, tracked for the Phase 5 finalize step between Phase 6 and Phase 7).
  • Final per-store screenshot framing (Phase 7).

Success criteria

  • Real app icon shows on both iOS and Android (no default Flutter icon).
  • KO full play-through has zero text overflow/clipping; no hardcoded strings.
  • Sound toggle works and persists across relaunch.
  • Feature graphic + EN/KO screenshot set committed under docs/store/.
  • flutter analyze clean; full test suite green (≥169, plus any new tests for the sound-setting persistence).