Inspiration
We wanted a game where AI could bring anything you could imagine to life. It reminded us of pretending our toys were fighting it out as kids and giving them crazy superpowers. So we built a game where one person draws and the other gets to play with what they drew, taking inspiration from Scribblenauts and Paper Mario for the level/design.
What it does
ThinkInk is a two-player puzzle game.
- Player A (Creator) draws on a whiteboard or iPad and presses BUILD. A few seconds later, the drawing appears in the world as a paper cutout that the other player can use. The shape is literal; for instance, leave a gap in your bridge, and the other player might fall!
- Player B (Explorer) is the other player, jumping between platforms and traversing through the world.
- The AI reads the drawing and decides what it is: an apple is edible, a spring bounces, a rocket flies when you press E.
The route we demo:
- The gap: Draw a bridge to get over, or invent another way to get across.
The gatekeeper: Give them any food and the gate opens. Give them anything else and they cut it into confetti. -The launchpad: the flag is on a ledge too high for any jump. You have to draw something that flies, ride it up and hop off.
Off the route, you can draw creatures that wander around, cars that drive and trampolines that actually launch you.
How we built it
Browser whiteboard -> SpacetimeDB room -> Unity (cuts out the ink)
|
Bitdeer AI Model Studio <- POST /interpret
|
traits + physics parts -> puzzles and abilities
- Unity 6.3 runs the actual world, handling the colliders and physics. Colliders are built from the ink itself, so you stand exactly on the lines you drew.
- SpacetimeDB is the backend that connects the drawer and the game. The pad and Unity are separate clients of one TypeScript module. Strokes, rooms, BUILDs and resets live in shared tables that keep both clients in sync. Roles come from the caller’s identity, so only the drawer can draw and only the player can use inventions.
- Bitdeer AI Model Studio (Qwen3.8-27B, vision) does the reading, through a small Python backend. It returns JSON: name, material, traits, plus up to five physics parts, each anchored to a spot on the drawing. The backend checks it against our vocabulary and clamps every number, and Unity checks it again, keeping AI-generated abilities within limits we can safely simulate.
Built with: Unity, C#, SpacetimeDB, Python, Bitdeer AI Model Studio
Challenges we ran into
- The model thought EVERYTHING was a bridge. It read the puzzle’s goal (“get across the gap”) and then saw a bridge in every drawing. We rewrote the prompt so it describes the strokes first, then names the most specific noun, and only uses the goal to break ties (which still happens more often than intended...).
- Our first prototype missed the point: hidden colliders meant your drawing’s shape didn’t really matter. We threw that out, moved to a side view, and made the ink itself the collider.
- Webcams are not great at whiteboards. Our webcam got grainy in dim light, and glare was a prevalent issue while testing. And any outline that touched the edge of the frame got thrown away as part of the frame: a drawn cat was reduced to just its eyes and mouth! We now average several frames, fill tiny gaps, and only drop edge shapes that actually look like the frame.
- Cutting physics scope: rope, burning, an ink meter. Each one worked a little, but not well enough for a demo.
Accomplishments that we're proud of
- Watching someone draw food and see the gate open, without anyone telling them the rule, is the essence of the whole game.
- Behaviors like the rocket launching or birds flying and being able to interact with those things is honestly just so freaking cool
- Anyone can pick up the marker, start drawing, and be playing the game just like that!
What we learned
- Letting the AI decide what something is, but not where it goes (player's job) or what shape it has (drawer's job), made it both more fun and more reliable. When the AI gets it wrong, it’s more silly instead of totally game-breaking.
What's next for ThinkInk
- Ink as a budget, so more complex inventions cost more.
- Restore deferred mechanics like rope, fire and water interactions, and more reliable ways to get intended behavior from a simple drawing
- Hosted rooms with easier remote joining
Built With
- bitdeer
- c#
- chatgpt
- claude
- codex
- powershell
- python
- shell
- spacetimedb
- unity
- wolfram-technologies
Log in or sign up for Devpost to join the conversation.