Inspiration
Reddit is at its best when many people contribute a small piece to something much bigger. I wanted to turn that feeling into a game.
The idea behind One Tile Trial is simple: every player may add exactly one tile to a shared level. Nobody controls the whole design, but everyone leaves a mark. The next day, building closes and the entire community has to run the level it created together.
That creates a fun daily cycle: today you might place a helpful spring, a tempting coin, or a very suspicious spike. Tomorrow, you have to survive everyone else's decisions.
What it does
One Tile Trial is a community-built auto-runner made directly for Reddit.
During the daily Build phase, each Reddit user can place one ground tile, spike, coin, bounce pad, or gap. The first builder also chooses the level length, background, and music.
On the following day, that same post becomes the Run phase. Players race through the finished level, collect coins, avoid hazards, and compete on the leaderboard. Completed runs can be shared as Reddit comments with the player's time, deaths, and collected coins.
To prevent the daily level from becoming frustrating or impossible, every placement is checked on the server. Protected areas, hazard limits, gap lengths, spike density, coin limits, and the remaining playable route are all validated before a tile is accepted.
Players also earn coins for the shop, where they can unlock matching tile sets and Tile Guy character colors.
For people who want more freedom, Crazy Worlds provides a separate creator mode. Players can use their unlocked assets, mix different visual themes, choose the finish position, test their creation, publish it, and share it as its own playable Reddit post. Published worlds can be discovered and rated by the community.
How I built it
The project is built with Reddit Devvit Web, TypeScript, React, Vite, and Phaser.
React handles the menus, builder, shop, leaderboards, Crazy Worlds browser, and responsive layouts. Phaser powers the actual auto-runner, including movement, jumping, collisions, coins, bounce pads, hazards, animation, and the finish sequence.
Devvit Redis is the canonical data store. It keeps track of daily levels, placements, user inventory, runs, leaderboards, published Crazy Worlds, votes, and the Build-to-Run lifecycle. Server-side locks protect important actions from duplicate requests and race conditions.
The game also manages its Reddit posts automatically. A Build post becomes the next day's Run post, while a new Build post is created. The current Build and Run are kept visible as community highlights so they do not disappear underneath user-created worlds.
Challenges I ran into
The hardest problem was balancing community freedom with fairness.
If every placement were accepted without restrictions, a few players could fill the level with spikes, create impossible gaps, or use coins for farming. I built a validation system that checks every edit while still leaving enough freedom for surprising and funny levels.
Responsive design was another major challenge. A Reddit game has to work inside a feed preview, a desktop window, a mobile fullscreen view, and a rotated Wide Mode. The Phaser camera, canvas, controls, builder grid, and overlays all had to adapt without stretching the pixel art or hiding important parts of the level.
Audio also required more work than expected. Music must pause when a menu opens, resume when the player returns, stop when the WebView closes, and never overlap with previews or other game layers.
Finally, the daily post lifecycle and concurrent Redis updates needed careful handling. A single delayed or duplicate request should not create two tiles, award coins twice, or accidentally change unrelated posts.
What I learned
I learned that building a Reddit game is not only about the game loop. The post itself, its preview, comments, voting behavior, mobile WebView, moderation tools, and daily community rhythm are all part of the experience.
I also learned how useful strong constraints can be. Allowing only one tile per player sounds limiting, but it gives every placement weight and makes the final level feel genuinely communal.
Most importantly, extensive testing on mobile, desktop, fullscreen, and different user roles made it clear how many small details separate a working prototype from something people can comfortably return to every day.
What's next
The next step is to let real communities shape the balancing. I want to tune hazard limits, rewards, level lengths, and the shop economy using actual play data.
Future additions could include seasonal world packs, creator challenges, special community events, more Tile Guy colors, and better discovery tools for Crazy Worlds.
The core idea will stay the same:
One person. One tile. One shared trial.
Log in or sign up for Devpost to join the conversation.