DoomToolbox
Table of Contents
1. About
DoomToolbox is a collection of add-ons for Doom-based game engines which support ZScript, like UZDoom and LZDoom.
The goal of DoomToolbox is to increase replayability of compatible games and mods, make gameplay more enjoyable, and to have fun both while playing and developing this project. The development is done under "Move slow and fix things" flag.
DoomToolbox is free and open source software. Add-ons are mostly licensed under
GPLv3. Modules are mostly licensed under BSD-3-Clause. See SPDX-License-Identifier
tag in each .org file for details. For third-party resources, such as image and sound
files, see REUSE.toml files in their directories for licenses.
HTML pages for DoomToolbox should be available here. The source code is available on GitHub and Codeberg. There is a Doomworld topic, and some add-ons and modules also have ZDoom forums threads. The latest development builds of add-ons and modules and can be found here.
This project doesn't have any "AI" generated code or resources, and doesn't use "AI" tools for development.
| Name | Description | Forum |
|---|---|---|
| Add-ons | ||
| 10.5x | enemy number multiplier | link |
| FinalCustomDoom | gameplay customization options | link |
| Gearbox | more convenient ways to select weapons and items | link |
| HitImpact | textured particles when level geometry is hit | link |
| Nomina | enemy names helper | link |
| PreciseCrosshair | makes a crosshair point to where you actually shoot | link |
| SoundToScreen | shows where sounds come from | link |
| TargetSpy | enemy health bar | link |
| Typist.pk3 | turns FPS games into typing exercises | link |
| WarmReception | alters enemy behavior on level start | link |
| Modules | ||
| Hint | hints for menu items | |
| LazyPoints | points scoring | |
| libeye | (originally by KeksDose) level and screen projections | |
| LispOnZscript | toy Lisp-like language on top of ZScript | link |
| MD5 | (originally by 3saster) MD5 implementation in ZScript | |
| PlainTranslator | enables translation for plain text menu items | |
| PreviousWeapon | provides a key to select a previous weapon | |
| StringUtils | string manipulation library | |
| VmAbortReporter | prints a report when VM abort happens | |
| Development | ||
| ClematisM | ZScript unit test framework | |
| DoomDoctor | mod development and debugging utilities |
Add-ons can be included and used in your own projects. However, this is not recommended, because when add-ons update, players won't be able to use new versions with your project until you update the included add-on inside your project.
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".
2. Gallery
10.5x:
FinalCustomDoom:
Gearbox (with Heretic on Kinsie's Gameplay Mod Test Map and with Treasure Tech):
HitImpact (with BTSX E1 MAP01):
SoundToScreen:
TargetSpy:
Typist.pk3:
3. 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)
4. Build
Build is supported on recent versions of GNU/Linux and Microsoft Windows.
To build:
- Install Python, version >= 3.13
- Install Emacs, version >= 30.1
- Install UZDoom, version >= 4.14.3
- Install development tools (probably from a venv):
pip install -r tools/requirements-dev.txt - In console in project directory, see what can be built with command:
scons --help - 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
sconsfor 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.
5. Development
Used languages:
- add-ons, modules: ZScript (main), Emacs Lisp (supporting macros)
- build: Python (main), Emacs Lisp (helper functions)
Python or Emacs Lisp knowledge is not 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: