This had me snorting coffee out my nose. Ah, commas. The joy they give us.
(My last cup of coffee before I’m off to France BTW. Enjoy the Comp! See you in a few weeks.)
This had me snorting coffee out my nose. Ah, commas. The joy they give us.
(My last cup of coffee before I’m off to France BTW. Enjoy the Comp! See you in a few weeks.)
Improv: Origins, by Neil deMause
A prequel arriving more than two decades after the original series wrapped up, Improv: Origins is a funny, deep one-room puzzler that makes me interested to check out the sequels it sets up. There’s some old-school difficulty, plus a nasty bug or two that made things even harder than intended on my playthrough, so I can’t help bemoaning the lack of modern conveniences like a hint menu, so the game’s definitely not for everyone, but the entertaining cast of characters and intricate puzzle design made me glad I powered through (and, er, begged for help on the forum when I got stuck).
What we’ve got here is comedy superheroes. I see you shuffling for the door, and I know, I know, that sounds pretty dire. But the game makes a great first impression, with sophisticated jokes that go way beyond the typical played out super-parody. Like, your hero is a temp – so far so standard, but the reason the bottom’s dropped out of the heroism game is that a superhero bubble has just burst. The game’s set in a bank – your job is to open up a locked safe after the bank fired the inventor who created it, and they huffed off without sharing the trick of accessing the thing – and as a result there’s a set of economics jokes that kept me laughing, like the painting of two financial-themed heroes, PIN and Teller. Sure, much like with the game as a whole the author must have been sitting on that one for several decades, but it still got me.
It quickly becomes clear that the challenge on offer is no laughing matter, however. As befits a good one-room game, you’re presented with a clear goal and a dense space to explore in hopes of finding an answer. Atypically for this sub-genre, though, soon enough you’re not alone – your MacGuyver-themed superhero is eventually joined by others whose powers include object-finding echolocation, Google News searches avant la letter, and deep familiarity with the dictionary. This is the crew, presumably, that star in the 90s-era Frenetic Five games, and their powers – and personalities – strike a good balance between being comically useless and surprisingly helpful. The group is implemented well, too, with the team serving as a Greek chorus to some of your more hapless flailing, and interjecting into each other’s conversations with the occasional bit of kibitzing.
For all the fun banter and clever writing, though, the game is very much structured around that puzzle, and as mentioned up top, I found it to be a doozy. After finding that the obvious ways to try to open the vault end in failure, I wound up doing a lot of further poking and prodding in the environment not because I had a clear sense of how it would be helpful, but just because it was something to do. And this single big puzzle has a lot of sub-steps, some of which can feel more frustrating than they need to (the mini-puzzle of accumulating rubber bands especially seemed like it ended in anticlimax, though the bug I mention below might have contributed to that). There are definitely high points – I felt super clever when I sussed out how Lex’s word powers could be leveraged – but also moments where it seemed like reading the author’s mind, or using out-of-game thinking, was necessary to progress, and overall I spent a lot of time banging my head against the wall.
What’s worse, some of that banging was occasioned by what seemed to be bugs. The blurb indicates that it’s meant to be impossible to render the game unwinnable, but I think I managed to bork it up by taping the rubber-band ball to the book, which rendered the former object unusable and didn’t seem to be possible to reverse. I also was sent on a wild goose chase when looking for a password for the vault, after consulting with the finding-specialist Clapper to locate it: typing ASK CLAPPER FOR PASSWORD results in the heroines herself starting to beep, which by the rules as they’ve been spelled out indicates that she should know, or somehow be, the password. But that appears to be completely incorrect, unless I missed an alternate solution.
These are significant downsides to the game, and again, there’s no integrated hints or even separate walkthrough file to hold the player’s hand, which makes me think some might not make it to the end. Still, I think there’s more than enough creativity and humor here to make Improv: Origins worth trying. What’s even better news, the ABOUT text indicates the author’s return to the IF scene looks to be no one-time thing, so I’m looking forward to seeing more of their work – and as mentioned, I’ll likely check out their older stuff too, though I hope someone’s hacked together some walkthroughs in the intervening decades…
Alchemist’s Gold, by Garry Francis
There are a lot of different qualities that can mark out a piece of IF as having old-school sensibilities – two-word parsers, Zarfian cruelty, minimalist implementation – but there’s one that’s perhaps the most basic: you’re just out to get some treasure, man. Alchemist’s Gold is about one man’s quest to get an alchemist’s gold, unsurprisingly enough, with no more motivation than the protagonist having heard the rumors that this fellow’s figured out the whole Philospher’s Stone business, and wanting to have the wherewithal to dress like one of the nobility. Jean Valjean we ain’t, but given the style of game here on display, this bourgeois-materialist social climbing is entirely apt.
As to the rest of the aforementioned signifiers, Alchemist’s Gold is fairly easygoing, while still being recognizably a text-adventure-not-IF affair. The implementation is mostly robust, one of the unwinnable situations is clearly signposted, and though the puzzles aren’t brainteasers they’re satisfying to solve (there are also integrated hints, though fair warning that they provide no guidance for the final puzzle, where the wrong move can also lock you out of winning but without the notice you get in the other situation). There’s one technically impressive bit, which is a maze – but the trick is that you can find a map, nicely rendered in ASCII, which makes traversal easy. So it feels like a modern take on an old-school design, which makes for some pleasant adventuring.
I could end things there and I think it’d be an adequate review – the game you’re picturing after reading the above paragraph is pretty much the game Alchemist’s Gold is, a fun way to while away half an hour that isn’t trying to make much of an impression beyond that – but just to pad out the word count, I’ll expand on some of the pieces I glancingly ran through.
On implementation, the game uses the PunyInform library, which from my understanding is a stripped-down version of Inform 6 that helps games run more easily on retro platforms. Despite this, I didn’t run into places where I felt like the parser or implementation were too primitive to be enjoyable – there were definitely times when the parser returned an error rather than automatically figuring out what I wanted to do (like, UNLOCK DOOR giving a “with what?” prompt rather than selecting the only key in my inventory) but this fits the vibe. And while there aren’t a lot of extraneous actions that have much effect, you can still do stuff like try to talk to the animals and otherwise mess around with pieces of the game that have nothing to do with solving the central puzzles. The one annoyance I ran into is that various actions I’m used to not taking any time, including out of world actions like INVENTORY and HELP still use up a turn, which made a time-sensitive situation late in the game more of a pain than it needed to be.
As for puzzle fairness and the possibility of getting into unwinnable states – so midway through the game, you get a single-use item that can get you through any of three locked doors, and if you pick the wrong one, you’ll be stuck. But the game is kind enough to tell you this if you make an incorrect guess, so it’s easily fixed with an UNDO. I kinda question whether this kind of artificiality is any better than just designing the game to avoid these kinds of situations, but I get that this sort of thing is part of the sub-genre’s tropes, and better the awkward warning than nothing. As mentioned, the final puzzle can also be rendered unwinnable – I don’t think this would be a big deal for most players who’ll largely be barreling through the game in one sitting, but I put it aside for a day before wrapping up which meant I’d forgotten an important detail by the time I got to the finale, which made me struggle, and if I’d made my save a single turn later than when I did, I’d have had to replay the whole game over. Again, the issue’s unlikely to come up, and replaying would have been quick, so I think this is all fine.
And just to circle back to the opening – yeah, the protagonist sure seems like a jerk. Besides the whole motiveless malice thing that drives the action, there’s also an early sequence where he befriends a cute woodland creature, then delivers him to a terrible fate (though as a vegetarian, I might be oversensitive here – maybe the idea of squirrel stew is meant to be comedic?). There’s a certain unity of character here, reinforcing the idea that this is not someone you should ever ask to housesit, especially if you have valuables or pets, and again, amoral acquisitiveness is a hallmark of the PCs in many early pieces of IF (I’ve enjoyed Drew Cook’s recent exegesis of the colonialist themes in Zork, for example ). But there’s a certain naivety to those chthonic figures that makes things go down easier when they’re revisited – or maybe it’s just that the devilish puzzles and recalcitrant parser provide sufficient distraction from the unattractive selfishness on display? If that’s the case, perhaps reducing the friction from old-school designs, as Alchemist’s Gold successfully manages, has some unanticipated downsides.
EDIT: forgot to post the transcript!
alchemist’s gold mr.txt (116.4 KB)
python game, by theernis
Points for truth in advertising: this is a game, kind of, in Python, certainly, and the low-effort approach to naming – and capitalization, for that matter – carries through to the three minutes or so of content here (well, quintuple that if you don’t already have Python installed and need to wrestle with setup). Upon starting the game, you’re greeted with a dense list of commands, then dumped into a tutorial where you (who are you?) are fighting a wolf; in a battle of your fists against the wolf’s claws, you appear to be guaranteed of victory.
I admittedly have never attempted to punch a wolf, but I have read the anticlimactic last chapter of Robinson Crusoe where he gets jumped by starving wolves in the Pyrenees, and based on what I learned there this seems unlikely to work.
(Also: Robinson Crusoe is way weirder than you think. There are also two sequels; in the first sequel he goes to Siberia, and the second is a book of metaphysical essays. One neat thing about novels in the 18th Century is authors hadn’t figured out how they were supposed to work. See also Tristram Shandy).
(And why yes, I’m grasping for things to talk about that are more interesting than python game).
(Seriously, read Tristram Shandy, it’s hilarious).
But so anyway you win the tutorial fight against the wolf, then you fight a bear, and the tutorial warns you to run (I have also not attempted to punch a bear, but this time my intuition and the author’s appear to align in terms of the likelihood of a positive result when boxing wild animals). If you do, you encounter a trader, who’ll let you swap assorted wolf bits for coins, and then for health potions. And with that introduction done, you’re now set loose into the game’s wide world!
The game’s wide world consists of two locations, which appear to be interchangeable, to the extent that all you can do in either is nap until another trader comes along. Per Dan Fabulich’s review, this is because there’s a bug, and napping should also fire off a risk of a random encounter with another wolf or another bear. But there’s no additional content beyond that, even were that bug to be fixed, no progression or ending or plot or anything else. Just a man punching a wolf, forever.
I don’t want to punch a wolf.
I don’t want to punch a bear.
I don’t want to play python game.
Look, I hate to be negative – I try to be a positive person, for my own sake and that of others! But this is a half-completed programming exercise – maybe eventually, after a lot of work, it could provide the skeleton for a worthwhile experience, but the game’s clearly nowhere near that yet. I will say, this did have the easiest launching process of any bit of Python IF I’ve played, so that’s not nothing, and hopefully the author’s decision to enter this into ParserComp bespeaks a desire to get public feedback on a work in progress. But after getting that feedback, I hope they figure out how to incorporate it into a game that does something singular or unique or personal, so that the generic title “python game” will no longer feel so apt.
I noticed that I only met traders but the whole exercise was so pointless that I difn’t bother to look in the code. Kudos to @dfabulich.
Gent Stickman vs. Evil Meat Hand, by AZ
This is one for the books – a parser-based text adventure where, other than a few out-of-world commands, the only text is what the player types (those books must be comic books). This works sort of like those old Sierra graphic adventures that still used a parser, where you could see your character and their surroundings, but would direct them by typing – except where those games would similarly drop a text paragraph to tell you the results of your actions, here everything is depicted graphically or iconographically, as your stick-man protagonist ponders the unlikelihood of success when rejecting a proposed course of action, or holds out his hands to reveal the inventory. So this is a gimmick game, but it’s a fun gimmick that rests squarely within the four corners of the ParserComp rules, which makes me like the gimmick even more.
The game itself, I liked less well. The order of the day here is juvenile comedy, which I think is the right call given the comedy inherent in the interface – you’re a stick-dude, a hand with googly-eyes (played I presume by the author(‘s hands)) kidnaps your stick-girlfriend, you need to raid his castle to save her. That’s all well and good, and some of the jokes are solid, including the inevitable twist ending. Unfortunately, the gameplay overcorrects with tough-as-nails puzzles which don’t always make sense even given cartoon logic (the high salt content means peeing on plants is generally a no-no rather than a valid watering strategy, is my understanding – or rather, that’s one of the reasons it’s a no-no). This high degree of difficulty helps the game last longer – there are only four locations, and only two real puzzles plus a (pretty easy) guess-the-verb challenge – but it means that playing Gent Stickman means replaying it.
This wouldn’t necessarily be so bad, since the various fail states are generally pretty amusing, but I ran into some technical difficulties that increased the annoyance factor. Most notably, the graphics that show the response response to your input loaded really slowly for me, which was a pain on its own but also meant that sometimes I’d take an action and see two or three blank windows pop up in sequence before dumping me into a game over, which isn’t especially helpful! There are also some places where the design conceit makes progress more difficult than it really should be, like where it took me forever to figure out how to read the text on a plaque mounted on the castle wall – READ PLAQUE didn’t work, and I couldn’t help thinking that in a regular parser game, I’d be told exactly how the parser wants me to refer to the object, while in a graphic adventure I’d just be able to click on it, so this was worse than the worst of both worlds (turns out I was a dummy and I just needed to READ SIGN).
All this means the middle part of my playthrough was kind of rough, as the novelty of this clever rethinking of how a parser game works wore off and the hard puzzles kicked my butt. After I got OK with abusing the (also entirely graphical) hint feature and powered through to the end, though, I looped back to being amused again. This is a funny, clever game, and I can forgive its Dark-Souls-ish difficulty level even if I can’t endorse it. I’m not sure I need a bunch more games using the same interface, but as a one-off gag, Gent Stickman is hard to beat.
Radio Tower, by Brojman
A game gains a lot by its setting, especially, perhaps, parser IF – back when dinosaurs ruled the earth in the early aughts, I remember it being a commonplace of newsgroup conventional wisdom that the way parser games allow the player to freely roam a landscape or edifice, subjecting each of its features to minute inspection, is a good thing to lean into in one’s designs. You could argue this is making a virtue of necessity – parser IF, at least out of the box, definitely isn’t best-suited for narrative development proceeding over time, or depth of characterization, so what of fiction are you left with except the boring landscapey bits? – but I think there’s something to it: “immersion” is a fuzzy concept that richly deserves the scare quotes I’ve gifted it, but all the same I undeniably enjoy loping around a well-realized setting and getting to know it.
That sense of place is probably one of the strongest suits of Radio Tower, a custom-parser game written in something called Godot (thankfully the loading times are reasonable). The eponymous tower – and its connected station, since decommissioned and turned into a combined rural retreat slash dimension research lab by the protagonist’s friend – is strikingly realized, with a simple title-screen graphic, moody rain effects, and plausible layout elegantly depicted by a blueprint-aping map system. It’s a creepy place to wander, but also makes for satisfying exploration, as you see how different rooms connect up and anxiously push towards the inevitably-bloody revelations in the depths of the compound.
Notably, however, that vibe is only intermittently communicated by the prose – usually, of course, the main attraction in a piece of IF. It’s atmospheric enough, but it’s riddled with typos that start with the first sentence of the first location’s description and increase in density as time goes one (“This rooms severs as Desi’s art studio,” runs the tagline for a mid-game location). The game itself also feels unpolished, with the second half of the complex feeling much more thinly implemented than the first, lacking much in the way of puzzles or even scenery elements to check out. And the design is reliant on a very random-seeming health mechanic: there are regular fights with monsters hiding under various bits of scenery, which use up the various one-use weapons you can carry around, which is all well and good, but many of them inflict unavoidable damage so even if you’re well-prepared, you still might not make it to the end. Further, almost all of the encounters are avoidable if you don’t poke around the environment or decline to investigate a strange noise that you heard, which seems like a bad approach inasmuch as it teaches the player to avoid content and ignore anything that isn’t obviously a puzzle.
Similarly stripped-down is the parser. The custom system is set up to only accept a very narrowly-defined set of commands – and idiosyncratic ones by IF conventions, with the check-out-an-item verb being INSPECT, not EXAMINE, and not admitting to any abbreviation. Fortunately these are all explicitly listed in a side panel, and all the nouns you can apply them to are highlighted with a particular color in the main screen – gold for scenery, blue for stuff you can interact with, red for exits, green for takeable items. So this makes things transparent enough, though the parser is really unforgiving – it doesn’t understand pronouns, and E won’t substitute for GO EAST, nor will INSPECT CHAIR do for INSPECT CHAIRS or (less justifiably) ATTACK WITH MACHETE for ATTACK MACHETE. And the main interaction verb is USE, but you can only USE inventory items, meaning for example there’s nothing to do with the computer in your home other than INSPECT it. The overall effect winds up not too dissimilar from something like Gruescript, so it’s playable enough but sucks enough of the fun out of using a parser to make me wish it’d been implemented with a point-and-click option.
Add to this slightly sloggy interface an inventory limit and the lack of a save game (I mentioned you can die, right?) There are also some bugs – trying to USE WAND led to “Error – tried to use an item with an invalid type”, and I had a bunch of inventory items on the floor go missing after progressing the plot. Plus there was at least one gold-highlighted scenery object that the game told me wasn’t there when I tried to INSPECT it.
As is my way, I’m carping – I think justifiably, because there are a lot of niggles that make playing Radio Tower less engaging than it deserves to be. But it does have its strengths, and since it ends on a cliffhanger, there’s a possibility the author’s going to be coming back to this story. With some tightening of the system, a little more polish, and either loosening up the parser to allow it to play to its strengths, or eschewing it entirely to allow for a mouse interface, I could see a sequel working well, and even as is, it’s still worth a dip into the game to enjoy wandering around its precincts for a while.
I hadn’t played Radio Tower yet, so this review was on its way to being a potential spoiler until I started laughing at this line, which broke my reading trance.
See Dot run. Run Dot run. Go Dot go.
I’m playing Radio Tower now. I think it has potential, but with an extremely limited vocubulary, terrible spelling, a few bugs and very low puzzle density, it is a tedious slog.
The thing that really bugged me is that it runs in an iframe on itch.io and I can’t see the whole screen at once. I had to maximise the browser window to get the full width, but I couldn’t get the full height, so I had to keep scrolling up and down between the input line and the output window. Did anyone else strike this? (I’m using a laptop, but it has a large screen.) I tried adjusting the text size, but that only affects the input.
The game also causes my CPU to run hot. Crikey, it’s only a text adventure. What could possibly be using up all that CPU power? Maybe the continual annoying rain and lightning bolts around the edge of the screen?
I’m still trying to work out what’s going on. I appear to be in an unwinnable situation, got injured once too often and I’ve just died. I’ll come back to it tomorrow.
I also ran into that screen-size issue, though I’m on a laptop with a smaller screen so didn’t want to ding the game unfairly – I did find that using the full-screen option (the button with diagonal arrows in the lower right) made things work better, albeit at the cost of being able to easily access other tabs and windows.
Yeah, that’s how my first playthrough ended too. Replaying and avoiding the gotcha-fights is pretty quick, at least, and I think far easier than trying to flail around looking for healing items since there’s at least one unavoidable-damage situation on the way to the end.
Midnight at Al’s Self Storage, Truck Rentals, and Discount Psychic Readings, by Thomas Insel
Hey, python game, you still around? I know I said some mean things about you, but it wasn’t anything personal; just a little tough love, you know? Anyway I hope you’re here, because see this ^? All in bold up there? Now that is a title, funny and intriguing and creating a vibe as well as doing some real work grounding the player in the situation they’re going to be inhabiting once they load the game up. Why settle for less, when you could have something like that for yourself, too?
(Although, now that I think about it: I’m hoping that “Self Storage” rather than “Self-Storage” is just a typo).
OK, the unkind might say that beyond a killer title there isn’t all that much to Midnight at Al’s. It’s got a quotidian premise that doesn’t fully exploit the craziness said title seems to promise and which only twists late in the day, pivoting to the less-than-compelling Generic Horror Plot #17 (woooo it was built on an old Indian burial ground woooo – kinda problematic!) at that. There’s only one real puzzle, and fewer jokes than you’d think. And there’s some wonkiness to the implementation, including one game-ending bug that’s really easy to trip into.
I can’t deny that the unkind have a point, and we’ll return to those complaints in due course. But despite the flaws I had a good time with this one. Partially, I admit, is that it’s just nice to sink into a nice, familiar Inform 7 game after a Comp that’s been heavy on custom parsers and old-school text adventures – this is my IF comfort food, and I don’t think I’m alone on that. But it’s also the case that that one real puzzle is very satisfying to work through, requiring you to think about what you’re trying to accomplish, deduce what’s going on with a non-obvious but clearly-implied barrier making the simplest way of solving the problem fail, then reassessing your options and capping things off with a nice aha! moment. I’m being intentionally vague here since there’s just the one puzzle so for folks who’ve played the game there’s no ambiguity about which one I mean, and it’s fun enough to solve that I don’t want to spoilt it even a little.
Admittedly, that puzzle does have more than its share of fiddliness – there’s part of it that involves unlocking something, and despite the game clearly knowing exactly what I was trying to unlock and with what, it took me like six tries to phrase the action so that it would be accepted. And it also plays host to the game-ending bug: fair warning to players, if you try to enter the freight elevator you’re never getting back out (heartbreakingly, I’m 99% sure I know exactly what gave rise to this bug – I’m also not one to criticize, since the initially-released version of my entry in last year’s IFComp could lead to the player get stuck in the middle of a swarm of bees being stung forever, which we can all agree is infinity times worse than anything an elevator can get up to). And outside of this, there are several places where things feel a bit more duct-tape-and-chewing-gum than they should, like the ability to cram inappropriately large objects into your backpack and a too-sudden ending that maybe indicates the author ran out of time.
Again, though, I think the pros outweigh the cons. I’ll wrap up with one more thing I liked about Midnight at Al’s: despite the fact that her characterization didn’t come through much after the opening, I enjoyed the protagonist, a disaffected teenager with a dumb summer job and a predilection for hardcore bands (I assume ironically, unless maybe it’s hardcore’s time to come round again?) She seems scruffy but scrappy, the kind of underdog you root for, much like the game itself. The winning sequence promises that she’ll return for future adventures, which I’ll definitely be down for, though hopefully those will get a bit more testing first!
al’s mr.txt (76.5 KB)
Cost of Living, by Dorian Passer
We’re getting close to the end of the Comp now (of the remaining five games, I’ve beta-tested four of them, and the remaining one has been pulled from the competition at least for now, though I may still write a review), and for me it’s closing at it began, with a game whose interface pushes the limits on what counts as a parser game – in Cost of Living, you type into MadLibs style boxes embedded in the dialogue of two characters discussing a short story from the Golden Age of sci-fi, with your input affecting some of the finer details of their conversation. In fact, the game was briefly disqualified from the competition before an appeal brought it back, and while as I’ve said I’m not especially fussed about policing genre boundaries, I can see why, since while the only interface element is typing text and seeing more text get spit out at you in response, it departs from some of the deep unwritten rules about how parser IF works, like the player’s typing corresponding to some actor taking some distinct and discrete in-world action.
One could argue about the epistemological status of the game all day, of course, but I had my fill of arid formalism back in law school so I return to the principle I outlined in my Kondiac review: if it’s in ParserComp, it gets a ParserComp review. So how does this work? On the whole, not great, in my view, though this isn’t so much down to the novel interface as specific thematic and narrative choices the author made in the flame story which conflict with the text being riffed on. It’s hard to explain why that is without going into some detail on the embedded short story, so fair warning for 70-year-old spoilers.
The story, also titled Cost of Living and apparently in the public domain so it’s fair game for reuses like this, is by Robert Sheckley and while it was published way back in 1952 it has some moments of spooky prescience in the way it depicts a far-future family living lives of convenience, swaddled in a home featuring numerous labor-saving appliances that spring to life with a single press of a button, and an omnipresent voice-activated assistant that’s not too far off of Alexa. It’s also modern in the way that it shows the corrosive impact of a rampant consumerism that’s displaced all other aspirations and values – the central conflict is about whether Carrin, the family patriarch, who’s more than maxed out his credit to buy all the gizmos and gadgets he barely uses, will effectively sell his son into debt peonage to finance yet more useless consumption that will keep him level with his neighbors.
This crass materialism and keeping-up-with-the-Joneses status anxiety are juxtaposed against the hopes of the aforementioned son, who dreams of one day getting to be one of the few skilled laborers remaining in this static society – fixing the automatic machines rather than being effectively infantilized by them – or escaping it entirely by piloting a rocket ship to Mars and fulfilling a long-promised, but long-deferred, colonization effort.
In other words it isn’t saying anything you haven’t heard of, or thought of, before, as a person actively participating in the world circa 2022, but it is certainly relevant in a way a lot of 1950s sci-fi no longer really is, and while it’s written in functional prose that lacks much in the way of subtle emotional shading or nuanced dialogue, Sheckley’s a good enough writer to make it work for the ten pages or so it takes for the story to unspool.
(Parenthetically, I should say that the whole debt peonage angle doesn’t really make sense. The family is in hock for millions of dollars, with an annual salary of 30k, while the monopolistic company that makes all this expensive-to-produce junk pushes yet more stuff on them in order to heap up ever more implausible IOUs. This doesn’t make sense given how these kinds of debt arrangements work in real life, which is to drive down the cost of labor and put it under the thumb of the owners of capital – think of the sharecropping system – because it’s clear that the labor the father performs is completely useless, and it’s not so much the high cost of labor inputs that’s holding back the company’s profitability as it is their habit of giving loans to people already leveraged a hundred to one. There are hints in the story that this is more a matter of political economy, as the company has secured legislation that makes some purchases mandatory, so maybe the idea is that the corporation is trying to substitute itself for the state by effectively privatizing the generational public debt that governments carry to steward society – that would be interesting to dig into, but the story doesn’t really go there).
Again, all of that is completely non-interactive and just as Sheckley wrote it in the 50s. The part that’s interactive is a dialogue between two bodiless, backstory-less, quality-less characters (they have names, that’s it) who are discussing the events of the story. As they talk, one of them will say something like “Why is Carrin ____ about Miller?” (Miller being a neighbor of Carrin’s who committed suicide before the game opens) and you get to type something into the blank. Then the next bit of dialogue will incorporate and respond to what you typed in. As I said, it looks like MadLibs, and sometimes that seems to be exactly how it’s implemented, with your input mechanically parroted but not meaningfully impacting the course of the conversation. Other times the game does pull off the neat trick of seeming to understand what you wrote – I think at minimum, it’s got a word list or algorithm that allows it to know whether a word has positive connotations or negative ones, so the dialogue can proceed accordingly.
Here’s an example of it working well. I got a prompt asking me to characterize the son’s mood after he responded somewhat sullenly to Carrin’s overtures, and I wrote in “enthusiastic.” The game recognized this was an inappropriate response:
Harris: What made you think Billy was in a enthusiastic mood?
Vesper: I was just being sarcastic. It’s obvious Billy isn’t happy about something.
It’s a neat trick (even if now that I paste it in, I notice the game can’t figure out how to get a/an to work). However, the reason I was being kind of a jerk and pushing back here is that I’d first tried to type “disaffected”, which I thought was a good explanation for Billy’s mood, only to be told to check my spelling, and then hit the same rejection message after trying two or three more options. If this restricted approach was needed to keep the game on track, that would be one thing, but sometimes the decisions for what’s accepted and what isn’t seem bizarre. In that above-mentioned “Why is Carrin ____ about Miller?” I tried putting in “thinking”, only to be rebuffed and asked whether I meant “thinning” instead, which it was happy to accept when I dutifully typed it in. And due to the failure to characterize either of the conversationalists in any real way, it never felt like I was playing a particular role, or even that their disagreements had anything behind them other than airy abstraction, which further reduces the stakes and creates an aura of artificiality.
The bigger issue is that, perhaps in recognition of the fact that making this kind of natural-language input work well is really, really hard when engaging with ideas of any complexity, the author’s chosen to have the dialogue focus less on the ideas of the story but on having the Greek Chorus try to figure out the emotional states of the various characters. This is not very interesting because nothing here is at all mysterious; it’s a sci-fi story from the 50s written by a white dude, everybody’s motivations, desires, and feelings are pretty straightforward throughout. Having the peanut gallery constantly interrupting the story to say stuff like “Do you think Billy is ____?” also has the effect of flattening out what ambiguity there is, and making the story feel clumsier (it’s also strange that it’s not clear whether they think they’re responding to a piece of fiction – they don’t seem familiar with the story’s world, but they also appear invested in the characters’ emotional well-being and eventual fates in a way that felt deeply weird to me, a metafictional construct seemingly playing dumb).
As the story comes to a conclusion, the framing dialogue also goes off on a weird tangent – I don’t think I can coherently talk about this by blurry-texting spoilers, so fair warning the rest of this paragraph discusses the latter portions of the frame narration. Without any solid textual prompting, the two characters decide that part of why Carrin is upset is that a throwaway reference to life expectancy now being 150 years means that there are life-extending drugs available, but these are unpleasant to take and his son being indebted means that he, too, will need to take these unpleasant medications to live long enough to work off the increased debt. Again, there’s no basis for this turn towards the more overtly dystopic – it’s clear this remark is just Sheckley filling out his picture of a post-scarcity society, with no indication there are downsides to living longer – and it’s at odds with where the story ultimately goes, which is an ironic coda showing that the characters have become so stunted by their situation that when they imagine the great adventure of going to Mars, all they can picture is pushing a button. There’s no comparable final tag to the frame dialogue, or last moment of interactivity, so it feels like that whole thread just peters out.
There’s clearly innovative thinking that went into presenting this story in this way. And I definitely get the draw of trying to create an interactive Socratic dialogue that uses textual input without being limited to the medium-dry-goods model of traditional parser IF. I can even see that this approach has some potential advantages, since at least with a keyword-based system you don’t need to deal with the challenges of parsing grammar and can focus on understanding nouns, verbs, and adjectives that might not be bound by concrete physical objects, actions, or properties – which is still a hard enough nut to crack!
But I don’t think Cost of Living qua game is a good advertisement for the power of this model; while there are moments where the game does seem to respond in a nuanced way to the player’s input, even then it comes off as a parlor trick, not just due to the limitations of the current implementation but because there’s a fundamental disconnect between the engagement the interactive frame offers and the themes the static fiction is presenting. In the end, I’d have to say that I’d have probably enjoyed this story more if I’d just read it in a book, rather than playing through it like this. That’s a damning indictment, I recognize, but I repeat that it’s not because I think any departure from parser conventions is doomed to failure, or even that this particular departure is likewise preordained for perdition: it’s primarily that the cogs in the two pieces of the game just don’t mesh at the basic literary levels of theme, character, and tone. In theory these are fixable problems – though they’re also generally the hardest problems in any kind of writing – and at any rate there’s value, and honor, in a failed experiment. From some of the conversation on the game’s itch page, it’s clear the author is looking to refine their model, so I hope this critical review is useful for that, and I’ll be around to check out what they come up with next.
Lantern, by Sylfir
A couple days ago as of this writing, Sylfir’s games vanished from itch, without so far as I know any explanation. I’ve seen speculation that this was an attempt to withdraw Lantern from ParserComp, which I suppose is plausible though in that case I’m not sure why they got rid of all their other games, as well as their account information, too. Given the game’s current unavailability, and the uncertainty about why that is and whether it will ever be available again, it’s perhaps inappropriate to write anything about it. But as I said in another thread, if we listened to Virgil the Aeneid would have been destroyed in antiquity, and despite Kafka’s posthumous autographopyromanic wishes the consensus is in favor of reading and engaging with his previously-unpublished stuff. Those are maybe too-exalted reference points, but Kafka at least didn’t have much of a predecease reputation; it mostly came later, based on the work. Anyway to square the circle, I resolved the check out the game, but only review it if I had positive things to say.
Given that you’re reading this, of course, it’s clear that I did. Lantern is a bit rough, and I must confess I played it almost entirely with the trackpad rather than using its parser, but it’s creative and has some charm. It’s part of the escape-the-room (well, three rooms) mini-genre, with the uncharacterized player character dropped into locked oubliette without explanation and forced to rely on their wits to solve a series of contrived puzzles and break free. To be clear, I’m not harping on the lack of plot or realism as flaws: they’re part of what I expect from this kind of game, and their presence helps to set player expectations accordingly. What departs from the standards of the genre, though, is that while you start out unable to see anything, that isn’t a barrier that’s quickly vanquished by the titular bringer of light: no, you’ve somehow been deprived of your sight, so you need to navigate your way through these brainteasers with your other senses.
This is a conceit that’s actually ideally suited for IF, I think, since depriving the player of sight in a graphics-based game would be perverse and probably lead to significant interface issues. Here, though, it’s just a matter of changing how the world is described to the player, forcing them to feel around rooms to find out what’s there, listen for movement, and lick and smell to identify objects. The author doesn’t make this too taxing a process – and in fact does a nice job of updating the names of objects as you investigate them with your different senses and figure out what they are – but it’s an effective gimmick that works well with the obsessive investigation escape-the-room games typically require.
While the concept works, there are some foibles in implementation. Most obviously, there are a host of typos littering pretty much every description of a room or object, which is fairly distracting, and there are a couple of bugs (one item’s name appears to incorporate fragments of code, and I was able to simply reach through a locked closet without first finding the key). The interface can also be frustrating if you go into Lantern expecting to type your way through it. The game engine appears to be primarily choice-based, with descriptions highlighting certain clickable keywords and ending with a likewise-clickable inventory list that includes your sense organs (you can click an item once to select it, then click it on another to combine them or use a sense; double-clicking does a closer inspection of the thing). The game allows you to type commands as an alternative to using the links, but this implementation means, however, that if you’re examining an object the keywords for the other objects in a room, or those denoting your inventory and senses, usually aren’t displayed. This means that typing TOUCH TABLE, then TOUCH PAPER might fail, whereas the commands would work fine if you tried them in the opposite order. I can see this being hideously frustrating, but I switched to playing exclusively via clicking very early, and found the interface worked just fine that way.
Clicking also makes it easy to exhaust all the different action combinations, which I had to do a couple of times. There’s at least one puzzle here that defies all logic and I can’t imagine a player solving it except by lawnmowering through the possibilities on offer (using the knife on the scratches reading HELL to change it to HELLO, which summons another character to a different room). But again, I kind of expect that from these kinds of games, and the number of potential actions is sufficiently low that it’s not too onerous to power through.
So we’ve got a puzzle game with a fun gimmick, many rough edges, not much plot to speak of, and an interface that can feel like rubbing your face against a cheese grater if you try to play the game the way its entry in something called ParserComp seems to imply you should. I whiled away a pleasant enough half an hour on it, but I can’t say it moved me or made me laugh or clap with delight at its cleverness. So I suppose by some standard it’s no big deal that it’s not online anymore, and wouldn’t even be a big deal if it vanished completely with nobody ever the wiser. I’m not sure I can muster a rigorous rebuttal against that argument, but it still makes me kind of sad – and if that’s where the standard is set, I think a lot more of us than just Sylfir are in trouble. 98% of pretty much everything pretty much every one of us does is imperfect, compromised, wouldn’t stand up to even the flimsiest scrutiny – and oblivion is the destination it’s all hurtling towards. Call me sentimental, but I’m not inclined to hurry the process along.
Thanks for your review.
I realize that you have played the game before the Dracula bug was fixed. I have corrected the troublesome variable that caused the problem, and Dracula can now be killed and the game solved.
I was informed of the bug some time after having entered the competition so of course some people will have played the faulty version.
As for the problem with the clock in the library. It was pointed out to me that people might be peed off a bit having to wait at the library for so long before it changed. So I came up with the idea of the clock.
When you enter the library the first time the clock strikes midnight. As you do whatever you have to do in there, time passes, and at one o’clock the library as you know it disappears. If for, whatever reason you want to go back to the earlier library, all you have to do is to >set clock to midnight, or >set clock to 12
Thank for the detailed review. It’s amazing! I was excited to read it and it did not disappoint. Many fair and constructive points. So, thank you, again, Mike! Since this review has the same stance as hawkbyte’s review, I’ll try not to repeat myself too much, except for now. I accept that I’m a terrible critic and author. I certainly could have made better “specific thematic and narrative choices”, but didn’t because I misunderstood the competition format. All things considered, I saw my choices as an an acceptable risk.
And speaking of the topic of competition formats, please let me start by apologizing for entering a demo into this competition. This is the first time I’ve released a work and also my first engagement with an online community. I was not aware about the difference between a jam and a competition, and itch doesn’t help with the distinction. I want to acknowledge all the immense effort the other participants have spent on this competition. Thank you! I also want to thank you, Mike, for all the time you spend reading and reviewing all of the community’s works. And, of course, I extend a thank you to everyone else that also reads and reviews the community’s works. Thank you! As I said before, we probably wouldn’t be here without you.
So now with that preamble out of the way, please allow me to constructively reply to some pertinent points of your review.
However, the reason I was being kind of a jerk and pushing back here is that I’d first tried to type “disaffected”, which I thought was a good explanation for Billy’s mood, only to be told to check my spelling, and then hit the same rejection message after trying two or three more options."
Your response of “disaffected” is perfect, and is exactly the type of response that I envision my audience to use with my works. My primary design directive is to avoid breaking an audience’s suspension of disbelief. The current technology I’m using is necessarily scoped to its original purpose — and while I plan to expand it — unfortunately during your read-through, I did break your suspension of disbelief. I want to deeply apologize that you invested into a response that the current system rejects. I’m asking my audience to empathize and sympathize, which takes non-trivial mental effort. After your third attempt, not only was your suspension of disbelief lost, but so was your trust. I completely understand why you nuked my demo in this review. Your sentiments are exactly how I feel when I’m playing a classical parser-based game. Honestly, this is why I stopped playing them. The constant frustration of being told that I’m wrong became too much for me to bear as I got older and faced the constant frustration of ‘no’ that’s ever-present in our typical lives. (I often wonder how “frustration mechanics” became acceptable in the interactive fiction community. Is this Stockholm Syndrome? Anyways, I’m digressing.) However, with my approach, expanding the range of input is a tractable problem. But that doesn’t take away from what you intuit, which is that natural language is “really, really hard”. So I definitely have more work on my hands other than filling out a word bank. Honestly, I can use all the help I can get!
Without any solid textual prompting […] Again, there’s no basis for this turn towards the more overtly dystopic […] with no indication there are downsides to living longer
For a solid textual prompt, please let me refer you to the opening line of Sheckley’s stateless story.
Carrin decided that he could trace his present mood to Miller’s suicide last week.
In the almost 2,000 words of your review, you never attempt to answer this question: why did Miller commit suicide? Neither you nor Sheckley answer this question. EDIT: Thank you for adding a spoiler-alert warning.
There’s clearly innovative thinking that went into presenting this story in this way.
Yes, thank you for noticing! However, my biggest innovation is my theories and models that are behind this particular instance.
As I’ve stated elsewhere, I’ve abandon story-based agency. Instead, my approach uses narration-based agency. Here’s some crude “model-based” definitions to help disambiguate what I mean by “narration-based agency”:
story = ordered sequence of the events plot = unordered human-curated subsequence of the story narration = "human element" of the plot
Another way to look at this is through the 5W1H journalistic questions:
story = who, what, when, where plot-narration = why, how
So far, my intentions have slipped by unnoticed. But they’re there. And not in the Rothko-esque “airy abstraction” sense. I copy-pasted a template across the last five interstitials. It’s literally there. My particular exploration with Cost of Living was that an audience’s input alters the conversation (i.e., narration-based agency) but does not alter Mr. Sheckley’s stateless short story (i.e., story-based agency). And from where does this alteration originate? Within the foreshadowing of the stateless story! Specifically, the audience’s input will lead the conversational characters to conjecture about an upcoming passage, where this conjecture is based upon the foreshadow of the current passage. Here’s the template I copy-pasted across the interstitials:
~~~foreshadow N-1) compare audience compares their prediction against the storyteller's solution ~~~ ^^^convo LABEL_N-1_1.isHowIFeel LABEL_N-1_2.isHowIFeel audience compares their prediction against the storyteller's solution ^^^ ^^^convo LABEL_N-1_1.isHowIFeel LABEL_N-1_2.isNotHowIFeel audience compares their prediction against the storyteller's solution ^^^ ^^^convo LABEL_N-1_1.isNotHowIFeel LABEL_N-1_2.isHowIFeel audience compares their prediction against the storyteller's solution ^^^ ^^^convo LABEL_N-1_1.isNotHowIFeel LABEL_N-1_2.isNotHowIFeel audience compares their prediction against the storyteller's solution ^^^ ~~~foreshadow N) observe audience observes the storyteller's foreshadow ~~~ ^^^convo audience observes the storyteller's foreshadow Audience: $LABEL_N_1 ^^^ ^^^convo LABEL_N_1.isHowIFeel Storyteller: @LABEL_N_1 ^^^ ^^^convo LABEL_N_1.isNotHowIFeel||LABEL_N_1.hasNoAffect Storyteller: LABEL_N_1 ^^^ ^^^convo audience observes the storyteller's foreshadow ^^^ ~~~foreshadow N) empathize audience empathizes (generates expectations) with storyteller's foreshadow 1) cultural traditions - we don't realize how much of what we consider universal behavior is actually culturally prescribed 2) genetic heritage - we all have certain constraints 3) ability to analyze and synthesize - if we haven't practiced and developed our thinking skills, we tend to fall back on old habits 4) new information influx - it is hard to make sense of observations when the situation keeps changing ~~~ ^^^convo audience empathizes (generates expectations) with storyteller's foreshadow Audience: $LABEL_N_2 ^^^ ^^^convo LABEL_N_2.isHowIFeel Storyteller: LABEL_N_2 ^^^ ^^^convo LABEL_N_2.isNotHowIFeel Storyteller: @LABEL_N_2 ^^^ ^^^convo audience empathizes (generates expectations) with storyteller's foreshadow ^^^ ~~~foreshadow N) predict (why) audience predicts a later event based upon storyteller's prior foreshadow ~~~ ^^^convo audience predicts a later event based upon storyteller's prior foreshadow ^^^ ^^^convo LABEL_N_1.isHowIFeel LABEL_N_2.isHowIFeel audience predicts a later event based upon storyteller's prior foreshadow ^^^ ^^^convo LABEL_N_1.isHowIFeel LABEL_N_2.isNotHowIFeel audience predicts a later event based upon storyteller's prior foreshadow ^^^ ^^^convo LABEL_N_1.isNotHowIFeel LABEL_N_2.isHowIFeel audience predicts a later event based upon storyteller's prior foreshadow ^^^ ^^^convo LABEL_N_1.isNotHowIFeel LABEL_N_2.isNotHowIFeel audience predicts a later event based upon storyteller's prior foreshadow ^^^
This is one of a few literary loops I’m exploring.
So to echo your sentiment, my approach has a LOT of missed opportunity. Again, I do not pretend I’m a literary critic or author — I’m terrible at both. However, despite all my shortcomings, my end goal is to have an audience “noematically interact” with the storyteller’s literary writing process. Barthes proclaims “the death of the author”, which is about an audience’s imagined storyteller. Well, with my approach, I proclaim “the birth of the audience”, which is about a storyteller’s imagined audience. I want to provide a storyteller with an approximation of an audience as that audience makes their way across the entropy of unknown to known that occurs during the progression of a literary work. Even further, I want to provide a storyteller with an approximation of an audience’s affective state (via sentiment analysis) as they read a literary work. This opens up an avenue for a storyteller and an audience to have a deeper connection. In fact, my hope was to have stateful storytellers that are interested in writing “puzzleless” autobiographical works, or other works of literature, join me in exploring this exciting new space in interactive fiction!
They’re not so acceptable anymore. There’s a clear move by many authors to tend more carefully to parser output, which I am very relieved to see. There will always be things that are not immediately intuitive to new players-- for instance, I’ve recently seen some exasperation at the command REMOVE not working for things like REMOVE RABBIT FROM HAT. REMOVE is meant to apply to things worn by the player, but this is not immediately apparent to many players, of course. I can’t see that changing, and this is probably a case of the player needing to adapt to convention.
There’s also the problem of bad-faith tinkering. If a player spends all their time trying to SNORT CHAIR or FRUSTRATE OGRE, and is then upset that these don’t work, then parser just isn’t for that person, since there is no way an author can attend to all these things.
But generally speaking, I’ve found many modern parser games to be much more player-friendly. Hooray for that.
Dorian, I would say that perhaps you should create an specific post for your game, to put on it all this interesting stuff, so everybody can find it more easily in the future, and put here a link there.
That way we can also talk about your theories without fill this thread with specific messages not related with reviews.
Thanks, AZ! I think it’s time I take your advice on this.
I’m scared to live in a world where people do what I say. Is not the world what we all want for our children! U_U
And there was much rejoicing! I’ll have to give October 31st another go and check out the ending.
(Thanks too for the note re the clock – I’d figured something like that was up, but I kept trying to futz with the hands rather than the clock overall. Duly noted!)
Of course, and thanks for sharing more on your approach, since I think it’s a really interesting one even if I think there were some issues this time out. There’s obviously a lot here to digest, and I saw you posted a separate thread, so I’ll write back in that one in a bit (might be a day or two since I have a pretty busy weekend).
EDIT: per your request I also added an additional spoiler warning to my review.