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?