Posts Tagged Inform 7

Keyword Interface for Conversation Package

Following up on my previous articles on integrating Aaron Reed’s Keyword Interface extension with Eric Eve’s Conversation Package system for conversations (part 1 and part 2), I’ve packaged up the interface code as an extension and submitted it to the archive, so it should be showing up there shortly.

The code is a bit different from what was presented in the articles, due to some changes required because of minor issues with new versions of the extensions it builds upon.  The extension should support both Glulx and Z-code text coloring.

Thanks to Strainer for providing me the kick in the pants I needed to get this done!

Edit:  Due to an apparent bug with the OS/X version of Inform where it perhaps adds the author’s name and the extension name together before comparing against the 51-character limit, I’ve changed the name to “Keywords for Conversation Package”.

Tags: , ,

Inform 7 Development: Implementing Single-Keyword Conversations

This is part 2 of a series.  If you haven’t read the first part, you might want to start there.  In that post, I describe how to use Aaron Reed’s Keyword Interface extension alongside Eric Eve’s Conversation Package family of extensions to implement highlighted topic lists for Inform 7 conversations.

In this post, I’ll share how to implement single-keyword conversation analogous to what Aaron Reed does in Blue Lacuna, and also share a few bugfixes for the code from the first section.  By the end of these two posts, you should have the tools you need to integrate these two extensions and implement a robust, TADS 3-like conversation engine using highlighted topic keywords and a single-keyword user interface, with surprisingly little work.  Of course, coming up with good content is another matter…

Read the rest of this entry »

Tags: ,

Inform 7 Development: Integrating Aaron Reed’s Keyword Interface and Eric Eve’s Conversation Package by Way of Emily Short’s Complex Listing

Eric Eve has provided a wonderful conversational extention for users of Inform 7. Called “Conversation Package“, it uses a number of his other extensions to wrap up as full a TADS 3 conversation implementation as he could put together.  If you are curious as to why that’s so great, I encourage you to read the essay by Mike Roberts, the author of TADS 3, that covers his analysis of conversation methods in interactive fiction.  I’m pretty thoroughly convinced by his arguments that an ask/tell conversation system with topic prompting is the optimal way to implement conversation in a game where it’s going to be more than trivially important to the gameplay, and where there’s no pressing reason to handle it differently.

Likewise, Aaron Reed, author of Blue Lacuna, has published an Inform 7 extension called Keyword Interface.  Blue Lacuna uses a very user-friendly system whereby the user can perform certain actions by simply typing highlighted keywords — specifically: examining items, moving to different locations, and selecting topics in conversation.  The Keyword Interface extension provides drop-in support for examining and moving as in Blue Lacuna, but requires significant user implementation to make topic keyword highlighting work in your game.

In this article I’ll detail the steps necessary to make Aaron’s topic keyword highlighting work in the context of a Conversation Package implementation.  I’m not addressing what you would need to do to get one-word keyword conversations actually functional (mainly as I haven’t gotten around to that yet — when I do, I’ll post it) — this is just to get the highlighting working.

With that said, let’s get started!

Read the rest of this entry »

Tags: ,

“Good Eats”

alton_brown_geek_motivator[1]OK, this will be a special early post so I can get the link out there.  This month we’re hosting Dinner Club, and rather than our usual Iron Chef-style theme ingredient, we decided to go with an Alton Brown theme.

Part of the reason is that we’ve been watching a lot of Good Eats lately in the evenings after the two older kids are in bed but while Jonathan is still active.  Usually the choice is between Star Trek TNG and Good Eats as to decent shows to watch, and Alton has more… general appeal, shall we say.

So we came up with a comfort-food menu based on Alton Brown’s recipes, but I had a brainstorm after finishing the menu:  I’ve been working on interactive fiction lately — why not make an interactive menu?

I didn’t have enough time for that, but I did put together a short, themed interactive fiction work, loaded with Alton Brown quotes and quote-look-alikes, to serve as a companion piece — an appetizer if you will — to this month’s dinner club.

