Wednesday, January 23, 2019

Game 35: DND revisited

This entry replaces an earlier one. Short version – my first attempt failed because the map display was mangled and useless. Then I figured out how to fix it. The original post is here.

As mentioned, before, DND-likes are an early sub-genre of CRPGs, which started with dnd (or perhaps pedit5) on the PLATO network, and culminated with Daniel Lawrence’s Telengard’s commercial release in 1982.

Lawrence’s mainframe branch of DND appears to be an important missing link, a predecessor to Telengard, and also to multiple other DND-likes by other authors. Lawrence denied having ever played dnd on PLATO, while dnd’s maintainer Dirk Pellett claims he outright plagiarized it.

The earliest version I can find is a VAX/VMS port of DND, which I downloaded here. Getting it to work was no simple task; I had to emulate a VAX machine with the emulator SIMH, figure out how to install OpenVMS, and then mount the disk images using little but a sparse and partly incorrect readme file and some rusty knowledge of Unix.

And even then, it didn’t work right with Windows’ console window. The ingame display was horribly mangled.

How it looked.

How it SHOULD have looked

Turns out VAX and Windows have different ideas about how line feeds should work. Windows throws in a carriage return for free, but DND is counting on VAX to not do that. Luckily, I discovered a replacement console called Cmder, which works fine.

Loading up, a title screen and main menu.

Character creation and dungeon selection

There are already three things on that screen that differentiate DND from pedit5 and dnd.

First, all six D&D attributes are present, including Charisma.

Second, you can select classes. Dnd and pedit5 both lacked classes, instead granting your character access to both mage and cleric spells, with separate spell points for each school. Here, the cleric casts the cleric spells, and the mage casts the mage spells. The fighter can’t cast spells, but unlike pedit5 and dnd can actually fight decently.

Third, you can select one of three dungeons to explore.

Entering TELENGARD. The map output looks OK!

Checking out the ingame helpfile.

Let’s see what “Utter a pray for escape” does.

Yeah, it’s that kind of game.

Traveling north, I encounter my first monster. Combat options are awfully familiar looking.

Pressing an invalid key produces a likewise awfully familiar message.

Casting a spell

And here’s our first major difference from pedit5 and dnd. Combat is no longer resolved instantly once you take an action, but plays out round by round and lets you take a new action on every turn.


Sleep works much like in pedit5, but sometimes the monster wakes up before you can kill it.


Checking my vital stats

HP half gone, spells depleted, time to head back to the surface. Good thing I’m not far from the exit!

A kobold ambushed me, but I survived even though I’m out of spells. Time to leave.

Like pedit5, gold is converted to XP on a successful run, and accounts for most of it.


Gear is just lying around, but it’s discarded if you are carrying something better.



I quickly found that magicians tend not to fare well in straight melee combat.

My next character found a chest soon, which are much more generous than random piles of silver.

That’s already enough for a level up!



There seems to be a gold->experience rate penalty when your character level is overleveled. At first, each gold was worth an XP. At level 2, I get half my XP in gold. Gold gathered in deeper levels is not penalized in this manner.

That “spells” list shows the four tiers of mage spells, from which I can cast four level 1 spells and one level 2 spell. The level 1 spell sleep is still the most useful spell at this point, but it doesn’t work on undead.

One level up later, I gained access to level 3 spells including “continual light.” I tried it out:



This showed me there was a thing to the north (it turned out to be a kobold, but it could have been treasure too), and a secret door to the east.

Entering the door turned out to be a mistake.


Restarting yet again, I wandered around familiar territory, dealt with enemies with magic, retreated whenever empty, and leveled up mostly through treasure chests, which were still worth it even with the XP penalty. Sleep remained very reliable, and Phantasmal forces worked surprisingly well against the undead.



At this point, I had access to level 3 spells, and I experimented with all 18 spells available. These were my findings.

Level 1
  • Magic missle – Yes, that’s how it’s spelled. 1-6 damage in combat.
  • Charm – Usually incapacitates non-undead monsters. You can try to kill them, but they break the charm about half the time if you try.
  • Shield – Get hit less often. Cast it any time, but it doesn’t last long.
  • Sleep – Seems to be the same as charm, except monsters don’t usually break it.
  • Protection from evil – Seems to be the same as Shield.
  • Light – Reveals things and secret doors on the map, but doesn’t last long.
