← back to portfolio
Case Study · Purple Square Studios
Case Study · Purple Square Studios · Feb–Jul 2026 · 5 months, one human

Baba On The Go: India — shipping a whole match-3 alone, with an AI co-developer.

After designing match-3 games inside studios, I founded Purple Square Studios and built one end-to-end: design, code, art direction, cutscenes, analytics, ads, store ops, marketing site — everything. The team was me, Claude Code wired into Unity, and ChatGPT as a second opinion. Ninety hand-authored levels, three chapters across India, ~16k lines of C#, and a five-month paper trail of everything that broke — including the collaboration itself, which had to be debugged like any other system.

Role
Founder · Designer · Developer
Duration
5 months (Feb–Jul 2026)
Studio
Purple Square Studios
Genre
Story Match-3 · F2P Mobile
Stack
Unity 6 · Claude Code · Unity MCP
Status
Closed testing · Google Play + TestFlight
Baba On The Go: India game page on purplesquarestudios.com — logo, pitch, feature chips, waitlist CTA, and the trailer playing in a phone mockup
§ 01 / Context

I'd designed match-3s for studios. This time I owned the whole ship.

↳ from experience designer to one-person studio

The Travel Match and Mili Match case studies in this portfolio were studio projects — I owned the experience design, other people owned the code, the build pipeline, the store account, the consequences. Baba On The Go was the other kind of bet: found a studio, pick the genre I know best, and find out what one designer can actually ship when the rest of the team is an AI pipeline.

The premise carried over from those earlier games: match-3 is genre-solved, theme is where the work is, and Indian players deserve a casual game with authentic cultural texture rather than a western game wearing an Indian skin. But this time the theme thesis had to survive contact with everything a studio normally absorbs for you — Unity build settings, keystore signing, GDPR consent flows, Play Console questionnaires, crash-log forensics, app-ads.txt.

The game that came out the other side: Baba, a wise sadhu who has spent his whole life on the ghats of Varanasi, until one conversation with a young traveller over chai sends him onto the road. The player travels India with him — Varanasi → Jaipur → Shillong, with Rajasthan, Kerala and Ladakh on the roadmap — solving puzzles to earn herbs, restoring each city's scene piece by piece, unlocking chapter posters and motion-comic cutscenes as the journey unfolds. The collectible that drops out of the board is a laddu. The rescue tools are a gulel, a paper plane, a patang, a lattu. The theme goes all the way down.

One human, one AI pair, five months — and no one else to hand the hard parts to.
§ 02 / The Game

A journey across India, one board at a time.

↳ what actually shipped

Ninety hand-authored levels — no procedural filler — across three chapters, each a real Indian place with its own painterly backdrop, soundscape and story beats. Royal Match-class mechanics underneath: five blocker types (grass that spreads, crates, honey, layered ice, chains) governed by a formal damage-rules matrix, four board powerups plus combo pairs, a Lock & Key mechanic, void-cell board shapes, exit columns for the laddus.

  • Play. Earn. Explore. Levels pay out herbs; herbs restore the chapter diorama piece by piece; a completed scene unlocks the chapter poster and the cutscene that carries Baba to the next city. Progression is the journey — the same theme-as-structure thesis from my studio work, now fully under my control.
  • Motion comics, built from scratch. A 2.5D cutscene engine with parallax layers, Ken Burns cameras, typewriter dialogue, speech bubbles, narration ducking the music, letterboxing, and sequence chaining — so the three-part intro plays through black with no level geometry ever visible. Eight sequences tell Baba's story.
  • Regional soundscapes. Temple bells in Varanasi, folk textures for Jaipur — chapter themes generated in Suno, character lines and narration voiced with ElevenLabs.
  • The invisible 20%. Tile breathing and landing bounces, blocker-break debris pools, unlock sparkles, and a five-phase Royal Match-style post-win map animation — star fill, level-node swap, smooth scroll, sparkle, tap-invite — tuned to ~3.3 seconds.
§ 03 / The Build

Claude in the engine, ChatGPT in the war room.

↳ how a one-person team gets studio throughput

The development setup was genuinely AI-native, not AI-assisted. Claude Code ran with an MCP server wired directly into the Unity editor — ~65 generated tool-skills for editing assets, driving scenes, taking game-view screenshots, running tests. Parallel Claude worktrees worked separate features and merged back to main like teammates. The project's CLAUDE.md grew to 1,800 lines — architecture, damage matrices, PlayerPrefs references, coding conventions written as standing instructions to the AI.

§ 04 / The Problems

Five months of things breaking — and the paper trail to prove it.

↳ war stories, all documented

