Inspiration
Some of the best daily games are balanced between being elegantly simple yet challenging. Games like Wordle and Connections show how a single clear concept can integrate into a daily routine. SumWords is designed to be one of these daily habits.
My inspiration was my curiosity. I had developed an HTML5 game that I used to play years ago with Bananagrams tiles. To do this I had downloaded a popular word file used by many existing word games. One day I wondered -- how many words in the dictionary can be evenly split between two words? So, drawing on my background working with databases, I decided to find out. Turns out there are a lot! That is when it hit me that this could become a game.
What it does
SumWords is a daily word puzzle where players are presented with two columns of shorter valid words. The goal is to correctly link a word from the left column with a word from the right column to form a valid longer English word.
Once all words are linked, players can check their answers. If they encounter an unfamiliar word, they can view its definition (sourced from Wiktionary), turning each puzzle into both a challenge and a learning opportunity.
The rules are simple, but SumWords --and some of the words-- will challenge you!
How I built it
SumWords is a lightweight HTML5 game built using SVG rather than traditional HTML and CSS or the canvas. It runs on a custom tileβbased game framework designed to support grid-based games. Using SVG made precise interaction, scaling, and touch handling easier across devices.
Key technical elements include:
- An MVVM-style architecture for managing game state and rendering
- SVG primitives such as grids, tiles, areas, labels, lines, modals, and buttons
- A factory system that generates SVG game objects
- A centralized drag controller that handles all mouse and touch input
- Assignable tile behaviors and effects for flexible gameplay mechanics
Challenges I ran into
There are some words that appear very frequently as a first word or second word. For example "over" appears in combination of 1583 other words as a first word. Similarly, "ness" appears in combination with 2179 other words as a second word. I realized this would heavily influence the quality of the game, so I added configurable parameters to filter the word set and improve word curation. This provided a key improvement to the game.
Sneakily too, there is the possibility where words could be chosen that could be cross linked with other words that were not part of the original longer words. I saw this happen in some sample games and eliminated this as a possibility.
Accomplishments that we're proud of
- Designing a daily word game that is fresh yet simple
- The dictionary lookup feature is one of my favorite additions
- Building a custom SVG framework designed for grid/tile puzzle games
- The game is preloaded with 3 years worth of daily game challenges (low ongoing maintenance) ## What we learned A lot of new words! SumWords may surprise you.
However, when it came time to think about marketing and building a community of players, I learned just how difficult it is to get games seen. When I recently discovered Reddit Games, it felt like a great path to get SumWords out there and played.
What's next for SumWords-game
Next up I will look at creating a leaderboard that shows the current and best streaks from that day's daily players. I am looking forward to incorporating player feedback.
A balanced set of good words are the star in this game. I might alter the filters used when selecting words. Plus, if the game grows in popularity, I will consider manually curating words for the daily games.
I will eventually add that original game I built that sent me down this path.
Note:
My subreddit is "r/sumwords_game" which is marked public and is the link that I am submitting.
My test subreddit is "r/sumwords_game_dev" is now also marked public if that is better.
Thanks for hosting!
Mike
Built With
- chatgpt
- claude
- css
- enable2k
- gemini
- html
- javascript
- wiktionary.org
Log in or sign up for Devpost to join the conversation.