Inspiration
I started playing Apple's Emoji Game as soon as the iOS 26 beta was available, and I loved it. But at times it was confounding. I looked for some online help, but found none. The Emoji Game has a unique format that requires one to solve 2 (or more) words at the same time. So, I decided to create my own helper app specifically for the game. I also wanted to learn the new Liquid Glass design paradigm, so I went all-in.
What it does
The Emoji Game presents several word patterns to solve for each puzzle. A pattern can contain placeholders for the emoji solution, fixed letters, and spaces. In the Emoji Game Helper app you enter a pattern that matches one from the puzzle, pick a word list, and tap the Generate button. The app uses an algorithm I created to find word combinations that solve both the full word in the pattern and the subset emoji word. The potential solutions are listed, and you can look through them to get a hint on how to solve the puzzle.
For a very simple example, the puzzle might have the pattern:
L O _ _
The app will come up with many possible solutions such as:
LOAD AD
LOAN AN
LOBE BE
All the left words solve the full word pattern, and the right word is the corresponding Emoji word.
How we built it
I created an app using Swift and SwiftUI. It's cross-platform and runs on iOS, iPadOS, macOS and visionOS. While I initially built the app using the Liquid Glass interface available in x26 OSes, I also made it work for those running prior OS versions X.4 or above (e.g. iOS 18.4) as Apple made the Emoji Game available to those running back to that version.
Word pattern matching can be quite slow if one searches though all possible words in a large list. So I implemented a custom prefix trie for each word list. This greatly speeds up the search. It's a custom implementation as the trie needs to deal with wildcards.
I also decided to make a flowing animated background to really highlight the glass effects. I had a little help from AI to get the parameters the way I wanted, but I used a SwiftUI MeshGradient for the layout, while animating the parameters. You can choose a background photo to add a personal touch.
Challenges we ran into
I had many challenges. The first was implementing the Liquid Glass interface. There is not a lot of documentation or examples, so I had a lot of trial and error. The next challenge was making the interface compatible with older OSes without Liquid Glass. It took a while to get an interface that at least looked close, and a lot of conditionals in the code.
A big challenge was trying to figure out how to represent the puzzle patterns. There are several possible variations. I first tried making a way to describe a pattern with parameters (e.g. word length, prefix characters, etc.). This was getting too confusing, so I pivoted to a "builder" interface where you use buttons to recreate the puzzle pattern.
Implementing a prefix trie to handle wildcards took a lot of thought and experimentation. I also had some problems integrating RevenueCat paywalls. I could not get the Tabs component to show any content, so I created a paywall without Tabs. I also had to use iPad mode for my Mac implementation, as paywalls are not available on Mac native apps.
Accomplishments that we're proud of
I'm really proud that the app works as well as it does and is actually useful. I have now used it to help with several puzzles. The design took many iterations to get what I wanted with a heavy use of glass design elements and animation, while still working well on pre-glass OS versions.
What we learned
I learned a lot about implementing the Liquid Glass interface. I also learned about implementing a prefix trie to speed up word pattern searches. And I gained more experience with RevenueCat and paywalls.
What's next for Emoji Game Helper
I want to get some user feedback before considering any new features. Some future features could include solving multiple patterns at once to create word phrases, and maybe using AI to analyze emoji set images to give hints on what words they might imply.
I also want to work on improving the word lists. I include 3 in the app, but the puzzle can sometimes represent non-words like places or names.
Built With
- revenuecat
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.