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