Inspiration

Reddit communities already behave like living societies. People debate, vote, help one another, form traditions, and remember what happened before.

That made me ask:

What if a subreddit did not just play a game, but had to build and protect its own world?

I wanted to reverse the usual city-builder formula. Instead of giving every player a private town, One More Dawn gives every subreddit one persistent shared city. It begins as a fragile Camp. Every contribution changes it. Every decision carries into dawn. Every loss remains visible until the community rebuilds it.

Each subreddit builds one city and fights to survive one more dawn.

What it does

One More Dawn is an asynchronous survival-strategy game built for Reddit.

Each subreddit shares one city, one set of resources, one daily crisis, and one future. Players choose a survivor identity and role: Scout, Engineer, Medic, Farmer, Guard, or Speaker. They return each day to spend limited actions helping the city through food, power, medicine, defense, and shared labor.

A player’s first accepted contribution creates their persistent house in the Three.js city. The first contributor becomes the founder. As the subreddit participates, the Camp becomes a settlement with homes, civic structures, defenses, and a protective dome.

The community also makes consequential decisions:

  • Vote in a daily crisis
  • Back a Council strategy
  • Pledge protection for The Marked
  • Contribute labor to shared construction
  • Discuss city strategy through Reddit-connected City Chatter

At dawn, the server resolves the city state. A raid may strike the shield, breach the city, damage homes, or be held back by preparation. Damaged houses remain tied to their owners, and future community labor helps rebuild them.

The core loop is:

$$ \text{Contributions} \rightarrow \text{Preparation} \rightarrow \text{Community Decisions} \rightarrow \text{Raid at Dawn} \rightarrow \text{Consequences} \rightarrow \text{Rebuilding} $$

I also built Reconnect the City, a daily tile-rotation puzzle where players restore power through a damaged district network for personal Standing and city-facing progress.

How we built it

I built One More Dawn as a Devvit Web application that runs inside Reddit.

The frontend uses React, TypeScript, Vite, and Three.js. React manages the HUD, onboarding, roles, daily actions, voting, The Marked, shop, puzzle, Dawn Report, World view, and leaderboard. Three.js renders the city itself: houses, roads, growth stages, the dome, raid projectiles, shield impacts, sparks, smoke, damage, and reconstruction.

The backend uses Devvit, Hono, TypeScript, Devvit Redis, and Reddit APIs. Redis stores the shared city state, player profiles, role selections, resource totals, action limits, votes, pledges, houses, raid outcomes, damage, puzzle completion, and city history.

I made the daily resolution deterministic: the same stored city state and decisions produce the same dawn result.

$$ \text{Accepted Action} = \text{Valid Input} \land \text{Eligible Player} \land \neg \text{Duplicate Action} $$

Important actions are validated on the server. This includes daily actions, crisis votes, Council votes, pledges, puzzle completion, house registration, and dawn resolution.

Challenges we ran into

The biggest challenge was making asynchronous multiplayer feel meaningful. Redditors do not need to be online at the same time, so I designed the city around persistent contributions and shared consequences instead of real-time sessions.

I also had to prevent shared-state problems. Many players can interact with one city at nearly the same moment, so I added server-side locks, validation, idempotent house registration, and duplicate-action protection.

Building a readable 3D city inside a Reddit webview was another challenge. I had to balance visual atmosphere with mobile performance, camera clarity, load time, and interface readability.

The raid was especially difficult. I wanted it to feel dramatic without becoming a separate combat game. The solution was to make it a visible consequence of collective preparation: the dome activates, projectiles arrive, the shield may hold or breach, and the resulting damage remains part of the city story.

Finally, giving each contributor a house created a fairness problem. Losing a house could feel punishing, so I made ownership permanent and rebuilding collective.

A house belongs to one player, but when it falls, the whole city rebuilds it.

Accomplishments that we're proud of

I am proud that the city is not just decorative. Its visual state reflects the game’s actual persistent state:

  • Houses represent contributors
  • Buildings represent shared labor
  • The dome represents preparation
  • Damage represents raid consequences
  • Reconstruction represents future community effort
  • The Dawn Report records shared history

I am also proud of the “one Redditor, one house” system. It gives every contributor a visible, persistent place in the city while making the community responsible for recovery after a raid.

The game combines several connected systems into one loop: roles, daily contributions, city growth, crisis voting, Council strategy, The Marked, Reddit-connected discussion, raids, house damage, reconstruction, puzzle gameplay, Dawn Reports, and a cross-city World view.

What we learned

I learned that multiplayer does not need to be real-time to feel social. A shared world becomes meaningful when contributions persist, ownership is visible, decisions affect everyone, and consequences remain in the world.

I also learned that Reddit can be part of the game design itself. Reddit identity, comments, subreddits, and collective decision-making are not only distribution tools. They can become game mechanics.

Technically, I learned how to build persistent shared state with Redis, validate multiplayer actions on the server, resolve daily systems deterministically, protect shared actions from duplication, connect Reddit comments to game systems, and make a Three.js world respond to backend state.

Most importantly, I learned that a small rule can carry a large emotional idea:

When one house falls, everyone helps rebuild it.

What's next for One More Dawn

Next, I plan to add more Reconnect the City puzzle levels, more crisis scenarios, deeper role-specific progression, richer city-development stages, more raid outcomes, and longer-term city chronicles.

I also want each subreddit city to develop its own identity through its decisions, losses, surviving buildings, contributors, and shared history.

My long-term goal is for two subreddits to begin with the same empty Camp but eventually become completely different cities because of the communities that built them.

Each subreddit builds one city and fights to survive one more dawn.

Share this project:

Updates

Submission history