
Who
I kept catching myself wanting a beat-em-up that felt like Max Fleischer had a bad New Year's Eve and a bowling league problem.
I wanted the cast, the fatalities, the alley transitions, and the joke about Lucy's heart following the leaderboard on disk before I pretended an empty engine folder meant progress. A Unity purple-capsule template would not get me there. A pitch deck that says "Cuphead vibes" and ships nothing readable would not either.
Sonny's Shining is for people who will sit with a Game Design Document. Indie animation nerds. Silent-film weirdos. Operators who treat Stripe Checkout and a refund policy as pre-production work. If you build MarTech by day and still care whether Bertie the bartender gets stuffed in a trash can, this is for you.
What
I wrote the IP as a stack of plain Markdown and a marketing site that looks like a 1935 newspaper.
The story: New Year's Eve. Bertie's Bustling Bubbles. Sonny (lanky hound dog man, Sonny Tufts energy, ball-shining towel in the back pocket) holds Lucy, a red fox with Lucille Ball danger in the smile. The bartender whispers. She leaves. Kewpie's bowling-pin limo peels out. Eight levels of Kewpie's payroll stand between a tournament bowler and a girl whose heart tracks the standings.

Combat is bowling-native. Towel catch-and-return. Barehand bottle returns when the timing is honest. Later, a modified ball-return device becomes an over-the-shoulder launcher. Bosses are silent-film and vaudeville ghosts wearing animal suits: Bert Williams behind the bar, Chaplin as a mouse puppeteering a Fabio crab, Desi on the fire escape, Tippi in the dance school, Bessie on the decks, Snub Pollard in the hangar, Ivy Lee on the docks, Kewpie Morgan as the pig kingpin with a shipboard alley that sways on purpose.
Art bible is rubber hose / Fleischer / Roger Rabbit: noodle limbs, pie-cut eyes, four-finger gloves, springy idle. GDD.md is ~1,250 lines. NOVEL.md ~1,600. SCRIPT.md ~800. PLAY.md stages it as a tragedy in three acts. PLAN.md still says engine TBD (Unity or Godot). That sentence is accurate. There is no .unity or Godot project in this repo yet.
The web half is real software. Next.js 16.2.6, React 19, Tailwind 4, Bun lockfile, package 0.1.0. Landing is "The Shining Gazette": ticker tape, masthead, drop caps, classified boxes. PreorderButton collects email, hits POST /api/checkout, opens Stripe Checkout for $8.00 (unit_amount: 800) with metadata sonnys-shining-preorder and expected release Christmas 2026. Privacy, terms, refunds, and success routes shipped with that checkout.

Where
Marketing lives at sonnysshining.com. Code at github.com/michaelmonetized/Sonny-s-Shining. Public. Empty GitHub description. Empty topics. Zero stars. That is fine. The README and the Gazette carry the pitch.
Audience: people who want Cuphead's lineage without Cuphead's budget, and builders who know a preorder page without a refund policy becomes an apology later.
When
2025-12-27. Four commits in one afternoon. init. Web submodule and last names stripped from the celebrity inspo list. Novel pass. "initalize marketing website for the novel" (yes, that typo is in the commit message). Next 16.1.1 scaffold era.
2026-01-31. chore: sync all changes, one big dump, +1,640 / −79. Writing and early web catching up with each other.
2026-03-17. The money day. Privacy, terms, refunds, success. Stripe checkout route. PreorderButton. Newspaper redesign of page.tsx. PLAN.md lands. ROADMAP.md also lands, and it is wrong. It talks about a cleaning/detailing client site. I am leaving that stale stub in the tree rather than rewriting history.
2026-06-22. Two nightly commits. GDD, Stripe cursor rules, fallow review hooks, dependency bump to Next 16.2.6 and stripe ^22. HEAD d6ae3ac. Still no engine.
2026-08-16. GitHub pushed_at moves. Main still ends at the June nightly. Eight commits on the ledger. Pack day is September 8, 2026.
Empty repo to a design-complete tragedy with a live preorder path and a missing engine folder.
Why
I did not want to lie to myself with a blank game project named after a feeling.
So I wrote the characters until Sonny's ears twitched in idle. I wrote the levels until the alley between Bertie and Charlie was a cut you can read. I put $8 and Christmas 2026 on a Stripe session so the promise had a price and a date. I left Unity/Godot as a checkbox in PLAN.md because checking a box is not shipping a towel mechanic.
It is still web 0.1.0. The newsletter form on the lander is client-side only, with no list backend. ROADMAP.md needs to be deleted or rewritten. The game does not run. The bible does.
Would you lock the Christmas 2026 preorder first, or open the engine folder and refuse to write another fatality until Bertie's bottle timing feels true?
