Victor's Spring Thing 2021 Reviews

Ok, still talking about Theatre of Spud, I’ve gotten to the ‘run’ part of the README… but now I’m again running into a wall.

victor@victor-ubuntu:~/Documents/Spring Thing 2021/Theatre of Spud$ ~/catchphrase-app/bin/python -m tos.main
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/victor/Documents/Spring Thing 2021/Theatre of Spud/tos/main.py", line 27, in <module>
    from tos.story import Story
  File "/home/victor/Documents/Spring Thing 2021/Theatre of Spud/tos/story.py", line 121
    def build(self, pkg=None, bookmark=None, /, **kwargs):
                                             ^
SyntaxError: invalid syntax

And the other suggested method:

victor@victor-ubuntu:~/Documents/Spring Thing 2021/Theatre of Spud$ ~/catchphrase-app/bin/python -m tos.app
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/victor/Documents/Spring Thing 2021/Theatre of Spud/tos/app.py", line 23, in <module>
    import importlib.resources
ModuleNotFoundError: No module named 'importlib.resources'

That is due to your version of Python. Version 3.9 is recommended.

Installed 3.9 with Apt using this method. Still no luck.

victor@victor-ubuntu:~/Documents/Spring Thing 2021/Theatre of Spud$ python3.9 -m venv ~/catchphrase-app
Error: Command '['/home/victor/catchphrase-app/bin/python3.9', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

Hi Victor, sorry this is causing you a delay.

The instructions in the readme have been tested and should work:

If you previously created a venv with Python 3.6, you will need to remove it before following those steps again:

rm -rf ~/catchphrase-app

1 Like

Okay, I also had to install a package python3.9-venv. But now I think I’m in the game.

Mood: this had better be good. :laughing:

2 Likes

I tried this on macOS (with Python 3.9.2 from Homebrew) and the installation went fine, but running in Terminal crashes after entering my name:

