A few things to bear in mind about _Stiffy Makane: The Undiscovered
Country_.  

First, the disclaimer is not lying.  This work is vile, and
if vile pornography bothers you, you *SHOULD NOT PLAY THIS GAME*.  There
are going to be plenty of other games in the Competition, so just skip
this one, m'kay?

Second: it's a glulx game.  This means it's pretty finicky about how it
runs.  Let me list a few of the issues I know about:
   1: A fair chunk of what my game does depends on sound notification
       working.  If you are running Linux, you should get one of the
       patch sets to XGlk that supports sound notification as well as
       both AIFF and MOD sounds.  This means Torbjorn Andersson's
       SDL-mixer patch, ideally, but Adam Thornton's sox patch works
       too.  Although it's very nice work, Adrian Chung's stuff does not
       support notification, and so doesn't really work all that well
       with the game.  It *is* perfectly playable without sounds or
       graphics at all--you can play just the .ulx file if you really
       want, but it loses a lot of the (admittedly puerile) humor it
       had.
   1a: I use Linux as my development and primary testing environment.  I
        am using the SDL-mixer sound, plus the "sanity" patch, plus the
        24-bit color patch, and it works well for me (modulo point 3
        below).  This patch set is available at ftp.ifarchive.org.  You
	can also use the libmikmod+sox stuff--it works as well.
   1b: WinGlulxe works fine, although the JPG rendering code is
        terrible (I think it's a scaling issue).  The pictures look much
        nicer under Linux.  Really.  You can even read the scrawled
	writing on the Canadian fiver.
   1c: Mac works OK, although the scrolling is very flickery, and may be
        unusable on slow machines.  It uses QuickTime for its image
	handling, and QuickTime is a real pig.
   1d: The AIFF sounds probably won't play under DOSGlk; that's because
        DOSGlk assumes that AIFFs have a single chunk, which is a sound
        chunk.  My AIFFs, created with sox, have some header info too.
        Hopefully L. Ross will fix DOSGlk before the Competition.
   1e: Amiga?  No clue, mate.
   1f: Unix variants and Linux with GlkTerm and CheapGlk work fine,
        although without graphics or sound, which makes it effectively
	Just Another Bad Xtrek Game.
   2: Some users have had problems with the game hanging during the
       scrolling credits at the beginning.  If this happens to you,
       first, don't click in the scroll window, since that triggers it
       at least some of the time (well, not for me, but it did for one
       of my betatesters).  If it happens again, just hit "s" after the
       disclaimer to skip the scrolling credits.
   3: On Linux, occasionally UNDO segfaults when you UNDO while
       background music is playing.  It now does it a lot less than it
       used to, but if your game explodes under those circumstances,
       well, I warned you.  It's not a long game, so it shouldn't take
       you more than 5 minutes to get back to where you were.
   4: Play at whatever resolution and whatever aspect ratio you like,
       but it probably looks the best with an aspect ratio of 4:3 
       (i.e. 640x480, 800x600, 1024x768, etc.).

Third, I'd like to apologize for the ugliness of the source code.  This
was my first Glulx Inform game, and I learned a lot during its
implementation.  Things I'd do differently:
   1: More wrapper functions.  Unglklib already wraps the glk library,
       but a higher-level interface would help a lot.  DrawFooPic() is
       an example of what I mean, but you'll notice that the behavior is
       not consistent between functions in this class: some take
       pictures as their arguments, some take objects.  They all should
       take objects which define picture fields.
   2: Access methods.  Take a look at how the penis object works: this
       is what all the objects should look like.  Alas, I got lazy, and
       started just setting attributes and state variables inside my
       objects rather than doing proper access methods.
   3: Way fewer globals.  All the animation stuff, for instance, relies
       on cryptic global variables.  This is dumb.  We should have
       object classes that can store this information inside their
       internal structures.  In part, this is hard because the Inform
       libraries tend to rely on ugly globally-visible variables and
       routines, and the default glk event or window-handling code is
       not very OO either.  It wouldn't be too hard to do, but you have
       to know what you're doing first (which means having written a
       Glulx game and banged into some of the corners).  So that's a
       good project for my next Glulx Inform game.
   4: A different conversational interface.  I like either the Pytho's
       Mask or the City of Secrets interface much better than the
       modified phtalkoo.h I used.  But by the time I got the City of
       Secrets conversation code from Emily, it would have been a lot of
       rewriting to retool my game to use it.
   5: Stylistic Consistency.  I'm using several add-on-libraries, so
       that's probably where the trouble started, but I use StudlyCaps
       in some places, Lots_Of_Underscores in others, I tried to stick
       to One True Brace Style, but didn't succeed...the list goes on.
       Most of the formatting is what was given to me by inform-mode.el,
       which I heartily recommend if you use emacs.
   6: Locally-scoped constants would be really useful for source
       maintainability.  Graham?

Bruce


