README
🏰 Ɗaɳƙ Ɗoɱaiɳ :: the return of Hack & Slash

Read the Player's Manual to play the online game
Ɗaɳƙ Ɗoɱaiɳ is the re-imagined classic Amiga bulletin board, Hack & Slash, built around a medieval role-playing atmosphere. Your character kills, steals, brawls, and jousts other PCs, NPCs, and BOTs to gain levels and fortune. Successful ventures into the deep dank dungeon are keys to immortality.
Original Commodore Amiga Hack & Slash enthusiasts can visit: Absinthe BBS by Anachronist
Download packs: images 📷 and sounds 🔉
With the optional packs loaded for the web portal, the game + runtime files will need roughly 500mb storage.
Installation
Project development on Chrome OS and Linux with the Node.js runtime. To run a local game copy, click the VS Code icon above or manually install:
# fetch this package source:
$ git clone https://github.com/theflyingape/dankdomain
# ... or via Node.js
$ npm install dankdomain
# cd into package source folder:
$ npm install
# 1) play it as standalone:
$ npm run play
# modify for your server networking preferences:
$ cp etc/network.json_inet etc/network.json
$ vim etc/network.json
# 2) run it as a local multiuser server:
$ npm run net &
$ npm run term
$ npm stop
# 3) other ways to play online:
$ npm run mame
$ telnet play.ddgame.us
Connected to play.ddgame.us.
Escape character is '^]'.
CARRIER DETECTED
PC emulation enabled
...........|\...................../|................. Welcome to
........./ \..|\__ __/|......./ \............... Dank Domain
........./ / \.\ _ \/ _ /....../ \.............
_ .........../ / / \.(-)\/(-)....../ / \ \.............
(_) ..........| | | / \\/(oo)\/...../ // |\ \.............
..........| | | | \|v--v|\..../ / | || \|...........
............| | | | / \_^^_/ \../ / || || ||.............
......../ / / | | \/ \/ /| || || ||/\../\....
/\..../ / / / / |______/ /| \ \ || || \/ \ /\ /\
/\ /\/ \../ / / / / /\_____/ |/ /__\ \ \ \ \ / \ / \ /\ / \
/ \/\ / / \.| | | / / /\______/ \ \__| \ \ \ \/ \/ \/ \
\ \/ \| | | | | |\______ \_ \__|_| \ / \ /
\/ | | ____ /\______ ____ \_ \ | / /
\ | |/ /\_____ / \ \__ \ |
\ |/ | |\______ | | \___ \|
| |\______ | | \_
_ ___/| |\______ | | /\ \ ___
/ \_/ \ \________\_ _\____/ / \__\_| \
___/ __ __/ / __/ /__ \__/ __ \__
_/ / \ / ___/ / ___/ \ / \ |__
| | |/|/ |/|/ \__ \ \ |
Who dares to enter my dank domain <or NEW>?
NOTE: my "public" access packages are published on GitHub and it requires your Personal Access Token authentication to fetch/install them from this alternative npm registry. Read GitHub's Working with the npm registry to learn more details.
# setup local Node.js package
$ npm config set @theflyingape:registry https://npm.pkg.github.com
$ npm login --scope=@theflyingape
$ npm install @theflyingape/dankdomain
... or use Docker (convenient and uses the latest commits):
$ docker pull theflyingape/dankdomain
$ docker run --rm -it -p 1939:1939/tcp -p 1986:1986/tcp theflyingape/dankdomain
Dank Domain (DDnet) started on linux #661
cwd /usr/games/dankdomain/game → /usr/games/dankdomain/game/portal
initializing Deeds
initializing Online
initializing Rings (unique)
+ adding ⚛️ Atomic
+ adding ✝️ Faith
+ adding ♾️ Infinity
+ adding 🐍 Medusa's
+ adding 🕳️ Mystic Portal
+ adding 👹 Ogre
+ adding 🖤 Undying
+ adding ⚪ White Wizard
initializing Players
initializing Gangs
+ adding AB Original with BOT+NPC members
+ adding (the) Monster Mash
ENOENT: no such file or directory, open '/usr/games/dankdomain/game/etc/network.json'
→ listening on telnet 0.0.0.0:1986
→ listening on https://0.0.0.0:1939/
↔ WebSocket endpoints enabled
Supports running as a BBS door (as Amiga-only BBSes did for Hack & Slash in 1994) by allowing a passed user numeric ID paired with a compatible Mystic door.sys file format launched from its BBS node startup directory.
For example, what follows might be for the BBS sysop (0):
#!/bin/sh
pwd; [ -s door.sys ] || exit 1
node /usr/local/games/dankdomain/main 0
Files directory structure
$ pwd
/usr/games/dankdomain
.vscode Visual Studio Code: settings & debug profiles
game
etc sysop support files
files game, menu & player support files: ANSI and/or text formats
arena ASCII art & menu files
casino menu files
dungeon ASCII art
items game artifacts
library deeds & menu files
main about system & menu files
naval ASCII art & menu files
party instruction & menu files
player ASCII art
square menu files
tavern all player events logged for the day
user each player’s events logged since last visit
pcs user object type templates for BOTs, NPCs, and PCs
play game modules for each main menu item
battle.js support module for player engagements
init.js support module for initial login
runtime.json game play runtime values
sysop.js support module for the system operator - main menu "@" command
portal
static UI html/css/js using bundle.js: client.js & xterm.js
assets app install, fonts, etc.
images visual media for artifacts, creatures, and players
sounds audio media for event notifications
app.js DDnet for optional web and/or telnet services to run DDplay remotely
users player runtime database & current game files
db.js net & play module for player runtime database & files
email.js support module for (optional) dispatching email notifications
interfaces.js TypeScript object types
items.js support module for loading item artifacts & coin
lib.js support module for common I/O functions
main.js DDplay client node
npc.js support classes for BOTs & NPCs with arena, dungeon, and naval denizens
pc.js support classes for PCs with Deeds
player.js support module for common PC functions
runtime.js global runtime variables to govern play
sys.js support module with discrete functions to dependencies
telnet.js telnet client using websocket and XT emulator handling
types.js TypeScript template literals
mame player - MAME VT240 terminal + socat startup script
node_modules Node.js support libraries
package.json Node.js manifest
NOTE: in users folder, edit a hidden (dot) export file and save as save.json whereas a running DDnet app.js portal service will automatically consume and apply it to the dankdomain.sql Players table.
🇺🇸 ©️1991 - 2021 Robert Hurst
Ɗaɳƙ Ɗoɱaiɳ image gallery
Node.js dependency tree
DDnet portal
app
chokidar,dns,express,fs,http,https,net,node-pty,wssys:fs,got,path,romanize,sprintf-js,title-caseitems: sysdb:better-sqlite3, items, sys- network service options
- telnet:
net-keepalive,telnet-socket - web:
url
- telnet:
client
animate.css,browserify,xterm,xterm-addon-fit,xterm-addon-unicode11
DDplay game
main
sys:fs,got,path,romanize,sprintf-js,title-caselib: items, runtime, sys,xvtitems: sysruntime: sys
init: db, items, lib, npc, pc, player, runtime, sysdb:better-sqlite3, items, syspc: db, items, lib, runtime, sysnpc: db, items, lib, pc, runtime, sysplayer: db, items, lib, npc, pc, runtime, sysemail: db, items, lib,nodemailer,nodemailer-smtp-transport, pc, runtime, sysnewuser: db, email, init, items, lib, pc, runtime, systaxman: db, items, lib, pc, player, runtime, sysbattle: db, items, lib, npc, pc, player, runtime, sysmenu: battle, db, items, lib, npc, pc, player, runtime, sysarena: battle, db, items, lib, npc, pc, player, runtime, syscasino: db, items, lib, npc, pc, player, runtime, sysdungeon: battle, db, items, lib, npc, pc, player, runtime, syslibrary: db, items, lib, npc, pc, runtime, sysnaval: battle, db, items, lib, npc, pc, player, runtime, sysparty: battle, db, items, lib, npc, pc, player, runtime, syssquare: battle, db, items, lib, npc, pc, player, runtime, syssysop: battle, db, dungeon, email, lib, pc, player, runtime, systavern: battle, db, items, lib, npc, pc, player, runtime, sys, taxman
