With all the fuss over the Wordle game, I thought it would be a fun afternoon project to throw together a version for pico-8.
The word dictionary is quite small and I didn't get a chance to add in any sfx. However, it's fun to play and was a good exercise to keep learning new things.
- Added instructions screen
- Added some simple sfx
- Added hard mode (accessed through pause menu)
- Added light mode
- Added animations
- Invalid guess
- Revealing clues
- Improve instructions
- Save hard mode / light mode
- Increased dictionary size (thanks to zep's work here)
- Added guess statistics
- Statistic reset confirmation
- Improve sfx
Pretty neat game, @scarecrw. Needs sound effects at least. I'm not very happy you repeat letters as choices. That makes it quite tricky indeed. Especially for a solution of the word,
Nonetheless, well done. A game I would definitely play again. Gold star work and ❤️ favorited.
Looking good, @scarecrw !
I don't know how content you are with players using letters that have already been used and have already been shown to not be in the word. You could do one of a few things.
Either refuse them to be entered or visually remove them from the list of letters. For instance if the cursor was on
S key and you pressed UP and there was only letter
U on that row then it would jump to the
U and not let you move left or right, only down.
. . .
Do you really have a 1,000 word dictionary ?
Hmm ... Another method you could use is to store them in your sprite and mapper area at 1-byte per letter. That would yield you space for 2458 words perfectly with no bytes left over and would not cost any of your coding space at all.
If that data were 8-bit, however and you converted to 5-bit extraction, you could have a whopping 3932 words and still not cost a single character in coding space. There's even a way of getting exactly 4915 words, can you see how ?
Yeah, I had thought about using a bloom filter and figured I should see if anybody else had done it. Felt super lucky when all the hard work had already been done for me!
I ended up fitting in 7500 words for the guessing dictionary. The word list is still around 1500. I could probably expand that with some clever compression, but it's probably better to keep the answers to relatively common words.
Yeah, there's two dictionaries. The guessing dictionary is everything the player is allowed to guess. Since it only needs to validate guesses, the bloom filter works fine. For selecting words to be the answer it actually needs the word stored, so I have a separate dictionary for that.
The guessing dictionary has 7500 words (with a false positive rate of ~3%) whereas the dictionary of potential secret words is 1500 words (stored as a simple uncompressed string).
I want to understand this, @scarecrw. OK you have a guessing dictionary of 7500 words and a dictionary of 1500 words. And you are mentioning false positive 3%.
So is the 7500 dictionary derived from English nuances or are you actually storing 7500 correct spelling words ?
And if so why not have 8500 words in your total dictionary so those playing can have a wide variety of words to choose from to guess instead of just 1500 ?
I am trying to understand this.
> And you are mentioning false positive 3%.
The word validation method used is very storage-efficient but has one-sided random error. (It may give false positives, will never give false negatives.) Look up Bloom filters if you're curious why - while the theory is deep, the basic idea is simple.
> And if so why not have 8500 words in your total dictionary so those playing can have a wide variety of words to choose from to guess instead of just 1500 ?
While I'm not the author, I think there are a couple reasons here:
- Wordle itself (the original game) has about 12-13k guessable words, but only 2-3k goal words, so this choice follows the original design - which has been quite successful!
- That split helps keep the game feeling more fair and interesting - there are some pretty obscure words you can guess that might not ever occur to most people as a goal. You sort of want that so that you can guess with intentionality instead of just guessing at goals that feel word-shaped. At the same time, you don't want to reject guesses that are real words, but just a bit uncommon, since that might feel unfair.
- The Bloom filter does not contain an explicit representation of the word list, it can only answer set membership queries.
edit: I'd also like to throw in a feature request that would be a bit of a divergence from the original game. Maybe as an option - do something to encourage players to change up their initial guesses! I mostly do the same first word every time now.
[Please log in to post a comment]