Posted to rec.games.roguelike.angband by Keldon Jones.
Hi,
I've recently been busy making Yet Another Variant -- PAngband.
PAngband stands for Plot-based (or Programmable) Angband. It offers creative
people the ability to tell stories using the Angband engine with the player as
the main character (ala games such as Ultima or Wizardry). Unfortunately, I'm
not that creative, but more on that down below.
REASONS
I've always been a huge fan of Roguelikes, ever since playing Rogue
eight years ago, and Angband a few years later. However, I've been
disappointed in their plot (or lack of it) -- "Go kill Morgoth" or "Go get the
Amulet of Yendor". But it games like the Ultima series, there are characters
to interact with, puzzles to solve, towns to explore, as well as monsters to
kill. So, this is an attempt to rectify that by adding a flexible, powerful
scripting-like language to the engine.
METHOD
The heart of PAngband is the script parser. The scripts are written
in a language called RPL, which stands for Reverse Polish Language.
Statements are written in Reverse Polish Notation, which means that the
function is put last, after the arguments. For example, to add 2 numbers in
the traditional (infix) notation, you write "3 + 5". In RPN, you write
"3 5 +". If you've ever used an HP calculator, you should get used to it
pretty easily.
The scripts can call upon certain functions that either examine or
modify internal game structures or call internal game functions. This will
let you, for example, get the current player location, throw fire balls, or
summon specific creatures from within a script. Other commands let you print
messages, get input from the user, or control some Non-Player Characters
(NPCs).
EXAMPLE STORY
I've got one rather small, simple, stupid story in mind to show off
most of the features of PAngband. I'm not going to go into the details,
because that'd spoil it for you. However, I would like a better idea, so if
you've ever thought of the "plot-of-all-plots" for a roguelike but never acted
on it, let me know and I'll see if it'll be doable.
CURRENT PROGRESS
At this moment, the script parser is more-or-less finished. The set
of internal functions is mostly done, but I'm still removing unnecessary ones
and putting in some more that may be needed by someone, someday (it's hard to
anticipate everyone's needs). Savefile support and script initialization is
also finished. Unfortunately, all the NPC stuff is still theoretical at the
moment, but that stuff should be fairly easy to do. And I've got support in
for static levels (such as the Town will probably need to be for most plots).
Please send comments and suggestions to me (keldon@umr.edu).
Keldon
|