Skip to content

Trac-Systems/trac-doom

Repository files navigation

Trac Doom™

doom

A peer-to-peer Doom netplay app with smart-contract backed stats (kills, rankings, achievements).

Play classic Doom™ with friends online without setting up port-forwarding. Deathmatch, Co-op supported.

Trac Doom™ ships with Freedoom 1 + 2 and allows to use your own custom WADs (maps) that are compatible with Doom1 and Doom2.

Trac Doom™ is a pure gaming experience. No financial transactions are involved.

Controls

WASD + Mouse (or arrow keys + spacebar for shoot)

1,2,3... for weapon switching.

"F" key for fullscreen. "ESC" to minimize.

"E" to respawn or using objects (opening doors, etc).

Downloads

Windows: download & install TracDoom-Windows.msix

Mac: download, unzip and run TracDoom-Apple-Silicon.zip

Linux: download, unzip and run TracDoom-Linux-AppImage.zip (requires FUSE, tested on Ubuntu 24)

If installation doesn't work for you, you can still install manually below.

Manual Installation (Terminal / CMD / Powershell)

Node.js 22+ required:

Windows:

  • Option 1 (installer): Download and run the Node.js 22+ installer from https://nodejs.org/
  • Option 2 (winget):
winget install OpenJS.NodeJS

macOS:

  • Option 1 (Homebrew):
brew install node

Linux:

  • Option 1 (NodeSource, Debian/Ubuntu):
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
  • Option 2 (nvm, any distro):
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
source "$NVM_DIR/nvm.sh"
nvm install 22
nvm use 22

Verify Node (must be 22+):

node -v
npm -v

Pear (v2+ required):

npm install -g pear

Check Pear version:

pear -v

IMPORTANT: If the Pear version is below 2.x, upgrade Pear:

pear sidecar --key pzcjqmpoo6szkoc4bpkw65ib9ctnrq7b6mneeinbhbheihaq6p6o

This can take a while, let it finish and check the version again:

pear -v

Must return something like SemVer=2.2.6

Run

Windows / macOS / Linux:

pear run pear://6y6ipdm9wanepy7tcii8hu1cixwbzchskwtc9pg1czjayr7f564y gamedata

"gamedata" will be the folder containing your identity. Please keep it at all times to preserve your achievements!

Install & Run (from source)

Windows / macOS / Linux:

git clone https://github.com/Trac-Systems/trac-doom
cd trac-doom
npm install
pear run . gamedata

Notes:

  • gamedata is the storage folder. Use a different folder per local peer.
  • -d opens devtools. You can omit it for normal play.

In‑Lobby & In‑Game Options

Lobby:

  • Nickname: Your public display name in chat and rankings.
  • Players: Connected peers (nicknames are pulled from the contract).
  • Chat: Single‑line text chat shared on the contract channel.
  • Match list: Open matches; click Join to request a slot.
  • Host game: Creates a match with the selected settings.
  • Mode: Coop / Deathmatch / Altdeath.
  • Max players: 1–4 (Doom netplay limit).
  • Map + Skill: Map selection and difficulty.
  • No monsters: Removes monsters (useful for competitive modes).
  • MAP Settings: IWAD/PWAD selection and hashes (see below).

In‑game:

  • End match (host): Stops the match for everyone.
  • Leave match (joiner): Leaves before the match starts.

WADs & PWADs

Terminology:

  • IWAD: Base game content (e.g., Doom or Freedoom).
  • PWAD: Add‑on content (maps, weapons, total conversions).

Defaults:

  • Bundled IWADs: doom1.wad (Freedom1) and doom2.wad (Freedom2).
  • You can always host with bundled IWADs.

Custom WADs:

  • Open MAP Settings and set a WAD folder.
  • The app scans for .wad files and lists IWADs and PWADs separately.
  • Joiners must have matching file hashes for the selected IWAD/PWADs or the UI blocks the join.

Parameters

Common env vars:

  • TRAC_RPC_PORT (default 7767) – UI RPC port.
  • TRAC_DNET_PORT (default 7788) – Doom WS bridge port.
  • TRAC_PLAYERS (default 2) – Max players (1–4).
  • TRAC_SKILL (default 3) – Doom skill (1–5).
  • TRAC_WAD_DIR – Folder to scan for WAD/PWADs.
  • TRAC_IWAD – Default IWAD filename in the folder.
  • TRAC_PWADS – Comma‑separated PWAD filenames.
  • TRAC_SOUND (1/0) – Sound effects on/off (default on).
  • TRAC_MUSIC (1/0) – Music on/off (default off).

Use env vars the same way for both:

  • the packaged Pear URI (pear run ... pear://...)
  • the local repo (pear run ... .)

macOS / Linux (packaged):

TRAC_RPC_PORT=7769 TRAC_DNET_PORT=7789 TRAC_PLAYERS=2 pear run pear://6y6ipdm9wanepy7tcii8hu1cixwbzchskwtc9pg1czjayr7f564y store_host

macOS / Linux (local repo):

TRAC_RPC_PORT=7769 TRAC_DNET_PORT=7789 TRAC_PLAYERS=2 pear run . store_host

Windows (PowerShell, packaged):

$env:TRAC_RPC_PORT=7769
$env:TRAC_DNET_PORT=7789
$env:TRAC_PLAYERS=2
pear run pear://6y6ipdm9wanepy7tcii8hu1cixwbzchskwtc9pg1czjayr7f564y store_host

Windows (PowerShell, local repo):

$env:TRAC_RPC_PORT=7769
$env:TRAC_DNET_PORT=7789
$env:TRAC_PLAYERS=2
pear run . store_host

Windows (cmd, packaged):

set TRAC_RPC_PORT=7769&& set TRAC_DNET_PORT=7789&& set TRAC_PLAYERS=2&& pear run pear://6y6ipdm9wanepy7tcii8hu1cixwbzchskwtc9pg1czjayr7f564y store_host

Windows (cmd, local repo):

set TRAC_RPC_PORT=7769&& set TRAC_DNET_PORT=7789&& set TRAC_PLAYERS=2&& pear run . store_host

Third‑Party Licenses

  • Doom WASM (third_party/doom-wasm) is licensed under GPLv2. See third_party/doom-wasm/COPYING.md.
  • Freedoom IWADs (Freedom1/doom1.wad, Freedom2/doom2.wad) are from the Freedoom project and licensed under the BSD 3‑Clause. See https://freedoom.github.io/.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors