Skip to content

Dark Cosmos — App Store Launch Assets (v0.1)

Dark Cosmos — App Store Launch Assets (v0.1)

Section titled “Dark Cosmos — App Store Launch Assets (v0.1)”

Date: 2026-06-30 Status: Design — awaiting review Goal: Produce a fully polished public App Store listing for the v0.1 release across iPhone, iPad, Apple TV, and Mac. Even though this is a v0.1 / proof-of-concept, every asset is built to look like a professionally released game — a half-effort listing kills the word-of-mouth that grows it.


  • Name: Dark Cosmos. Verified free on the App Store (Apple search API: zero exact matches). Two common words → weak as a trademark, but this is a POC and the name can change later, so no formal trademark search now. The world is literally a dark neon cosmos (nebula/starfield backdrop, the Graviton’s “Singularity Collapse”, the “Event Horizon” weapon), so the name describes the game.
  • Distribution: full public App Store listing (not TestFlight-only). Chosen deliberately for maximum polish and discoverability.
  • Timeline reality: assets built today; submit tomorrow. App Review is 1–3 days, so the listing goes live on approval, not strictly on Wednesday. No way around this for a public release.
  • Device matrix (confirmed from export_presets.cfg): iOS preset targets iPhone and iPad (targeted_device_family=2); tvOS is a separate preset; macOS is a native universal app; (Web is the demo, not a store target).

v0.1 ships one mode — Dark Cosmos itself (main.V01_CRYSTALS_ONLY gates off Tutorial / Story / Survival; co-op gated by V01_LOCK_COOP; areas gated by V01_LOCK_AREAS). It is just the game now — drop the “Crystals” label entirely in player-facing copy and on the site. Every screenshot, the trailer, and all copy must depict only what the shipped build actually contains. Story mode, co-op, and explorable areas are not in it, so they appear nowhere in the assets.

Ground-truth facts (verified from data/bible.json + main.gd, 2026-06-30)

Section titled “Ground-truth facts (verified from data/bible.json + main.gd, 2026-06-30)”

The spine of the pitch — all true:

  • Two sticks. Left stick moves; right stick aims your main weapon; the rest of the arsenal auto-fires and auto-targets. (input/input_router.gd _AIM_AXES = right stick.)
  • Build a drone army. A real Drone Bay (DroneBayPanel, max_drone_slots, build_drone_loadout) where you configure and launch a loadout of fighting drones.
  • Lots of upgrades. Stat mods + transformative mods + per-weapon mods + evolutions; 4 upgrade choices per level in this ruleset (RULESET_CRYSTALS).
  • Big bosses. A 5-boss rotation: Warden, the 5-attack boss, FunZo, Graviton, The Eye.
  • A growing arsenal of 7 weapons (6 readily available + scatter unlocked via progression), each carrying an element.

Do NOT claim “14 elements” or “91 reactions.” Real numbers: 14 elements defined but only 6 wielded by weapons, ~11 seen across weapons+enemies (time/sound/nano never fielded); ~10 named reactions authored (Plasma, Superconduct, Thermal Shock, Combustion, Electrolysis, Collapse, Absolute Zero, Blight Implosion, Shatter, Paradox), the rest a generic burst. Frame reactions as a mechanic (“stack an element, hit with a different one, set off a reaction”), not a headline count.


# Deliverable Spec
1 Capture harness Dev-only Godot tooling that renders the premium (Metal) look and saves frames at every device aspect ratio + records the trailer master. Not shipped in the game.
2 Screenshots 6 scenes × 4 device families (~22–24 final images), composited through one branded neon template at exact device pixel dimensions.
3 Listing copy Name, subtitle, promotional text, keywords, full description, What’s New, plus category + age rating answers.
4 App preview trailer One master gameplay capture → 3 cuts (iPhone / iPad / Apple TV). Mac App Store takes no preview.
5 Icon Review existing 1024² icon; confirm it reads at small sizes; polish/re-cut if needed.
6 Polish extras Press one-sheet + hero feature graphic (for the site / future PR).
7 Site refocus Rebrand bullet-heaven.lumara.digitalDark Cosmos, refocus all content on the one shipped mode (drop the “Crystals” label), update legend/copy to the twin-stick / drone-army / bosses pitch, and host the privacy-policy page (a hard submission requirement — see §10).

3. Imagery source & capture pipeline (Approach A)

Section titled “3. Imagery source & capture pipeline (Approach A)”