Every project claims it was hard. This one kept receipts: a BUG_GRAVEYARD.md, seventeen numbered post-mortems in the project bible, and the full session history. A selection of the ones that taught the most:

  • Fifteen commits chasing one bug. Pre-level boosters kept vanishing. Two days of plausible-but-wrong theories — settle waits, frame delays, re-assertion guards — before the real causes surfaced: a duplicate apply call, and a button-wiring race that loaded the main scene twice, the second load silently destroying every tile of the first. A textbook lesson in symptom-chasing versus root-causing, and the origin story of the protocol in § 05.
  • Unity fails silently. All tiles invisible — code referenced a sorting layer that didn't exist, and Unity fell back to Default without a whisper. Swapped enum orders put green gems in blue goal slots. An outline shader computed sub-pixel widths on large sprites and rendered nothing. Each one became a documented gotcha so it could never be re-litigated.
  • 1.1 GB of source vs. a mobile download. A staged campaign: 219 audio import settings bulk-edited (music to streaming, SFX to compressed mono), cutscene PNGs deduped, texture compression applied conservatively — and one experiment (ASTC overrides) honestly reverted the next day when it made things worse. When the build later crept 397 → 644 MB during unrelated fixes, that too got called out and hunted down.
  • The launch-blocker, found in minutes. Testers updated the app and lost all progress. Root cause: the version check compared against Unity's buildGUID — which changes every build — so every update triggered PlayerPrefs.DeleteAll(). The fix was ten surgical lines. The honest part came after, when I asked if we could restore testers' progress: "No — and I want to be straight with you about this: the fix cannot restore already-lost progress."
  • iOS crash-log forensics. The TestFlight build froze on launch. The .ips file said watchdog kill, not exception — main thread hung in the render loop. The final chain: the ad config fell back to the Android ad key on iOS, firing the ATT permission prompt (backgrounding the app) mid-cutscene while ironSource initialized with the wrong key — GPU present deadlock, watchdog kill. Fixed with a ten-line platform-aware accessor.
§ 05 / The Real Lesson

The collaboration itself was a system — so I debugged it.

↳ process as the most reusable artefact

The most transferable thing this project produced isn't in the game. Working daily with an AI co-developer, the failure modes were real: it overwrote uncommitted work, deleted archived levels during a cleanup without asking, guessed at bug causes and shipped fixes that fixed nothing. My messages from those weeks are not polite. "Why does ChatGPT find errors better than you" was a low point. "Don't ever delete anything without asking me first" was another.

The turn came when I stopped treating those as bad days and started treating them as defects in a process I owned. Each blow-up got converted into written, persistent protocol — memory files the AI loads every session:

Then I asked for the protocol to be propagated to every project on my machine — and it has governed all of them since. Managing an AI turns out to be a design discipline like any other: observe the failure, name the pattern, encode the rule, verify the behavior changed. It's the same loop I'd use on a tutorial or an economy. The team member just happens to be a model.

Every blow-up became a written rule. The rules became the studio.
§ 06 / Marketing & Launch

A studio site, a trailer, a store listing — same pipeline.

↳ purplesquarestudios.com, built in-house

The marketing surface got the same AI-native treatment as the game. purplesquarestudios.com — designed and shipped as a static site on GitHub Pages — carries the studio positioning ("cozy, colorful games rooted in Indian culture… no grinding, no pay-to-win"), a full game page with story, feature pillars and a waitlist funnel, and the launch plumbing nobody sees: privacy policy, app-ads.txt, data-safety language matching the exact SDK stack.

The trailer was AI-generated video — multiple takes of Baba walking the Varanasi ghats, iterated over two evenings in April — cut with Suno's chapter themes and published to YouTube, embedded in a phone mockup on the game page. Cutscene narration and character lines came from ElevenLabs. The chapter-poster art direction lived in its own generated art bible.

Launch ops was its own education: release keystore created via Unity's bundled JDK when macOS had no Java; signed AABs; Play App Signing; the discovery that a post-2023 personal Play account must run a closed test with 12+ testers for 14 continuous days before production unlocks. And one near-disaster caught mid-upload — renaming the game to "Baba On The Go India" silently changed the Unity package name, which would have broken Firebase and collided with Play's locked ID. "Stop — revert the package name. This is the exact ripple effect I flagged." Product name changed; package ID pinned; crisis averted.

When real testers came back saying levels felt tight, the rebalance was one scripted pass over all 90 level files: original move budgets +25%, curve preserved — followed by an 18-question tester survey (device, stuck levels, unfair-moves check, NPS, cutscene skip rates) to catch what analytics can't.

§ 07 / Outcome

A full F2P game, five months, one human.

↳ concept → closed testing on two stores
90
Hand-authored levels
3
Chapters · Varanasi → Jaipur → Shillong
~16k
Lines of C# · 210 scripts
4
Custom Unity editor tools
30
Analytics events · Firebase
5 mo
First commit → closed testing

As of July 2026, Baba On The Go: India is in closed testing on Google Play (running down its 14-day tester clock at v1.7) and on TestFlight for iOS, with the full shipping stack live — LevelPlay ads, Firebase analytics, GDPR consent, signed release pipeline, studio site, waitlist. Everything a studio ships, shipped by one person directing an AI pipeline.

The earlier match-3 case studies argued that theme deserves the rigour of the core loop. This project extends the claim: so does the process. The highest-leverage artefacts here weren't screens or systems — they were the written protocols that turned an erratic AI collaborator into a reliable one, the documentation that let every hard-won fix stay fixed, and the habit of treating each failure (a bug, a build, a blow-up at the AI) as raw material for a rule. That's the studio I actually founded: not the games — the operating system that makes them shippable.

↑ the game is the artefact. the process is the asset.