3 ms·
Show HN: Bal – a Knights and Knaves logic puzzle game with Glicko rating system
I built this game over the past couple months. It's a Knights & Knaves puzzle game. You meet a group of people who are each either a knight (always tells the truth) or a knave (always lies), and have to figure out who's who from their statements.
The fun part was the puzzle engine. It generates every possible puzzle for a given configuration by exhaustive enumeration, then checks all possible worlds against all possible statement assignments, deduplicating equivelant puzzles via canonical forms, and detecting which properties are uniquely determined vs. indeterminate. For larger configs (3+ people), it uses random sampling of phase space to reduce memory cost and time.
The result is 57 million puzzles for up to 4 speakers. From this, 6,000 were included in the game using stratified balanced sampling across features.
Other bits: Glicko-2 ratings for adaptive difficulty (both players and puzzles have ratings), "whodunit" mode where you also figure out who committed a crime, and a "normals" variant where some people can say anything.
It's free during beta with no ads (ever). Requires a quick sign-in (Google/Apple/GitHub/Discord) for the rating system to work, but only stores an anonymous ID (no email or other personal data).
I'd be interested in feedback on difficulty, puzzle variety, or anything else. Depending on interest, I plan to add additional puzzle types and ability to play via API over the next few weeks.
- rickcarlino 6mo agoOn mobile, the only thing we see is a sign in banner. It would be nice to see anything about the game before deciding to sign in.
- skaye 6mo agoThanks for the feedback. I've added a link to the tutorial on the signing screen so you can try out puzzles without signing in. The rating system and ability to serve appropriate difficulty puzzles relies on the user being signed in, but I don't collect any personal info, just the user ID (no email, account name, or anything else).
- skaye 6mo agoGot the same feedback from a few other people, so I decided to go a bit further. I've now implemented local storage of rating and got rid of the signin requirement. Now you can play anonymously as long as you want and only need to sign in to preserve your rating if you switch browsers or devices or want to be on the leaderboard.