Inspiration

We're a big fan of word puzzles (such as cryptic crosswords)! The project originally started as a much narrower idea, where the only chains were synonyms (working title was "synonynonyms"). The first puzzle we came up with that inspired this idea was LACED ↔ SPIKED ↔ PRONGED; we liked how "SPIKED" sits in the middle meaning two totally different things depending on the neighbour you're looking at. However, this basic idea was rejected for multiple reasons; the title, while fun, is not very searchable, and "synonyms only" is a bit of a rigid mechanic with less room for creative freedom. So we came up with the idea to expand it by including other types of chains - it started off with antonyms and anagrams, and then we've added up to 8 types of chain to make the gameplay more diverse and interesting while hopefully not being overwhelming or too complicated. (The original puzzle idea is implemented here if you want to try it! https://www.reddit.com/r/wordfish/comments/1uwztfo/wordfish_synonynonym/)

What it does

It's a daily word-chain puzzle embedded directly in a Reddit post. Words are linked by various types or relationships, and some words are hidden and need to be deduced purely by their length and how they connect to their visible neighbours. There are two automatically generated difficulties per day, so there's something for both casual players and those who want more of a challenge. On top of that, there's a built-in puzzle editor; players can construct their own puzzles by choosing words and then the links between them, and then publish them as new Reddit posts! Every published puzzle can be upvoted, commented on and shared, so the idea is the subreddit's feed will fill with player-made content on top of the daily pinned puzzle; and hopefully the better puzzles will be more upvoted and rise to the top! There's also a per-user daily streak to incentivise returning to the platform every day, to solve the new puzzle and keep your streak going. Having a higher streak upgrades your flair to have a cooler fish emoji, and at 55 days you reach the SHARK!

How we built it

Devvit Web app: Hono server + Phaser client, connected over a small typed API, with puzzle data as a plain shared model (words + typed links + a "hidden" flag) so client rendering and server validation both work off the same source of truth. Phaser is doing a lot of heavy lifting for us!

  • Draggable letter tiles with smoothed drag-follow, velocity-based tilt, a squish tween on grab, staggered per-cell "flip" animations on solve, and camera-shake + flash feedback on a wrong guess.
  • A custom rope/chain renderer that dynamically routes the connector line between linked words — it scores multiple candidate paths every frame to avoid crossing other tiles, with hysteresis so the route doesn't flicker as tiles move, and eases into new routes instead of snapping.
  • Every sound effect (tap, grab, drop, erase, wrong, win) is synthesised live via Web Audio oscillators (no audio asset files at all) which kept the game small and let us tune the "feel" of every interaction by ear instead of hunting for stock SFX.
  • Community puzzles go through server-side validation (size limits, must-be-fully-linked, basic content moderation) before being turned into a real, independently playable Reddit post backed by Redis.

Challenges we ran into

We spent more time on this project specifically focusing on UX than any other we've done before. Getting the chain visuals to feel nice and tactile while making sure they are clear and understandable was a huge task that took by far the most iteration of anything in the project. Routing logic, easing, making sure they don't oscillate, making them sag slightly, modifying how they stretch - there are so many hyper-parameters that it's taken a lot to get them looking just right! Also, getting the game to render in different window sizes has been a bit of a pain and a source of lot of our time and effort, and I'm sure there are still ways it could be polished further. We've spent a lot of time optimising for mobile, and were having weird issues to do with upscaling and blurry / laggy chains and text, but hopefully they are all resolved now..!

Accomplishments that we're proud of

We're really happy with the overall level of polish; the game feels really nice to work with, on top of it being a genuinely fun idea for a game to play. Coming up with puzzles for each other and solving them has been fun!

What we learned

A lot about web dev and the Devvit platform generally, as this was our first real project with it. It was surprisingly easy to work with and the documentation is pretty great thankfully!

What's next for WordFish

We really want to add a calendar feature to view historic daily puzzles, a difficulty tagging system for user generated puzzles, and a gallery of top-voted community puzzles on a per week basis on the pinned daily. Hints were an idea that was explored but we actually went with the design decision to not implement them, to encourage more user interaction. Some daily puzzles are a bit nasty, so people may want to work together!

Built With

Share this project:

Updates