Level 2
  • Phantasmal forces – Usually kills.
  • Web – Usually incapacitates. I have never seen a monster break the web.
  • Lightning bolt – Better damage than magic missle.
  • Strength – Do more damage when fighting. Doesn’t last long.
  • Levitate – Prevent falling in pits. Lasts a while.
  • Invisibility – Better odds of sneaking past monsters. Lasts a while.
Level 3
  • Fireball – Better damage than lightning bolt.
  • Confuse – Monster damages itself for one round.
  • Pass-wall – Move through a wall. Fails if it would take you out of bounds.
  • Hold monster – Incapacitates about half the time. I have never seen a monster break hold.
  • Fear – No idea, but it’s a lasting effect, and lasts a pretty long time.
  • Continual light – Light, but for a much longer duration.

I did some exploring, and found multiple types of special dungeon features.



Fountains have random effects if you drink from them:
  • Nothing
  • Restore HP
  • Damage HP
  • Gain XP
  • Lose XP
  • Stat increase
  • Stat decrease
The color of the fountain is random, but doesn’t seem to make any difference.



Holy Altars can grant boons if you worship and donate generously, but may invoke divine wrath if you ignore them or donate too little.



Sometimes there’s an option to “Desicrate,” but I don’t know what makes that option available or what it does, exactly.



A jewel-and-rune-covered throne, with a sundry of options, but none of them did anything for me.

Sometimes the game just outputs random messages.




Teleporters will zap you somewhere else in the dungeon, possibly even to another floor, which got me killed me more than once, and compelled me to start making maps. The destination of each teleporter seems to be fixed, but there also doesn’t seem to be any clear pattern to where the teleporters take you.



Pits, which you will sometimes just fall into, and sometimes will have the option to climb down in or walk around. They always lead one dungeon level down, to the same X,Y coordinates as the pit.

Elevators take you up a level, whether you want to or not.




The Excelsior Transporter! Pretty much the smoking gun in debunking Lawrence’s dubious claims that he never played dnd.

One difference from dnd is that every dungeon level’s got an Excelsior Transporter, and it conveniently takes you to ET’s on other floors. In dnd, only the first floor had one, it dropped you off on a random square of your selected floor, and you had to climb your way back up. It’s a good thing you don’t have to do that here, because DND’s dungeon levels are much larger.



A small door with colored lights lets you enter any combination of two buttons, for a possible 16 combinations. I tried all 16 combinations, and all that happened is that I got zapped for a bit of damage each time.


 
A square in the lower-left corner of the map proved to be “solid rock,” but in practice was a teleporter.

With level 1 mostly mapped out, and more than half an hour of earnest gametime logged for this character, I exited the dungeon, and backed up my save file. This game features permadeath, and although I’m sticking with my rules against savescum abuse, I’m not going to risk losing more than a half hour of progress with this game.

Level 4 spells were available at this point, which I tested.
  • Teleport – Teleport somewhere, seemingly at random. This got me stranded in unfamiliar territory and killed, so it left a sour taste in my mouth even though I had just backed up my save.
  • Power word kill – Kills the enemy. I haven’t seen it fail.
  • Prismatic wall – Sometimes makes the monster get bored and leave, sometimes does nothing.
  • Time stop – No monster encounters for a few steps
  • Wall of fire – Sometimes kills the monster, sometimes makes it get bored and leave, sometimes does nothing. Odds of each event seem equal.
  • Summon demon –Usually the demon kills the monster and then you unsummon it. Sometimes the unsummoning fails, and then you have to fight the demon. Sometimes the demon is taking a bath and nothing happens.


My impressions so far are pretty favorable!  It’s clear that Lawrence had played dnd, but I wouldn’t go as far to call it wholesale plagiarism. Even from just exploring the first floor, combat appears to be a lot more interesting, there are a ton of random events and special encounters that dnd lacks, and the magic system is much better developed with spells that do more things than “do damage” and “kill.” Some specific elements are stolen, for sure. I’m certain it’s no accident that both games have an Excelsior Transporter, or that your quest is to retrieve an orb. But the general dungeon crawling template isn’t something dnd’s authors can claim exclusive ownership of, and DND has quite a few novel ideas in it that hadn’t been seen before in any prior CRPG.

