
Inspiration
Miirps started with two of my favorite games: Club Penguin and Pokémon. Club Penguin was never really about the mini-games. It was about having a little place online that was yours: your igloo, your puffles, your friends stopping by to see it. Pokémon was about the creatures: collecting them, getting weirdly attached to them, and watching them fight. Miirps is those two feelings smashed together and stuffed inside a Reddit post.

So the game is soft and cozy right up until it isn't. You spend days feeding a little blob, teaching it a catchphrase, earning its hearts. And then you send it into battle against a stranger's team, with a miirp on the line for whoever loses. The tone is cute, funny, and just a bit mean, which is exactly what makes every miirp feel valuable. A pet you can actually lose is a pet you actually care about.
What it does
Hook: A whole pet life inside one Reddit post
Adopt and collect tiny creatures called miirps! Care for them by feeding, washing, and playing with them. Give each one a personality with a name and a voice, or record your own. Decorate their home and show it off to the subreddit. And then send them to fight other Redditors' miirps off a tree stump in cinematic auto battles, where the loser gives away a miirp. Every battle becomes a Reddit post titled with your miirp's own catchphrase, and the most dramatic fight each day gets its own daily post, all without ever leaving Reddit.

Diverse Miirp Types
Twelve body shapes, seven colors, tiny arms and legs, and different sizes. A miirp's color decides its element (Fire, Ice, Nature, Electric, Dark, Fairy, Normal), its shape decides its battle role (a heart is a Healer, a star is a Mage, a bear is a Tank), and every one has a personality that actually changes how it fights: a Timid miirp runs from a fight when its HP gets low, and a Forgetful one sometimes just wanders off mid battle. Rarities go from Common to Legendary, and a Legendary is a 0.3% roll. Tell everyone when you pull one. They need to know.

Sumo-like Battles
Battles are fought on the round top of a giant tree stump, and sumo rules apply: every hit knocks the other miirp back, and getting shoved off the edge is an instant KO no matter how much HP is left. You build a formation of up to 8 miirps, elements and roles play advantage triangles (Fire beats Nature beats Electric beats Ice beats Fire, while Fairy and Dark despise each other), and the fight plays out on its own. The fighters are smart about the edge too: a battered underdog will stop running, pick the enemy standing closest to the rim, and go for the push.
Stakes are real. The winner takes a random miirp from the loser's team, and wins stars and a 25-50 strawberry bonus.

Every battle is a Reddit post
Request a battle and, if another player in your league is also looking for a fight, you're matched instantly. Otherwise, your challenge goes up as a subreddit post with a title starring your miirp and its own words, like Bomika enters the ring screaming "boop boop" or Who dares challenge Pilu?. Anyone can open the post, watch your team shadowbox a punching bag while they wait, and accept. Six leagues from Bronze to Master keep it fair: you only fight your own league, or one league away within 25% of your power. And the challenge post is locked, so nobody can guess the result in the comments before it happens.
When the battle ends, the post turns into a cinematic replay. A director camera follows the action, a narrator types out commentary letter by letter, and a colorful tug-of-war bar shows who's winning with a tiny referee miirp riding the bar. Until your first tap, the whole thing loops silently in the feed like a fight GIF.

Retention Mechanic #1: The Battle of the Day
Every day at 12:00 UTC, the game scores every battle from the last 24 hours for pure drama: ring-outs, comebacks, crits, clutch last-miirp-standing wins, underdog upsets, and quotable catchphrases. The most clip-worthy fight gets reposted with a quirky title like Kabo survived with 3 HP after screaming "chaaarge" or Miwa yeeted Bopo clean off the stage. To get that info, like the exact HP number, the game re-runs the recorded fight from its seed and reads the answer off the result. This will create funny moments and interesting discussions.
There's a fresh reason to open the subreddit every single day, and a fresh reason to fight for a spot in it.

User Contribution #1: Give them a voice. Literally yours, or a custom audio
Type a catchphrase, and your miirp says it out loud in its own voice. You can also record yourself or upload a custom audio. You hear them repeating their lines around the house while you play, and that's what makes each one feel like a little character with its own distinct personality. Then they shout those same lines mid-battle at the worst possible moments, and the best catchphrases end up in the titles of Reddit posts. It is always a blast to listen to random miirp sounds that players end up uploading.
And don't worry: if you're ever tired of listening to your miirps, you can mute them.

Retention Mechanic #2: They live little lives whether you're watching or not
Feeding, washing, and playing are tiny hands-on mini games: drag an apple over and hold for three bites, scrub with the sponge, toss the ball. Miirp needs drain gently over about a day, and nothing ever dies. Coming home is always a nice and cozy moment. Meanwhile the miirps just... live:
- They wander, blink, chat, and nap with a slow sleeping animation
- They peek in from the edge of the screen, and catching one mid-peek pays bonus rewards
- Leave two or more together, and they start chatting and dancing with each other
- Tap one to cuddle it: hearts pop, affection grows, a five-heart bond meter fills up
- Even your furniture does a silly little dance every now and then

