The price tag comes off the door and moves inside: free download, one 2.99 unlock

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-18 11:43:41 +02:00
1 parent f8201ce7a2
commit 7b395fcba4
1 file changed
+43 -12
+43 -12
View File
@@ -20,7 +20,9 @@ anything, so if you add a `return` for an awkward deal, check the body still run
the state-machine contracts that have historically produced the show-stoppers. The Dockerfile runs
it as a build stage, so a red suite cannot deploy — but finding out from Coolify is the slow way.
Last updated 2026-08-15 (two sessions: the finetuning pass — gore opens in the gore, the menu theme
Last updated 2026-08-18 (the store model in LATER revised: free download + €2.99 unlock-everything
IAP with the free-tier gates, superseding paid-upfront; before that 2026-08-15, two sessions: the
finetuning pass — gore opens in the gore, the menu theme
comes back, one world board per mode, and the barrel economy cut — over the batch below: six new
opponent families and an 18-rung ladder, the
tournament DRAW screen, three netplay fixes off Oliver's cellular report, the night court, and
@@ -3449,15 +3451,41 @@ Nothing here is broken; these are known gaps and unverified risks.
# LATER — shipping it: demo, stores, campaign
Decided in discussion with Oliver, 2026-07-31 and extended 2026-08-06. **None of this is built** —
the one thing that exists is the domain (item 5). Recorded here so the decisions survive; the
ordering below is roughly the order to do it in.
Decided in discussion with Oliver, 2026-07-31, extended 2026-08-06, model revised 2026-08-18.
**None of this is built** — the one thing that exists is the domain (item 5). Recorded here so the
decisions survive; the ordering below is roughly the order to do it in.
**The model: paid, $2.99, no ads.** Both stores. No ad SDK, no consent/CMP flow, no ATT prompt, no
tracking — which keeps the store card at "Data Not Collected", keeps review trivial, and keeps a
zero-dependency project zero-dependency. *Maybe* later: a free build capped at chapter 1 with an IAP
to unlock all chapters. That is a fallback, not the plan — paid→free is a normal move, free→paid is
not, so launch paid.
**The model (revised 2026-08-18): FREE download, one €2.99 non-consumable IAP that unlocks
everything, no ads.** Both stores. This supersedes the original "paid $2.99 upfront" decision
(2026-07-31) — the whole funnel is short-form video → impulse tap → store page, and an impulse does
not survive a price tag on an unknown game; the free tier does the convincing, not the price. €2.99
stays the number (there is no 2,00 € tier; revenue is noise either way per the expectations below).
No ad SDK, no consent/CMP flow, no ATT prompt, no tracking — which keeps the store card at "Data Not
Collected", keeps review trivial, and keeps a zero-dependency project zero-dependency. A StoreKit
unlock does not break "Data Not Collected", but it does require a **Restore Purchases button**
(no accounts — StoreKit restore IS the reinstall/new-phone path; Apple rejects unlock IAPs without
it), and it is the wrapper's first real IAP plumbing.
**The free tier (Oliver, 2026-08-18):**
- **Gore: free through the FIRST CHAPTER BOSS BEATEN**, cut on the chapter-2 card — the same cut,
same build flag as the web demo (item 1). The free tier must contain everything a promo clip
promises (transition, horde, weapons, duel, boss) and must end on a WIN, not a wall.
- **Zombie tennis: first 7 opponents, no tournament.** Frame the wall diegetically when the
tournament frame exists: QUALIFYING is free, "YOU'VE QUALIFIED — the main draw is in the unlock" —
the cut lands on a win in tennis language. Check where the six new families sit on the 18-rung
ladder; if rungs 1–7 are mostly the base family the free tier undersells the roster.
- **Classic tennis: fully free.** It is the decoy for the transition and costs nothing.
- **Multiplayer: joining free, hosting paid.** Friend-code rooms make every paid copy recruit its
own opponents — a payer hosting for a free friend is a live demo. (The socket is a staging
prototype; this gate waits on LATER item 7 shipping.)
- **World board: posting requires the unlock.** Free players SEE the board — put the upsell where
their row would have been, envy beats a lock icon. With no accounts this is also the cheapest
anti-spam gate the board can have. Mind the cold start: a payers-only board is nearly empty at
the honest sales estimate; the testteam's rows partially cover it.
- **Upsell placement is a feel rule**: only on win moments (chapter card, felled card) — never in
the death→restart gap that `EATEN_RESTART` protects.
- **Gates do not lower the age rating** — the store rates the binary's maximum content, and gore in
the free tier rates the free download 17+/USK 16 regardless. The gates buy conversion, not reach.
**Ads are rejected**, with one exception held in reserve: rewarded video on the CHALLENGE (below),
never an interstitial. An interstitial after death would land exactly in the "one more run" gap that
`EATEN_RESTART` exists to protect, and would end sessions rather than annoy.
@@ -3469,9 +3497,12 @@ never an interstitial. An interstitial after death would land exactly in the "on
job is converting a 15-second clip into "I played it".
Implementation is ~10 lines: a check on the chapter-2 card plus a build flag the store build sets
to skip it. **Build no protection around it** — it is client-side JS on a static host, trivially
bypassable, and nobody who would pay $2.99 will open devtools. DRM here is pure cost.
bypassable, and nobody who would pay €2.99 will open devtools. DRM here is pure cost.
Consider leaving **desktop uncapped** (`matchMedia('(pointer: coarse)')`, already used for
`autoAssist`): nothing to cannibalise there, and an uncapped desktop build is what gets linked.
**Timing (Oliver, 2026-08-18): the web build stays UNCAPPED for now** — the testteam runs the
PWA. At store launch the public web build takes the **same gates as the app's free tier** (one
flag), or the website is strictly better than the free app and defeats every gate above.
2. **Store readiness.** Wrap the PWA (Capacitor/PWABuilder). Unknowns to check *before* committing:
audio behaviour in WKWebView, safe-area (already solved for the browser, may differ in the shell),
and 60 fps canvas under WKWebView at `RES` 4 — see OPEN 1, this is the second place that risk
@@ -3555,8 +3586,8 @@ never an interstitial. An interstitial after death would land exactly in the "on
**Expectations, so nobody is surprised:** with no marketing, 20-100 units in year one is the honest
central estimate (~$40-210 net, i.e. under Apple's fee at the low end). The monetization model is
worth maybe $200 either way; the video channel is worth ~100x that. Ship paid because it is cheap and
protects the design, not because it will earn.
worth maybe $200 either way; the video channel is worth ~100x that. Ship free+IAP because it feeds
the funnel and the gates protect the design, not because it will earn.
**Explicitly NOT to be built** (these fight settled decisions, see the invariants above):
- **selling weapons or tins** — weapons are *only ever won*, in the duel; a shop deletes the duel's