← back to portfolio
Case Study · 03 / 10
Case Study · Verse · 2025–26 · in development

The Karma Project — when the mechanic is the meditation.

A single-player 3D RPG about emotional regulation, scaffolded on Buddhist cosmology — the Six Realms of Samsara. Built in Unity 6 with a small team. Two iterations in: a choice-driven open world that failed for specific reasons, then a rebuild around embodied interaction, compassionate systems, and a hum-dial whose win state is the player's own nervous system. My hats: narrative design, game design, 3D art, engineering, and pair-development with Claude Code.

Role
Narrative + Game Designer · 3D Art · Engineer
Team
Verse · Ben (founder, Buddhist content) · UI artist · me
Engine
Unity 6000.0.62f1 (URP)
Genre
6-Realms Karma RPG · Single Player
MVP
Chapter 1 — Serna and the Empty Cup
Lineage
It Takes Two · Little Nightmares · Spiritfarer
The Karma Project — Sammy meets Serna in the Hungry Ghost realm
§ 01 / Premise

Most wellness games are meditation apps in skeuomorphic clothing.

↳ the category is thin

Most titles in the space either gamify meditation — streaks, XP for breathing, lotus flowers that bloom on completion — or decorate a meditation app with game aesthetics. Both approaches preserve a split between the game part and the therapy part. The player experiences them as sequential: first I play, then I feel.

The Karma Project began by asking a different question: what if the game itself was the meditation — not an app wrapped around one? The scaffolding is Buddhist cosmology — the Six Realms of Samsara (God, Demi-god, Human, Animal, Hungry Ghost, Hell). Each realm encodes an emotional pattern — craving, rage, pride, fear — and each chapter asks the player (Sammy) to untie that pattern not by choosing a compassionate answer from a menu, but by enacting compassion through how the game is played.

Chapter 1, the MVP, is called "Serna and the Empty Cup" and stages the Hungry Ghost realm. The player meets Serna — a child whose visual design pins Buddhist preta iconography (distended glowing belly, dress of food wrappers, eyes that never quite land) onto the silhouette of a normal, sad little girl. A small black cat shadows the player as a silent companion. The teaching: generosity is the cure to emptiness. The mechanic: embodied giving, under adversarial timing, resolved by a hum that actually down-regulates the player's nervous system.

The win state of the game and the calm state of the player are the same event.
§ 02 / Art Direction

A pleasant-looking village where the suffering is invisible.

↳ the aesthetic is the diagnosis

The art direction carries the thesis before the gameplay does. The Hungry Ghost realm is not hell. It is a warm-coloured, painterly, low-poly cartoon village — closer in visual grammar to Animal Crossing or A Short Hike than to Dark Souls. Trees are lollipop-green. The sky is a pink-violet sunset that never quite breaks. It is the "abundance" side of preta mythology — a world that looks like it has everything, filled with residents who cannot eat.

The signals of suffering are embedded, not announced:

  • FoodRainManager drops food from a featureless sky. It bounces and rolls. Nobody picks it up.
  • Costume as symptom. Serna's dress is made of what she has tried to consume — wrappers, stickers, a glowing belly-orb that never empties.
  • Decoration, not food. Cupcakes and cake slices sit permanently on benches beside her. The world is full of sweets no one eats.
  • White-masked translucent spirits. Designed from a master visual prompt drawing on Japanese yūrei folklore and early Miyazaki spirit-world aesthetics: humanoid but less human, slightly elongated neck, softened anatomy, a rounded heavy belly shaped by unseen craving. Each ghost is specialised — The Listener, The Performer, The Commuter — rendered with a soft internal glowing orb at the chest, ankle, or ear that locates where their unmet craving lives in the body.

The world smiles. The design does the talking.

Environmental characterization before any NPC has opened their mouth.
§ 03 / Design Language

Four moves that define iteration 2.

↳ each one fixed a specific failure

