Amateur Topologist

Everything but topology.

Tag: crawl

Of Spriggans, Stabbing, and Skeletons

So, recently I’ve been playing a lot of Dungeon Crawl Stone Soup (or just Crawl). I’m not terribly good at it; my record depth is the bottom of the Snake Pit (Snake:5, since it’s the 5th level of Snake), which is about… a third of the way through a minimal run. And usually I die a lot earlier than that, on the second or third floor. In fact, as I wrote this, I played a quick game that wound up with me dying on D:2 (second floor of the dungeon).

A bit of background is necessary: Crawl is a member of a family of games known as roguelikes (after the original, rogue), which share these characteristics:

  • Permanent death. You die, you lose; if you save your game, you quit right afterwards, so it’s only useful to take a break. You can copy the save folder, but that’s cheating.
  • Randomly-generated dungeons. There are patterns, such as special levels that always have one of a few predefined patterns, but the majority of levels are randomly-created; when you go up or down stairs, you have no clue what you’re going to get.
  • ASCII. The entire interface is ASCII, though most modern ones use Unicode for drawing elements of the dungeon. Different colors mean different things; for example, in Crawl, an o is an orc, which is fairly easy to kill, and an o is an orc priest, which has a decent chance at killing low-level characters. And if you see an orc warlord (o), run the hell away.
  • Unidentified magic items. One game, a bubbly potion might be a potion of heal wounds. Another game, it might be a potion of paralysis. There’s no way to know until you cast identify on it or you use it. And scrolls of identify tend to be in semi-limited supply, so you can’t use them all on your potions/scrolls/amulets.

So what’s the appeal? At first, it doesn’t seem like there would be one. Permanent death basically ensures that you’ll be replaying the first few minutes of the game over and over, or maybe the first hour or so once you get good at it. And the high level of randomness means that you could easily die due to sheer unluckiness. And you can’t really use the knowledge you got during that run for your next attempt, since all the potions and scrolls and such will be different the next time around.

They'll never see me coming.

Except not. Crawl has over 50 different good race/class combinations which play differently, from the ‘sleep and stab’ Spriggan Enchanter to the ‘berserk and kill everything’ Kobold Berserker or the ‘summon and spam Pain’ Deep Dwarf Necromancer. And that’s not even counting the different gods that can be worshipped; most class/races will play well with one of at least two gods. If I play a bunch of games as one type, I can just switch to another, or worship a different god. The relatively quick power progression helps too; it feels good killing huge groups of enemies that 20 minutes ago would’ve absolutely slaughtered you; conversely, it can be exciting running into an enemy that you know is going to absolutely wreck you unless you get out of there now. And over the many hundreds of games I’ve played, I’ve learned lots of things; how to successfully run away from enemies until I can get the MP back to blast them into oblivion, which enemies I can kill as soon as I see them (giant newts) and which I should stay the hell away from (most unique enemies, ogre mages, trolls).

Another large part of it is training myself to not fight everything I see ever. Crawl has two beautiful examples of this; the oklob plant and Sigmund. The oklob plant is a rather nasty monster that can spit armor-corroding acid for a good portion of your of health a turn. But they’re plants; they can’t move. And if you’re using the auto-explore feature (which you really, really should!) then you stop moving as soon as you see one, and you won’t auto-move into range of one. So they’re basically a bravado trap for people who try to kill everything as soon as they see it. Sigmund is a powerful unique monster typically encountered early on; his purpose is basically to teach you that there are some monsters that you should just run away from straight to the nearest stairs.

There’s also a social aspect to the game; you can play Crawl on one of three servers (CAO, CDO, and RHF), and let other people watch your game; deaths, ascensions, and other important milestones are also announced in the ##crawl channel on Freenode. You can also interact with (read: kill or be killed by) the ghosts of other players, who have spells and stats based on their status when they were killed. Plus you can ask people for advice, or ask the various stats bots questions like ‘what gods do deep elf wizards usually worship?’ or access the user-created database of information (<Henzell> warg[2/2]: Also, “warg” is the sound that you emit whilst being mangled by a warg).

Finally, one of the key properties of roguelikes is that every single death should be fundamentally your fault. Granted, a death is less pleasant if you know that it’s due to your stupid mistake, but that also means that you’re not going to be doing really well and then just die. Crawl is good at this (can you tell I like it yet?); I’d say about 90% of my deaths are my fault. The other 10% are early-game stuff where I happen to run into a pack of gnolls on the first level, or where a snake’s poison lasts for longer than it normally does and I don’t happen to have a potion of healing or heal wounds on me.

So go play some Crawl, have some fun, lose 20 SpEns to snakes on the first floor. Trust me, it’s worth it when you get farther than you’ve ever been and are one-shotting enemies that gave you so much trouble just a half hour before. Until something else that you haven’t seen before shows up and kills you because you’ve let your seeming invulnerability go to your head.

Logging in to crawl.akrasiac.org quickly

I’ve been playing a lot of Dungeon Crawl Stone Soup lately, which is a roguelike like Nethack only it’s undergoing active development and you tend not to die to the random number generator as often as your own mistakes. (If you don’t know what a roguelike is, it’s a turn-based game with mostly randomly-generated dungeons and items, and with permanent death; you automatically quit after you save, so it’s only useful for taking breaks). I play almost exclusively on crawl.akrasiac.org (or CAO), which is like the nethack.alt.org of Crawl; other people can watch you play, there are bots that announce deaths and other important events in ##crawl on the freenode IRC network, and it has a dgamelaunch frontend for logging in to your character, setting options, etc.

Unfortunately, due to the way that CAO is set up, there’s no built-in method for automatically logging in as your character. This isn’t exactly the most horrible inconvenience in the world, but it can be kind of annoying. So I set up a script:

#!/usr/bin/expect
spawn ssh -C joshua@crawl.akrasiac.org
expect "ssword" {
send "joshua\n"
}
expect "Login" {
send "l"
send "Username\n"
send "Password\n"
send "1p"
}
interact

Obviously, replace Username and Password with your username/password, and if you automatically log in when you ssh manually because you set up the RSA key, remove the ‘expect “ssword” part. To use this, you need to install expect; if you’re playing on Linux, it’s probably in your distribution’s repositories. If you’re playing on OS X, then you need to install MacPorts and sudo port install expect. If you’re playing on Windows via PuTTY, you’re out of luck (but you can still set up the RSA key to at least auto-login as joshua).

Once you’ve installed expect, open up a text file in your home directory or wherever; paste the script in; and chmod 0755 /path/to/the/script. Then you can execute the script from the terminal like any other program, and it’ll automatically drop you into your last savegame (or the race/class choice screen)