Enter your character's first name: Petter
Traceback (most recent call last):
  File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/administrator/Downloads/TheatreOfSpud/tos/main.py", line 94, in <module>
    run()
  File "/Users/administrator/Downloads/TheatreOfSpud/tos/main.py", line 89, in run
    rv = main(args)
  File "/Users/administrator/Downloads/TheatreOfSpud/tos/main.py", line 54, in main
    presenter = story.represent(lines)
  File "/Users/administrator/Downloads/TheatreOfSpud/tos/story.py", line 152, in represent
    presenter = Presenter.build_presenter(
  File "/Users/administrator/catchphrase-app/lib/python3.9/site-packages/turberfield/catchphrase/presenter.py", line 43, in build_presenter
    rv = Presenter.build_from_text(text, index=n, ensemble=ensemble, strict=strict, roles=roles, path=p)
  File "/Users/administrator/catchphrase-app/lib/python3.9/site-packages/turberfield/catchphrase/presenter.py", line 51, in build_from_text
    script = SceneScript(path, doc=SceneScript.read(text))
  File "/Users/administrator/catchphrase-app/lib/python3.9/site-packages/turberfield/dialogue/model.py", line 439, in read
    parser.parse(text, doc)
  File "/Users/administrator/catchphrase-app/lib/python3.9/site-packages/docutils/parsers/rst/__init__.py", line 196, in parse
    if len(line) > self.document.settings.line_length_limit:
AttributeError: 'Namespace' object has no attribute 'line_length_limit'

Running the local server version in Safari gives

500 Internal Server Error
Server got itself in trouble

after entering my name on the first page.

I got the other Python game in the competition, Space Diner, to run fine by the way.

That happened to me too, Petter. I thought I was in, but as soon as I enter a name, I get the same series of errors that you get.

I’m very sorry @VictorGijsbers , @Angstsmurf that’s something I’m going to have to investigate deeper.
It works fine for me on Windows this morning.

I will fire up a Linux box this afternoon and see if I can find out what the problem is.

Edit: It’s likely to be an issue with a dependency package, docutils. This is frequently shared by other OS components and might be a special version on MacOS.

The problem is that docutils 0.17 added some new settings (namely, line_length_limit) that your code (or one of the libraries you’re using) is not setting up properly. It can be worked around by amending the install_requires directive in setup.py as follows:

install_requires=[
    "aiohttp>=3.7.3",
    "turberfield-catchphrase>=0.18.0",
    "docutils<0.17"
]

(See also: Docutils: Documentation Utilities / Bugs / #415 0.17 version incompatibility with some 3rd party code)

1 Like

Thanks @ArdiMaster . Does this mean you have the game running now?

I do! Looks interesting so far.

That’s great! I’ll step back now. Sorry @VictorGijsbers for diverting your review thread.

Thanks! That fixed it.

Theatre of Spud by D E Haynes

I finally got the game running (see posts above if you have trouble yourself). The game asks me to enter my character’s first name; but then, no matter what you enter, your character is always called Alan. No problem, but a bit baffling. Perhaps this is only a temporary character, and the real character comes along later?

What is a problem, though, is the game’s use of timed text. Slow timed text. Really, really, really slow timed text. Take the following exchange:

? examine desk
'examine desk' is not an option right now. 

The Box Office is a tiny room. 

Behind Alan is the door back to the Foyer.
On the left is a split aluminium window facing the Foyer entrance. 

There is a desk and a chair, and a rotary telephone fixed to the wall on the right. 

There is nothing else here. Everything of value is locked away. 

?

After typing the command “examine desk”, it takes 23 seconds before the next prompt appears. First one sentence appears. And then, after a few seconds, another. And then after a few seconds more, yet another… I’ve seen timed text before, but never anything like this. It means that exploring the game can only be done at an absolutely glacial pace. I walked through a couple of rooms, didn’t manage to interact with even a single thing or person that I encountered in the world, and then gave up. I might be willing to try again if the timed text mechanic is removed, but these waits between turns are simply unbearable.

3 Likes

So I Was Short Of Cash And Took On A Quest, by Anssi Raisanen

Adventure games, including puzzle parser games, have a tendency to the ridiculous. You need to get the banana from the monkey because it’s the item that the sleazy film director needs before he allows you onto the set, but the monkey will only let go of it if you first let loose the tiger… well, we all know the deal. One way to handle this is by carefully crafting your puzzles so that they make sense in the environment of the game. The other way to handle it is what Anssi Raisanen does in So I Was Short Of Cash And Took On A Quest: make it clear from the beginning that we are involved in some ridiculous test. The oven mitt hanging in a place we cannot reach is simply inspired.

So I Was Short Of Cash And Took On A Quest is a short puzzle game. As the first paragraph of this review indicated, I enjoyed how it leaned into the weirdness of the premise. (Another high point is certainly the ability of the protagonist to recognise bird song in terms of musical notes!) It seemed solidly implemented. Nothing groundbreaking, but definitely well done. One little note: the tile on the floor should certainly not be described as “fixed in place” when the player tries to press or pull it.

3 Likes

Hi Victor, thanks for your patience. I’m very grateful for the time you spent on Theatre of Spud. Alan will be back. :grin:

1 Like

Hi Victor, thanks for playing my game and for the comments. Glad you enjoyed it!

2 Likes

Mean Mother Trucker by Bitter Karella

Compared to the other Bitter Karella games I’ve played – Basilica de Sangre, Poppet, Lovely Assistant: Magical Girl (about which, I remember with sudden shame, I still have to write a sonnet, which I hereby solemnly promise to do very very soon) – anyway, compared with those IF Comp games, Mean Mother Trucker is fairly short. It’s a simple, heavily-hinted puzzle game that takes perhaps thirty minutes to play through.

Perhaps the most obvious of Karella’s strengths is coming up with fresh new settings for every game; not just fresh compared to their other games, but fresh compared to the interactive fiction corpus as a whole. This time we are playing a transgender female trucker in an American desert town, complete with an arrogant cop, a born-again biker gang and a ‘lot lizard’, which I had to google but which turned out to be a nickname for a prostitute working the truck stops. The only piece of IF with even vaguely similar setting that comes to mind is I-0, but this game is nothing like that.

Our protagonist wants to convince a waitress to come with her on a dangerous trip. The plot, insofar as it exists, is pretty nonsensical. But the puzzles, oh man, the puzzles are a glorious indulging in the most paradigmatic sins of adventure game puzzle design. I’ve seen some reviewers complain about this; about, e.g., that absurd sequence of actions needed to wake up the dog. But I firmly believe that this is precisely the point! The spatula, the… oh man. And then to get into that garage (without any reason) and find a bobblehead of a Catholic saint. I loved it. Or the logic-defying puzzle with the gumball; simply brilliant. And still they’re easy to the point that you breeze through the game! This is an author who knows how to craft good puzzles (as we have seen in previous games) and who has purposefully thrown that skill out of the window in order to enjoy, for once, the kind of excess that would appeal to a Mean Mother Trucker.

As others have remarked, the game could do with an extra round of polish (there are some typos, missing synonyms, strange messages). But I found it easy to enjoy.

4 Likes

PYG]MALION*, by C.J.

From the scant information given in the Credits sections, I conclude that PYG]MALION* is written by a student at the University of Central Florida, as part of the Games and Interactive Media Program. I don’t know whether this means that there will also be a theoretical thesis accompanying the game at some point; but I do know that the game itself is both stylish and very clever.

In PYG]MALION*, we take on the role of a murdered god(ess) who has been temporarily reincarnated into a Hellenistic statue so (s)he can investigate h(is)(er) murder in the house of the president of the fourth dimension. While the game’s title is a deliberate reference to Short’s Galatea, its structure is very different. For this is a detective game; and indeed the Spring Thing description of PYG]MALION* specifically mentions the author’s love for the board game Cluedo. (I believed it was called Clue in the USA, but perhaps not.) So we move from room to room, examining suspects and objects, in order to form a hypothesis about who killed us.