Iteration 1 was a choice-driven open-world RPG in the Disco Elysium / Undertale tradition. It failed in playtesting for two reasons — choice fatigue and freeroam erosion, both covered below. The rebuild introduced four design moves, each a direct response to a specific failure mode. Together they define how the game now works.

1. Embodiment before exposition

In exploration, the camera is behind Sammy's shoulder; the player sees her body. In mini-games, the camera drops into her head and her hands appear — there is weight to what she carries, a lerp to how she lets go. The PlayerStateMachine contains six first-class states — Grounded, Airborne, Crouch, Carry, PushPull, Climb — each a teaching surface. Crouch is humility. Carry is the feel of holding something that matters. PushPull is the cost of moving the world. Climb is choosing difficulty. Borrowing directly from Little Nightmares' vocabulary, interaction is physical, not menu-based. When Sammy offers bread to a ghost, she walks up to them and holds it out. The body is the verb.

This is embodied cognition (Lakoff & Johnson; Barsalou) as literal implementation. Meaning held in the sensorimotor loop persists in a way that dialogue-box meaning does not.

2. Silent companions

The emotional architecture is built around three relationships, none of them loud:

3. Compassionate systems — fail-soft as design philosophy

Every objective in the quest system declares canFail and retryAllowed, and QuestManager.FailObjective() runs a multi-level cascade when the player stumbles:

This is not a difficulty slider. It is a design stance: the game's response to the player's mistake is authored with the same care as its response to the player's success. In a game whose core teaching is that suffering arises from grasping, it would be incoherent for the game itself to grasp at its own fail states. The architecture enacts the thesis.

A side-effect: writing a chapter now means writing two threads — the version where Sammy gets it right, and the version where she doesn't. The second thread is often the more moving one.

4. Environmental narration — the visibility spectrum

Iteration 1 marked every objective with a quest marker. Iteration 2 introduces four visibility tiers on every objective — an engineered grammar for how loudly the game speaks:

This is the lever that cured iteration 1's freeroam problem. The world still has room to wander — but the information architecture of the wandering is now authored. A chapter about the Hungry Ghost realm can have Hidden beats — a dried-up bowl, a tree stripped of fruit, a ghost muttering the same phrase on loop — that register as tone rather than tasks.

§ 04 / The Mini-Games

Three mini-games, three nervous systems.

↳ first-person inside chapter arcs

Inside chapter arcs, the camera switches to first-person for mechanical set-pieces where the teaching is enacted. Three beats carry Chapter 1's argument.

  • Craving as rhythm. The player tosses bread to birds arriving in three escalating patterns — Dive Feed, Circle & Snatch, Swarm Panic. Some birds are never satisfied. The player gets better at the skill and still feels they are losing. The mini-game teaches the pattern of endlessness procedurally, not by telling.
  • The futility of forced giving. A whack-a-mole / Angry Birds hybrid. Mouths open and close with rhythm, fakes, greed. By Phase 4, overfed fish spit the bread back. The player learns, under pressure, the futility of forcing generosity on the unwilling. The weather darkens. The lesson is in the thumb.
  • Down-regulation as win state. The chapter resolves with humming into the microphone. The chakra-coloured pitch-dial visualises the player's actual voice matching target tones — a design that pairs the fiction (a character finding peace after generosity) with the physiology: Bhramari pranayama, the humming-bee breath documented in clinical literature (Kuppusamy et al., 2016; Trivedi et al., 2023) to lower heart rate and improve HRV.

Mechanically, Bird and Fish share engineering (throw arc, projectile, hit detection, timing windows). Emotionally, they are different nervous systems — compulsive, then anxious. Clean reuse, deliberate contrast.

The fiction says the character is finding peace. The player's actual parasympathetic nervous system, matched pitch by pitch, agrees.
§ 05 / The Pivot

Iteration 1 was a story with games bolted on.

