IFComp 2019: Island in the Storm
In past Comps, particularly the first few I blogged, I made some complaint about the people who devote their effort to creating new parser-based IF authoring systems and ending up with worse results than if they had simply used the established systems like Inform and TADS. It’s rare to see people doing this any more. I’m not sure why. I’d blame the Twine Revolution, but it’s hard to imagine that really affecting the people who build their own engines for fun.
Island in the Storm is the fruit of someone building their own IF system, and it’s actually pretty okay! That is, I can make some complaints about the game’s content — it’s got too many filler rooms for my taste, and I thought one of the puzzles hinged on an unclear description. But the interaction is quite comfortable. Maybe it’s partly because minimal command sets are in right now, so I don’t expect the range of action that I once did. But this game provides a solid core of what I expect, from common abbreviations to pronouns to decent handling of command history, and seeing that is a relief when it’s not guaranteed. I suspect that part of the reason it works as well as it does is that the author chose to create a library for making IF in Python rather than inventing a domain-specific language. That’s got to be the saner approach nowadays. I don’t know if the library is at all usable by anyone other than its creator, but it hardly matters to the player.
A few notable peculiarities:
All the output text is contained in graphics-character rectangles, usually one per turn. These vary in width to fit the output, so that shorter responses have narrower enclosures. And I don’t just mean one-line responses; it varies how soon it wraps to the next line. I suspect this would look much weirder without the boxes.
If you use a verb with syntax that the game doesn’t recognize, like if you provide an object and it isn’t expecting one, the game suggests that you ask for “VERB HELP [VERB]”, which gives you a list of all the accepted ways to use that verb. This is a really good idea! It feels a lot like asking for a man page.
Conversation with NPCs takes the form of choosing suggested topics. You’ll TALK TO somebody, and the response will contain things like “(You could ask about the four altars)”. We’ve seen things like this before — Lost Pig is a memorable example. But the peculiar thing here is that you can pick a response be means of any of subset of its words, without any other verbiage. Just typing “ALTARS” at the command prompt would be enough to pick the topic I mentioned. I’m not convinced this is superior to a numbered menu, but it’s definitely different.
There’s a limited light source that slowly recharges while exposed to light. This is an interesting idea: it gives you a similar sense of urgency to a limited battery, but with lesser risk of permanently ruining your game. It essentially turns the caves into something like an underwater section in an action game, where you have to periodically resurface to survive. I’m not sure anything of value was added by making the recharging gradual, though. I wound up entering a lot of “Z”‘s when I was impatient to start my next sally.
As for the story: You’re shipwrecked on an island, and have to effect repairs to your boat in classic adventure-game mode. It strikes me that the desert island is one of the less-imitated classical adventure game environments. This island isn’t deserted, though — it has a town and even a shipyard, but no one leaves, and all but one of the inhabitants worship a goddess that controls the storm that shipwrecked you, and which exerts a sort of semi-mind-control over them. It’s a bit Doctor Who. After you make all but one of the necessary repairs to your boat, the second act begins: you can only get the final component you need by delving into the trap-and-puzzle-laden dungeon in the ruins on the mountain to kill the goddess. Progress in the dungeon still involves popping out to talk to the locals to get needed materials via newly-appeared dialogue options. This took me too long to figure out.
I didn’t get all the way there; I managed to crash to the desktop first, and didn’t feel like replaying the part since my last save. This was unexpected — IF is usually more resilient than that. But I guess that’s the risk you run when you write your game in a general-purpose programming language.
I’ve only been playing a few of the games the past couple years, but it seems like there still have been some homebrew systems. Linus Akesson’s games, Tethered last year and Pas de Deux this year, were written in Dialog, which is a new non-Inform language that can compile to the Z-machine. And which by all accounts is really good. Adam Bredenberg did a couple of Python-based things in 2015-6 that were not that well received and I think were also in verse? I guess I don’t have that much of a sense of how common new homebrew parser systems used to be–I don’t remember many others from about the late ’00s on, but that might also be that I tended not to play those games (and weird homebrews are often not Mac-friendly anyway).