The hook in 15 seconds
One redditor hides a character inside the supermarket. Another redditor hunts through that same world later, finds the character, and sees FOUND u/username. The hidden player receives a Reddit DM saying who found them and where it happened.
The hunter can post the find or their final score below the game. The hidden player can replace their hide immediately. One person's creation becomes another person's hunt, even when they are never online together.
How it works
Every day, one shared 3D supermarket opens inside a Reddit post. Players can hunt, hide, or do both.
Hunt: Each hunt is one focused 150-second run with up to 12 hidden characters. Start with five mistake chances, move through the store, and check anything that seems out of place. A wrong check uses one chance; a correct find restores one, up to five. The run ends when time expires, every target is resolved, or all chances are gone.
Hide: Walk through the same world, scout a reachable location, sample the surrounding colors, paint your character, choose a pose, adjust the body, and place it into the scene. That character can then appear in another redditor's hunt. Built-in characters keep a new or quiet community playable until enough people have contributed their own hides.
Scoring and reasons to return
- Easy find: 100 points
- Medium find: 125 points
- Hard find: 150 points
- Each unused mistake chance: 20 points
- Best consecutive-find streak: 10 points per find, capped at 50 bonus points
Clearing every available target earns a hide token. Completed scores build the daily hunter leaderboard and can be posted below the game as a challenge.
Hiding is ranked differently. BLEND IN tracks time hidden, appearances in hunts, finds, and whether the character survived until Closing Time. The survivor board ranks the longest-running hides. When somebody finds me, the DM gives me a reason to reopen the post, see who did it, and try a better spot immediately.
Why the social loop matters
The username reveal turns a target into a person. The DM connects two redditors through something they did inside the game, while the comment thread gives them a natural place to compare scores or talk about the find.
I deliberately kept this lightweight. There is no forced chat or friend request. The game simply creates a shared moment: I found what you made, now you know it was me.
A deeper hiding system
Hiding starts inside the live 3D world rather than on a separate placement map. Players can use floor positions, align against fixtures, or perch on supported surfaces. The editor keeps the real surroundings visible so every choice is made in context.
Painting includes brush, fill, erase, sample, live eyedropper, scene-derived colors, brush sizing, undo, and redo. A live blend meter provides feedback without choosing the answer for the player.
There are ten body shapes: Stand, Crouch, Lean, Sit, Kneel, Reach, Flat, Ball, Flatten, and Box. Both arms can be selected and rotated independently. Fine controls adjust depth, direction, and rotation after scouting.
Creative hiding still has to be fair. The server validates the position, reachability, transform, colors, paint grid, pose, arm angles, and sightline. At least 40% of the character must be visible from one reachable hunter position. The goal is to fool somebody who could have seen you, not disappear inside the level.
Inspiration
BLEND IN was inspired by MECCHA CHAMELEON, especially the moment when another player looks directly at a hiding place and still walks past. Player discussions made it clear that the funniest stories came from near misses, strange positions, and imperfect paint jobs that somehow worked.
I wanted to explore that feeling in a different direction. BLEND IN is asynchronous and persistent: Redditors contribute to a shared world, find one another hours later, reveal usernames, trigger DMs, and continue the story in the post. The art, world, rules, editor, validation, and community loop are original to this project.
Why it belongs on Reddit
The Reddit post is the lobby, game board, scoreboard, and conversation. No friend codes or scheduled sessions are required. Someone can hide during lunch and another person can find them that evening.
The community also creates the game content. Every new hide changes a future hunt, score posts give the comments something to compete over, and Closing Time results give the subreddit a shared daily story.
How I built it
BLEND IN runs entirely inside Reddit as a Devvit Web app. The feed entry stays lightweight; expanded play loads the Three.js supermarket, first-person controls, painting tools, pose editing, and reveal effects.
The backend uses Devvit's Node 22 environment with Hono and Redis. It owns identities, hunts, scores, placements, finds, DMs, results, rankings, and validation instead of trusting important outcomes to the browser.
Player expression is visual and bounded to scene colors, predefined body shapes, adjustable arms, and validated locations. There is no free-form text, image upload, voice, or in-game chat.
What I am proud of
- The complete social loop is live: hunt, username reveal, DM, hide, rankings, result posts, and score challenges.
- The mobile-first editor supports ten body shapes, independent arm control, world sampling, physical placement, and fairness checks.
- The app has an original visual identity in both the Reddit feed and expanded mode.
- The project has 141 automated tests and passing type, lint, and production-build checks.
- Version
1.0.0is installed publicly inr/blend_inwith a playable example post.
What's next
I plan to rotate the world theme so players learn new visual rules instead of memorizing one store. I also want richer creator history, community events, and more ways for a subreddit to shape the next world.
The part I want to protect is simple: find a real redditor, learn who was behind the hiding place, leave something clever for the next person, and keep the community loop moving.
Built With
- devvit-web
- hono
- node.js-22
- redis
- three.js
- typescript
- vite
- vitest

Log in or sign up for Devpost to join the conversation.