Launch Day, and Why I Wrote a Cookbook Instead of Just Shipping Posters

On launch day I generated six posters, fought a model that kept inventing fake logos, discovered that marketing specs are a crutch, and wrote the recipe so I'd never have to figure this out again.

Eyal Harush7 min read

Geo Climber is on the App Store. I open my laptop, make a coffee, create a git worktree, and start generating launch posters.

That's the whole ceremony. No champagne, no countdown. The game went live while I was asleep, the listing page looks fine, and now I need art to tell people about it.

The variant matrix

I wanted six posters with high variance. Not six crops of the same hero shot but six genuinely different compositions. So I set up a matrix with five independent axes:

  • Zone — magma chambers, deep ocean, inner core, death zone, deep crust caves, mountain range
  • Camera framing — hero medium, wide establishing, low-angle, extreme close-up, over-the-shoulder, extreme wide
  • Character pose — jumping east, walking, running, standing south, standing east, running down
  • Brand treatment — full wordmark, small wordmark, app icon top-right, app icon top-left, field-journal only, full wordmark
  • Headline copy — unique per variant

The rule: no two posters share more than two axis values. Each one should feel like a different game moment even though they're all Geo Climber.

I wrote six prompt files following a consistent twelve-block structure: opening context, two reference images (one Inge sprite, one logo), scene description, pose and camera, safe area, logo placement, logo integrity rules, headline, masthead, specimen caption, bottom quiet space, style constraints. Kicked all six off in parallel at 1024x1536 portrait.

The first batch came back polished. Gorgeous, actually. But four out of six had a problem.

The fake logo problem

The model had replaced my logo with something it invented.

Not a mangled version of the real logo. Not a corruption. A completely different stone-sign wordmark with different crystals, different letterforms, a pickaxe I'd never designed. It looked plausible. It looked polished. It was not my logo.

I'd described the real logo in the prompt. In detail. The crest shape, the pickaxe silhouette, the crystals flanking the letters, the specific letterforms. Didn't matter. The model read the description, decided it knew better, and hallucinated a logo that matched the vibe but not the actual design.

"A B S F had the official logo swapped with something else."

"need to strengthen prompt to never replace the logo."

Description alone was not enough. The model treats text descriptions of visual elements as suggestions, not constraints. I needed to make the real logo impossible to ignore.

The three-pronged fix

The fix required all three of these working together:

First, pass the actual logo.png as a second input image alongside the Inge sprite. The model can't invent a replacement when the original is right there.

Second, add a LOGO INTEGRITY block to every prompt with an allowed list (subtle 3D, lighting harmony, color grading) and a forbidden list (different wordmark, different crest, different crystals, different font, redrawing from scratch, rotating, omitting). Be exhaustive. If you don't explicitly forbid it, the model will try it.

Third, set --input-fidelity high on the generation call. The default lets the model reinterpret reference images loosely. High fidelity tells it to reproduce.

"variants of the logo (making it more 3d, harmonizing colors with background, lighting changes etc) are accepted, but core must remain."

With all three in place, every v2 regen came back with the real wordmark reproduced verbatim. The crystals were right. The letterforms were right. The pickaxe was right. Lighting adjustments and color grading happened naturally, but the core design was untouched.

I suspect this works beyond logos. Character consistency, typography, UI elements — anywhere the model tends to invent plausible-but-wrong versions of something specific. Description alone is never enough. You need the reference image, the explicit rule, and the fidelity flag, all three.

The landscape

After the portrait set was approved, I wanted a landscape variant. Outer core, cosmic plasma, Inge running along a diagonal shelf with the logo floating in the starfield negative space above her.

I added a whole section to the cookbook before writing the prompt. Landscape compositions are different from portrait in ways that matter: the character goes on a third (never centered), faces into the text zone, the diagonal carries the eye from the character up to the brand. Portrait lives on vertical rhythm; landscape lives on diagonal flow.

The outer-core prompt came back gorgeous. Inge on the left third running right, the plasma shelf rising in a diagonal, complementary orange and cyan baked into the zone's own palette, the real logo rendered correctly in the upper-right starfield.

"SO pretty. good."

Two words. That was the green light.

The spec-list purge

With the art done, I started drafting social posts for Discord, Facebook, Twitter, and Instagram. This is where my instincts failed me.

First draft: "Climb through 13 real geological zones from Earth's inner core to the summit of Everest."

"the 'thirteen zones' signal is weak, do not use anymore."

Second draft: "Six thousand three hundred eighty kilometers of vertical travel."

"also weak. the game is literrally infinte too. emphasis on journey, but don't create specs like its a resume."

I kept reaching for numbers. Specific, impressive-sounding numbers. And every time, the result read like a product spec sheet, not a game you'd want to play. The instinct comes from somewhere deep in the training data: feature-bullet-list marketing, tech-spec comparisons, the kind of copy that works for SaaS landing pages. It does not work for a game.

The copy that finally landed: "Climb from Earth's molten core to the summit of Everest. How far can you get? Can you beat your friends?"

Journey first, challenge second. The game is infinite anyway — any number I quote is arbitrary, and the player can tell.

Facebook needed special treatment. The FB audience is cold consumers, not indie-dev followers. No "building in public" framing, no developer journey angle. Pure game focus. Tighter copy, fewer words, let the art carry the weight.

"' and keep going. The climb doesn't end' lol wtf is that stupid robot sentance."

Fair. Deleted it.

Six rounds of revision on the Facebook draft alone. Each correction was tiny: drop a sentence, tighten a phrase, add the leaderboard hook, fix the App Store URL (I'd been writing a plausible-but-wrong slug). None of them alone was a major change. Together they took the copy from generic to publishable.

The cookbook

After the art shipped and the Discord announcement went live, I did the thing I'm actually most proud of from the whole day. I wrote the recipe.

"can we distill the work done now, into a replicatable cookbook? capturing the vibe, the contraints, the creative work, the different angles, assets, compositions, design queues, etc?"

The result was design/social/COOKBOOK.md: 13 sections covering the visual identity (dark, geological, cinematic), design tokens (aspect ratios, safe areas, font treatments), reference assets and where they live, the pipeline command with flag rationale, the twelve-block prompt grammar, the logo integrity defense with a drop-in block, the five-axis variance matrix, aspect-specific spatial rules for portrait vs landscape vs square, a 10-step composition loop for designing new layouts from scratch, workflow tips, gotchas, and a file manifest.

Every section is grounded in something that actually went wrong or worked during this session. No speculative rules. No theoretical best practices. Just the recipe for what I did today, written down so that the next time I need launch art (or a seasonal variant, or a new-zone announcement), I don't start from scratch.

The day's output was seven images and one cookbook. The cookbook will save more future time than the images.

The shipping artifact

The Discord announcement went out with the outer-core landscape attached. GEO-204 marked done. Four new memory rules saved: no spec-list marketing, always include the website URL, canonical App Store URL (so I stop inventing plausible-but-wrong slugs), Facebook is game-only.

A launch day without drama. No broken builds, no App Store rejections, no server fires. Just art, copy, revision, and a recipe for next time.

The posters are already fading from my feed. The cookbook is still in the repo. I know which one I'll open first when v0.3.0 ships.

This is post 18 of 18 in a series about building Geo Climber with Claude Code. Launch day was six posters, one landscape, one cookbook, and a rule about never selling a game like a datasheet. The cookbook might be the most useful thing I shipped that day. Join the Discord and download Geo Climber on the App Store.

launchmarketingart-pipelinecreative-processcookbook
Launch Day, and Why I Wrote a Cookbook Instead of Just Shipping Posters — Building Geo Climber