Playing intfic in slack channels using frotz and AWS Lambda

G’day

I’ve built an integration between slack and frotz, such that anyone can easily begin playing interactive fiction in a slack channel.

Each channel is a distinct game instance, automatically saved on each turn. The game is logically a “slack bot” that any user in the channel can interact with.

Channels can be personal and private (playing solo, as is the norm), or if you use a shared channel in slack, then friends can collaborate on playing the game.

You take turns in the game by typing a slack command (e.g “/f look”) and the results of each turn are output into the slack channel.

And, since slack works across multiple devices, you can play your game on mobile or web and switch between each seamlessly.

To make this really easy to use, I’ve built a small “Slack Button” that lets anyone using slack just click a button on a website and add this integration to their slack team. I’ve also created a slack team, frotz.slack.com, if people want to try it out without integrating to their own slack team / if they don’t otherwise use slack. (You’ll need to ask me for an account since slack don’t provide public self-service team signup)

I built the backend on AWS Lambda, so there’s no servers required at all. In theory, this thing should automagically scale to any number of concurrent games in progress at any one time.

My intent is to make this available as a free public service just for fun.

Right now, I have configured it to offer the classic Zork series using the frotz backend. It’s easy for me to add more game options, but I’d really prefer to make it possible for anyone to upload / add their own preferred story files for play. I’m also open to adding new backends beyond frotz.

Before I do that work, I’m curious about the level of interest.

Also, the code is in github, and I’m considering the best way to open source it if others want to get involved.

But again, that assumes sufficient interest.

Feedback appreciated.

Brett

3 Likes

Is the back-end interpreter running in a separate process, with its stdin and stdout piped to the slackbot? If so, it should be possible to compile any Glk interpreter with (a possibly modified version of) cheapglk or remglk, allowing Glulx and TADS and such with minimal modification.

The backend is invoked as a subprocess with piped stdin and stdout, yes. So I’m using dfrotz. Built to run on Amazon Linux since that’s what lies beneath AWS Lambda.

Thanks for the pointers to equivalents for glulx

Is using this significantly different from using slackifpy? https://github.com/exposit/slackifpy

Well, for starters it’s a heck of a lot easier to use because there’s no need for setting up a server VM, etc. etc.

Indeed, to try this out for yourself, click this temporary development link. You should see a page with very rudimentary instructions and a single “Slack App Button”. Click the button and authorize the integration to talk with your chosen slack team.

That’s all it takes to get up and running.

I’m not likely to use it anytime soon, or to be able to contribute to it. But ease of use is a definite plus.