Skip to content

Repository files navigation

DoomToolbox

About

DoomToolbox is a collection of add-ons for UZDoom and LZDoom and their derivatives.

Goals:

  • to increase replayability of compatible games and mods,
  • to customize the game to your liking,
  • to have fun both while playing and developing this project.

Development style: “Move slow and fix things”.

DoomToolbox is free and open source software. It’s licensed under GPLv3 and BSD-3-Clause. See SPDX-License-Identifier tag inside files or nearby REUSE.toml files for details.

This project doesn’t have any “AI” generated code or resources, and doesn’t use “AI” tools for development.

Acknowledgments

Projects

NameDescriptionForum
Add-ons
10.5xenemy number multiplierlink
Autoautosaveuniversal autosaverlink
BubbleEmbubbles instead of corpseslink
FinalCustomDoomgameplay customization optionslink
Gearboxmore convenient ways to select weapons and itemslink
Graveyardplaces gravestones where you dielink
HitImpacttextured particles when level geometry is hitlink
Nominaenemy names helperlink
PreciseCrosshairmakes a crosshair point to where you actually shootlink
SoundToScreenshows where sounds come fromlink
TargetSpyenemy health barlink
Typist.pk3turns FPS games into typing exerciseslink
WarmReceptionalters enemy behavior on level startlink
Modules
Fontsfonts finder with graceful fallback
LazyPointspoints scoring
libeye(originally by KeksDose) level and screen projections
LispOnZscripttoy Lisp-like language on top of ZScriptlink
MD5(originally by 3saster) MD5 implementation in ZScript
PreviousWeaponprovides a key to select a previous weapon
StringUtilsstring manipulation library
VmAbortReporterprints a report when VM abort happens
Development
ClematisM(originally by ZippeyKeys12) ZScript unit test framework
DoomDoctormod development and debugging utilities

Add-ons can be included and used in your own projects. This isn’t recommended: players can’t play your project with updated add-ons until your project updates it.

Modules are intended to be included as a part of other projects. Some DoomToolbox add-ons include them.

Some of DoomToolbox add-ons were the part of so called “m8f’s toolbox”.

Gallery

10.5x:

media/screenshots/10.5x.png

BubbleEm:

media/screenshots/BubbleEm.png

FinalCustomDoom:

media/screenshots/FinalCustomDoom.png

Gearbox (with Heretic on Kinsie’s Gameplay Mod Test Map and with Treasure Tech):

media/screenshots/Gearbox-blocks.png

media/screenshots/Gearbox-wheel.png

Graveyard:

media/screenshots/Graveyard.png

HitImpact (with BTSX E1 MAP01):

media/screenshots/HitImpact.gif

SoundToScreen:

media/screenshots/SoundToScreen.png

TargetSpy:

media/screenshots/TargetSpy.png

Typist.pk3:

media/screenshots/Typist.pk3.png

Help appreciated

  • playtesting: compatibility with games and mods, multiplayer
  • UX suggestions: visuals, wording, usability
  • code reviews: errors, style, readability
  • code contributions: optimizations, features (try to keep project scope)
  • translations

https://hosted.weblate.org/widget/doom-toolbox/open-graph.png

Build

Where are the project files?

Build is supported on recent versions of GNU/Linux and Microsoft Windows.

To build:

  1. Install Python, version >= 3.13
  2. Install Emacs, version >= 30.1
  3. Install UZDoom, version >= 4.14.3
  4. Install development tools (a venv recommended): pip install -r tools/requirements-dev.txt
  5. In console in project directory, see what can be built with command: scons --help
  6. Build what you need.

To build an add-on PK3, for example FinalCustomDoom, use this command: scons FinalCustomDoom.pk3. It will create FinalCustomDoom-NNNN.pk3 in directory build.

To build a module so you can use it in your project, for example, StringUtils, use this command: scons StringUtils. It will create directory StringUtils in directory build, which will contain StringUtils.zs, in which you can replace NAMESPACE_ with your unique namespace, and then include in your project.

All commands require that PATH environment variable has Emacs, tests also require UZDoom in PATH. All commands put their results in directory build, and may remove files and directories there.

⚠ !WARNING!

  • Scons scripts contain code. Only run scons for projects you trust.
  • Org files may contain code, extracting the source files may execute it. Only extract files from Org files from the sources you trust.

Tests use Miniwad: minimalist IWAD internally.

Development

Used languages:

  • add-ons, modules: ZScript (main), Emacs Lisp (supporting macros)
  • build: Python (main), Emacs Lisp (helper functions)

Python or Emacs Lisp knowledge isn’t needed to contribute to add-ons and modules.

prek must be installed in Git repository for pre-commit checks.

Optional: Org mode extension for your preferred text editor, if it’s not Emacs. Org mode files can be edited as plain text, but an extension should add convenience features such as syntax highlighting.

Documentation:

Releases

Used by

Contributors

Languages