PSC's Roguelike Game Project Page

I'm working on a game. This page will serve as a central place for my design and implementation notes as I progress. Pardon my crude web pages.

Roguelike?

I was first introduced to Rogue back in college - around 1989 or so. I played a bit of Rogue and then moved on to Moria and later Angband. These games (at the time) were CRPGs (Computer Role-Playing Games), that focused on hack-n-slash, and used "primitive" ASCII characters to represent the character, his surroundings, and enemy monsters. While the appearance and interface for the game(s) was fairly primative -- the gameplay was cutting edge and the games could be downloaded off the net for free. I was hooked.

Most people (who think about roguelike games) today have their own opinion as to what makes a game roguelike. Here's some of the pertinent features as I see them:

Single Player You get to control a single character/hero. No "traditional" D&D groups consisting of a fighter, mage, cleric, and rogue. You take a single being and through careful effort guide him or her through continual danger until you achieve victory.
Turn-Based Most roguelike games are turn based, as opposed to real-time. If you get to a tricky situation (surrounded by enemies and nearly out of resources), you can sit there are think through your situation. Take as long as you like. Time is typically broken into turns or phases and the player and computer-controlled monsters alternate taking turns.
Grid-Based The world is made up of grid squares. Furthermore, most everything in the world "fits" in a single grid square - your character, an ancient dragon, a scroll, a door - you name it, it fits in precisely 1 grid square. Sure it's not very realistic, but boy does it make things easier.
Keyboard Interface You play the game using your keyboard. A good roguelike interface has no need for the player to ever place his hand on the mouse. Want to move, press a key and you'll move 1 grid space in that direction. Unless there's a monster in that space, in which case, chances are you just tried to attack that monster. Firing arrows, casting a spell,using a magic wand, drinking a potion, examining a monster, item, or terrain feature -- literally, everything is done with a keystroke (or several).
ASCII-representaion It used to be that all roguelike games used ASCII characters to represent everything. Your character may be a simple @ glyph in the center of the screen. An empty grid square is represented by a . glyph. A # glyph represents a wall. Watch out for the 'D' nearby, it's a dragon! Nowadays, several roguelike games at least support some form of graphics, but typically they all have a mode that still uses the plain ASCII characters.
Random Number Generator Roguelike games are random. Most everything in the game is random. The map and terrain are randomly generated. The monsters you encounter. The treasure you find. The damage you deal, the damage you recieve, how monsters act, you name it - there's probably a random element to it. Randomness makes sure that you will never play the same game twice. But with all the randomness, the game has to be somewhat logical and predictable (in the mean) so that the game is still enjoyable.

The Project

So making a computer game is a big project. Making a computer game that is at least comparble to other, existing games is a really big project. Fortunately, their have been a great group of programmers associated with roguelike games over the past 15 years. From these great people, anyone interested in such an undertaking can get help - lots of help.

Most roguelike games are free, and most of them will let you re-use their source code (provided the game you make is also free). Open source has worked very well for roguelike games. Programmers come up with ideas and implement those ideas in their own variant (without having to re-invent the remainder of the game). Good ideas with good implementations get merged into other variants. Over time, the "baseline" game has accumulated many great features.

More recently, programming has begun to evolve towards more generic, extensible forms. Much of the "beauty" of the early roguelike games was their efficiency. They crammed a remarkable amount of data and features into a relatively small executable that ran well on slow CPUs with little memory. Today's computers have resources to spare, so the overhead of making the games generic and extensible is considered worthwhile (at least by some).

So I've begun the long journey which will be called SlayerQuest (it seems as though all the "good" names for game are already taken). The rough outline for the game will be similar to Diablo II in that the plot is broken into a sequence of "Acts". Each Act will be based in it's own central "home" location, and require the completion of a special quest to advance to the next act. Like Diablo II, most of these quests will involve "Slaying" a boss monster. My plan is to work on the content for the game, 1 act at a time -- so hopefully, the game will always be playable. I'm also hoping to achieve a distinct "look and feel" in each Act and even within each Act -- hopefully the levels will be interesting and provide distinct challenges (somewhat independent of the monsters). My initial goal is to try and maintain a consistent theme with monsters and levels (no polar bears in the sewers, no swamp beasts in the snow, etc).

10:34:45 - The Squint-eyed Rogue tries to hit you and misses. . . . . . . -more-
. Thundarr .####################################################################
*HUM* FIG 13#....%...........%..............%........................###...%...#
TO GO: 10743#.%.....######.........#######.........##########..####..###....%..#
HP: 287/321 #..####.######..######.#######..#####..##########..####..###..%..%.#
SP: ---/--- #..####.###+##..######.#######..#####..####3#####..####..###....%.%#
===STATUS===#..####........%##+###.###6###.p##+##..............####..###..%....#
. .CURSED. .#..##+#..####..........##...##..@..........######..#++#..###....%..#
. . FULL . .#........####....%.............####.#####..######.%....%.###...%%..#
. . . . . . #..%.....4###.########.........#+##.#####..#####1........###..%..%.#
===ENEMY====#...####.####.########..............###+#..######.%....%.###.......#
NORM ANGRY .#...+###.####.#######7....%%..............................+........#
(*****. . .)#...####......########....%%..............................+........#
==EFFECTS===#....%...####.########........#####..#####.######.%....%.###.......#
. .BESERK. .#........####.................+####..0####.######........###..%..%.#
. DISEASED .#.###+##.##+#.####..####......#####..#####.######.%....%.###....%..#
. . . . . . #.######......###+..####.............#####....2##..#++#..###...%...#
. . . . . . #.######......####..####.##5##................###..####..###..%.%.%#
S: 23 I: 09 #........#+##.####..8###.#####..########..%%..###..####..###....%.%#
D: 16 W: 10 #..####..####.####..####.#####..#######9..%%..###..####..###...%...#
C: 21 P: 14 #..##>#..####...%...####.#####..########.....%...%.####..###..%.%..#
===SKILLS===|NUM ATT: 4|EV: 08/07|FIRE FROST LIGHT|SLOW STSIS|QST: *COMPLETED* .
MG:04 SE:02 |HIT: 13+09|DR: 03/05|ELEC FORCE DARK |CONF BLIND|REF:05|STORMGATE .
TR:06 ST:03 |D: 2d6 +12|REG : SD |POIS SHARD FLUX |FEAR DRAIN|MEN:07|05/11/175 .
AU: 3754 . .|SPD: +00 .|STRD: +1 |ACID SOUND CHAOS|FALL DSNCH|HEL:08|10:34:45. .
Mock-up of SlayerQuest Interface

I'll be working with (and eventually on) the Java Roguelike Engine project as the basis for my game. Why? Java is a full-featured programming language. Everything you need to build, run, and debug Java code is available for free from the net. Java is relatively platform independent, and Java has a very good library of pre-existing classes and packages to build off of. And I want to learn how to program in Java.

The Devil in the Details

Eventually, I'll figure out how to get these links moved to a common side frame for easier navigation - but until then, I'm just going to dump links here.

Characters

Player Races

Player Classes

Ability Scores

Combat

Equipment

Detailed Class Pages (with Spellbooks)

Fighter

Marksman

Sorcerer

Cleric

Bard

Hunter

Rogue

Paladin