Render the game on the Mac forced onto the RenderingDevice renderer so the full premium stack lights up — HDR bloom, gravity lens, GPU particles, hero/boss lights, chromatic aberration, shockwaves, thruster trail, colour grade, nebula (builds 82–96). The HDR/effects code keys off RenderingServer.get_rendering_device() != null, which is true for the Mobile/Forward+ renderers and false for gl_compatibility. So:

godot --path . --rendering-method mobile res://marketing/capture/capture.tscn

gives the same look the Apple TV ships, capturable at any resolution.

Harness design (marketing/capture/, dev-only, excluded from exports):

  • Boots the real Main in attract mode (the existing AutoPlayer) so the game plays itself, and uses the dev console seams (cycle-23 Remote Playtest Console: Sim.dev_spawn_custom, dev_spawn_boss, pause_spawns, dev_clear_enemies, dev_invuln, timescale) to stage each scene deterministically — spawn a dense pack, drop a boss, trigger a reaction, force a level-up/codex card.
  • Pins QualityManager at L0 (every effect on, no adaptive degrade) and hides all debug UI (F2 overlay, build label, dev pairing code).
  • Sets get_window().size to each target resolution and saves get_viewport().get_texture().get_image()marketing/raw/<scene>_<WxH>.png.
  • Determinism untouched: this is render-side only; the harness lives in marketing/, the determinism test never references it.

Fallback: if Metal-on-Mac capture misbehaves, capture stills from the gl_compatibility build (or the web demo via headless Chrome) — correct framing, flatter look. Stills only; the trailer needs the Metal path.

Target resolutions (landscape — the game is a landscape twin-stick title):

Family Screenshot size Notes
iPhone 6.9“ 2796 × 1290 Apple auto-scales this down to all smaller iPhones. Confirm exact accepted size in App Store Connect at build (2868×1320 also valid).
iPad 13“ 2732 × 2048 Required for iPad apps.
Apple TV 1920 × 1080 (3840×2160 also accepted; 1080p is universal.)
Mac 2880 × 1800 16:10.

The game uses canvas_items stretch + expand aspect, so wider screens simply reveal more arena — every ratio frames cleanly with no letterboxing.


Section titled “4. Screenshot scenes (the 6, in carousel order)”

A deliberate story across the carousel, built on the verified pitch — hook, control, depth, payoff:

  1. Survive the neon horde — dense mid-combat swarm. The hero shot / first screenshot / poster frame.
  2. Twin-stick control — move and aim at once while your weapons auto-fire into the pack (show the aim direction + multiple weapons firing).
  3. Set off elemental reactions — a Plasma reaction mid-burst with the reaction name floating (mechanic, no inflated count).
  4. Lots of upgrades — the level-up card screen (cyan weapon / gold mod / steel stat cards, with the now→after preview), 4 choices.
  5. Build your drone army — the Drone Bay loadout and/or deployed drones fighting alongside you. (Headline hook.)
  6. Fight big bosses — a Graviton fight with the gravity-lens distortion and the boss HP/name bar.

(Reserve, if a scene captures weak: the enemy codex “NEW ENEMY” card; Warp dash streaks; a 3-minute-mark crescendo.)


5. Marketing compositor (branded template)

Section titled “5. Marketing compositor (branded template)”

Raw gameplay frames → final store images through one consistent template, rendered to exact device pixel dimensions via headless Chrome (HTML/CSS gives crisp typography and pixel-exact output):

  • Layout: near-full-bleed gameplay frame + a slim caption band carrying the scene headline in the neon brand voice, a subtle Dark Cosmos wordmark, and a dark-cosmos gradient bleed that matches the site (bullet-heaven.lumara.digital).
  • Safe areas per family: Apple TV overscan margins; iPhone landscape avoids the Dynamic Island / home-indicator zones; iPad/Mac use generous margins. Captions never sit where the device chrome clips them (10-foot-UI lesson from the TV overscan work).
  • Pipeline: an HTML page sized to the exact device resolution embeds the raw frame + caption, screenshotted full-page at deviceScaleFactor=1. One template, data-driven over the 6 scenes × 4 families.
  • Consistency: identical type ramp, colour, and wordmark placement across all images so the set reads as one designed system.

  • Capture: Godot Movie Maker mode (--write-movie) records a deterministic attract-mode session on the Metal renderer at high resolution (~60–90s of juicy auto-play). Deterministic sim + AutoPlayer = a clean, repeatable master.
  • Edit (ffmpeg): trim to the strongest 20–25s, open on a Dark Cosmos title card, add 3–4 caption beats matching the screenshot headlines, a synthwave/neon music bed, and fade in/out.
  • Cuts: export per Apple App Preview specs (H.264/HEVC, 30fps, correct per-family resolution) for iPhone, iPad, Apple TV. Mac takes no preview.
  • Music: compose an original electronic track. Synthesize a ~25–30s dark-cosmos synthwave/electronic bed in code (Python + numpy → WAV: sub bass, arp, pad, kick/snare, lead), tuned to the trailer’s beats. Original = royalty-free, fully owned, no licensing. Iterate on feel before baking it in.