The writing and graphics are mostly delicious, evoking a bizarre, transhuman world that is just real enough to take seriously. It is no mean feat to walk so far outside of the boundaries of genre and yet capture us, keep us in suspense, eager to know more; but C. J. manages it. There are some typos, a missing image, a bunch of Twine errors in some of the endings – but with just a little more polish, this will be a work of perfect craft.

Back to the detective aspect. As we continue our investigation of the mansion, it becomes more and more clear that we are not actually uncovering any evidence at all. All the questions we ask are brushed off; all the location are so strange that we do not even know what it would look like for something to be out of the ordinary. And yet the president of the fourth dimension stages a dramatic accusation scene, where, like a Hercule Poirot, we can, indeed must, accuse somebody of the murder. Not that it will benefit us. We are dead, our very temporary resurrection notwithstanding. So we accuse someone. And what happens?

What happens is what always happens when the weak – and none are weaker than the dead – attempt to bring the powerful to justice. Nothing. The great politician; the corporate boss; the glamorous artist; the sports hero; being accused by us is nothing but a temporary setback for them, if it can be called a setback at all. Whatever we do, the game ends with us dead and the powerful back in the mansion conversing with each other.

It’s a dark little tale that C. J. has given us; and a fascinating, genre-defying addition to the corpus of detective IF.

4 Likes

Cycles (Excerpt), by Mike Marttila

The game Mike Marttila has entered into Spring Thing is (clearly and explicitly) the introductory part of what is to be a larger game. It playfully introduces our protagonist, her aunt, and the idea of a family reunion; and then, when the reunion itself begins, it quickly and somewhat forcedly introduces us to the darker, horror-related themes that will no doubt dominate the full game. Brian Rushton writes:

I get the impression that the rest of the game will be nothing like the intro at all, neither in setting, nor tone, nor mechanics. So it’s very hard to get an idea if the finished game will be enjoyable or not.

And I agree with that. It’s hard to see what the main game will be like, because it will probably not have the same kind of linear structure of this opening sequence. (This is also strongly indicated by the author’s comments on the Spring Thing website.) So that said, I will instead spend some time talking about craft, because that may be helpful to the author. There are two things in particular that I want to talk about: a sporadic tendency to overwrite, and the way the introduction of the horror is handled.

Here’s a quote from the very first passage of text you see:

Gammy’s death had come two months after her 85th birthday party, descending upon the family with the terribly quick and quiet snip of a pair of scissors, unstringing her five sons and daughters and the children they’d had, and casting them loose to ripple across the country like a scattered parade of kites driven by the capricious squalls of career, school, and wanderlust.

Too many images are pushed together here, some of them in fact incompatible. A death that descends upon the family with the sound of scissors is already quite something – I understand what the image wants to accomplish, but scissors don’t tend to descend. That these scissors then also cast loose the children to ripple across the country like a scattered parade of kites is altogether too much. Sheets and fields of grain can ripple, but scattered parades surely cannot; and what, anyway, is a parade of kites? Normally kite flyers are standing still, and their kites are not lined up to move forward in a parade.

I’m not discussing this in so much detail because I want to make fun of Mike Marttila; on the contrary, I’m trying to analyse why the passage, despite the interesting metaphors, doesn’t work for me. Here are two more examples:

“Terrific!” Miranda trilled, the overenthusiasm in her voice flashing out of her guilt like sparked gunpowder.

I think the image is again well-chosen; but there’s too much going on in the prose. We already recognise it as overenthusiasm, so maybe get rid of that phrase; and I think something can certainly flash like sparked gunpowder, but surely it is not very much like sparked gunpowder to flash out of someone’s guilt. Or this passage, which is almost good:

Now, however, the modest row of homes felt formulaic and suburban, pleasing more for the sentiment of what they’d once been than what they were, like a pop-up picture book whose cardboard tab supports had become unglued from overuse so that the models on each page lay flat and inert.

I love this metaphor; comparing the loss of magic of the house of the grandmother, seen again after all those years, to the way in which an old pop-up book can now fail to pop-up. But it needs to be delivered in a more punchy way. The main thought has already been given twice (“formulaic and suburban”, and then “pleasing more for… than what they were”) before the image is brought in as a third statement; and then the image itself is a bit overburdened (e.g., I think we should get rid of the irrelevant phrase “from overuse”, also because it doesn’t fit the analogy very well).

Second thing: the way the horror is introduced. There’s a lot of foreshadowing here: weird feelings after the phone call; then no fewer than three visions in the house; then a sequence of passages in which we are drawn deeper into the woods. To me, it felt forced. I’m like, okay, okay, I get it. Get on with it! I think it would be more effective to tone this down. Maybe a weird dream, if we want some foreshadowing. But then during the party, keep things natural; drop, if anything, small hints of discomfort, but not the big full-scale panic attack experience. Have us wander into the woods, maybe joking about feeling scared, but keep it ambiguous; make the reader not be sure where we’re going, story-wise. And then, bam, the evil dude, exerting sudden and inescapable power over us. Others may disagree, but these were my thoughts on how to make it more emotionally compelling!

4 Likes