I used a couple of 3rd-party extensions and the core of one of my own proto-extensions to speed development, and after about 3-4 hours of work I ended up with “Good Eats”, an interactive menu.  Click on the link to run it directly in your web browser through Parchment, a Javascript interpreter.  The reason you can do this with this game and not with my competition game is because this one is small enough to fit in the old Infocom Z-machine format, which is the only one currently supported by Parchment.  You can, of course, also download the file directly and play it on your favorite standalone interpreter.

I hope you enjoy “Good Eats” as much as I enjoyed making it!  It was a nice break from longer, more involved projects; I now see the appeal Speed-IF has for participants where I didn’t before.

Tags: , , ,

IFComp 2009 Overview — Grounded in Space Postmortem

pcm_trophy_lrg[1]The Rule 5-induced cone of silence has lifted, and the results are in!  Grounded in Space did reasonably well, placing 10th out of the 24 entries, very close to where I expected it would be (I had mentally blocked out 8th to 14th as the range I was expecting, based on reviews and my own experience playing the competition games).  I learned a lot and met a lot of cool people participating in this year’s competition.  Here are some of the major lessons I took away:

1.  I probably wasn’t ready to release Grounded in Space.  I vastly underestimated the amount of work required to make the game release-quality, especially post-beta work.  And I definitely did not know Inform 7 well enough to accomplish everything I wanted to; the triage required on the design to get the game playable was pretty severe.  Many of the cool parts of the original design ended up on the cutting-room floor, due to either lack of facility with the language or a self-inflicted lack of time.  I slacked a bit in the middle where if I’d put in more effort I might have accomplished quite a bit more.

2.  I’m glad I did release.  The experience of competing in IFComp ‘09 was invaluable; there are things I learned from the process, from the other games in the Comp, and from the discussions on the authors’ forums, that I probably couldn’t have learned in any other way.  In particular, I believe that I could not have learned the final process of making a game releasable — the testing and tradeoffs required in the end stages of development — had I not forced myself through it, even with a game that ended up deficient in some ways.

3.  Reviewers are all over the map in terms of what they like or don’t like.  I was pretty unlucky in that the first few reviews all either said or implied “I don’t like Heinlein.”  Well, that pretty much meant those reviews were going to be bad, since Grounded in Space is directly patterned on Heinlein juveniles to the best of my ability.  Later reviewers were more kind in that respect; there are some Heinlein fans out there after all!  Similarly, some folks liked complicated puzzles and some probably would have punched me if I’d been to hand when they got to the engine console.

4.  Notwithstanding #3, there were a number of valid criticisms of my game that were widely given:

  • The premise was really off the wall, and a lot of reviewers bounced off of it.  Sam Kabo Ashwell was very insightful here — it really was the result of me taking the shortest distance between two plot points.  Even a little more thought and effort here would have lowered the suspension of disbelief bar substantially, I think.
  • The introduction lacked interactivity — some objected to this and some didn’t, but there were certainly ways I could have improved interactivity in this section, and I simply didn’t have time to do so.  That was the first section I coded, so it was the one with the least language facility backing it.  I wanted to rewrite it, but bugs with the engine puzzle kept me busy right down to the wire, and I didn’t get the chance.
  • I got criticism that the engine puzzle was not suitable for the text format.  I disagree with this somewhat; I think that with a better text interface I could have made this more palatable for a lot of people.  But a subset of players was never going to be happy with a puzzle that required you to SET THETA DIAL TO -1575, and I didn’t realize quite how large that subset was.

5.  The game is likely unsalvageable.  At this point there are enough flaws baked into the design that trying to improve the game experience would require gutting and rewriting large sections of it, and I’m not going to do that.  I started on another work the day I submitted this one, and I’m planning to move forward with that instead.  There will, however, be a sequel to Grounded in Space at some point in the future.