↳ two playtest failures, two inspirations

The first prototype was a choice-driven open-world RPG in the Disco Elysium / Undertale tradition. Sammy spawned in the Hungry Ghost realm. A quest line moved her from NPC to NPC to the Temple of Ananda to Serna to a mini-game resolution and finally to an Artifact + Reflection Card + IRL Card. Karma was a ledger. Every NPC offered 2–3 dialogue choices.

Playtesting surfaced two specific failures:

The break came from replaying It Takes Two and Split Fiction (Hazelight Studios). These are couples-therapy co-op games in premise, but what matters is that the emotional arc of each chapter is enforced by the gameplay itself — when characters are at odds, the mechanics demand coordination anyway; when they misunderstand each other, the puzzles require perspective-swapping. The game teaches through asymmetric friction. Little Nightmares (Tarsier Studios) became the second anchor for its opposite move — entire arcs told through environment and silent objectives, never shouting instructions.

Together, these two references supplied the vocabulary the rebuild needed.

Iteration 2 is a game whose systems are the story.

This is procedural rhetoric (Bogost, Persuasive Games, 2007) applied: games make claims through the rules they enforce, not the words they deliver. The axes shifted as follows:

Iteration 1

Story with games bolted on

  • Lesson lands via dialogue choice
  • World narrates via quest markers + NPC exposition
  • Failure is binary pass/fail, replay required
  • Camera is third-person open world
  • Dialogue is the primary verb
Iteration 2

Game whose systems are the story

  • Lesson lands via mechanical friction + embodied interaction
  • World narrates via environmental beats, silent objectives, ambient ghosts
  • Failure runs through a compassionate fail-soft cascade
  • Camera is third-person explore + first-person for mini-game set-pieces
  • Dialogue is one tool among several — re-scoped, retained at hinge beats
§ 06 / Chapter 1

Serna and the Empty Cup.

↳ how a session actually plays
  • Sammy wakes in a pink-violet sunset. FoodRainManager drops food from a featureless sky — a pleasant anomaly she'll only register as suffering later. The cat appears. She follows.
  • Three ghost villagers (GhostNPC with NavMesh roaming, karma-responsive behaviour: Roaming / Paused / Reacting). The Listener, The Performer, The Commuter. Each exhibits a different symptom of hungry-ghost suffering. Visibility is SoftHint. The world tells you something is wrong.
  • The closed-eyed child-monk at the lotus-pond temple. Dialogue beat. Teaches tonglen (Tibetan giving/taking meditation — Chödrön, 1994) and the humming breath. Player leaves with bread as a reward.
  • The emotional anchor. World-space speech bubble, typewriter, billboarded. Her quest is not "deliver bread" — it is "sit with her, offer, and accept whatever she does."
  • Bird Feeding + Fish Feeding, staged as chapter beats, not the whole game. Shared engineering, contrasting nervous systems.
  • Microphone-driven pitch-matching visualised through the seven-chakra rainbow ring. The player's parasympathetic nervous system is the actual win condition.
  • Card + IRL card. "Today, share your meal with one person who isn't expecting it." On next launch the game asks; karma credits if it happened.

The IRL card is an explicit gesture toward transfer (Perkins & Salomon, 1992) — the pedagogy principle that a lesson only counts when it crosses a context boundary. Without the IRL card, the game is therapy-theater. With it, the game is a bridge.

The karma meter survived from Iteration 1, but its inputs changed. It no longer responds to menu picks. It responds to mechanical choices under pressure: Good (karma + coins) for behaviors aligned with the chapter's practice; Neutral (coins) for survival play; Bad (karma penalty) for acting in alignment with the unhealed pattern when the game has offered an alternative. This shifts the moral signal from statement to habit — closer to BJ Fogg's Behavior Model, where preferences form through repeated motivation-ability-trigger loops, not declared intent.

§ 07 / Systems

Layered, event-driven, boring-on-purpose.

