hypnopompia

the iOS shell for magmacrunch arcade games

The Capacitor and Xcode half of an App Store build, the native Game Center plugin, and the store tooling, by magmacrunch media. It is to iOS what magnolia is to the Wii: the part that's the same every time.

It runs no game logic. A game’s rules live in that game’s repo, once per platform. This holds what every App Store build needs and no game should have to reinvent: a plugin, a project, a pipeline and a checklist that fails loudly.

what's here

native/ The Game Center plugin and view controller, Swift, vendored byte-identical into each game’s App target
pipeline/ The bundle transforms every App Store build shares, and the self-contained sweep
sync.mjs Vendors native/ into a game; --check hash-compares every consumer and is the drift detector
check-metadata.mjs A game’s store copy against App Store Connect’s field limits, before the upload rejects it
check-game-center.mjs Leaderboard and achievement ids and their art, before any of them are created
check-launch-crop.mjs Launch-image crop limits against the orientations the Info.plist actually declares
consumers.json Every game repo that vendors from here. A path that does not exist is reported, not failed
tests/ 61 checks on node’s own test runner, and both ends of the vendoring check run in CI

the shared transforms

loadShims Injects the app-only shims after the score bootstrap, so a shim is listening before the game can dispatch anything
pointSharedAssets Repoints shared assets at the bundle, which has no parent directory to climb to
stripStamps Drops the cache-buster stamps. A bundle ships its assets; a stamp is a trick it has no use for
viewportNotch Adds viewport-fit=cover so the viewport reaches the notch
outboundLinks Opens outbound links in the system browser, rather than navigating the app into a dead end with no back button
the sweep Fails the build on anything the bundle would have to fetch over the network to render

the name

After Hypnopompia by Texas Hold’Em Lava Dome, from Pompous Fanfare for All Occasions (2019). Adenosine is the molecule that builds sleep pressure; hypnopompia is surfacing out of it.

using it

Node 22 or newer, and nothing else:

node tools/sync.mjs ../../games/<game>
node tools/sync.mjs --check
node tools/check-metadata.mjs ../../games/<game>/ios
node tools/check-game-center.mjs ../../games/<game>/ios
node tools/check-launch-crop.mjs ../../games/<game>/ios

PolyForm Noncommercial 1.0.0 · Copyright 2026 magmacrunch media

// source access //

hypnopompia is developed in-house and is not publicly distributed. It ships inside the App Store builds it exists for, rather than on its own.

For source access, licensing, or anything else, email info@magmacrunch.com.