6.  Inform 7 is awesome.  The learning curve is… interesting — you can get off the ground quickly, but getting really good with it requires you to cross the natural-language equivalent of the “uncanny valley”.  But the expressive power of the language is amazing, and I’m sure the pleasure (and it is, truly, a pleasure) of developing in Inform 7 is one of the main reasons — along with the great people in the community — that I’m so excited about continuing to write IF.

7.  Develop like you were developing any other kind of software.  I didn’t do this at first, treating it as if I were typing up an email.  Oh, I designed up front, of course, and had plenty of design documentation.  But I didn’t have source code control, nor any kind of issue tracking/prioritization system, and so I found myself wasting time on trivial issues or, worse, fearing to make changes in complex code (the reflectors, anyone?) for fear of breaking more things than I was trying to fix.  For my next project, I’ve addressed this; I’m now using Perforce for source code control and I already feel more fearless, comfortable, and productive as a result.

8.  Some of your beta testers should be from the IF community.  I used exclusively non-IF friends for testers, and although they found staggering amounts of bugs, helped me with aspects of the story, gave me a great insight into how newbies might interact with the game, and really got me to widen my net of synonyms, a few IF vets in the mix would probably have latched on to the more structural shortcomings of my work and made suggestions early on that might have helped me avoid some of the big design/architecture pitfalls I stumbled into.

9.  The whole experience was great, and an encouragement to proceed.  Even the negative reviews usually had something nice for me to take away.  The good ones (and there were more of these towards the end of the Comp, for some reason) were extremely encouraging.  Knowing my work clicked in a good way for some people, no matter how few, is a very powerful motivator to continue, and I will certainly be writing more IF and entering the Comp again.

So thanks to everyone who played the games this year, particularly to those who took the time to write reviews and let us know what you thought of our works.  I enjoyed writing for you and hearing both what you considered good about Grounded in Space and what you considered bad.  Next year I hope to improve quality on all fronts and produce something that will knock your socks off!

Tags: , ,

IFComp 2009 Final Pre-Submission Update

The “last” bugs have been squashed.  The walkthrough is written.  BB1162-002The beta testers have been credited.  The file is uploaded.

Grounded in Space is finished.

You won’t hear much from me on the subject until November 15th, when the judging is complete.  As per Rule 5 of the Interactive Fiction Competition, I cannot comment on my game or respond to reviews at any time during the judging period.  I do hope to have an extensive postmortem after that point, where I go into detail about what I learned and what I’ll do differently next time.

I will say that I’m already planning at least one new project; this one was so fun, challenging, and rewarding that I’m sure I’ll be motivated to try again at least one more time.

I’ve put a lot of time and effort into this, but it’s absolutely been time and effort well spent, no matter how I do in the competition.  It’s helped me to learn a new programming language and practice my writing, exposed me to some excellent interactive fiction in a community that I had no idea even existed before, and motivated me to follow through and finish a fairly large project purely on my own, with my own willpower and resources, giving me confidence that I can handle a project of this scale outside of the confines of work.

This last week was a doozy.  At the very last minute, one of my testers found a couple of issues that exposed a whole class of bugs that neither me nor my testers had found previously.  I spent Saturday evening frantically rooting them out, prior to bringing my wife home from the hospital with our new son on Sunday.  I’m pretty confident the bugs are cleaned up.  Of course, I’m also fairly confident there are others, and that there are weak spots in my writing that another pass might have addressed.

In the end, though, you have to call it a day sometime, and I choose now.  Play it and enjoy it; it’s yours now.

Tags: , ,

IFComp Update #15

3039522605_72b86b1e2e[1]Depending on how things go, this might be my final pre-submission update.  I’m up to Beta Release 7 at this point — my testers have been finding bugs at a truly staggering rate, which is testament both to their persistence and my questionable implementation decisions.