My game plan is to try delving a bit deeper, in search of loot and XP. I’m at character level 5, so perhaps I can survive a trip down to dungeon level 5, which will be easy to reach thanks to the Excelsior Transporter, and easy to return from provided I can avoid the random teleporters. I don’t see much point in trying to map the entire 20x20 dungeon floors, but I will map as I go, mainly so that I have a chance of finding my way back in case of random teleportation.

My mostly complete map of level 1:

22 comments:

  1. Nice work. I was trying to get this to run on a PDP-10 with Tops-20, but converting the files into a tape format was too much work without knowing that they even work on that machine.

    ReplyDelete
  2. Useful site. Where did you manage to get hold of the data files from (the only files I could find on the site you referenced were source code)?

    ReplyDelete
    Replies
    1. Looks like you can still download the VAX/VMS version here:
      http://web.archive.org/web/20060308114652/http://dnd.lunaticsworld.com/VMS_dnd.zip

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. Yesterday, I've posted a comment asking for help trying to emulate this game. I've never touched VMS and the usual operations I can do on a CMD is MS-DOS releated. But here I'm today: after spending the day reading old DEC manuals and sparse information on many sources, and after downloading an old version of VMS (4.6), somehow I've learned how this things works at the point where I can now easily open the VAX simulator, boot on the system driver and mount those DND disks, even play the game. Now, my only question is regarding the line feed/carriage return error: how did you fixed that? On Cmder I didn't find the option to take this.

      Delete
    2. Sorry, I wish I knew! This didn't work for CRPG Addict or Nathan P. Mahney either, and now it's no longer working for me. I did find some notes on ConEmu about enabling/disabling Line Feed mode through ANSI escape codes, but I can't figure out how to do it, or if this is even the solution.
      https://conemu.github.io/en/AnsiEscapeCodes.html

      There are two other things that worked for me before I discovered Cmder and might work for you too. One, get the Ubuntu app for Windows 10, and set up SIMH there. Or if you have access to a MacBook, try using that. The MacBook is actually the first way that I ever got DND working completely correctly, and it's what tipped me off that the issue might be linefeed related. With either approach, you can use the same VAX images that you use in Windows, but you'll need a VAX simulator for the new host environment.

      Delete
    3. Hi, thanks for the reply =)

      Well, I guess I need to keep surfing around until I magically find something xD those ANSI sequences do seem to be what we need, but I don't know if I get it: they are for the terminal of the cmder (xterm, windows, etc.) or for the VMS terminal? I think it's the former, but I tried some sequences and it didn't worked as expected. Will keep researching...

      Btw, very nice blog! I once have read about that Wizardry fix you did, and those Black Onyx entries are very special to me (I read about them on CRPG Addict when I was in college, even started playing on M88).

      If I get a solution for this "carriage mystery", I'll post here first!

      Delete
    4. Edit: I misspelled somethings since it's almost 3 AM here xD I meant that "I've read about Black Onyx on CRPG Addict", still reading your entries now.

      Delete
    5. I got it working again! I used an old version of ConEmu, rather than Cmder. v201122 was the latest that worked for me - anything newer had the line feed issue.
      https://www.fosshub.com/ConEmu-old.html

      Make sure auto-update isn't enabled.

      Just in case this is also version dependent on SIMH, this is the version I'm using:
      https://github.com/simh/Win32-Development-Binaries/blob/Win32-Development-Binaries/simh-4.0-Current--2020-06-09-0912a927.zip

      Delete
    6. Oh sh*t, you shouldn't needed to do that! Thanks =D

      I did tried downloading an older version of Cmder before, but it was older than that release of ConEmu (or not old enough? xD). But I did download the older Cmder v.1.3.13 and it also don't mess with the lines! I still want to know a way to fix this in newer versions though, but until them, this is the easiest way to play DND on VAXVMS =)

      Delete
    7. Two quick questions I forgot to include: is it okay to you if I post here the "step-by-step" of how one can easily run the game, along with the relevant links (including the one to the page where there is VMS 4.6)? Second, the game sometimes as something like "press ENTER to do X and LF to do Y". This LF key (linefeed?), can we "emulate" it/there is a shortcut for the termianl?

      Delete
    8. 1 - Absolutely!
      2 - On Windows, press Ctrl+Enter to send lf. This will be different in a POSIX environment.

      Delete
    9. I'm still creating the "step-by-step" guide, but I'm now at another computer (Win7x86) to test everything and the previous carriage problem returned XD It's cool, I'll resume my investigations on the matter.

      Delete
    10. Hi Ahab, I hope you are doing good.

      Hello Arthurion. I was wondering if you ever got to finish the step-by-step guide to boot the VAX DND.

      Delete
    11. Hello @iori , thanks for commenting. I did write the guide back in that October, 2021. However, the thing that prevented me of posting was the "Linefeed issue" that I did spent some good amount of time trying to solve but was unsuccessful :(

      But now I see that it was foolish not to publish it, since a chance of playing it is better with the guide than searching for everything at blind. Maybe someone following it can even come with the solution for line-issues.

      Tomorrow I'll follow my own instructions on the PC at the office and if it works (even with the linefeed issue), I'll post it by night.

      Delete
    12. I thought the old version of Cmder fixed the issue for you?

      Delete
    13. It did on one of my computers, but it persists on another. I was trying to find a definitive solution, but that will have to wait....

      On a side note, it's cool that I have documented the steps during that time, since I didn't remember much of the process xD

      Delete
  4. DND_VAXVMS_HOWTORUN.txt
    Daniel Lawrence's DND for VAX VMS - an easy guide by Arthurion (v.1.1)

    ---------------------------------------------
    About
    ---------------------------------------------

    This guide was created and tested on a Windows 10 Pro (1909) machine in October, 2021.
    The most likely problem one can encounter is unfortunately at the end of the process.
    If you are using a different version of Windows, the results may be different.
    Please, let me know in the comments if you face any problems and I'll gladly help you trough.
    Feel free to correct me (and my English) and give suggestions on the process.

    So, if you want to play Daniel Lawrence's DND (VAXVMS) on Windows, this is the "easy" way:

    ---------------------------------------------
    0 - Downloads
    ---------------------------------------------

    a) Download Cmder-mini v.1.3.13: https://github.com/cmderdev/cmder/releases/download/v1.3.13/cmder_mini.zip
    b) Download SIMH: https://github.com/simh/Win32-Development-Binaries/blob/Win32-Development-Binaries/simh-4.0-Current--2020-06-09-0912a927.zip
    c) Download this package of DEC VMS [VAX]: https://winworldpc.com/product/vms/4x
    d) Download the game itself: http://web.archive.org/web/20060308114652/http://dnd.lunaticsworld.com/VMS_dnd.zip

    ---------------------------------------------
    1.0 - Basic setup
    ---------------------------------------------

    1.1) Create a folder and extract Cmder-mini there.
    1.2) Open the SIMH .zip and extract VAX8600.exe to the "bin" sub-folder of Cmder. Rename the program to VAX.exe.
    1.3) Inside the .7z of "DEC VMS 4.6 [...]", go to the subfolder "kit" and extract both files on the Cmder root folder. Rename the .ini file to just "VAX.ini".
    1.4) Open the VMS_dnd.zip file and extract all its files to the root folder of Cmder.
    1.5) Open Cmder.exe and skip/cancel any updates it asks for (you can also go to settings and disable auto-updates).

    ---------------------------------------------
    2.0 - Install VAXVMS
    ---------------------------------------------

    Obs.: refers to the act of pressing the "Return" key and should not be typed on the terminal.

    2.1) Type just "VAX" (without quotes) and . The emulator should start and load/create everything it needs.

    2.2) When the terminal presents you with an "sim>" prompt, type:

    boot rq3

    2.3) Wait until the prompt present a "$", and then type:

    BACKUP/VERIFY DUA3:REQUIRED/SAVE DUA0:

    2.4) When the terminal presents "Enter "YES" to continue:", press to return to the "sim>" prompt.
    2.5) Type:

    boot rq0

    2.6) The terminal will ask you for date and time. It doesn't need to be the actual one, but the format is:

    11-OCT-2021 14:43

    2.7) After that, it will ask you for the drive holding the distribution kit. Enter:

    DUA3

    2.8) The next two questions you can answer either "Y" or "N". Answer "N" in both to just skip ahead.
    2.9) The system will ask you to set a new password for three accounts (SYSTEM, SYSTEST and FIELD). They need to be at least 6 digits long.
    You can set just a sequence of "123456" (since this will only be a setup for old games :P ). Note that it will not show that you are typing to the terminal, but it is actually registering the keys you press as the desired password.

    After a lot of lines being printed, the terminal will present you with a reboot.

    2.10) Whenever it prints the line " SYSTEM job terminated at" followed by the date/time, press and it will ask for Username and Password.

    2.11) For username, type: SYSTEM
    2.12) For password, type the 6 digits you entered before (in my case, 123456 ). You need to log-in everytime you boot the system.

    2.13) If everything is working, you'll get to a "$" prompt. Use to get back to "sim>" and enter:

    quit .

    ReplyDelete
    Replies
    1. ---------------------------------------------
      3.0 - Final setup
      ---------------------------------------------

      3.1) On CMDER root folder, open VAX.INI and scroll down. You can delete everything after "attach rq1 user_1.ra82" (generally on line 32), or just comment it out with a ; at the start of the line.

      3.2) Paste the following at the end of the file and save VAX.ini:

      ;
      set rq2 rx33
      attach rq2 rx33_1.dsk

      set rq3 rx33
      attach rq3 rx33_2.dsk

      boot rq0
      ;


      ---------------------------------------------
      4.0 - Your new OS (and your first game there!)
      ---------------------------------------------

      4.1) Back to Cmder, type: VAX

      4.2) As before, when the last line is "SYSTEM job terminated at" followed by the date, type .
      4.3) Username: SYSTEM
      4.4) Password: 123456 (or the one you used before).

      4.5) At the "$" prompt, follow this sequence:

      $MOUNT DUA2: DND DND
      $SET DEFAULT DUA2:<000000.DND>
      $RUN DND.EXE

      Or:

      $MOUNT DUA3: DUNGDRAG DUNGDRAG
      $SET DEFAULT DUA3:<000000.DUNGDRAG>
      $RUN DUNGDRAG.EXE

      I believe DUNGDRAG is an early version, but haven't compared them to know for sure.
      The game can only read uppercase inputs, so enable the Caps Lock. The instructions are fairly simple.
      Movement is done with the WADX scheme. Whenever it asks for a "" key, use .

      ---------------------------------------------
      5 - The "Carriage Return" problem
      ---------------------------------------------

      Your game should be working by now, but it is possible that you have faced the biggest issue running DND.
      Basically, the game screen should look something like this:

      I
      I
      I
      I
      # I
      X I
      I
      I
      I
      I
      I
      II---II

      If it does look like the above, everything is fine. However, it may be looking like this instead:

      I
      I
      I
      I
      # I
      X I
      I
      I
      I
      I
      I
      II---II

      On that case, you unfortunately have faced the Carriage-Return/Linefeed issue, to which we're still investigating how to fix. It apparently is related to Windows.

      It is possible that some different version of Cmder or other terminal-emulator might offer the options to correct this. Using older versions sometimes fix the issue.

      ---------------------------------------------
      6 - Credits
      ---------------------------------------------

      This guide was only made possible due to the hard work of many people across different years, with different interests and goals.
      I would like to acknowledge especially:

      Ahab* (https://datadrivengamer.blogspot.com/) for giving a lot of info about how he was able to run this on present time;
      Chester Bolingbroke* (http://crpgaddict.blogspot.com/) for introducing me to this game and the problems to make it run properly;

      And all the names on the various .txt that you can see inside the downloaded files! :)
      Special thanks also to Lars Persson who created most of the instructions (available on "Readme_VMS_dnd.txt" from "VMS_dnd.zip")

      *If you wish, you can follow some discussions on their takes in the game:

      http://crpgaddict.blogspot.com/2019/02/the-final-word-on-daniel-lawrences-dnd.html
      https://datadrivengamer.blogspot.com/2019/01/game-35-dnd-revisited.html

      Delete
    2. Blogger/Blogspot made the comparison in section 5 irrelevant by ignoring the tabs/white spaces ;(
      The first one should be something like this:

      .....I
      .....I
      .....I
      .....I
      ..........#.. I
      ..........X ..I
      ...............I
      .....I
      .....I
      .....I
      .....I
      .....II---II

      Delete
    3. Good work, and thanks! You might be able to get the space formatting working with '&nbsp;'

      e.g.
      I
      I
      I
      I
        # I
        X I
           I
      I
      I
      I
      I
      II---II

      Delete
    4. Thank you for this Arthur. Got it working on my Windows 10 laptop.
      For those who are having problems with simh asking about ethernet, en0 or winpcap, delete the lines in VAX.ini related to xu and en0

      Also, when you play the DND game, RET = Enter/Return and LF = CTRL+Enter/Return

      Delete