{"id":1977,"date":"2008-11-05T12:00:11","date_gmt":"2008-11-05T17:00:11","guid":{"rendered":"http:\/\/www.shamusyoung.com\/twentysidedtale\/?p=1977"},"modified":"2014-09-08T08:40:05","modified_gmt":"2014-09-08T13:40:05","slug":"interactive-fictionfeedback-parser","status":"publish","type":"post","link":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=1977","title":{"rendered":"Interactive Fiction:<br\/>Feedback Parser"},"content":{"rendered":"<p>Playing <a href=\"http:\/\/www.escapistmagazine.com\/articles\/view\/events\/5403-Phantom-of-the-Arcade-A-Text-Adventure\">Phantom of the Arcade<\/a> within the context of a web page has me thinking about the new things we could be doing with interactive fiction that simply weren&#8217;t possible in the heyday of text adventures.  <\/p>\n<p>IF is an interesting game type.  They player isn&#8217;t just working to complete the story, but to experiment with the gameworld and read what the author has to say.  Being stuck in IF can be just as rewarding as moving forward, provided the game has interesting things to say about it.<\/p>\n<p>For example:<!--more--><\/p>\n<p><tt><b>&gt; use fork on light socket<\/b><\/p>\n<p>I beg your pardon?<br \/>\n<\/tt><\/p>\n<p>Isn&#8217;t very fun.  You type in something crazy and the parser just shrugs.  On the other hand:<\/p>\n<p><tt><b>&gt; use fork on light socket<\/b><\/p>\n<p>The electricity in this house is functioning much better than your common sense.  Ergo, you have been shocked.<br \/>\n<\/tt><\/p>\n<p>This might squeeze a smile out of the player.  Even if it doesn&#8217;t, there is satisfaction in seeing the gameworld react to your input. You connect with the author over this mutually understood action. Feedback itself is a reward. <\/p>\n<p>The challenge for the author is to fill the world up with entertaining feedback.  Trying to write a response for every conceivable player action is a task that scales poorly. That&#8217;s simply too much to write, and a vast majority of them will never be seen.  What the author needs is to be able to anticipate likely courses of action &#8211; correct or not &#8211; and compose responses for them.  <\/p>\n<p>I&#8217;ve always said that you can&#8217;t beat people in aggregate, no matter how smart you are.  Anyone who has ever run a tabletop roleplaying game can tell you how impossible it is to anticipate player actions, even when there are only four of them and they&#8217;re all your friends.  Anticipating the actions of thousands of strangers is an impossible task.  Those people will try things that never occurred to you and will come up with (sometimes legitimate) solutions to problems you didn&#8217;t envision.  Every &#8220;I beg your pardon&#8221; and &#8220;you can&#8217;t do what&#8221; on the part of the parser is a tiny failure on the part of the writer as he or she tries to outwit thousands of readers.<\/p>\n<p>But for games that run over the web there is the ability for the author to adapt their story in response to failed player input.  What I would like to see is a system which gathers up failed actions (sorted by room) for the writer to review, sorted by frequency.  So the designer can review this list and see that <em>n<\/em> number of people tried to use the glazed ham with the woodburner stove instead of using it to distract the rabid wiener dog.  The author can either let the player cook the ham (which would not diminish its usefulness against the dog) or offer up some sort of reasonable response as to why they can&#8217;t or shouldn&#8217;t cook the ham, or at the very least add some text so that the game can say &#8220;no&#8221; instead of &#8220;huh?&#8221;  <\/p>\n<p>To do this you&#8217;d just need a bit of functionality added to the parser:  Whenever it encounters something it doesn&#8217;t understand, it needs to submit something to a database on the website with the subject, verb, and room. (And maybe a couple of other tidbits for housekeeping purposes.)  Within a few hours of going live, the author should have a very clear picture of where the rough spots in the game are (what rooms had the most dud entries) and what the commonly attempted player actions are in those rooms.  This would be much smoother and more seamless than simple playtesting,  and would include the input of all players instead of just a handful of dedicated testers.  It would make the designer better at their job, and help focus effort onto the most likely responses.<\/p>\n<p>Makes me want to write one of my own.<\/p>\n<p>UPDATE: Speaking of writing IF, <a href=\"http:\/\/themonksbrew.com\/2008\/11\/feedback-for-better-if-parsing\/\">Mike Rubin has a response to this over at Monk&#8217;s Brew<\/a>, which is interesting because he&#8217;s working on a rather ambitious IF title himself.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Playing Phantom of the Arcade within the context of a web page has me thinking about the new things we could be doing with interactive fiction that simply weren&#8217;t possible in the heyday of text adventures. IF is an interesting game type. They player isn&#8217;t just working to complete the story, but to experiment with [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"class_list":["post-1977","post","type-post","status-publish","format-standard","hentry","category-game-design"],"_links":{"self":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/1977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1977"}],"version-history":[{"count":0,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/1977\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}