Number of Reviews: 5
Write a review
4 people found the following review helpful:
Too-ambitious parser for a simple educational game, November 21, 2021
(This is a lightly-edited version of a review posted to the IntFict forums during the 2021 IFComp. My son Henry was born right before the Comp, meaning I was fairly sleep-deprived and loopy while I played and reviewed many of the games, so in addition to a highlight and lowlight, the review includes an explanation of how new fatherhood has led me to betray the hard work the author put into their piece)
Kidney Kwest is an educational game, aimed at helping kids with kidney failure learn more about how to manage their condition (in a heartbreaking detail, the blurb mentions that it’s meant to be played during three-hour dialysis sessions). It’s also unintentionally educational in showing why natural-language parsers aren’t yet dominant in IF.
Taking the first part first: the game gets off to a sweet start, with the player character worried about finding a costume for a school play and unable to find anything until the Kidney Fairy takes a hand. She sweeps you away to the fairy world, where you need to solve some small puzzles to get the pieces of a costume. The educational angle also kicks in once you move to the other world, as a hunger timer starts up, but with a twist – in addition to regularly finding (ideally healthy) food to eat, you need to take your medication (a phosphate binder) before or after each meal. Taking a pill also shifts you into a Fantastic Voyage style minigame, where you roam your body looking for rogue phosphate crystals to hoover up before they accumulate.
This is all charmingly realized – I liked the little drawings that pop up in the sidebar – and the couple of puzzles I solved were reasonably satisfying. I didn’t find the full costume and make it to the end of the game, though, because the hunger timer is tuned really aggressively, and requires a restart once you get too hungry. This makes some sense given that that timer, more so than the costume-gathering puzzle, is the main point of the game, but I still found it frustrating, all the more so because of the second notable thing about the game, which is the custom natural-language parser.
Per the introduction, this is meant to make the game more accessible to younger players who aren’t versed in IF conventions. The details are well above my head, but I read a linked blog post which provides an overview, and the parser does appear to live up to its billing: it understands complete English sentences, including asking questions about the state of the world.
The cost of this success is high, though. First of all, the parser is finicky, requiring you to speak in formal English (you can’t even drop a “the” without making it do extra work) in a way that feels awkward to me as a seasoned player of IF, and I suspect would also not be a good fit for how digital-native young people expect to type things into a computer. Second, some of the standard conveniences of mature IF languages are missing – pronouns aren’t recognized, UNDO does nothing, disambiguation is painful, and there’s no command buffer. And most critically, the engine ran very slowly for me, with each command taking at least a few seconds to process, and some even requiring ten or so to complete. This added so much friction that every interaction became really frustrating – and since running around trying to deal with a hunger timer is already kind of annoying, this makes for a bad combination!
If the natural language engine brought something new to the gameplay, maybe this tradeoff would be worth it. But Kidney Kwest, at least the portions I saw, just requires very simple object-management commands that any traditional IF language could handle quite easily. Sure, there’s added functionality if a player wants to request the detailed description of an object using more convoluted syntax (like “what’s in the safe?”) – but teaching a player how this works seems harder than just teaching them to type X SAFE, and the frustration of waiting so long for a response seems greater than the frustration of struggling with a quickly-responsive parser, at least if a game’s implemented well.
Eventually, these kinds of parsers could replace the ones we’ve got, which are based on decades-old models at this point – but we’re not there yet, and that shift will probably be ushered in by games that make good use of the new affordances provided by natural language, rather than doing the same old stuff in a slower, more convoluted way.
Highlight : I liked the miniaturized segments where you explore your own body – there’s some good detail, and it makes for some novel gameplay.
Lowlight : much of the feedback the game gives feels very close to the world-model, without being translated into more accessible text. For example, “examine myself” gave this response: “you is a person, a physical object, a place, and a thing. It also has a hand, a hand, a body.”
How I failed the author : Henry hadn’t been sleeping super well when I played this one, so I was nodding off while waiting for the game to respond to my commands, which is why I didn’t feel up to a third try.
MUCH LATER UPDATE: I went back for a final replay after the author mentioned that the server’s responsiveness had gotten better. It still wasn’t lightning fast, but was much less frustrating to play nonetheless. I also didn’t worry about eating “bad” food this time out, so the hunger timer was less of an issue, and I was able to get an ending. There’s a neat mechanic where your choice of items to pick up along the way give you a different costume (I got scientist, appropriately enough), and a metal rating depending on your dietary choices (I wound up with bronze, given my damn-the-torpedoes approach to food this time). I can see a couple of places where I could have done things differently, so there’s definitely replayability, and I can see kids swapping stories of how they did. I still think the game’s intended purposes would have been better served by just using one of the existing languages, but now that the optimization is a little better, and I’ve got more familiarity with the parser’s idiosyncracies, it definitely worked a bit better.