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.
Updates:
- 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
Future ideas:
- Animations
- Winning
- 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, LEVEL
Nonetheless, well done. A game I would definitely play again. Gold star work and ❤️ favorited.
Very nice! One feature request might be an option for enforcing hard mode - I know I can always choose to play that way, but it's still possible to accidentally make a guess that doesn't conform to the clues so far.
Pretty good. It's minor, @scarecrw, but could you please add 🅾️ to do backspace so you don't have to use the arrow keys to manually select it each time ?
Played it again. Ran into another error. Not sure how as these are all normal words.
Thanks for catching that! Should be fixed now. I also added the 🅾️ for backspace; definitely agree that saves some time.
First time playing this kind of game. I cheated and used a word solver.
Edit: I tried a 2nd time without cheating. Interesting game.
Pretty nice game.
Love this, really amazing clone of the original.
Any chance on adding mouse support? Would make it easier to play on phone/tablets/computer.
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 ?
@scarecrw, you mentioned ZEP helped you increase your dictionary size of 5-letter words. How many 5-letter words do you have now ?
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.
I'm confused, @scarecrw. You have =2= dictionaries ? What is the guessing dictionary ? And is your total word list 1500 and not 7500 ?
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.
This is nice! It makes me think of a solo yahtzee electronic game I had a long time ago idle mining empire
@konwa am I a banana?
Most likely a spam post but wouldn't be surprised if it was a site of ripped games
Hey there! You might want to look into this to make your game a bit snappier to play.
[Please log in to post a comment]