Monthly Archives: December 2009

How to compile Slash’EM on Mac OS X (tty version)

These instructions are for the source tarball from the stable Slash’EM Page (0.0.7E7F3 at the time of this writing). I assume that you have unpacked it and moved your bash to the top of the extracted filesystem.

pushd sys/unix/ ; sh

You have to uncomment the BSD #define in line #22 of include/unixconf.h, then change line #963 of win/tty/termcap.c (this is a single line):

#if !defined(LINUX) && !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__MACH__)

Next comment out line #340 of the generated src/Makefile, and uncomment the line above (WINTTYLIB = -lncurses). Also make sure you set PREFIX, GAMEUID and GAMEGRP from Makefile to sensible values (example):

PREFIX = /Users/dirk/install
GAME = slashem
# GAME = slashem.prg
GAMEUID = dirk
GAMEGRP = staff

As suggested by Patric, instead of modifying GAMEUID and GAMEGRP, you can also edit the two lines that set CHOWN and CHGRP, and simply set them to true:

CHOWN = true
CHGRP = true

Then all there is left to do is to compile and install:

make install

If everything went fine, you will have your slashem binary in ~/install/games/local/bin. To start it cd there and invoke it in your bash: ./slashem.

To customize, I added the following line to .bash_profile:

export SLASHEMOPTIONS="@.slashem.rc"

And the file ~/.slashem.rc with the following contents:


Your config will probably vary.

Have fun playing!

iNetHack protection fee

After seeing that 1.3 was ready for download, I checked the iTunes page to see if everything was correct and I could indeed download it. That’s when I noted that there are an awful lot of 1-star ratings (about one third of all ratings). What’s worse, this number seems to have grown over time, even after 1.1 remedied a lot of the shortcomings of iNetHack’s 1.0 debut.

This made me think that since it’s free, users who don’t even know NetHack will give it a try, and of course they are utterly repelled by it. iNetHack in its current form never was intended for beginners. Which led me to something many devs have experienced too (and I have seen very clear examples of that behavior): Making your app free just invites 1-star reviews. It hurts to see that in other free apps, and it certainly hurts to see it for iNetHack. I know that my next publication for the iPhone will certainly have a fee (clarification: publications that are not an open source port). This is certainly no excuse for the current UI. Making it much more beginner-friendly is on my todo list. But I won’t change the core gameplay or add save games.

So what do you think? Do you see a future for an iNetHack protection fee or not? Please vote in the poll to the left and leave a comment!

Update: Thanks for all your feedback and votes! The poll leans very clearly to keeping iNetHack free of charge, and so it will be.

iNetHack 1.3 is gold for iPhone

Today the app store saw the release for review of iNetHack 1.3, which leads to a likely possible release date of Q1 2010.

The major theme for 1.3 was hearse integration. Some accidental bugfixes and UI improvements might also have slipped in.

iNetHack 1.3 has a different file format (both save and bones files) from previous versions, so it’s highly recommended to remove the old version before installing the new one.

Merry XMas!

NetHack 64 bit vs iNetHack 32 bit

As we all know, NetHack needs a 64 bit environment to run properly 😉 I just spent two days trying to bootstrap some files for iNetHack on my only recently upgraded snow leopard machine (a process which was working fine with leopard) when in my desperation I started to compare struct sizes:

struct version_info {
unsigned long incarnation; /* actual version number */
unsigned long feature_set; /* bitmask of config settings */
unsigned long entity_count; /* # of monsters and objects */
unsigned long struct_sizes; /* size of key structs */

iPhone Sim: 16 bytes
iPod Touch: 16 bytes
Snow Leopard: 32 bytes

Yeah, told you so 🙂

This very probably still leaves some structure alignment differences between sim and device, since they don’t share bones very well, though they both operate on the same byte alignment (little endian).