Grues in the workplace: How to play Zork in Slack

By Tim Lefler (@tlefca) on 2014-04-09


I hate the Internet on April Fools.

This year, instead of avoiding online new sites, I thought I'd do something fun for the team I work with, the team at Slack. I decided to build something that wold allow the team to play the 1979 text adventure game Zork, inside of Slack.

Needless to say, it was a very fun game to play collaboratively. Commands were handled separately then chat, so discussions could happen along side the adventure. and anyone could type a command at any time. Team mates would hop in the #zork channel when they had a few minutes, read what had happened since their last visit, and maybe make a few moves of their own. It was entertaining to watch unfold.

Since this little private experiment went over so well with the team, and a few of you on twitter, I've decided to make the code I wrote to make it work, available up on GitHub.

What's that? You don't want to download the code, set it up and host it yourself? Fine! I've also opened up the instance on my personal server available for you to connect to and play with. Just follow the instructions below and you'll be playing in no time.

Create or choose a channel

Within Slack, choose a channel to play Zork in, I would recommend a new channel. Maybe something like #zork.

Create an incoming webhook:

  • Set the channel to the one you chose above (#zork)
  • Give your bot a name (something like 'zork')
  • Upload an icon for your bot (um)
  • Copy the incoming webhook token for use in the next step
  • Copy the incoming webhook URL for use in the next step

Build your outgoing-webhook URL

Determine the following parameters:

  • session_id - A unique string. I recommend the incoming webhook token you copied earlier
  • data_id - The game you want to play (values can be zork1, zork2 or zork3)
  • output-webhook - This must be the incoming webhook URL you copied earlier

With this data, build your URL:<your session_id value>&data_id=<your data_id value>&handler=slack&output-webhook=<your output-webhook value>

Create an outgoing webhook:

  • Create a new Outgoing Webhook integration from within Slack.
  • Select the same channel as in the previous steps (#zork)
  • Choose a bot-name and upload an icon (optional, as you'll only see this if an error occurs)
  • Choose a trigger word. I recommend just using z. (You want something short, as you'll need to type it before every command).
  • Copy the URL you created above as the webhooks URL

How to play

Using your trigger word (z) in the channel (#zork) you setup will send the command to Zork. Leaving off the trigger word will not do anything, so normal discussions can still happen.

For example, to look, type:

> z look

You are standing on the top of the Flood Control Dam #3, which was quite a tourist attraction in times far distant. There are paths to the north, south, and west, and a scramble down.

> Damn! Look at that

> z south

Other stuff

NOTE: I don't own the rights to Zork, and this is not affiliated with Slack at all, just something fun for personal use.

This comes with no guarantee of uptime, compatibility or support, and may be taken down at any time. Any abuse of the system and it will simply be removed.

Any questions, comments or improvements, feel free to tweet me at @tlefca