↳ the architecture that makes the design possible

The project runs on a layered, event-driven architecture. Zero Update() polling for cross-system communication. Every manager fires C# Action events; every UI element listens. Nine singletons under DontDestroyOnLoad. Chapter 1 runs at ~160 fps on desktop with the HUD, food-rain pool, NavMesh ghosts, and dialogue system live.

Narrative designers write meaning; engineers don't bottleneck.

§ 08 / Pipeline

Small team. Unity 6. Claude Code.

↳ how the scope became tractable

The project was built by a small team in a short window. The pipeline that made the scope tractable was as much about how intention became execution as it was about headcount.

  • Design docs in markdown. Every chapter arc, system, and mechanic drafted in markdown. Claude read those directly and generated Unity C# scaffolding matching spec — no manual translation layer. The repo's ~27k-word systems documentation is itself co-authored this way.
  • GenAI → Meshy → Unity. Narrative brief → Sora video concept passes (motion language) → Midjourney / ChatGPT image sheets (the NPC Cheatbook and Ghost Bible) → Meshy 3D generation → Unity polish. The five ghost archetypes (Listener, Performer, Commuter, &c.) and Serna's before/after studies were built this way.
  • Tools alongside systems. The editor toolkit was built in the same sprints as the runtime systems. Debug Console, Dialogue Editor, Variable Store Browser — all present from sprint 1, not bolted on.
  • Open vocabulary. [SerializeReference] + reflection means the game's moral verbs are open-ended by architecture, not by committee.
  • Zero cross-system polling. Every manager fires Actions. Every UI element listens. Nine singletons that never talk over each other.
  • Sub-agents cross-reference. Before writing new utilities, a research sub-agent scans existing scripts — preventing the classic LLM failure of re-inventing solved problems.
  • Senior-engineer reflexes on tap. HashSet<int> for animator param validation; manual backward loops to avoid RemoveAll allocation; 0.15s-coroutine with 2s cache instead of per-frame scans.
  • Notes → design → code in a day. The Iteration 1 → 2 pivot happened in weeks, not months.

This is not "AI wrote the game." It's that the ratio of intention to execution inverted. The human job became sharper — decide what Serna's silence should feel like; decide whether the fail-soft cascade should produce compassion or suspicion; decide which objectives should be Hidden — and the translation from decision to working build compressed to hours.

The human decides what to make. The tooling holds the line between decision and build.
§ 09 / Argument

The mechanic is the therapy.

↳ what the project argues about wellness games

The category of "wellness games" is crowded and thin. Most titles either gamify meditation or decorate a meditation app with game aesthetics. Both approaches preserve the split between the game part and the therapy part. The Karma Project's argument is that this split is the bug.

The mechanic is the therapy. The system is the ethics. The aesthetic is the diagnosis.

When the player sustains a hum to close a chapter, the physiological down-regulation is not a side-effect — it is the win state. When Sammy carries a loaf of bread across a level and places it at the feet of a suffering ghost, the meaning is in the thumb holding the pickup button, not in the dialogue box that follows. When the Hungry Ghost realm is rendered as a pleasant-looking village full of lonely spirits eating uneatable food, the environment is teaching the chapter's thesis before any NPC has opened their mouth. When the player fails an objective and the game responds with a compassionate fallback instead of a reset, the architecture itself is rehearsing the lesson.

The pivot from Iteration 1 to Iteration 2 is, in the end, a pivot from games as carriers to games as the thing itself. Iteration 1 carried the lesson in dialogue; the game was the vehicle. In Iteration 2, the game is the lesson. Every layer — the state machine, the visibility tiers, the fail-soft cascade, the event architecture, the hum-dial, the silent cat, the uneaten cake on the bench — is an expression of the same thesis.

And that is, as it happens, a deeply Buddhist answer to a design problem.

↑ the win state of the game and the calm state of the player are the same event.