Sunnyside World: 19 cozy browser games from one asset pack
One cozy asset pack (396 PNGs, 212 animation strips) became 19 playable browser games behind a single hub at sunnyside.uft1.com — farm sim, survivors horde, fishing roguelite, sokoban, archipelago builder, mine incremental, dungeon runner, cozy shop, kart racer, tower defense, and more.
Hub-paths, not subdomains
The first version gave every game its own subdomain and most of them 522'd — a wildcard DNS with no origin behind it. The fix: hub-paths. One Cloudflare Pages project serves everything (/farm/, /horde/, /kart/ …), so the whole world stays on the free tier: 1 Pages project, 1 Worker, zero new DNS records.
From stubs to playable
Wave 1 arrived as 200-status stubs ("rebuilding" placeholders, no 522s) and was rebuilt game by game into real Phaser 3 + Vite builds: a Stardew-lite farm with timed crops, a 10-level sokoban, an incremental mine, a cooking shop, and a fishing roguelite among them.
Gallery fixes worth stealing
Two bugs from the 399-card sprite gallery: thumbs went blank because the asset base path pointed at a dev folder and the export had wiped the PNGs — fixed with an absolute base plus a full asset copy. And two strips flickered because the frame slicer used Math.floor(width/frames) on non-integer widths (960/23 = 41.739px) — fixed with float slicing. Eleven of 212 strips were fractional.
Play: sunnyside.uft1.com · Gallery: sunnyside.uft1.com/gallery.html