Previous month:
November 2010
Next month:
January 2011

December 2010

All I Want for Christmas...

Borderzone_front

I've been continuing to build out my long lost Infocom collection these last few months picking up a dozen old "grey box" editions on eBay and Amazon when the prices are not too crazy.  Thrilled as I have been to get Deadline, Trinity, Witness, Planetfall and others, I'm still missing two more.  

So all I want for Christmas is a nice clean copy of Border Zone, one of my favorite Infocom titles, which was written by Marc Blank.   Oh yeah, and maybe Sherlock, by Bob Bates.  Also another good book on Inform.  Aaron Reed's book is excellent, but it's not a reference.  And the Inform7 manual is causing me to tear my hair out. 

But most of all, how about world peace for Christmas?  That may be easier to come by than a copy of Border Zone.


Retro Cover Art

Z-machine-matter-cover-757

I've always thought that Infocom distinguished itself in the industry not only with it's great story telling, but also with compelling packaging and promotional materials.  If you bought an Infocom game, you knew you would get something more than just a disk, whether it was a newspaper with clues, a space patrol ID card, a telegram, peril-sensitive sunglasses or something else. 

So with that in mind, I've mocked up Infocom-inspired cover art for my story, the Z-Machine Matter, in the style of a vintage 50's pulp paperback cover.

Note that Inform7 recommends using a square sized image for the cover art.  I have found that somewhere around 500 x 500 pixels and 700 x 700 pixels works reasonable well across different interpreters and devices.  That said, every interpreter seems to have its own plan on shrinking or expanding the image to fit its view of how large it should be.  You also need to produce a smaller thumbnail version of the cover art at 120 x 120 pixels.  These files should be named Cover.jpg and Small Cover.jpg respectively and placed in the Materials folder where your Inform project resides. 

Be sure to add the statement Release with Cover Art to your source code.  And you'll need to change the Settings of the project to include the "Bind up into a Blorb file on release" option.  You won't see the cover art while running the game within the IDE (which would be annoying anyways) but you will see it when you load the .ZBlorb file into an interpreter.

Getting an image to look good at both large and small resolutions  is not easy, so I created an alternate version with a sepia background.  Let me know what you think works best.

Z-machine-detective-sepia3   Z-machine-matter-cover-120

--Yours truly, Johnny Dollar


Alpha Testing the Z-Machine Matter

Z-Machine-screenshot_small

I've managed to complete a working prototype of "The Z-Machine Matter," a murder mystery I'm working on.  This is not a complete game, just the opening scene.  I wanted to see how far I could get programming in Inform7 evenings and weekends and determine whether the concept of the game has merit before going all in.

Nonetheless, I have set my sights at doing a thorough job on this; there's a manual, cover art, built-in hints, help text.  I've also included several extensions that improve the usability: Eric Eve's Exit Lister, Emily Short's Menus, Aaron Reed's Keyword Interface, Extended Grammar, Small Kindnesses.  While the game is still small and really only has one puzzle to it, there are multiple solutions, there's a dialog system and two non-player characters (NPCs), and several important clues for later stages of the game.

The Inform7 compiler tells me the game is currently about 14,000 words (or 2,400 lines), with 9 rooms and 51 things in it.  The source file is just over 100k resulting in a compiled 500k .Zblorb file including cover art. A lot of that is help text or ASK/TELL text, rather than complex programming, but there were a few things I struggled with.  Luckily I got help over at the intfiction forum.

The feedback from friends and family alpha testers as well as a SF Bay Area IF Meetup group has been very helpful.  There are lots of commands people have entered that I hadn't thought about.  Some of these are just variations on something that should work but doesn't, so I've implemented some fairly simple Understand as a Mistake handling to give the user a hint as to what should work.  Others are going to require much more sophisticated programming to do it right.

Still, I feel like I'm staring deep into an abyss as I consider taking this project further.  I have about 20 pages of details on the plot, characters, evidence and clues written out for the rest of the story.  But I suspect that the prototype is perhaps only 10% of what's required to complete the game.  And the code will only get more complicated from here. 

Part of the reason I was able to code the opening scene was that it was limited in scope. Because it was self-contained I didn't have to worry too much about the rest of the game when doing the opening scene. 

Next step: I'll start adding additional room locations for the middlegame and a couple more of the NPC characters who are suspects in the game.  But I'm going to take it one piece at a time and not worry about the end game and all of the details of accusing, arresting and analyzing evidence just yet.


Inform7 Code

If you haven't programmed in Inform, you might wonder what a game looks like from the author's perspective.  If you're not a programmer I would say Inform7 is pretty accessible.  It's got a natural language feel to it in that the syntax is quite readable and looks a lot like English.  However, it is still a bit finicky about some things. Sometimes you'll write some code and the compiler will complain because it's not exactly in the syntax it wants.  Below is an excerpt of some code from the game I'm working on (no spoilers!) that shows some fairly simple things.

Sample_i7_code

The good news with Inform7, is that it's quite easy to get started and there are lots of good examples.  The bad news is if you're an experienced programmer, there's a lot of stuff going on under the hood that is a bit of a black box.  So when you try to do something more complex it can be hard to figure out exactly how to do it.  But there are lots of people who have figured out Inform's quirks and so there is a body of expertise in the IF community.  And it's not that the advanced things are hard to do (once you know how) it's just that figuring out how to do them is difficult because there's no definitive language reference manual.