Under the hoodWe hand-wrote 14,237 answers. Players can ask 81,020,085 questions.
FusionCraft is a word game. You drag two words together and they become a third. Sun and Sea make Steam. Moon and Wolf make Werewolf.
The fun of a game like this is that you can try anything. Which is also the problem, because "anything" turns out to be 81,020,085 possible pairs, and we wrote about fourteen thousand of them by hand. If you only shipped the ones we wrote, then roughly the first surprising thing a curious player tried would come back empty, and the game would quietly be over.
So there is a second thing inside the app, underneath the recipes we wrote. It is small, it is not very clever, and it never stops working.
Here is what it does, without the jargon
Every word in the game has its own set of coordinates, a long list of 384 numbers that acts as a fingerprint for what the word means. Words that mean similar things end up with similar fingerprints, so "ocean" and "sea" sit close together and "ocean" and "stapler" do not.
When you drag two words together, it compares their two fingerprints three ways: what the two words have in common, where they overlap, and how far apart they are. It feeds those comparisons through a step it learned from watching 80,000 real combinations, and out comes a location. Not a word, just a spot, somewhere in the middle of everything the game knows.
Then it looks around that spot and picks the closest real word.
It can only name things that already exist
That last part is the bit a skeptical person should notice. It never invents a word. It cannot. It only ever chooses from the 12,729 words already in the game, every one of which a person has seen. There is no step where it writes something new, so there is no step where it can write something strange, or wrong, or embarrassing. It can pick a boring answer. It cannot make one up.
All of it runs on your phone
The whole model is 20.3 megabytes, about five photos. There is no server, no account and no network call, so you can put the phone in airplane mode and the game works exactly the same. Ask it the same question twice and you get the same answer, forever.
It is not free, though. Every single fusion runs the map and then scores the entire roster: 12,729 candidate words against a 384-dimension query, about 5.3 million multiply-accumulates for one merge. That takes 10 to 17 milliseconds in our own tests on a desktop. We have not measured it on a phone yet, so we are not going to quote you a number for one.
How often is it right?
The honest answer needs the question attached to it, because there are two of them.
Against 4,000 held-out pairs from the 80,000-combination corpus it learned from, the model names the exact same word a real player did 47% of the time. The purely geometric approach it replaced scores 6.5% on that same set. That is the number worth knowing, and it is agreement with real play on pairs someone has actually tried.
Against our own hand-written recipes it agrees about 2% of the time, and those are exactly the pairs it never sees: they were held out of training on purpose, and the authored table answers them before the model is ever asked. Quoting that number as "the accuracy" would be as wrong as quoting the first one without saying which set it came from.
One honest thing
A page that only flatters is an advert. The model has favourites. Feed it 1,500 random pairs and you get about 233 different answers back, and a handful of words do a lot of the heavy lifting: roughly one in ten comes back Dinosaur (10.3% of that sample). It is a plausibility engine, not a correctness engine. Ask it for Dino DNA plus T-Rex and it says Dinosaur, where the answer we wrote by hand was Rex Revival.
Which is fine, because of what its job actually is. The recipes we wrote are where the designed moments live: the jokes, the payoffs, the combinations someone sat down and thought of. The model is not there to be clever. It is there so the game never says no.
Knowing which of those two things you are building is most of the work.
The facts
- Hand-authored recipes
- 14,237
- Possible pairs
- 81,020,085
- Words in the world
- 12,729, and the model can name none but these
- What it learned from
- 80,000 real accepted combinations
- Fingerprint size
- 384 numbers per word
- Work per fusion
- ~5.3 million multiply-accumulates; 10 to 17 milliseconds on a desktop, not yet measured on a phone
- Agreement with real play
- 47% exact on 4,000 held-out pairs from the corpus it learned from (the geometric approach it replaced: 6.5%)
- Model size
- 20.3 MB, shipped in the app
- Network calls to answer a fusion
- None. Works in airplane mode
Counts are asserted against the shipped world and model metadata on every deploy. The distribution figures come from sampling 1,500 uniformly random pairs through the shipped weights, seeded so they reproduce.