The shell's gifts get written down: portrait, haptics, and a thumb the OS stops stealing
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7f85920de8
commit
296d34d8ca
1 file changed
+27
-1
+27
-1
@@ -3508,7 +3508,33 @@ never an interstitial. An interstitial after death would land exactly in the "on
|
||||
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
|
||||
lands. Costs: a build step in a deliberately build-step-free project, Apple $99/yr, Google $25
|
||||
once. Landscape (OPEN 6) probably has to stop being under-maintained before a store review.
|
||||
once. Landscape (OPEN 6): retired for the store build by the portrait lock below (Oliver,
|
||||
2026-08-18) — locked portrait makes landscape officially not-a-surface, which is cheaper than
|
||||
fixing it for review; the web build keeps whatever landscape does today.
|
||||
**What the shell buys GAMEPLAY-wise (2026-08-18)** — the countable list of plugins/config the
|
||||
zero-dep rule bends for; only haptics touches game code:
|
||||
- **Portrait lock** — one config line; see above.
|
||||
- **HAPTICS — the real win**, flatly impossible in iOS Safari. Palette v1 is the stock iOS
|
||||
primitives (three impact weights, three notification patterns, the selection tick) mapped
|
||||
onto the EXISTING sound-effect call sites — the SFX taxonomy already decided what deserves
|
||||
punctuation, so the audio map IS the haptic map. One `haptic(kind)` helper, no-op on the web.
|
||||
Restraint rule: contact ticks are the metronome, kills punctuate, heavy is rare — a game
|
||||
that buzzes constantly numbs the hand in minutes. Core Haptics custom curves only if the
|
||||
stock palette feels flat. Device-only (the simulator has no Taptic Engine); needs its own
|
||||
phone playtest round before any of it is assumed good.
|
||||
- **Edge-gesture deferral** — the shell can require two swipes for the home indicator /
|
||||
app switcher, so a bottom-edge flick (exactly where the one-handed thumb lives) stops
|
||||
yanking the player out of the game. The web has no say in this.
|
||||
- **Autoplay allowed in WKWebView** — the umpire speaks on first load, no gesture unlock
|
||||
(kills LATER item 6's mute-on-first-load risk *inside the app*; the in-app-browser web case
|
||||
remains). The iPhone mute switch becomes a choice — games usually play through it.
|
||||
- **Real app storage** — stats, run history and the €2.99 unlock state survive; Safari/PWA
|
||||
storage can be evicted under pressure. A tester's career may vanish; a customer's must not.
|
||||
- **Assets in the binary** — instant cold start, no `?v=N` dance in the app. Flip side: app
|
||||
updates take store review (days), so iteration stays on the web; the app ships snapshots.
|
||||
- **Skipped on purpose**: Game Center / Play Games (a second leaderboard dilutes the diegetic
|
||||
world board) and push-notification retention nags (same instinct that rejected
|
||||
interstitials). Both addable later without regret.
|
||||
3. **The CHALLENGE — ship it FREE.** Tennis already owns the paid-continue mechanic: Hawk-Eye. On
|
||||
death (`G.mode='eaten'`), the umpire announces a challenge, the replay shows the shambler's foot
|
||||
over the line, and the call is **overturned** — you resume. The sport supplies the cap for free
|
||||
|
||||
Reference in new issue
Block a user