Inspiration

Tamagotchi taught us that pixels can be loved. Reddit taught us that communities can keep anything alive - or hilariously kill it. Commune Critter merges the two: one creature per post, and the whole community shares its fate. The daily question that hooked us: "what did we become overnight?"

What it does

Every post hosts a single shared creature. Each redditor gets 3 actions per day:

  • Feed - small instant heal, plus an aggregate overnight gain
  • Mutate - vote on which trait slot (body, eyes, limbs, aura) evolves
  • Ward - contribute protection; the least-tended slot is automatically shielded

Comments are gameplay: at the nightly tick, the top-ranked safe comment containing a recognized keyword becomes the creature's instinct (ferocity, hunger, guardian, or chaos) - it changes real health math and steers which trait mutates and in which direction, credited to the comment's author on the creature itself.

Each morning a reveal card tells the story of the night: how much the community fed it, whose comment became instinct, what mutated, what was shielded, and the health transition. Health drives at-a-glance visuals - thriving sparkle, struggling slump, dying decay particles, dead X-eyes.

If the creature hits 0 health, it dies - and the scheduler automatically hatches a Generation N+1 successor post that inherits two trait slots from its ancestor. The lineage never needs a human to continue.

How we built it

  • Devvit Web (Node 22 + Hono) for the serverless backend, Redis for per-post creature state, daily action counters, and lineage tracking
  • Devvit scheduler runs the nightly tick (decay, feed aggregation, instinct resolution, mutation, protection, death/succession); mods can also trigger it on demand
  • Reddit API pulls ranked comments; a static keyword-bucket table (4 instinct buckets x ~20 words) plus a blocklist turns comments into deterministic gameplay effects - no runtime AI
  • Phaser renders the creature procedurally: layered trait composition (body/eyes/limbs/aura variants), tweened posture and bobbing, particle systems per health stage, and the reveal-card overlay

Challenges we ran into

  • Making comments matter mechanically without an LLM: we settled on static instinct buckets with a safety blocklist and ranked-comment fallback, so it's deterministic, safe, and fully testable
  • Designing Ward so three actions stay legible: it auto-shields the least-tended slot instead of adding a second voting system
  • Getting the succession loop airtight: the same tick that applies decay checks for death and spawns the next generation, so the retention loop never depends on a moderator

Accomplishments that we're proud of

  • A full life-death-rebirth loop verified end-to-end on a live subreddit: actions, instinct extraction from a real comment, correct tick math, and automatic Gen 2 succession
  • Comments as a first-class game verb - the most Reddit-native mechanic we could build
  • A creature that reads at a glance: you can tell thriving from dying without reading a word

What we learned

  • Devvit's scheduler + Redis + custom posts are a complete game backend - the platform disappears once state is modeled per-post
  • Deterministic design (fixed thresholds, static buckets) beats cleverness under a deadline: every mechanic is unit-testable
  • Aggregate-choice gameplay creates drama no single-player system can: nobody controls the creature, everybody blames each other

What's next for Commune Critter

  • Majority-vote Ward targeting and richer trait trees
  • Lineage museum: a hall of ancestors showing each generation's final form and cause of death
  • Instinct seasons: rotating keyword buckets so community meta-vocabulary evolves
  • Cross-subreddit breeding events between creatures

Note for judges

The Devvit app listing link may show a 403 while Reddit's app review (required for apps that create custom posts) is pending. The live demo post on r/CommuneCritter is the primary judged artifact and is fully playable.

Built With

Share this project:

Updates

Submission history