Interactive fiction jam results

Summary: The theme we wound up with was Metaverse. Four hours wasn’t a whole lot of time for us to get familiar with Inform 7 and create something interesting. Managing scope is really important!

So, we ran a little bit late and started around 12:30, but most everyone was able to stay until 4:30 so it worked out. Unfortunately, announcing the theme at the start of the timer might not have been the best idea - I don’t know about everyone else, but I spent at least 30 minutes brainstorming. Still debating with myself whether picking the theme in advance and dedicating the four hours to implementation would have been better.

On the other hand, being a prolific writer, Crate was able to mostly finish what he had in mind. Not sure if it’s because he had a better idea of the scope of what you can write in 4 hours, or simply because he wrote so much faster than I did. Either way, good on him! For what it’s worth, Inform 7 source code is measured in words, and I had 800 vs his 1600. Still, I know I wouldn’t have my initial idea “completed” even if I had close to 2000 words. Vael and Maryanna are in a similar boat, I think. So much for putting our completed work online after four hours!

We all had fun, though, barring the occasional frustration with learning some of the more complex idioms of Inform 7. So we’ve agreed to get together once a week, for an hour or so, and continue working on our ideas. I don’t know how long we’ll keep it up, but it should be fun.

Lessons learned:

  • The metaverse theme inspired me (and possibly the others) to work on a much grander scope than was actually reasonable. Most metaverses are developed over the course of multiple novel-length works. That usually takes longer than four hours.
  • Creating an environment for your player to mess around with is difficult. There are a lot of tiny details to take care of when their actions have no constraints. What if they want to lick the torches you put on the walls? What if they try to run off with a giant stone statue? You have to decide early on how you want your game to deal with that kind of behaviour. Maybe for the theme of your game, it’s better to insert funny easter eggs everywhere. Or maybe you should have a terse “I don’t see any reason to do that” response to all unintended commands.
  • Writing descriptions of all the areas and objects your player will see is time-consuming. I spent almost all of my time doing that, in fact, and ran out of time before I could introduce the player to their first NPC and have them learn their first spell. So what I ended up with, after four hours, was five areas and a handful of objects, all with nice descriptions in case the player decides to examine everything. Oh, and I had a sweet door connecting two areas. Also, I had some plural objects I’m pretty happy about ( eg: The pews are here. They are scenery.They are supporters. The description is “Some pews.” – I would like to be able to say “their description is”, however)
  • Working with NPCs in Inform 7 wasn’t as immediately obvious as I had hoped it would be. Having conversation that doesn’t rely on “tell NPC hello” or other awkward constructions requires a bit of research. I’d like to find a way to have dialogue “come from” an NPC instead of the standard narrator. It seems more natural to write something like ‘NPC, say “Blah”’ in my code than 'say “NPC says blah”’. I assume it’s possible, but I didn’t have time to find out in the last 20 minutes. But perhaps I’m just being too object oriented, and there’s no real difference between the two.
  • The documentation support in the Inform 7 IDE is pretty awesome. The manual for the entire language, and a pretty extensive Recipe Book, has built-in search from the IDE. The index is even better, though - among other things, it lists all the objects you’ve declared and allows you to navigate to their definition with a click, all the rules that have been defined, all the verbs the player can enter, all the phrases you can use in your code (with examples and links to the manual), the entire object hierarchy of your game… It took me a while to notice all of this stuff was there, but once I started exploring the index, I was able to find most anything I wanted from within the IDE.
  • DSLs can be pretty cool! Everything about Inform 7 is focused on making interactive fiction, and it’s a superb tool for that task.

I put my code up on GitHub in case there’s any useful tricks in my source (warning: doesn’t compile right now). One thing I will point your attention to is the use of square brackets around the names of objects in prose - I learned that from a blog post by Aaron Reed, and I think it’s a great idea. Essentially, all you have to do is put square brackets around the names of nouns in your descriptions of locations. What this does is send the compiler looking for an object that can be referred to by the bracketed text, and if the compiler can’t resolve that name to an actual object, you get an error. If you wanted the object to exist, this is a good warning. If you don’t want such an object to exist, then you have to change the description so that it doesn’t imply there’s an object that the player can’t actually interact with.

As a bonus, if you find yourself using too many nouns, you have to get a bit more creative with your prose - I happen to love the noun-less version of the second description. I’m used to that sort of intense editing, though, and maybe you’re horrified by the idea of spending so much time thinking about every little sentence. That’s perfectly ok, because it is time-consuming. But in the long run, I’d much rather play a game full of awesome prose like that second version. Plus I wouldn’t wind up wasting time playing around with non-existent objects. Think of your players! Think of your satisfaction as you read your beautiful prose in the future! I’m often pleasantly surprised by the writing in my old blog posts, when I go digging through the archive, so obviously I think it’s worth putting in the effort.

Comments

comments powered by Disqus

Notes

  1. lamattgrind posted this