Codewords != Codenames™

Codenames™ is a registered trademark of Czech Games Edition. The site has not been prepared, approved, or licensed by any entity involved in the creation or production of the utterly fantastic game that is Vlaada Chvátil's Codenames

Q: What’s Codenames™?

A: You haven’t heard of Codenames™?! Take a look! It's one of this (or any) decade's best games. Here’s the rulebook. And a video:

Q: Is this a way for anyone to play Codenames™ online?

A: No. Think of it as a massively multiplayer, interactive, "Let's Play" video for Codenames™. I'm the only one that can create or host games, and I won't run a game publicly unless I can get both CGE's and Vlaada's permission.

Q: Did you ask Vlaada and CGE if you could do this?

A: Yes. They've given me their blessing to run tests publicly through January 30th, the date I originally set the SSL certificate to expire. Here's the BGG Message from Vlaada. He and everyone at CGE are class acts.

Q: Alright, Massively Multiplayer. How does that work?

A: Two people (or teams) host the game and act as the Gamemasters (at a convention or streamed over Twitch) with access to a tool that lets them run the game. It looks like this: https://imgur.com/URlZggq

Everyone else fires up Netscape Navigator and rides the information superhighway down to the game’s public url (take exit “672 - Geocities”, keep left at the fork, and continue on to The Future). When a Gamemaster gives a clue all players vote for the words they think match. The gamemasters reveal the cards with the highest number of votes, rinse, repeat.

Screenshots here: https://imgur.com/a/3xtZC

Q: How is a “Massively Multiplayer Online Codewords” different from the “Nominally Multiplayer Cardboard Codenames™”?

A: They’re pretty similar. The biggest difference are:

  • No “Teams”: The Gamemasters are on “teams” but the Players vote on all clues. I’m curious to see what kinds of gameplay emerge. Plus, waiting for your team’s clue would be boring.

  • No “Expert Clues”: Expert Clues “ZERO” and “UNLIMITED” are not supported.

  • The “Compound Words” flexible rule is rigid: Compound words are rejected by the server.. Sureyoucancheatbutwhyevenplay?

  • No extra guesses: If 1,000 people didn’t guess your clue the first time you gave it, it was probably too much of a stretch. Extra guesses would slow down the game.

  • You can’t stop guessing at any time: When a clue is given all words receiving one or more votes, up to the clue’s number, must be revealed in order (from most votes to least) until a card not matching the clue's color has been revealed. So, if you only want to reveal two words out of three hinted at by the Gamemaster, you’ll have to work together to make sure that only two words get votes. Teamwork!

Q: Is it fun?

A: We’ll find out!

After some initial testing I'm going to call it. This is neat. What started as an awkwardly streamed technical test morphed into an awkwardly streamed call-in show with participants the world over!

I'm amazed by how quickly the technology faded into the background. We were everywhere but it felt like we were playing at the same table. Thanks to everyone who stopped by for the test today. Especially Cerys, Ed, and Sean who Skyped/Typed/Discorded in to Spymaster with me. It's a shame my screen capture didn't save.

Agents, et al.

Q: I’m vibrating with excitement.

A: That’s not a question.


A: I'd like to run stress tests and play tests this week and early next week. If you’d like to help, sign up at http://codewords.io/ and I’ll let you know if/when they’re happening..

Q: OK! My hands are clammy with calm now. Can I help you host a game?

A: If you’d like to help me host a game, wash your hands, then fill out this form: Giggle Gorms


A: I’m flat broke and I’ve never lived in California. Hosting and other costs associated with building a site add up. The codewords.io domain was $60 and the server is $40/month before bandwidth, ECR, S3, CloudFront, and other fees. I can't think of a better way to cover those expenses than getting more people to buy and play Codenames™.

Obviously, support your local game store if you have a good one, but, if you like weird board game experiments and you're going to be shopping on Amazon anyway, please, click the link.

If it makes you feel any better, I'm almost certainly going to lose money on this!

But, to be clear, if there is a profit, I’m not giving it back. Nope. I’m going to put it towards buying a Christmas gift for my ultra-supportive girlfriend.

Q: Weird Board Game Experiments? Plural? Can I help?

A: Sure, if you’re a developer, designer, or writer with some spare time, send an email to mike@codewords.io and tell me about yourself.

Q: So why are you doing this?

A: It's a tech test. The list of technologies that I need to learn keeps getting longer as time goes on. I finally had a slow week so I decided to crack open my books on TypeScript/Angular 4, scroll through Bootstrap 4’s documentation, and read through the source of Django Channels to see if it’s stable enough for me to start building things with it.

I’ve never done any front-end or real-time development before. The archetypical first project for this kind of thing is a chat *yawn* app *yawn* where *yawn* people *yawn* chat.. *wake up* I decided to see what I could do with board games instead.

Django Channels is an open source project that makes it possible for people to write real-time web software like chat rooms, games, and add features to existing sites like breaking news notifications using Python. It's also designed to support a large number of concurrent connections. The problem is, it's hard to know how well the software will scale until it's put in front of real users in a real application.

Right now there aren't many people who've used Django Channels in production. I wanted to test Channels with users to see how it performs in the real-world. It's difficult to get users engaged with contrived pieces of test software so games are a good choice for this kind of experiment.

And, Codenames™ is the perfect game for this. It's quick, fun, easy to explain, and I was able to modify it to support thousands of players fairly easily. Personally, I just love Codenames™. I buy 2-3 copies at a time. Whenever I teach it to a new group I give the person who seemed to enjoy it most one of my extras.

Q: What did you use to build it?

A: I'm interested in seeing how well Channels would perform on my own sites, so I limited myself to my usual tech stack. If I were developing Codewords as "A GAME" I would have made some substitutions.


  • Bootstrap 4
  • jQuery
  • TypeScript
  • Angular 4
    • RxJS
    • Angular CLI
    • Material Components
    • Reconnecting Websockets
  • GIMP (for the logo)


  • Ubuntu 17.04
  • Varnish: HTTP caching
  • Hitch: SSL termination
  • NGINX: HTTP proxy for uWSGI/Daphne
  • PostgreSQL: Primary DB
  • uWSGI: For the WSGI Django app
  • Daphne (asgi server): Handles the websocket layer
  • Redis: Vote counting + Celery Broker + Channel Layer
  • Celery: Game state/poll heartbeats
  • Memcached: User sessions
  • Supervisord: Keeps everything alive
  • Docker
  • Linode
  • Let's Encrypt: SSL certificate
  • SaltStack: Server configuration
  • AWS
    • S3
    • ECR
    • CloudFront
  • Python 3.5.3
  • Django
    • Celery
    • Hashids
    • Channels
    • Marshmallow
    • Python Social Auth
    • Raven (Sentry error logging)