User Contribution #2: Decorate your house and show it off
Strawberries buy furniture, plants, a pool, color themes, and storage to pack it all away. Drag, resize, and arrange everything. Then share a frozen snapshot of your house to the subreddit, where visitors can browse it, comment, and send you a friend request. The Best Houses leaderboard ranks by real Reddit upvotes. Friends can drop by your live house any time, and every comment on your house post lands in your in-game mailbox.

Retention Mechanic #3: Collect, upgrade, repeat
A daily gift box unwraps into a miirp, strawberries, or stars. Orbs are mystery boxes with a miirp inside: Common Orb for 200, Rare Orb for 600, Mega Orb for 3000, with the real odds shown right in the shop. Even the cheap orb has a 0.2% shot at a Legendary, so every pull is like a lottery ticket. Stars raise a miirp's stats, and the rarer the miirp, the stronger it can get. Save up 50 stars, and you can even unlock a second personality trait. You can also sell a miirp back for strawberries, if you can live with yourself.

From Figma sketches to living code
Every Miirp started as a sketch I drew by hand in Figma. Then, instead of exporting images, I built a system that translates the SVGs I drew into code. The game draws everything itself, live: every miirp, facial expression, the strawberry and star icons, the furniture. That's what lets one set of drawings become thousands of different miirps, recolored, resized, and mixed and matched.

Play anywhere, mobile and desktop
The post itself is the play button: on mobile, one tap expands the game to full screen. Everything drags with a finger, from miirps to furniture to battle formations. Pinch to zoom in on your house (right up to a miirp's face if you want), and the mouse wheel does the same on desktop. And since Reddit locks the webview to portrait, there's a landscape toggle in settings that rotates the whole game 90 degrees so you can turn your phone sideways and enjoy it more.

How we built it
Reddit Devvit Web, React, TypeScript, Hono, Redis, the Web Speech API, and an art pipeline that starts as hand-drawn Figma sketches and ends as pure code.
The key architectural decision: the battle engine lives in shared code and is versioned. The server runs each fight once for the real result, but the post only stores the seed, the teams, and the engine version. The client then runs the exact same engine to render the replay, tick for tick identical. This way every battle post ever made still replays exactly the fight that actually happened.
Challenges we ran into

Real Asynchronous PvP. I wanted to make engaging asynchronous battles: requesting a battle parks your team in your league's pool and puts up a public challenge post; anyone compatible can accept it at that instant or hours later. The server simulates the fight as soon as it is accepted, and the post itself becomes the replay everyone can watch. If someone was already waiting in your league, you skip the post entirely and get matched on the spot. The result feels like a duel even though the two of you were never online together.
Improving the battle mode without affecting previous posted battles. Because every post replays from a stored seed, any change to the engine changes how old fights look, and could even contradict the recorded winner. So every engine change ships as a new version, old versions stay frozen, and each post replays on the version it was fought on. That safety net let me retune the knockback five separate times: version 3 shoved off 98% of fighters, version 4 overcorrected down to 46%, and version 8 lands around 94% with smarter edge play. Not one old post broke along the way.
Accomplishments that we're proud of
A virtual pet world, an async PvP auto battler with real stakes, house decorating, a friends system, an economy, and a daily self-posting highlight reel, all inside Reddit, with every miirp and icon drawn in code.
And The Miirp Times. We wanted to keep players up to date with game changes without pulling them out of the world, so updates arrive through a diegetic newspaper in every player's home, reporting each change in character.

What we learned
Polish matters. The systems make the game work, but the feel is what makes people stay: a clean, cozy look, soft bouncy animations, and dozens of tiny touches with no mechanical purpose at all. Hearts pop when you drag your miirp around. Miirps blink, nap, and peek in from the edge of the screen. Even the UI has dynamic background animations, and some icons are interactable. None of it changes a single rule, and all of it is why many players fell in love with their Miirps.
The second lesson: players write better jokes than I ever will. The voice feature was meant as a cute toy, but the typed catchphrases became the post titles, the battle shouts, and the funniest thing in the game.
What's next for Miirps
I know it might be silly, but I've even imagined cute plushies and hand-crafted items based on the game. I really want to make this one of the best games on Reddit. I would love to grow the community and keep adding features based on what the players want. I've already been getting amazing responses and feedback from users, and I'm really thankful to everyone who has tried the game. Stay tuned for more features like trading between friends, more miirps, new decoration items, and secrets!


Built With
- devvit
- hono
- javascript
- react
- redis
- svg
- typescript
- vite
- webspeechapi

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