Inspiration
My favorite part of the day is playing word games—NYT Wordle, Connections, Spelling Bee, etc. The only problem? Sometimes I want more than just a daily puzzle. I wanted to create a fun, word-based game that gives players their daily dose of fun and allows them to create puzzles for others to enjoy (a selfish ploy to have more puzzles to play). While many games focus on singular words, fewer focus on pairs of words. I became fascinated with collocated words—pairs of words that commonly appear together. These challenge players to think creatively and flex their language skills while having fun.
That's where PhraseMe comes in. The name comes from the concept of collocations—phrases or word pairs that are commonly used together in everyday language. In PhraseMe, players work with these familiar word pairs, making it a unique twist on typical word puzzles.
What it does
PhraseMe is a word puzzle game where players guess a series of collocated word pairs. These can be common two-word phrases (e.g., "hot water"), split-up compound words (e.g., "water-mark"), or even proper nouns (e.g., "Mark Twain"). Players can solve puzzles, create their own, and compete to top the leaderboard. To keep things engaging, there are daily puzzles and flair rewards to showcase all the brain-bending work you've been doing.
How we built it
The game was built using Devvit Blocks for its flexible development environment and integration with Reddit-like features, Redis for fast, real-time data storage (helping us manage things like leaderboards and daily puzzle data), and TypeScript to maintain clean, type-safe code throughout the project.
Here's a deeper look at the tech stack:
- Devvit Blocks: The Blocks framework made it easy to create a game that interacts with the Reddit API, allowing users to post puzzles and interact with them seamlessly.
- Redis: For managing the high volume of daily puzzles and keeping track of user progress, I used Redis as an in-memory data store. Redis is great for fast read/write operations, which is essential for features like updating leaderboards in real time and storing user-generated puzzle data.
- TypeScript: TypeScript was my go-to language for building a strong, maintainable codebase. It allowed me to ensure type safety and catch potential bugs during development, which helped maintain a smooth user experience as the project grew.
Overall, the combination of these tools gave me a flexible and scalable platform to bring PhraseMe to life, while ensuring it would be easy to update and expand in the future.
Challenges we ran into
As a new Reddit user (and mostly a lurker), I had to figure out how to engage users and keep them coming back. Posts quickly get buried, so I needed a strategy to keep people playing. I opted for scheduled daily content to ensure there's fresh, fun content every day and player-generated puzzles so users can create and share their own puzzles. As a new user to Reddit development, I also had to learn how to integrate Reddit-like features, such as user-generated content, leaderboards, flair, and a system to keep people interested.
Accomplishments that we're proud of
I’m proud of how I integrated Reddit-like features to bring word puzzle lovers together. The ability for players to generate their own puzzles and share them, along with a leaderboard and flair, helps create an interactive and engaging experience. Despite being new to Reddit development, I’m pleased with how well the game captures the spirit of the platform and encourages community involvement through daily scheduled content and user contributions.
What we learned
The biggest lesson was learning how to balance game mechanics—creating puzzles that are fun, bite-sized, and not too difficult. I also learned how to engage users in a way that fits the platform. Reddit and Devvit were new to me, so I had the opportunity to dive into understanding Redis and refreshing my knowledge of hashmaps, which was a great learning experience.
What's next for Collocation Game
Currently, I’m the one creating the daily puzzles. But I found an API that can generate puzzles, which means endless daily puzzles (and since I didn’t create them, I get to play them too). I’d like to use this API to help users generate their own puzzles—auto-suggesting pairs if they’re stuck. I’d also like to support different puzzle sizes—right now, each puzzle is five words long, but I want users to be able to create puzzles of various lengths.
Additionally, I plan to migrate the game to webviews to better customize the design and user interface. While the current framework is functional, webviews will allow for greater flexibility and creativity in designing the puzzle grid, leaderboard, and flair system. This upgrade will enhance the user experience with a sleeker, more interactive interface that feels engaging and modern.
I also plan to add an archive feature so players can easily review past daily puzzles and see which ones they've completed. To enhance replayability, I want to add a randomizer for unsolved puzzles, making it easier for players to keep playing without searching for new ones. Lastly, I’d love to implement a rating system for puzzles (both daily and user-generated) based on difficulty, fun, and the number of solvers. This will help highlight the most popular puzzles and reward users with flair for creating ones that others love.
Built With
- devvit
- redis
- typescript
Log in or sign up for Devpost to join the conversation.