Seeking testers for a novel 12-move parser puzzle

Do you fancy testing something a little different this weekend?

Tea and Sympathy is a short technical example I’ve knocked up to demonstrate the use of my Catchphrase library.

It’s a parser-based puzzle. You can play it in a web browser or directly in a terminal.

The Catchphrase parser works differently than other parsers you might know.
Therefore I’d like to get some feedback from experienced parser IF players.

It’s written in Python, so some installation is required. Those steps are fully documented but also need
validation by a vigilant tester.

Python competence is not necessary; only some Python curiosity should suffice.

Here are some specific areas for investigation:

  • Installation instructions; accuracy / ease of use.
  • Browser compatibility. I develop in Firefox, but you are free to use whichever browser you prefer.
  • Useability. What size display are you using? Is the web interface pleasing to use?
  • Parser function. Prior to the test, what expectations did you have for the parser? Were they unchallenged or exceeded?

I believe Catchphrase could be a very exciting option for modern parser IF.
So I hope you’ll be able to spare about half an hour to try out Tea and Sympathy.
Please follow the link to find the instructions.


1 Like

I got a syntax error running it on Ubuntu 18.04 with python 3.6.9:

Traceback (most recent call last):
  File "/usr/lib/python3.6/", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.6/", line 153, in _get_module_details
    code = loader.get_code(mod_name)
  File "<frozen importlib._bootstrap_external>", line 781, in get_code
  File "<frozen importlib._bootstrap_external>", line 741, in source_to_code
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/stian/tmp/tea-and-sympathy-master/tas/", line 49
    def build_presenter(folder, /, *args, ensemble=[], strict=True, roles=1):
SyntaxError: invalid syntax

Hi Stian, thanks for taking a look.

I think Python 3.8 is the minimum required to work. So you’d probably need Ubuntu 20.04.
It’s also quite possible to compile the latest Python from source if you can’t change OS.

You should then have a shiny new python3.9 in your path. The instructions ought to work from then on.

It’s great to have interest from Linux users! I’ve had to compromise a little, since I’m expecting most users to be on Windows.

Enjoy the weekend!

1 Like

Looks like Python 3.8 is the first version to support positional-only parameter calls, which is what the slash in the parameter list for a def means.

@Stian, you can install python 3.8 for Ubuntu by adding the DeadSnakes repository and then doing sudo apt-get update; sudo apt-get install python3.8 in a terminal; this is probably easier than compiling Python from source.

EDIT. And then invoke the script using Python 3.8 by explicitly calling it in a terminal: python3.8 -m tas.story. Probably it will be necessary to use python3.8 to set up the testing environment instead of python3, but I’ve only taken a quick look.


Yeah, I also had an older Python and had to upgrade. Tried playing it for a few minutes, but it was too painful to continue. No clue what to do, had to type help before every command. Some of the time it told me to do the thing that I’d already done. It kept repeating the conversation that was going on, and sometimes it advanced and sometimes it didn’t. Why is it showing me the conversation before it shows me what my command did, or if my command even did anything at all? Why can’t I see my prompt most of the time? The timed text is EXCRUCIATING. Don’t do that unless you have an extremely good reason, and even if you think you have a good reason, I guarantee you don’t.

I’m spamming that like heart right now :smile:

1 Like

Also, I’ll take a look at Tea and Sympathy in a couple of days, but haven’t yet. It’s going to be a busy weekend for me. :slight_smile:

1 Like

Hi Josh,

Thank you so much for taking the time to try this out.
Yes, I guess it’s all about your expectations of a parser-based game.

Catchphrase tries to integrate an evolving narrative with your parser command / response.
The good news is that as an author you can control when you see story dialogue and when you get parser interaction.

I expect my authorship is what’s at fault here :slightly_smiling_face:

OK, more detailed thoughts.

I dug through the code and found (some of) the speed controls and managed to muddle through. It was still pretty painful. I don’t like the way (in the web view) the dialogue is separate from the actions and that they both disappear and you can only see the previous thing and there’s no transcript. That’s just bad. Having the scrollback so I can see what has happened previously is very important to me in a parser-based game. Also, even if it’s going to separate them, it should show me the results of my command first and not make me wait until after I hear the dialogue. Especially if the dialogue hasn’t advanced. Really it shouldn’t do anything if my command fails. If it keeps showing me the same dialogue over and over and over again because it took me five tries to find a command that works, I don’t know what’s going on. Are these characters supposed to be saying the exact same thing over and over again? Or does that mean I haven’t progressed and nothing happened, and it’s just remining me of the most recent thing that was said? If you have a standard parser setup with a transcript, you don’t have that problem. It doesn’t have to repeat anything: it can just tell you your command failed, so there isn’t that ambiguity.

So yeah. As a player I definitely don’t want the author to control when I see story dialogue and when I get parser interaction. I want to be in control. There might be some interesting applications of that but mostly it’ll just suck.

And yeah, the writing was unclear. Am I supposed to be Louise? Probably? But it just says “you put the water in the kettle” so am I a third person who’s just being helpful but not saying anything? I don’t really know.

The help seems to just give you examples of possible commands. Which aren’t necessarily (in fact, often aren’t) useful. I only figured out the command to turn the stove on after maybe 15 or 20 tries. It did eventually suggest “heat kettle” but definitely not right away. I’m not sure what controls that.

The look and examine commands seem extraordinarily useless. It seems like “heat kettle” is the only way to tell if the water is hot? Why doesn’t “examine hob” or “examine kettle” tell me that? And the whole “oh, here’s a tree view: the hob contains the kettle contains water” feels like a programmer-ish thing and not at all what I’d expect from a description of what I’m looking at in a piece of interactive fiction. And there doesn’t seem to be a nothing’s there response? I tried “examine counter” at one point and it said something like “on the counter is:” and then there was no text after that.

It wasn’t at all clear to me why I could sometimes do actions like putting sugar in a mug, or getting a mug or spoon, and sometimes that option wasn’t allowed right now. At one point I seemed to have two mugs. At least it sometimes talked about a yellow mug and sometimes a white one, but there didn’t seem to be any way to refer to one or the other, or control which one I put a thing in. Sometimes if I “put tea in mug” repeatedly it would switch from one to the other?

Hi Josh, this is all excellent feedback.

I’ve tried to unpack your comments, and I’ve created issues in the Github repo as follows:

So, I’ll prioritise these and get to work on them.

As to whether you are Louise or not; that might be my poor writing. I’m going to fix the technical issues first and see what that does to the feel of the narrative.

About half the bugs so far are fixed. Tea and Sympathy is now at version 0.4.0.
You will need to update your installed version of the Catchphrase library (to 0.12.0) like this:

pip install -U turberfield-catchphrase

The remaining issues which @JoshGrams identified are broadly:

  • Fixes to the object model.
  • Better reporting of game state.
  • Transcript/command history in Web mode.

I should have these done by Friday, I think.

A further update…

All bugs identified in the first round of testing are fixed. Tea and Sympathy is now at version 0.5.0.

Thanks once again to @JoshGrams for his time and patience. It was a salutary reminder to me how important independent testing is. The piece is much, much better for it.

And definitely worth a look now if you’d like to see how IF might be done in Python.
All details are at the repository. Enjoy! :grin:

1 Like