The popularity of my Who’s That Pokémon game has been overwhelming. In the past week, it has had over 100,000 visitors, who have guessed at over 2.5 million Pokémon silhouettes. Looking through the stats has been great, and I am working to do some good analysis on them. I would also like to release the dataset to the public. It contains the data of roughly 300,000 guesses, including Pokémon numbers, time taken, difficulty level and if they were correctly guessed. Putting all this data together could result in some really interesting insights into which Pokémon people know best. If you have a suggestion as to how best I could release this dataset, please leave a comment.
In the meantime, I have been working on several new features for the game, many of which were requested by the users. I am still actively working on this project, so if there is a feature you would like to see, let me know, and I will try my best to add it. Here is what is being added today.
A few people asked for support for Pokémon names in other languages apart from English. The game now supports French and German. To use these languages, you type in the same box. Accents should not matter, but if you find one stopping you, be sure to tell me, and I will fix it.
“Close Enough” Spelling
A widespread complaint in relation to the game was the difficulty of spelling Pokémon names. I thought this was part of the fun, but at a certain point it gets pretty annoying when you know the name but ten spelling variations still don’t give you a match. I could give an example, but there’s so many, I wouldn’t know where to begin!
The key to this is figuring out what is “close enough” without making the game too easy by matching too many wrong answers. The game uses two functions from php.js — a soundex and Levenshtein distance. A soundex uses a relatively basic mathematical formula to determine what a word “sounds” like. So, for example, Bulbasaur and Bulbasore would have the same sound. The problem here is that it works best on shorter words, and longer Pokémon names can get matched accidentally to other shorter ones. The Levenshtein distance is used to determine how many letters are different between two words. Using this, we set a threshold of 2, meaning that up to two letters can be different.
For non-English languages, only the Levenshtein distance is used. The formula for the soundex is based on how letters sound in the English language, and I suspect it would be all but useless in others.
The result is that the checking of spelling is more forgiving. Unfortunately, this doesn’t fix all cases. In particular, the first letter always has to be right. This means that you’ll still have to remember that pesky Krabby starts with a K! This lenient spelling is optional, as some people enjoy the challenge of remembering the crazy spellings!
This is something I felt was missing from the beginning. The game now includes the cries of the Pokémon from the games. For the experts among you, the new Elite difficulty plays just the Pokémon’s cry, without a silhouette. If anyone manages to get a streak of 10 on this, they deserve a medal! To help train yourself to recognise the cries, they will be played each time a silhouette is revealed. This brings it a bit closer to what it was like in the TV show, which I like.
The Sound setting controls whether cries will be played after revealing a silhouette. I know a lot of people will be in places where sound coming on automatically would be a bad thing, so you have to set this to “On”. If you select Elite difficulty, the Sound setting will not be relevant, so bear that in mind!
Sound should work in Firefox, Chrome and Opera. It’s not likely to work in Internet Explorer or Safari, as they don’t support the sound format the cries are stored in (.ogg).
The previous randomisation implementation led to a possibility of repeat Pokémon. This meant that you could play indefinitely, which was my original goal. Feedback from users showed that this wasn’t the preferred way to choose which Pokémon to show. I have rewritten the randomisation code to avoid repetition. This means that if you select Gen I and answer 151 in a row, you won’t get the same Pokémon twice.
There are plenty of other smaller additions too. The background stat tracking has been improved to be more efficient. On the right-hand side, you will see your average time, as well as which Pokémon you guessed in the fastest time (this won’t tell you which was your fastest before the update — sorry!).
I have tried to test the update as comprehensively as I could, but if you come across any issues, do leave a comment below and I’ll get on fixing it right away.