[HN Gopher] How good can you be at Codenames without knowing any...
       ___________________________________________________________________
        
       How good can you be at Codenames without knowing any words?
        
       Author : feltsense
       Score  : 91 points
       Date   : 2024-08-12 06:06 UTC (16 hours ago)
        
 (HTM) web link (danluu.com)
 (TXT) w3m dump (danluu.com)
        
       | nemetroid wrote:
       | On the topic of word game recommendations, I've been playing So
       | Clover recently and highly recommend it. It's a cooperative game
       | and has almost no downtime (all players write clues at the same
       | time, then all players guess together, so the possible downtime
       | is the difference between the fastest clue writer and the slowest
       | clue writer).
       | 
       | https://www.rprod.com/en/games/so-clover
        
         | jsnell wrote:
         | +1, but one thing about So Clover is that not really any game
         | in it. It's more of an activity. A very engaging activity, and
         | one that has worked with every group I've tried it on, gamers
         | and non-gamers alike, and my current #1 choice if I was asked
         | to bring some games to some non-gaming social event.
         | 
         | What I mean by there not being a game to it is that there's no
         | winning or losing, or even evaluating success. Everyone gives
         | their best clues (by some metric; sometimes people optimize for
         | fun rather than clarity), you solve the boards and get a score,
         | but the score is totally meaningless. It can't even be compared
         | across sessions.
         | 
         | It turns out to be quite hard to add a game into it. I thought
         | about the problem for a year before deciding that there was no
         | viable way to do it within the constraints of the physical
         | game, and it'd need to be online. For the last few weeks I've
         | been working on an async online word-game inspired by So
         | Clover, where one of the tihngs I wanted to do was to add an
         | actual game (as a competitive mode), and so far the feedback
         | from my playtesters has been that they're not interested in any
         | of those plans, and just want to use it as a chill word game
         | sandbox and share puzzle links over WhatsApp. (The site isn't
         | ready for public consumption, but if anyone here wants to try
         | the game out with some friends, hit me up with an email and
         | I'll send you a link. Contact details in HN profile.)
        
           | stavros wrote:
           | I've emailed you, thanks!
        
       | CamelCaseName wrote:
       | This is really neat (and now I want to memorize a few
       | combinations)
       | 
       | But it's very similar to chess, where positional sense is crucial
        
       | NeoTar wrote:
       | I think the total number of code-names grids possible is
       | something like 210 344 706 000, so the 40 cards (plus 4
       | rotations, so 160 possible grids) are only a tiny, tiny fragment
       | of those possible.
       | 
       | But it does mean that defeating the bot would only mean creating
       | a custom grid, which sounds very practical virtually, and
       | possible (but harder) in person.
        
         | satyrnein wrote:
         | I did a quick search, and there are generators that I guess you
         | bring up on your phone, like so:
         | 
         | https://code-names.netlify.app
        
           | pimanrules wrote:
           | There's also an official app that has some nice features:
           | 
           | - You can generate grids on multiple devices with a seed
           | 
           | - If the phone displaying the grid falls over, it
           | automatically hides the grid.
           | 
           | I don't know if the grids in the app are truly random or if
           | they follow some constraints though.
        
       | mkaszkowiak wrote:
       | I've also thought about creating a Codenames bot: what if we
       | could use semantic similarity to batch words together? Surely,
       | this can be done using a prebuilt embedding model and clustering!
       | 
       | After some failed experiments - it performed worse than I thought
       | it will - I've googled the subject, and... it turns out there's a
       | whole paper about ML and codenames :)
       | 
       | https://arxiv.org/abs/2105.05885 ( _Playing Codenames with
       | Language Graphs and Word Embeddings_ ) - fun to read
        
         | 0xDECEA5ED wrote:
         | Very cool! A couple of months ago, after playing Codenames for
         | the first time, I devised a strategy that any team of humans
         | can learn, in order to win in 3 moves, guaranteed, every game.
         | It only takes a few minutes to learn.
         | 
         | Imagine you have a Codenames board and you're on the blue team.
         | The key is that you can represent the board as a text of 1s and
         | 0s, where 1 is blue and 0 is not blue:
         | 
         | 0 1 0 0 1
         | 
         | 0 0 0 0 1
         | 
         | 1 1 0 0 0
         | 
         | 1 0 0 0 1
         | 
         | 0 0 1 0 0
         | 
         | The next key is to realize that each sequence of 4 cards can be
         | thought of as a 4-digit binary number, for example the first
         | binary sequence above is "0100", or 4. The second binary
         | sequence is "1000", or 8.
         | 
         | The strategy is to simply communicate the numbers 4 and 8 to
         | your team--so we can simply choose a word that starts with the
         | 4th letter of the alphabet (d) and ends in the 8th letter of
         | the alphabet (h). If we tell our team "ditch", they'll know
         | exactly what the first 8 cards are.
         | 
         | Repeat this for 3 turns, and your team has figured out 8 cards
         | each turn, for a total of 24 cards out of 25 total. The final
         | card can be inferred simply--on the third turn, if any card is
         | unaccounted for, your team knows it must be in the 25th
         | position.
         | 
         | I just hope your teammates know how to count in binary.
         | 
         | (N.B. the strategy can be optimized by eliminating less-common
         | letters of the English alphabet, like J, where it may be
         | difficult to think of words that end in that letter)
        
           | TheDong wrote:
           | This strategy is specifically banned by the rules:
           | https://czechgames.com/files/rules/codenames-rules-en.pdf
           | 
           | I quote:
           | 
           | > Your clue must be about the meaning of the words. You can't
           | use your clue to talk about the letters in a word or its
           | position on the table.
           | 
           | You're talking about cluing about the position, so it's
           | against the rules.
           | 
           | I guess the rules do also say:
           | 
           | > But if no one notices that a clue is invalid, it counts as
           | valid.
           | 
           | which kinda maybe makes it legal, but it seems like it's
           | quite against the spirit of the rules, and the "invalid" clue
           | thing there is just stuff like "accidentally used a word
           | that's a part of a compound word on the board", not
           | maliciously trying to cheat the rules.
        
         | abound wrote:
         | I'd also attempted something like this years ago [1] based on
         | word2vec, and it played decently! Occasionally it would throw
         | out nonsensical clues or guesses, but was usable.
         | 
         | I'm sure with more modern embeddings/tools one could make a
         | really excellent not.
         | 
         | [1] https://github.com/bcspragu/Codenames
        
       | hangsi wrote:
       | This is an interesting view of how random number based security
       | is compromised for economic practicalities (though the meanings
       | of "security" and "compromised" might be overstretched here).
       | 
       | For completeness, I wondered how many cards would be required to
       | give the complete set of patterns.
       | 
       | If we number the positions in the 5x5 grid such that the top row
       | has positions 1-5, the second row has 6-10 and so on, the grid
       | positions can be converted to a sequence and we can use the
       | permutation formula to find the number of arrangements. To
       | account for rotations, we can divide the final value by 4 since
       | every arrangement can be rotated and is therefore valid.
       | 
       | Of the 25 cards, there are 7 white, 8 red, 8 blue, 1 black and 1
       | double agent that can be red or blue, also deciding which team
       | goes first. We can treat this final card as one of a kind, then
       | double the formula output to account for cases where it is
       | swapped to the other team.
       | 
       | Permutations of a multiset has a standard formula [0] that
       | calculates a result from these values (rolling in the double
       | agent factor of 2 and rotation division factor of 4):
       | 
       | 25! / (7!8!8!1!1! * 2) = 946,551,177,000
       | 
       | (edit: as pointed out, this is 9 times too large as the double
       | agent can indistinguishably replace each of the other 8 cards - a
       | corrected value is 105,172,353,000)
       | 
       | This is (edit: still) more layout cards than have ever been
       | printed across all production runs of Codenames, and would
       | probably not fit into the current box size.
       | 
       | [0]
       | https://en.wikipedia.org/wiki/Multinomial_theorem#Number_of_...
        
         | Sniffnoy wrote:
         | > To account for rotations, we can divide the final value by 4
         | since every arrangement can be rotated and is therefore valid.
         | 
         | Note that this is only approximately correct, since some
         | layouts will have nontrivial symmetries. (Edit: Actually no
         | they won't due to parity reasons! Oops. So that step is exact
         | after all.)
         | 
         | Edit: Actually, this isn't correct either, and in a more
         | serious way:
         | 
         | > Of the 25 cards, there are 7 white, 8 red, 8 blue, 1 black
         | and 1 double agent that can be red or blue, also deciding which
         | team goes first. We can treat this final card as one of a kind,
         | then double the formula output to account for cases where it is
         | swapped to the other team.
         | 
         | On the layout cards, nothing distinguishes the double agent --
         | the double agent is purely a matter of representation, it's not
         | part of the actual layout. So doing things this way will give
         | you a number that's too large by a factor of about 8 or 9.
         | 
         | What you want to do here (ignoring rotations) is take
         | 25!/(9!8!7!) to get the count with 9 red and 8 blue, then
         | double it to include the count with 8 red and 9 blue, then
         | divide by 4 to account for rotation (contrary to what I said
         | earlier no need to account for symmetries because the numbers
         | mean that none of the layouts can be rotationally symmetric),
         | so you get a total of
         | 
         | 25!/(9!8!7!2) = 105,172,353,000
         | 
         | So yeah about 9 times smaller than what you wrote. For what
         | it's worth, anyway. :P
        
           | hangsi wrote:
           | Yes, I agree completely - I realised something was off in an
           | espirit de l'escalier way not long after I posted.
           | 
           | This is great news for my proposed box redesign!
        
           | vitus wrote:
           | > Actually no they won't due to parity reasons!
           | 
           | Can you elaborate? I think I can construct some boards that
           | effectively have complete rotational symmetry.
           | 
           | For the purposes of the game, black can be thought of as
           | another white card (since you will never reveal it in the
           | middle of a round), and the double agent can be placed in the
           | center. Then, you just need to place the remaining categories
           | with rotational symmetry (e.g. red on the two main diagonals,
           | and blue on the squares directly clockwise from those). So,
           | for instance:                 RBwwR       wRBRB       wBdBw
           | BRBRw       RwwBR
           | 
           | (w)hite and (d)ouble-agent are in lowercase; feel free to
           | replace any single white square with blAck (Assassin).
        
       | stavros wrote:
       | I'd like to note that giving clues that are not about the words
       | themselves is against the rules (and clues about position are
       | explicitly called out in the rules as illegal).
       | 
       | The methods in the post are interesting, but technically against
       | the rules of the game.
       | 
       | EDIT: Though I didn't figure out whether he means "clues about
       | the position" or "clues about the words, until you can open
       | enough cards to narrow down to one memorized position".
        
         | anonymoushn wrote:
         | If you've memorized all the layouts, you don't need any kind of
         | clue, so you don't need a kind of clue that's banned. You could
         | for example clue "Sausage" every time and your team would play
         | as well as the bot in the article. To play better than the bot,
         | you might want to clue about words for 1 turn or so.
        
           | hangsi wrote:
           | Clues must be related to the semantic meaning of the cards,
           | so irrelevant clues are technically banned. So, a "sausage"
           | strategy would be illegal on many boards.
        
             | anonymoushn wrote:
             | I guess you'd have to call an unrelated word and zero,
             | which is explicitly allowed.
        
           | pimlottc wrote:
           | I would say that's still against the rules since "sausage"
           | has no relevance to the meaning of the target words.
           | Obviously you could just bullshit some extremely tentative
           | relationship if pressed but it goes against the spirit of the
           | rules.
        
             | TheDong wrote:
             | I feel like saying "<death card hint> 0" every time is 100%
             | in the spirit of the clue-ing rules, and there's no rules
             | related to guessing, so this guessing strategy also doesn't
             | seem to violate things that overtly.
             | 
             | I do agree that there's an implicit intention in the rules
             | that the operative's guesses are related to the spymaster's
             | hints, but I don't think that relation is ever said
             | explicitly.
        
               | default-kramer wrote:
               | But saying zero disallows your team from guessing at all,
               | right? Maybe "<death card hint> 666" would work.
               | 
               | A common pattern in our play groups is when the other
               | team is just 1 away from winning and you cannot find a
               | clue that covers all your remaining words, you come up
               | with the best clue you can and say "99" so that it's
               | clear "The number is irrelevant to the clue here, just
               | keep guessing until you win or you miss."
               | 
               | Edit: I'm wrong. From the rules: "If 0 is the number, the
               | usual limit on guesses does not apply. Field operatives
               | can guess as many words as they want. They still must
               | guess at least one word."
               | 
               | Edit2: And instead of 99, my play groups should have been
               | using "unlimited." Again from the rules: "Sometimes you
               | may have multiple unguessed words related to clues from
               | the previous rounds. If you want your team to guess more
               | than one of them, you may say unlimited instead of a
               | number. For example feathers: unlimited."
        
               | TheDong wrote:
               | The rules specifically say that a number of zero means
               | any number of guesses is permitted. They also say
               | 'unlimited' is permitted instead of a number
        
         | TheDong wrote:
         | You clearly don't understand the article since it's not about
         | clues at all, but entirely about guessing.
         | 
         | Basically, the claim is that based entirely on the pattern of
         | the board (revealed red, blue, and white cards), there are so
         | few legal board configurations (the cards that the spymasters
         | are using), that the field operatives can ignore the hint the
         | spymaster gave, and guess correct cards anyway based on the
         | board's revealed information.
         | 
         | Effectively, a game where the red team uses this strategy might
         | go like this:
         | 
         | Red Team Spymaster: Word unlimited
         | 
         | Red Team Field Operatives: <pick card at random, get white at
         | the lower right>
         | 
         | Blue Team Spymaster: <Real Hint> 2
         | 
         | Blue Team Field Operatives: <pick 2 correct cards at the upper
         | left>
         | 
         | Red Team Spymaster: Word unlimited
         | 
         | Red Team Field Operatives: "Well, there's only one spymaster
         | card with a white card in the lower right and two blue cards in
         | the upper left, so now we know where every card is and can pick
         | all the red cards" <wins>
         | 
         | In a real practical implementation here, the spymaster would
         | probably actually clue "<death card hint> 0" each turn in order
         | to ensure their team can safely pick at random until there's
         | enough information to know which board they're on.
         | 
         | Please point me to the rule that bans this:
         | https://czechgames.com/files/rules/codenames-rules-en.pdf
        
           | Izkata wrote:
           | > "<death card hint> 0"
           | 
           | We had a game once where one team was starting to look at
           | that card because of previous hints and the spymaster did
           | exactly that to say "don't do it", but because the hint was
           | for that card they ignored the number and picked it that
           | round.
        
             | renewiltord wrote:
             | The fun of this game is in the absolute clowning that
             | happens. This is fantastic haha.
        
             | travisjungroth wrote:
             | If I was the spymaster in that story I'd just chuckle about
             | how these games go, excuse myself to the bathroom, and
             | scream into a towel.
        
           | jader201 wrote:
           | > You clearly don't understand the article since it's not
           | about clues at all, but entirely about guessing.
           | 
           | Not entirely about guessing. In fact, guessing isn't involved
           | at all, at least not after the first turn.
           | 
           | You left out that to do this, you need to have memorized
           | basically all of the spymaster cards, or enough of them to
           | increase the odds of you figuring out the configuration.
           | 
           | This is basically the same as the cheat in the memory match
           | game in Super Mario Bros. 3 where you uncover matching power
           | ups [1], and receive the power ups that you successfully
           | uncover -- but there are only 8 possible boards, so it's way
           | easier vs. this Codenames cheat.
           | 
           | Even if this is not technically considered cheating, it
           | definitely would feel like cheating, since again you need to
           | have knowledge of most of the spymaster cards. (And it goes
           | without saying, this is definitely against the spirit of the
           | game, even if it's a neat party trick.)
           | 
           | [1] https://mario.fandom.com/wiki/Matching_Game
        
             | TheDong wrote:
             | By "guessing" I meant "the guessing phase" as opposed to
             | "the clueing phase", i.e. it's about the phase where you
             | pick cards.
             | 
             | I should have said "picking phase", but from my example,
             | you should have been able to see that I knew it was about
             | memorizing the boards.
             | 
             | I feel like you've taken an intentionally negative reading
             | of my comment, which I suppose fair's fair because I wasn't
             | exactly being charitable to my parent comment either.
        
         | thih9 wrote:
         | Note that in the described game the spymaster didn't give out a
         | clue like this; the article states "From the given clue, we
         | were unable to [guess all of our remaining words]". I guess it
         | was a teammate that suggested the other strategy.
        
       | ralferoo wrote:
       | Adding to the list of related games at the end of the article, I
       | recently played "Poetry for Neanderthals" and thought it was
       | quite fun, although really once you've figured out how to trick
       | your brain into thinking with grunts, it becomes easy quite
       | quickly because then you tap into the primal part of your brain
       | that prefers single syllables. But bashing people with the rubber
       | hammer kept it amusing for longer than it probably should.
        
         | quuxplusone wrote:
         | I played "Poetry for Neaderthals" once a few months ago, and
         | concluded that its enjoyability must _really_ depend on the
         | group. My wife and I were playing at a meetup with a couple of
         | party-game guys who maybe weren 't the brightest bulbs in the
         | box (they were the ones who brought the game, but they'd never
         | played it before either). This made it no trouble at all when
         | either of us was the "master," but excruciatingly painful when
         | either of them was.
         | 
         | Like, suppose the word is WINDOW. They'd be like, "Um... house.
         | [long pause] Grass, sky. Glass! Um... [long pause] see? Eye
         | look at?" And I'd be like, "This is a thing in the wall of a
         | house. You can see through it. It's made out of glass. Um... it
         | has panes, and a sill. It might have drapes next to it. You go
         | to it when you want to see out of the house, but it's not the
         | door. A thief might come in through it," etc. etc.
         | 
         | Once you realize you can just say whatever you like (as long as
         | it's in words of one syllable), it seems like the whole game is
         | "cooked." Even with a group of uniformly competent players, I
         | feel like it would just devolve into listening very carefully
         | to a rapid-fire stream of words to try to detect any slips --
         | i.e. real-time proofreading -- which to me doesn't count as an
         | enjoyable way to spend a game night.
        
       | cauch wrote:
       | I don't know the game that much, but ways to create random 5x5
       | grid seems pretty simple when I quickly try to think about one.
       | 
       | What about having 25 scrabble-like squares in a bag, and the
       | spymasters pick randomly in the bag. Each square has a number
       | from 1 to 25 that correspond to one position on the 5x5 grid, and
       | one extra square is chosen to be the black square and shown to
       | the spymasters. The spymasters have a pen and a piece of paper
       | with a 5x5 grid where they can mark the information they receive.
       | 
       | (that is if the spymasters are not informed of the position for
       | the other team, I'm not sure if it's the case or not in the real
       | game. If not, it's even simpler: both spymasters look at the
       | result of every pick, the squares are colored and the order in
       | which they are picked is the order they are on the grid)
        
         | TheDong wrote:
         | That adds pretty noticeable friction over the pre-printed
         | cards, so I think the pre-printed cards make a lot of sense to
         | have.
         | 
         | Note that the game already comes with 25 colored tiles (red /
         | blue / white) which are used to cover the game board, so what
         | you describe could be easily done with the existing game by
         | putting those 25 tiles in a bag, shaking it, and having the
         | spymasters secretly draw all 25 and fill in a grid in the order
         | they draw them, and then proceed with the game as normal from
         | there. I doubt many people would want to bother though.
         | 
         | > that is if the spymasters are not informed of the position
         | for the other team
         | 
         | The spymasters both know all information, so it is indeed even
         | simpler.
        
           | cauch wrote:
           | You are right, it is more cumbersome, but it is worth doing
           | it if people have played a lot and they start to
           | unconsciously remember the "weird pattern", which is
           | basically ruining the game. I would say the printed card can
           | be used when that risk is low.
        
           | Skeime wrote:
           | The way I would do it: Get a board with a grid of 5x5 insets
           | (like a Big Boggle board), a screen to hide it, 25 colored
           | marbles (9 blue, 8 red, 1 black, 7 white), and a bag. Shake
           | the marbles in the bag and empty it onto the board, shuffling
           | it around until each marble is in a hole.
           | 
           | (Add another red marble if you want to alternate the starting
           | team without switching their color and remove a red or blue
           | marble each time.)
        
       | quuxplusone wrote:
       | Excellent article, with multiple directions of rabbit holes to
       | descend. I liked the linked essay on "The Bitter Lesson":
       | http://www.incompleteideas.net/IncIdeas/BitterLesson.html
       | 
       | I liked the Mastodon thread linked from the appendix, re Dave
       | Sirlin's theory of "scrubs" (who'd eschew the post's geometric
       | tactic) versus "good players":
       | https://mastodon.social/@danluu/110544419353766175
       | 
       | Which in turn links to the original imgur post describing the
       | Warhammer 40K match between Wheels and Shooter:
       | https://imgur.com/a/V0gND
       | 
       | +1 to nemetroid's recommendation of "So Clover," which is indeed
       | more of a pastime than a game, but it's still great and belongs
       | on any list of great word games.
       | 
       | I also like "Contact," which is playable without any props:
       | https://quuxplusone.github.io/blog/2021/11/12/contact/
        
       | Arnavion wrote:
       | For anyone else like me who's only played the online versions and
       | was really confused by the article: the physical game does not
       | completely randomize the positions of red and blue cards but has
       | a fixed set of possible configurations - the "configuration
       | cards" that the article is talking about.
        
       | drodio wrote:
       | DROdio here, CEO of Storytell.ai
       | 
       | Thanks for trying Storytell for coding work, Dan!
       | 
       | When you say it "I don't think it took too much longer to get
       | working code than it would've taken if I just coded up the entire
       | thing by hand with no assistance. I'm going to guess that it took
       | about twice as long, but for all I know it was a comparable
       | amount of time." - I'm actually amazed that it performed as well
       | as it did for native code generation.
       | 
       | We put code generation in the "Use with Caution" bucket as I
       | describe in https://web.storytell.ai/blog/the-intersection-of-ai-
       | curious...
        
       | creer wrote:
       | Codenames is a word guessing game - in part. It's also a game of
       | ingenuity, of knowing your players / spymasters, of players
       | trying to be better as a group than as individuals, of paying
       | attention (and using the other team's clues) - and at some point
       | it's a game and can be played seriously and competitively.
       | 
       | From that point of view I don't see a serious problem with
       | embracing the game pieces provided and taking them into
       | consideration. It is a dimension in the game. It does not kill
       | the game. Solid thinking from that team.
       | 
       | I have more of a problem with people learning word lists for
       | Scrabble. It's not against the rules - but it makes it hard to
       | play with these people. It's a significant class difference.
        
         | default-kramer wrote:
         | I gotta disagree, I'm way more accepting of Scrabble list
         | memorizers (even though I'll never be one) because word
         | knowledge was intended by the game designers to be a part of
         | the game.
         | 
         | Memorizing the spymaster layouts was almost certainly _not_
         | intended by the designers of Codenames. Probably someone
         | realized it was possible, but as other commenters mention the
         | increased friction of fully randomized layouts isn 't worth it
         | when almost no one will want to do this.
        
           | creer wrote:
           | Memorizing the layouts altogether would be a step too far.
           | And probably some people could do it...
           | 
           | I was thinking more of remembering that the layouts have
           | basic characteristics: a team's words are not bunched on one
           | side, or all lined up, or in a circle, etc. Not your team's,
           | not the other team's.
           | 
           | But now that you mention it, fully randomized would be easy
           | to do as a phone app. And a phone could be propped up in
           | front of the spymasters. (The setup with the layout propped
           | in front of the spymasters works really well in a party
           | setting, where it's normal that some people will get up and
           | walk around without wanting to cheat.)
        
             | rjp0008 wrote:
             | Or a boggle-esque set of dice rather than a phone app.
        
             | creer wrote:
             | Or not even any programming and showing one of the online
             | Codenames on the phone - just for the map.
        
       | leecarraher wrote:
       | This is exactly why i like this game. Upon first playing it, the
       | attacks were obvious to beat anyone who was playing legitimately.
       | Assuming both teams know this fact, means the choice is, play the
       | game to win and it is boring or play the game to have fun and
       | challenge yourself and partner. During every occasion, the latter
       | has prevailed.
        
         | travisjungroth wrote:
         | This could actually make a good interview problem for the
         | ability to focus on the stated goal and to play well with
         | others. Use Codenames or create a game with many exploits that
         | will jump out to smart people. Be explicit the point of the
         | exercise is for everyone to have fun and play in the spirit of
         | the game. Do they do that, or does their desire to be right and
         | "figure it out" trample the real goal?
         | 
         | Good test for an IC that wants to jump to a manager, cross-team
         | or especially sales role. Believe me, you don't close deals by
         | dunking on your prospects.
        
       ___________________________________________________________________
       (page generated 2024-08-12 23:01 UTC)