The source code for Dungeons of Daggorath web port is broken into two repositories. First, this repository is for the main website that hosts the game. The second repository is the C++ code for Dungeons of Daggorath itself, modified for webassembly.
The website is written using Jekyll and hosted using GitHub.
This repo uses GitHub Actions + GitHub Pages to publish:
- Production:
masterdeploys to the site root (/) - Previews: any non-
masterbranch deploys to/preview/<branch-name>/
Previews are stored under the gh-pages branch and do not overwrite production content.
Because local bundle exec jekyll build may not match GitHub’s build environment, the repo includes a manual GitHub Actions workflow that seeds gh-pages directly in CI using the same toolchain.
- Push the workflows in this repo to your branch.
- In GitHub, go to Actions → Seed gh-pages from master → Run workflow.
- Leave deploy=true (default) so it seeds
gh-pagesand deploys it immediately.
After this, pushing master updates the root (while preserving preview/), and pushing feature branches updates only their preview subdirectory under /preview/<branch-name>/.
Local Installation
- Clone this repository
- Install Jekyll - including any dependencies
- Setup the C++ source code (see below)
Locally, you can test out the website using:
bundle exec jekyll serve
The source code is written in C++, using emscripten for the web port.
Local Installation
See the main repo at https://github.com/cognitivegears/DungeonsOfDaggorath for installation and development instructions
On the website, the C++ code is include in the "daggorath" submodule in the source code. A Makefile is also included in the website version to build a new version of Daggorath for the website. To run a build, use the following commands:
make clean
THREAD_POOL_SIZE=4 make wasm
The wasm target invokes emmake under the hood, so make sure the Emscripten SDK environment is activated (or set EMMAKE to the path of emmake) before running it. By default the build allocates four worker threads; override this by passing THREAD_POOL_SIZE=<n> to any of the make targets (wasm, site, serve, serve-local).
Because WebAssembly threads require SharedArrayBuffer support, you must serve the generated site with cross-origin isolation headers. Two convenience targets are provided:
make serve # builds via Jekyll into _site/ and serves that tree with emrun
make serve-local # serves a standalone index.local.html without running Jekyll
After either command finishes, open http://localhost:8080/index.html (or index.local.html) in a browser that supports SharedArrayBuffer (Chrome, Edge, or Firefox with dom.postMessage.sharedArrayBuffer.withCOOP_COEP enabled).
For more instructions on local installation, including installing dependencies, see the main repo.
Dungeons of Daggorath is hosted at https://daggorath.online
Some of the following information has been extracted from https://archive.org/stream/Dungeons_of_Daggorath_1983_Tandy/Dungeons_of_Daggorath_1983_Tandy_djvu.txt
| Command | Modifiers | Abbreviation Example | Usage |
|---|---|---|---|
| MOVE | [None] BACK LEFT RIGHT | M M B M L M R | Step one cell in direction |
| TURN | LEFT RIGHT AROUND | T L T R T A | Turn in current cell |
| CLIMB | UP DOWN | C U C D | Climb up a ladder. Climb down a ladder or a hole. |
| EXAMINE | [None] | E | Show a list of items on the floor of the cell you occupy plus a list of everything you are carrying in your backpack. |
| LOOK | [None] | L | Look at the Dungeon after an EXAMINE command. |
| GET | [HAND] [ITEM] | G R T G L SW | Get an object from the floor with your left or right hand. Note: The object you type must be on the floor of the cell you occupy, and the hand you choose must be empty. |
| PULL | [HAND] [ITEM] | P R T P L SW | Pull an object from your backpack. Note: The object you type must be in your backpack, and the hand you choose must be empty. |
| STOW | [HAND] | S R S L | Stow the object in your hand into your backpack. |
| DROP | [HAND] | D L D R | Drop the object in your hand to the floor. |
| ATTACK | [HAND] | A L A R | Attack with the object in your hand. |
| USE | [HAND] | U L U R | Use the object in your hand. |
| REVEAL | [HAND] | R L R R | Attempt to reveal the type of object in your hand. |
| INCANT | [MAGIC WORD] | I STEEL | Attempt to conjure up the magic power of a RING by incanting its magical name. Note: When you INCANT, type only the single wotd you are incanting, such as INCANT STEEL. |
| ZSAVE | [SAVE NAME] | ZS SAVEONE | Saves your game. |
| ZLOAD | [SAVE NAME] | ZL SAVEONE | Loads your game. |
| RESTART | [None] | RESTART | Restarts from the beginning. |
There are several types within each of these object classes. For example, a TORCH can be a PINE TORCH or a LUNAR TORCH. The chart below will clarify the various types of objects. The types of RINGs, however, will not be listed in the chart. You must discover them yourself.
| Item | Revealed Items |
|---|---|
| TORCH | PINE, LUNAR, SOLAR |
| SWORD | WOODEN, IRON, ELVISH |
| SHIELD | LEATHER, BRONZE, MITHRIL |
| FLASK | HALE, ABYE, THEWS |
| SCROLL | VISION, SEER |
| RING | Not Listed. |
When you first enter the Dungeon, you will be given a backpack containing a PINE TORCH and a WOODEN SWORD.
A popular start is as follows:
M
M
M
M
P R T
U R
P L SW
T L
| CHEATS | EFFECT |
|---|---|
| SETCHEAT NONE | Disable all active cheats. |
| SETCHEAT ITEMS | |
| SETCHEAT INVULNERABLE | |
| SETCHEAT CRTSCALE | |
| SETCHEAT REVEAL | |
| SETCHEAT RING | |
| SETCHEAT TORCH |
For game options press ESC and use arrow keys to navigate the menu. Left/Right will switch between menus.