All true to the shipped build, built on the verified pitch. Drafts as starting points:

  • Name (≤30): Dark Cosmos
  • Subtitle (≤30): Twin-stick survival roguelite (29)
  • Promotional text (≤170): Two sticks, an auto-firing arsenal, and a drone army you build as you go. Stack elemental reactions, grab upgrades, and survive the neon dark against huge bosses.
  • Keywords (≤100, comma-sep): survival,roguelite,twin stick,neon,drone,shooter,horde,arcade,action,bullet heaven,arena,upgrade,boss
  • Description: short paragraphs — twin-stick control (move + aim, the rest auto-fires); lots of upgrades every level (stats, transformative mods, weapon evolutions — two runs play differently); build a drone army in the Drone Bay; elemental reactions (carry an element, hit with a different one, set off a burst); huge bosses; endless survival; thousands of entities at a stable frame rate. No story mode / co-op / numbers we can’t back.
  • What’s New (v0.1): First release. Drop into the neon dark, build your arsenal and your drones, set off elemental reactions, and see how far one run can take you.
  • Category: Games → primary Action, secondary Arcade.
  • Age rating: abstract/neon violence, no gore → expect 9+ (resolve via Apple’s questionnaire).

Existing icon.png is 1024×1024. Review against small-size legibility (it must read at 60px on a home screen and as a TV/Mac icon). Polish or re-cut only if it doesn’t hold up small. tvOS additionally needs the layered .brandassets set — already solved by scripts/fix-tvos-appstore-icons.py (keep using it).


  • Press one-sheet (PDF/PNG): title, one-line pitch, key features, 3 screenshots, contact/links — useful if a friend shares it onward.
  • Hero feature graphic: a wide key-art frame for the site and any future store/PR placement.

10. Required metadata / compliance (public-listing blockers)

Section titled “10. Required metadata / compliance (public-listing blockers)”
  • Privacy policy URL (required). The game POSTs anonymous telemetry (perf + gameplay summaries, coarse device id, session id — no PII). Draft a privacy page that makes clear the data is only for performance and diagnostics — not linked to identity, not sold, not used to track. Host it on the site (e.g. /privacy).
  • App Privacy questionnaire (required). Declare exactly that: “Diagnostics” / “Usage Data” collected, not linked to the user, not used for tracking.
  • Support URL + marketing URL: the site, rebranded to Dark Cosmos (see §2 deliverable 7). The “Bullet Heaven” name is being removed from the site so app and marketing URL match.

marketing/
capture/ # dev-only Godot capture harness (excluded from exports)
raw/ # raw viewport PNGs + trailer master
template/ # HTML/CSS compositor template
appstore/
iphone/ ipad/ tv/ mac/ # final composited screenshots
previews/ # final trailer cuts (iphone/ipad/tv)
copy.md # final listing copy
icon/ # icon (+ any re-cut)
press/ # one-sheet + hero feature graphic

marketing/ is committed (source of truth for assets) but capture/ is added to each preset’s exclude_filter so it never ships in a build.


  1. Copy + compliance (fast; unblocks submission, surfaces the privacy/age-rating work early).
  2. Site refocus + privacy page (rebrand to Dark Cosmos, drop “Crystals”, host /privacy — the privacy URL is a submission blocker).
  3. Capture harness + raw frames (the technical unlock for everything visual).
  4. Screenshots (compositor + 6×4 render).
  5. Trailer (compose music → master capture → edit → 3 cuts).
  6. Icon check + polish extras (as time allows).
  7. Assemble in App Store Connect + submit.

  • Metal-on-Mac capture flaky → stills fall back to gl_compatibility / web-demo capture (flatter look, correct framing); trailer stays on the Metal path.
  • App Review rejection (e.g. privacy/age-rating mismatch) → the §10 compliance work up front is the mitigation; build the listing to pass first time.
  • Per-family resolution drift → confirm exact accepted dimensions against App Store Connect at build time before mass-rendering.

  • Localized listings (English only for v0.1).
  • Story-mode / co-op assets (gated off the build).
  • A real marketing campaign, paid ASO, or trademark registration (revisit if the game grows).