Beyond bugs, the testers also identified a lot of areas where the flow of the game was bad, or where I was dumping an unreasonably large amount of text onto the user at once.  Also, several of the testers are completely new to IF, so reading their transcripts is really helping me to identify alternate command formulations that I should support, as well as extraneous wacky actions, synonyms, and the like.  One tester in particular has been excellent at triggering almost every conceivable state machine misfire, and thanks to his work the game is much more solid and stable now.

The testers seem to enjoy the plot and writing so far, although not all have made it past The Big Puzzle yet, so we’ll see when they get to the end.  I’m definitely paying the price for some of my ignorance of the proper way of doing things in the early days.  I made some mistakes early on that are not feasible to fix at this point, and that cause some really wacky behavior.  Next time around I will definitely have a much better idea of what things are fairly straightforward to implement and which are error-prone.

I’m also disappointed (as I suspect almost everyone is at one time or another) with how conversation works in my game.  I use the standard “ASK X ABOUT Y” syntax, which is fine as far as it goes, but feels limiting even as it fails to provide any sort of ongoing conversational flow.  The next time I need to implement NPC conversation, I’m definitely reading Emily Short and Mike Roberts before starting.

The competition starts in just over one week, so I will likely be uploading my submission before Wednesday of next week.  What that means is that the next update will probably be a quick post-submission report before the comp kicks in, after which I will have to maintain radio silence as per Rule 5 until the judging period is over, which will be November 15th.  To fill the time, I should have a new son in the next week or so, so I don’t think it will be a tremendous hardship to wait.

Wish me luck!

Tags: , ,

IFComp Update #14

running_pigs[1]I took the first feedback I got from the beta on Monday and sat down last night to polish up the game.  I finished cover art, entered the competition data on the website, and then added a slew of new actions, synonyms, and objects.  In addition, I cleaned up some of the descriptions and added some cluing for something that was tripping up the beta testers.

The game plays much more cleanly now, and so I wrapped up the evening with a Beta 2 release, which I’ve posted for my testers this morning.  I’m hoping for at least one more round of feedback and improvement before I submit, and while I wait for that I’m planning on just working on the writing.

Getting close!

Tags: , ,

Milestone

milestone1[1]My IFComp entry is now playable from beginning to end, and all the alternate endings are confirmed reachable.  I’m a long way from done; I have a punchlist of items that grows by the minute, and I still have to get the beta testers going on it, but this is a significant milestone!

Major things left to do are to punch up the writing, revisit the opening scene now that I have more skills, add more scenery nouns, change the default responses for some of the commands, and add more conversational topics.  This is, of course, in addition to fixing any bugs I find.  Oh, I also need to make a walkthrough and cover art prior to release.

So there’s still plenty to do, but I at least see the light at the end of the tunnel…

Tags: , ,

IFComp Update #13

482861918_bea2591acf[1]Another week, another several hours plowed into the game.  This week I can proudly say that I’ve finished Scene 5, leaving really only Scene 6 to finish up.  I also went back and cleaned up some implementation details as well as listing out the remaining action items to finish the game.

What I’m shooting for now is to finish implementation and alpha testing by the 16th, and then provide copies for the beta testers while I work on punching up the writing and cleaning up known bugs.  I hope for one solid round of testing, with perhaps some additional beta-test spot checks right before submission.  It won’t be exhaustively tested, but obvious problems should (I hope) be fully addressed.

As far as new things learned in this week’s work, the main thing was that I have now become much more familiar with and comfortable with how Inform 7 handles encapsulation.  Much of the Scene 5 work involved extensive linear algebra calculations, which would have been very difficult without properly modularizing them.  I also learned how to use extensions, including Fixed Point Maths by Michael Callaghan and Alternatives by Eric Eve.  I must say that I am impressed by the extension mechanism in Inform 7.  Extensions are very easy to use.

I’m also preparing some of the polish items, including brainstorming a final name for the game, coming up with cover graphics, and generally planning release.  And rather than being excited that this comp submission process is almost over, I’m looking forward to starting on my next work.

Tags: , ,

The Quern is Digg proof thanks to caching by WP Super Cache