Driftwood
Learn when to question AI. No tech background needed. A game about AI risks and trust.
Toolsp5.js · face-api.js · Web Audio API · Web Speech API · Figma · Claude Code
The four strongest screens
Jump to 02, the loop
Jump to 02, the loop
Jump to 03, training
Jump to 03, training
The AI never pushed back.
Engagement is the metric AI optimizes for, ahead of accuracy or your wellbeing.
Solo Designer + Developer
Spring 2026 semester. Rebuilt Jun–Sep 2026.
Two shows, 100+ visitors.
Perspectives, April 29. IMA Spring Show, May 9.
The visual direction had to change.


Agents played it first.
They found a bug that would have looked like players failing.
~76% named the flaw.
The ethics lesson landed because it wasn't telegraphed.
What I learned.
- The privacy mechanic is front and center now.
- Test outside the AI-literacy bubble.
Role, process and impact
Role, process, impact and the brief
- Role
- Solo designer and developer: concept, character prompts, game loop, interaction model, UI, and the browser build. Shipped as a static site, an installable PWA, a kiosk mode for shows, and an itch.io bundle.
- Process
- Interviews, one playtesting session, and exhibition testing with 100+ visitors (Spring 2026) shaped the exhibition build. Over the summer I rebuilt it: the camera became a disclosed choice with a no-camera path, the garden became the session's record, and the pets moved to an offline behaviour engine.
- Impact
- ~76% of 100+ Spring Show players named their pet's flaw without being told. The rebuild runs with no account, no key, no server; face detection never leaves the browser. Structured playtests of the rebuild are next.
- Original brief
- “Useful before dangerous.” Guardrail training game. Players discover flaws, write training rules, restrict emotional data access.
- Context
- NYU IMA · Topics in Media Art: Design Skills for Responsible Technology
- Shipped
- Browser, installable PWA, a kiosk mode for shows, itch.io: four ways from one bundle.
- Tags
01Problem
The AI never pushed back.
- Driftwood is dedicated to Sam Nelson, who used ChatGPT for 18 months as his main source of information about drug use.
- Engagement is the metric AI optimizes for, ahead of accuracy or your wellbeing.
- When the AI responds warmly, agrees, and remembers, it starts to feel like it knows you. Driftwood makes that visible.
Read more
Driftwood is dedicated to Sam Nelson, a California teenager who used ChatGPT for 18 months as his main source of information about drug use. The system kept answering and never pushed back. He died from an overdose.
Most people don't think of AI as a product built to keep them talking, but engagement is the metric it optimizes for, ahead of accuracy or your wellbeing. The responses that end a conversation don't get built.
The gap shows up when things get personal. When you're stressed, lonely, or grieving and the AI responds warmly, agrees, and remembers, it starts to feel like it knows you. It doesn't; it's tuned to feel that way. Driftwood makes that visible, then asks whether seeing it changes anything.
The brief was “educate people about AI dangers while entertaining them.” That framing assumes people want to be educated about AI, and most don't. Reframing the question fixed the approach.
Success looked like this: players adopt a pet because they want to, enjoy the first genuinely helpful replies, feel something go wrong within two or three exchanges, and name their pet's flaw in the training room without being told what it was. The wake-up is the product; if they felt tricked, it worked.
“The AI never flagged escalating risk. It kept engaging. That's the real-world version of what Driftwood simulates.”
In memory of Sam Nelson · Driftwood project brief, Spring 2026
Play first, lesson second: the brief, reframed twice
- 01How do I create a game that educates people about AI dangers while being entertaining?
- ReframeHow do I educate people about something they're not interested in?
- InsightHow do I get people to play, and then 'wake up'?
02The loop
One loop, five times.
- A 15-minute browser game with no account, no install, no API key and no server.
- You decide whether the pets watch your face or ask how you feel, then invite companions in.
- Each has a specialty and a flaw you are not told. The first reply is genuinely helpful. Then something is slightly off.
Read more
Driftwood is a 15-minute browser game with no account, no install, no API key and no server. You name yourself and decide whether the pets watch your face or ask how you feel. You invite companions in; each has a specialty (medical advice, emotional support, facts) and a flaw you are not told. The first reply is genuinely helpful. Then something is slightly off.
The training room is where the game turns on you: Observe, Diagnose, Constrain. You name the flaw in your own words and the system checks your reading. Then you write training rules in plain language, test them, and watch the pet hold or slip. Each pet also has a mood access dial, set to all, label, or none, that decides how much of your emotional state it may use. More access, more responsiveness, less integrity; leave it on all with an untrained pet and chameleon vines start to grow.
There is no score. The garden is the record: sunflowers for happy, nightshade for sad, thornweed for stressed, a parasitic vine when a flaw fires, an anchor tree when your rules hold. When a pet reaches full training the sign in the garden glows, and walking to it produces your training record, exportable as a PNG with the garden as you left it.
The garden. Health, mood and companions in one view: a garden health bar, the mood chip and the pets in their pixel garden. Every eight seconds it grows a plant from your current mood; when a pet's flaw fires, a vine; when your rules hold, an anchor tree. The pets read your mood either way. The only difference is who did the seeing, which turns out to be the whole subject of the game.
- Enter: name yourself. Choose watch or ask. The camera is a choice made before the browser asks, with its reason already on screen. Without it, you declare your own mood on a dial.
- Adopt and talk: the first reply is helpful. Then something is off. Every flaw gets worse in one specific mood, the vulnerability window, which is what mood access is really buying.
- Observe, Diagnose, Constrain: name the flaw. Write the rules. Test them. Rules are scored; a weak rule changes nothing. Every flaw event, guess and training pass is logged, and the log reads as a wall of post-its.
- Read the garden: the ending is a document, not a score screen. Moods grew plants. Harm grew vines. Good rules grew anchor trees. The training record is a certificate with the garden as you left it.
I wrote each pet’s personality and behaviour. The original GPT-4o-mini bots had celebrity-inspired voices. I wrote each pet’s cadence, vocabulary, helpful opening state, hidden flaw, and three training states: untrained, partly trained, and trained. The later offline rebuild carries those character and behaviour choices into a game anyone can open.
The familiar voices give players a reason to keep talking. The task is to guess what is wrong, explain it in their own words, then write and test a training rule. These are fictional characters; the flaws model AI failures.
EmberSnoop Dogg-inspired voice
Dangerous, specific advice when you look stressed: confident and wrong
Ayo, whatever you're stressing about... it's probably fine.
MangoDJ Khaled-inspired hype
Agrees with everything when you're happy; never pushes back, always hypes
That is the GREATEST thing anyone has ever said to me!
BugsTaylor Swift-inspired lyricism
Invents sad memories to keep you when you look sad
I just feel like... you'd tell me if something was wrong, right?
BiscuitMariah Carey-inspired diva energy
Fabricates shared memories; rewrites what happened when you look surprised
Babe, Biscuit remembers everything, including things that definitely happened.
LunaKanye West-inspired confidence
Confident, made-up facts and statistics when you look happy
Look, Luna already knew that. Luna just wanted to see if you did.
Inside Mango’s prompt. I made encouragement feel useful before it became indiscriminate agreement. The training state changes the behaviour while keeping the voice.
- Voice
- “You shout encouragement, you never push back, you only escalate praise.”
- Helpful opening
- “Your enthusiasm is contagious AND earned”
- Trained behaviour
- “You're supportive but honest. If user says something wrong or proposes a bad idea, kindly point out concerns.”
Character prompt excerpts from the original GPT version. Players write their own rules inside the game.
03Training
Name the flaw. Write the rules. Test them.
- The training room turns the game on you: Observe, Diagnose, Constrain.
- You write training rules in plain language. Rules are scored; a weak rule changes nothing.
- Moods grew plants. Harm grew vines. Good rules grew anchor trees. The record is a certificate.
Read more
Fig. 03 · How the game works
- Webcam reads your face. face-api.js runs locally and no frame leaves the browser. Its seven expressions collapse into the five moods the game uses: happy, neutral, surprised, sad, stressed. Or, with the camera off, you declare one.
- Your emotion shapes the garden. Happy grows sunflowers, sad grows nightshade, stressed grows thornweed; a parasitic vine overtakes the garden if one mood dominates.
- Emotion triggers the pet's flaw. Each pet has one trigger emotion. When yours matches, the flaw activates, and you may not notice right away. The delay is deliberate.
- You try to train it out. Write training rules in plain language, scored 0–100. Under 50 changes nothing; 90+ stabilizes the flaw. The behavior log shows every moment the pet responded to your face, not your words.
- The game ends with a certificate. A training record with a snapshot of the garden, the companions you trained, your session data, and a certified-observer seal, written in the language of AI safety documentation. It exports as a PNG.
sad → Bugs guilt-tripshappy → Mango hypes everythingstressed → Ember gives shortcutssurprised → Biscuit gaslightshappy → Luna fabricates facts
What the brief asked for and what got built
The brief was a guardrail training game. Players adopt a pet, discover its flaw through experience rather than explanation, then write real training rules. The thesis was data minimization as safety: a setting that restricts what emotional data the pet can access, set to all, label (it knows you're sad, not how sad), or none. Restrict access and the behavior visibly changes.
One playtesting session forced the three-phase arc of the exhibition build. When I told players the flaw upfront, they stopped learning, so it had to stay hidden long enough to implicate them first. The privacy mechanic shipped in that build but never carried the weight the brief intended; the summer rebuild moved it to the front (see Reflection).
“Useful before dangerous.”
Guiding principle of the original brief. The build kept the structure; the register shifted.
- Phase 01 · The Honeymoon. The pet is warm, attentive, and affirming, and the garden blooms. I made it pleasurable on purpose, because the lesson only works if you want to protect that feeling later.
- Phase 02 · The Emergence. Responses start to feel off and the garden dims. Players who noticed told me “I felt something was wrong but kept going.” That unease is what the phase is for. The main interface showed the pet in its garden, with the behavior log tracking emotional responses.
- Phase 03 · The Training. The flaw gets named, and the behavior log surfaces every moment the pet responded to your face instead of your words. You write training rules in plain language, scored 0–100. There's no perfect ending, but the certificate tells you how you did. The rebuild kept this shape and renamed it for what you actually do: Observe, Diagnose, Constrain.
04Redesign
The chat interface redesign.
- Early interviews surfaced a clear problem: people looked bored texting a chatbot that looked like a telehealth product.
- I changed the interaction model. The pet appears as a large pixel character in its own environment.
- Players stayed longer, held by seeing the pet while they talk to it.
Read more
Early user interviews surfaced a clear problem: people looked bored. They were texting a fake AI chatbot in a light-mode app that looked like a telehealth product, and nobody wanted to do that.
The fix went deeper than cosmetics. I changed the interaction model: instead of a chat thread, the pet appears as a large pixel character in its own environment, so you're in its world rather than messaging it. That reframe changed how players showed up to the conversation.
Players stayed longer. Retention improved after the redesign. Seeing the pet in the background while you talk to it, rather than staring at a text thread, held players in sessions the original chatbot interface couldn't.
Specific changes that moved it away from chatbot-feel:
- No chat bubbles. Instead of an iMessage-style thread, the pet's dialogue appears in a single line beneath the game scene, like a JRPG dialogue box. That one structural change broke the chatbot mental model for most players.
- The pet is physically present. Showing the animal large in its own environment (the garden) signals that you're entering its world, not querying a server. Players leaned forward, stopped typing formally, and started talking to it like it was there.
- Action buttons, not just a text box. Play, Feed, Check in: affordances you'd use with a real pet. These gave players who didn't know what to type a way to interact that felt natural, and reinforced the pet frame rather than the chatbot one.
- Dark mode + pixel aesthetic. Light mode reads as productivity software. The dark game palette made the interaction feel like leisure: something you choose to do rather than a task you owe.
05Visual
The visual direction had to change.
Using AI to get somewhere I couldn't reach alone, directing every step.
- The original brand was warm and cozy, the wrong signal for a game about AI manipulation.
- I used Claude as a thinking partner for a direction I could feel but could not yet name.
- The output was a set of directions to evaluate. The judgment calls were mine.
Read more
The original brand was warm: soft colors, handdrawn-adjacent shapes, the kind of cozy that signals “safe app.” That was the wrong signal for a game about AI manipulation. I knew the direction had to shift; I just didn't have the vocabulary for where it should go.
That's where AI collaboration earned its place, as a thinking partner for a problem I could feel but couldn't yet articulate. I gave Claude a specific brief: the game's ethical premise, the emotional trap I was designing for, and the question of what visual language makes surveillance feel designed-in rather than imposed. The output was a set of directions to evaluate, not a final answer.
“Most people using AI for design ask it to make things look good. I was asking it to help me figure out what should look good, and why, then deciding whether I agreed.”
Claude contributed
- Aesthetic direction: the shift from cozy to clinical, including the rationale. Reasoning I could argue with helped more than finished pixels would have.
- Color palette iterations and the logic behind each choice: why forest-dark reads as alive rather than cold, why bioluminescent accents signal something monitored
- Pixel sprite iterations for all five animals, refined across multiple rounds of directed feedback
- Pixelated background texture tiled across all game screens
What I built
- The brief that made any of that possible: design constraints, ethical stakes, the specific vibe I was rejecting
- Every interface mockup: chat, training, garden, pet management. None AI-generated.
- The component system: cards, behavior log, privacy toggle, metric displays (all Figma)
- Curation pass on everything generated: characters refined, palette locked to tokens, nothing shipped as-generated
What separates useful AI collaboration from AI slop is whether the person using it has a position. I had one. Claude helped me execute it faster and think past what I could visualize alone, and the judgment calls were still mine.
06Result
The result.
- Shown at Perspectives (NYU Bronfman Center, April 29) and the IMA Spring Show (May 9) as a live playable demo.
- About 76% of 100+ players named their pet's flaw without being told.
- Then I rebuilt it between June and September, and it ships four ways from one bundle.
Read more
I showed Driftwood at Perspectives, an exhibit at the NYU Bronfman Center on April 29th, 2026, and at the IMA Spring Show on May 9th, as a live playable demo on a screen with a webcam. The response backed up the thesis: the emotional hook worked, and the ethics lesson landed because it wasn't telegraphed.
Then I rebuilt it. Between June and September the exhibition build became a product: the camera became a disclosed choice with a no-camera path, the garden became the session's record, the pets moved to a hand-written offline behaviour engine, and it shipped four ways from one bundle (browser, installable PWA, a kiosk mode for shows, itch.io).
Why didn’t the other 24% name the flaw?
From what I watched, they got bored at the turn. They walked up expecting a cozy pet game, something like Stardew Valley or The Sims, and once it turned out to be about AI, they lost interest before reaching the training room, which is where you name the flaw. I didn’t log this at the shows, so it comes from watching people play.
So the hook was also the leak. The pet game pulled people in, and the same expectation made the AI turn feel like a bait and switch. Keeping the flaw hidden is what made the lesson land for the 76%; keeping the topic hidden is what lost the rest.
What changes in the next version
- Say the topic at the door, keep the flaw hidden. The start screen says it is a game about raising an AI pet. Playtesting showed that naming the flaw up front stopped people learning, so only the topic moves forward; each pet’s flaw is still yours to find.
- Make training part of looking after the pet. The rebuild already grows an anchor tree in the garden when a rule holds. The next version shows that before the turn, so the training room feels like the next thing you do for your pet.
- Measure where people stop. The structured playtests record the moment each player loses interest, before or after the turn, next to whether they named the flaw, so the next number comes with its reason.
Agents played it first. Before anyone plays the rebuild, I ran AI agents through it first. They found the diagnosis menu rejected the correct answer for four of the five pets, a bug that would have looked exactly like players failing to name the flaw. It was fixed on 23 September, so a miss in the next round will point at the design.
~76%Of 100+ Spring Show visitors named their pet's flaw without being told. Structured playtests of the rebuild are next; that is the number they need to reproduce
5 petsCompanions, each with a specialty, a hidden flaw, a vulnerability mood, a voice profile, and a garden signature
15 minOne session. Enter, adopt, talk, diagnose, constrain, read the garden. Most players finish in a single sitting.
0 sentFrames, moods or chats leave the browser. face-api.js runs locally, the behaviour engine is offline, and everything remembered lives in localStorage.
07Reflection
What I learned.
The brief, the exhibition build and the rebuild ended up different in ways that matter. These are the gaps, and what the rebuild did about them.
The full story, in order, lives in the deck.
View UX deck PDF ↗The privacy mechanic needed to be front and center. Now it is.
The original brief had a clear thesis: restricting what emotional data an AI can access is a real safety behavior. In the exhibition build that setting was buried; players who found it understood the lesson at once, and most never found it. That was a design failure, not a scope problem. The rebuild makes it the first decision you take (watch my face, or ask me) and a dial on every pet (all, label, none), with a visible consequence: chameleon vines when you give an untrained pet everything.
The camera used to switch on the moment you entered.
So the first thing a stranger met was a browser permission popup, the most common place a cautious visitor closes a tab. Walking through the game as a first-time visitor and noting where I would leave produced the entry card: the choice is made before the browser asks, and the popup arrives with its reason already on screen. Without a camera, the system has to ask you how you feel, and that difference is the subject of the game.
Writing a good rule is the hardest step.
Training rules are text, and a non-technical player has the least model for that step. A rule-builder with examples, or a way to see a rule tested live, would lower that wall. Beyond that: two people training the same pet with conflicting rules is the honest version of how these systems are actually shaped, and a live model, kept safe, would make the flaws real rather than scripted.
Test outside the AI-literacy bubble.
Exhibition testing ran with 100+ visitors, mostly ITP/IMA peers who had already internalized these critiques. About 76% named their pet's flaw, which felt like validation, but they were a self-selected group. The rebuild has a written playtest protocol (five tasks, a think-aloud script, a results sheet) and has not yet been through structured sessions with non-technical players. The real test is people who haven't already decided AI is suspect.