Nugget Doom is a fork of Woof!, simply intended to implement additional features.
Note: this README and the rest of documentation are updated on a per-commit basis, meaning that they may not correspond to the latest release of Nugget Doom. If you're seeking information on the version you're using, please refer to the documentation included with it.
Although the new code has been written with the intention of not breaking demo compatibility, it has not been properly tested yet. RECORD DEMOS AT YOUR OWN RISK!
Note that this feature list is relative to Woof!'s; read the latter for more details. Some features were first implemented in Nugget Doom and later in Woof!, and so they're not listed here anymore.
Most of Nugget Doom's features come from other sources, like source ports and mods; the initial implementations for some are ported from (p.f.) said sources, while others are just inspired by (i.b.) them. These acknowledgements are included in the feature lists below; be aware that some might be inaccurate or outright missing.
A few settings are labeled as CFG-only: they can only be toggled by editing nugget-doom.cfg
.
For these settings, their CVAR names are provided alongside the CFG-only label as guidance.
- Extended FOV range: [20, 140]
- Stretch viewport to fit window setting (CFG-only:
stretch_to_fit
) [i.b. and partially p.f. Crispy Doom; i.b. ZDoom] - Set Air Absorption and Doppler Effect to 5 by default
- FOV-based sky stretching setting (CFG-only:
fov_stretchsky
) - Tweaked Stretch Short Skies algorithm
- Black Fade screen wipe
- Extended Level Brightness range: [-8, 8]
- "Direct + Auto" mode for Vertical Aiming
- Direct Vertical Aiming for melee attacks
- Move Over/Under Things setting [partially p.f. Crispy Doom, DSDA-Doom]
- Jumping (default key: Alt) [p.f. Crispy Doom]
- Crouching/ducking (default key: C) [i.b. ZDoom]
- Includes support for crouching-player sprites, named
PLYC
; must be provided by the user
- Includes support for crouching-player sprites, named
- View Height setting, which allows to enter a custom POV height value in the [32, 56] range [i.b. Brutal Doom]
- Flinching setting, to flinch upon landing and/or taking damage
- Explosion Shake Effect setting (intensity determined by the CFG-only
explosion_shake_intensity_pct
CVAR) [i.b. Doom Retro] - Subtle Idle Bobbing/Breathing setting [p.f. International Doom]
- Teleporter Zoom setting [i.b. ZDoom]
- Death Camera setting [i.b. ZDoom]
- Freecam, which repurposes the following inputs:
- Cycle Chasecam to toggle control between the camera and the player
- Use to reset the camera to the player's POV
- Fire to lock onto and let go of a sentient thing's POV
- Previous/Next Weapon to adjust the camera's movement speed
- Rapid Strafe On double-press to center the camera vertically
- Chasecam [i.b. ZDoom]
- Slow Motion button
- Zoom button
- Background for all menus setting
- No palette tint in menus setting [i.b. Crispy Doom]
- HUD/Menu Shadows setting (translucency determined by the CFG-only
hud_menu_shadows_filter_pct
CVAR) [i.b. CRL] - Flip Levels setting
- No Berserk Tint setting
- No Radiation Suit Tint setting
- Night-Vision Visor Effect setting [i.b. International Doom]
- Damage Tint Cap and Bonus Tint Cap, to attenuate or disable said screen tinting
- Fake Contrast setting
- Toggle for Diminished Lighting (CFG-only:
diminished_lighting
) - Screen Wipe speed percentage setting
- Alternative Intermission Background setting, to replace the intermission graphic with a darkened rotating camera view
- Color settings [p.f. International Doom]
- Sound Clipping Distance selection, to optionally double the distance at which sound effects become audible
- One-Key Quick Save/Load setting, to skip the confirmation prompt
- Auto Save Interval setting, for periodic auto saves
- Rewinding [i.b. DSDA-Doom]
- Play Internal Demos setting
- Quick "Quit Game" setting, to skip the confirmation prompt [p.f. Crispy Doom]
- Toggle for Weapon Flash Lighting [p.f. Crispy Doom]
- Toggle for Weapon Flash Sprite [p.f. Crispy Doom]
- Toggle for Invulnerability Colormap [p.f. Crispy Doom]
- Extended View/Weapon Bob percentages
- No Horizontal Autoaim setting
- Switch [Weapon] on Pickup setting
- Allow [Weapon] Switch Interruption setting
- Prev/Next Skip Ammoless Weapons setting, to make the previous/next-weapon buttons skip weapons with insufficient ammo
- Horizontal Weapon Centering setting [i.b. DSDA-Doom]
- Always Bob setting (CFG-only:
always_bob
) - Bobbing Styles selection [p.f. Zandronum]
- Weapon Inertia setting (scale determined by the CFG-only
weapon_inertia_scale_pct
CVAR) [by ceski] - Weapon Squat Upon Landing setting [p.f. Crispy Doom]
- Translucent Flashes setting (translucency determined by the CFG-only
translucent_pspr_pct
CVAR) [i.b. Crispy Doom] - "Correct" first person sprite centering setting, to toggle the 1px first-person sprite misalignment (CFG-only:
sx_fix
)
- Nugget HUD, highly customizable through means of the
NUGHUD
lump (seedocs/nughud.md
) - Crosshair:
- Translucency;
- Vertical-only target lock-on;
- Horizontal-autoaim indicators;
- Option to account for fuzzy targets [i.b. From Doom With Love];
- Dedicated toggle button.
- Secret count in "secret revealed" message [p.f. Crispy Doom]
- Show Save Messages setting (CFG-only:
show_save_messages
) - Milestone-Completion Announcements setting, to report completion of milestones (e.g. all items acquired)
- Message Flash setting
- Message Lines setting (scrolling direction determined by the CFG-only
hud_msg_scrollup
CVAR) - (Chat) Message Duration settings
- Show Powerup Timers setting
- Blink Missing Keys setting [partially p.f. Crispy Doom]
- Berserk display when using Fist setting [partially p.f. Crispy Doom]
- Automap Level Stats Format setting
- Level-Stats Selection settings (CFG-only:
hud_stats_#[_map]
) - Event Timers:
- Teleport Timer [i.b. Crispy Doom];
- Key-Pickup Timer [same as above].
- Extended HUD color customization
- Armor count is colored gray when in God Mode
- Support for Berserk (
STBERSRK
) and Infinite Ammo (STINFNTY
) icons - Support for HUD icons:
- Level-stats widget:
HUDKILLS
,HUDITEMS
,HUDSCRTS
- Powerup-timers widget:
HUDINVIS
,HUDINVUL
,HUDLIGHT
,HUDSUIT
- Level-stats widget:
- Minimap mode [i.b. DSDA-Doom]
- Button to Highlight Points of Interest; marks and keyed lines (default: B)
- Tag Finder: Position the Automap pointer over a sector and press the Tag Finder button to highlight its activator line(s), and vice versa [p.f. PrBoomX]
- Button to Teleport to Automap pointer
- Show Thing Hitboxes setting
- Color for trigger lines, used with IDDT (CFG-only:
mapcolor_trig
)
- Extra Gibbing setting, to force Berserk Fist/Chainsaw/SSG gibbing (configurable through the CFG-only
extra_gibbing_#
CVARs) [i.b. Smooth Doom] - Bloodier Gibbing setting [i.b. Smooth Doom]
- Toss Items Upon Death setting [i.b. ZDoom, Doom Retro]
- Selective Fuzz Darkening setting [by ceski]
All of these are CFG-only, so their CVAR names are included.
- Bruiser attack (
A_BruisAttack()
) doesn't face target (comp_bruistarget
) - Disable melee snapping (
comp_nomeleesnap
) - Double autoaim range (
comp_longautoaim
) - Fix Lost Soul colliding with items (
comp_lscollision
) - Lost Soul forgets target upon impact (
comp_lsamnesia
) - Fuzzy things bleed fuzzy blood (
comp_fuzzyblood
) [i.b. Crispy Doom] - Non-bleeders don't bleed when crushed (
comp_nonbleeders
) [i.b. Crispy Doom] - Attackers face fuzzy targets straight (
comp_faceshadow
) - Fix lopsided Icon of Sin explosions (
comp_iosdeath
) - Permanent IDCHOPPERS invulnerability (
comp_choppers
) - Blazing doors reopen with wrong sound (
comp_blazing2
) [p.f. Crispy Doom] - Manually toggled moving doors are silent (
comp_manualdoor
) [p.f. Crispy Doom] - Corrected switch sound source (
comp_switchsource
) [p.f. Crispy Doom] - Chaingun makes two sounds with one bullet (
comp_cgundblsnd
) - Chaingunner uses pistol/chaingun sound (
comp_cgunnersfx
) - Arch-Vile fire plays flame start sound (
comp_flamst
) [p.f. Crispy Doom] - Play
DSNOWAY
instead ofDSOOF
when failing to use key-locked triggers (comp_keynoway
) - Higher god-mode face priority (
comp_godface
) [p.f. International Doom] - Dead players can still play "oof" sound (
comp_deadoof
) [p.f. Crispy Doom] - Use improved powerup run-out effect (
comp_powerrunout
) - Use unused pain/bonus palettes (
comp_unusedpals
) - Key pickup resets palette (
comp_keypal
)
- 'FULLCLIP' for infinite ammo
- 'VALIANT' for fast weapons [i.b. ZDoom]
- 'BOBBERS' serves as a shortcut to toggle the two cheats mentioned above, plus IDFA
- 'GIBBERS' to force gibbing on dying enemies, independently of damage dealt
- 'IDFLY' to fly (uses jumping/crouching buttons) [i.b. PrBoom+, ZDoom]
- 'SUMMON' to spawn an actor based on its type index [i.b. ZDoom, PrBoomX]
- 'IDDF' to find a key on the Automap
- 'RESURRECT' / 'IDRES' to resurrect the player without toggling IDDQD [i.b. ZDoom]
- 'LINETARGET' to give some info on the player's linetarget [i.b. ZDoom]
- 'TRAILS' to show hitscan trails
- 'MDK' to perform a hitscan attack of 1-million damage [i.b. ZDoom]
- 'SAITAMA' to enable the MDK Fist
- 'BOOMCAN' for explosive hitscan attacks
- 'NEXTMAP' to exit the level [i.b. ZDoom]
- 'NEXTSECRET' to exit the level as if using a secret exit [i.b. ZDoom]
- 'TURBO' to change the player speed in-game
- 'TNTEM' as an alternative to 'KILLEM'
- 'FPS' as a replacement for 'SHOWFPS'
- Mid-air control while in noclipping mode [p.f. Crispy Doom]
- Key-binding for Computer Area Map cheat
- Reenabled 'NOMOMENTUM' cheat [p.f. Crispy Doom]
For more details, see the New Nugget Doom cheats section of docs/cheats.md
.
- Customizable skill level, supporting all vanilla settings and a new one for duplicate monster spawns
- SDL render driver setting (CFG-only:
sdl_renderdriver
) [p.f. Woof! 14.0.0] - Setting of savegame and screenshot paths in config file (CFG-only:
savegame_dir
andscreenshot_dir
) - Keep palette changes in screenshots setting (CFG-only:
screenshot_palette
) - Allowed mouselook while dead
- Interactive character cast (Turn buttons to rotate enemy, Run button to gib, Strafe buttons to skip) [p.f. Crispy Doom]
- Support for optional sounds: [partially p.f. Crispy Doom]
- Jumping:
DSPLJUMP
; - Landing:
DSPLLAND
; - Key-locked door:
DSLOCKED
; - Key pickup:
DSKEYUP
; - Key blinking on HUD:
DSKEYBNK
; - Menus:
DSMNUOPN
,DSMNUCLS
,DSMNUACT
,DSMNUBAK
,DSMNUMOV
,DSMNUSLI
,DSMNUERR
; - Intermission:
DSINTTIC
,DSINTTOT
,DSINTNEX
,DSINTNET
,DSINTDMS
; - Health-based player pain sounds:
DSPPAI25
,DSPPAI50
,DSPPAI75
,DSPPA100
[i.b. ZDoom].
- Jumping:
- Customizable darkening level for dark menu background and Automap overlay (CFG-only:
menu_background_darkening
andautomap_overlay_darkening
) [i.b. Cherry Doom] - The Chaingun can be given a custom sound effect by providing a
DSCHGUN
sound effect lump - Toggle to disable the Killough-face easter egg (CFG-only:
no_killough_face
) - Toggle to allow chat in singleplayer (CFG-only:
sp_chat
) - Made
force_flip_pan
affect the OpenAL 3D sound module [by ceski] - Restored menu items for various Woof settings
- Restored
-cdrom
command-line parameter - Decreased minimum window size to 200p (240p with aspect-ratio correction)
Source code and Windows binaries (MSVC builds for Windows 7 and newer) for the latest release can be found on the Release page.
The most recent list of changes can be found in the Changelog.
A complete history of changes and releases can be found on the Releases page.
Nugget Doom follows a fairly simple (albeit arbitrary) X.Y.Z versioning system:
- X is increased in the event of major implementations, as were arbitrary/dynamic resolution and voxel support;
- Y is increased in the event of minor implementations, such as a new cheat;
- Z is increased in the event of bug fixes or text/code reformatting.
Incrementing any of the first values will reset the latter (i.e. a major change to 1.1.2 would shift it to 2.0.0).
The merging of changes from Woof! releases may affect any of the version values, but not necessarily in the same way as Woof!'s own version (i.e. Woof! 11.Y.Z -> 12.Y.Z
doesn't necessarily mean Nugget 2.Y.Z -> 3.Y.Z
).
As a Woof! fork, its build instructions should also apply here:
The Nugget Doom source code is available at GitHub: https://github.com/MrAlaux/Nugget-Doom.
The following build system and libraries need to be installed:
- CMake (>= 3.9)
- SDL2 (>= 2.0.18)
- SDL2_net
- openal-soft (>= 1.22.0 for PC Speaker emulation)
- libsndfile (>= 1.1.0 for MPEG support)
- libebur128 (>= 1.2.0)
- yyjson (>= 0.10.0, optional)
- fluidsynth (>= 2.2.0, optional)
- libxmp (optional)
Usually your distribution should have the corresponding packages in its repositories, and if your distribution has "dev" versions of those libraries, those are the ones you'll need.
Once installed, compilation should be as simple as:
cd nugget-doom
mkdir build; cd build
cmake ..
make
After successful compilation the resulting binary can be found in the src/
directory.
Visual Studio 2019 and VSCode comes with built-in support for CMake by opening the source tree as a folder.
Install vcpkg https://github.com/Microsoft/vcpkg#quick-start-windows. Integrate it into CMake or use toolchain file:
cd nugget-doom
cmake -B build -DCMAKE_TOOLCHAIN_FILE="[path to vcpkg]/scripts/buildsystems/vcpkg.cmake"
cmake --build build
CMake will automatically download and build all dependencies for you.
The homepage for Nugget Doom is https://github.com/MrAlaux/Nugget-Doom.
Please report any bugs, glitches or crashes that you encounter to the GitHub Issue Tracker.
Help was provided by:
- atsb (a.k.a. Gibbon);
- Brad Harding;
- ceski;
- Fabian Greffrath;
- melak47;
- Roman Fomin (a.k.a. rfomin);
- Ryan Krafnick (a.k.a. kraflab).
Thanks to all of you!
Files: *
Copyright:
© 1993-1996 Id Software, Inc.;
© 1993-2008 Raven Software;
© 1999 by id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman;
© 1999-2004 by Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze;
© 2004 James Haley;
© 2005-2006 by Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko;
© 2005-2018 Simon Howard;
© 2006 Ben Ryves;
© 2007-2011 Moritz "Ripper" Kroll;
© 2008-2019 Simon Judd;
© 2017 Christoph Oelckers;
© 2019 Fernando Carmona Varo;
© 2020 Alex Mayfield;
© 2020 JadingTsunami;
© 2020-2024 Fabian Greffrath;
© 2020-2024 Roman Fomin;
© 2021-2022 Ryan Krafnick;
© 2021-2024 Alaux;
© 2022 Julia Nechaevskaya;
© 2022-2024 ceski;
© 2023 Andrew Apted;
© 2023 liPillON.
License: GPL-2.0+
Files: src/i_flickstick.*, src/i_gyro.*
Copyright:
© 2018-2021 Julian "Jibb" Smart;
© 2021-2024 Nicolas Lessard;
© 2024 ceski.
License: MIT
Files: src/nano_bsp.*
Copyright: © 2023 Andrew Apted.
License: MIT
Files: src/u_scanner.*
Copyright:
© 2010 Braden "Blzut3" Obrzut;
© 2019 Fernando Carmona Varo.
License: BSD-3-Clause
Files: src/v_flextran.*
Copyright:
© 2013 James Haley et al.;
© 1998-2012 Marisa Heit.
License: GPL-3.0+
Files: src/v_video.*
Copyright:
© 1999 by id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman;
© 2013 James Haley et al.
License: GPL-3.0+
Files: base/all-all/sprites/pls*
Copyright: © 2001-2019 Contributors to the Freedoom project.
License: BSD-3-Clause
Files: base/all-all/sprites/ngcha0.png, base/all-all/sprites/ngcla0.png, base/all-all/sprites/ngtr*0.png
Copyright: © 2023-2024 Korp.
License: CC BY-SA 4.0
Files: base/all-all/dsdg*, base/all-all/sprites/dog*
Copyright:
© 2017 Nash Muhandes;
© apolloaiello;
© TobiasKosmos.
License: CC-BY-3.0 and CC0-1.0
Files: base/all-all/sm*.png
Copyright: © 2024 Julia Nechaevskaya.
License: CC-BY-3.0
Files: base/all-all/sbardef.lmp
Copyright:
© 2024 Ethan Watson.
License: CC0-1.0
Files: base/all-all/dmxopl.op2
Copyright:
© 2017 Shannon Freeman.
License: MIT
Files: cmake/FindSDL2.cmake, cmake/FindSDL2_net.cmake
Copyright: © 2018 Alex Mayfield.
License: BSD-3-Clause
Files: data/nugget-doom.ico, data/nugget-doom.png, src/icon.c, data/setup.ico, data/nugget-doom-setup.png, setup/setup_icon.c
Copyright: © 2022 Korp.
License: CC BY-SA 4.0
Files: opl/*
Copyright:
© 2005-2014 Simon Howard;
© 2013-2018 Alexey Khokholov (Nuke.YKT).
License: GPL-2.0+
Files: soundfonts/TimGM6mb.sf2
Copyright:
© 2004 Tim Brechbill;
© 2010 David Bolton.
License: GPL-2.0
Files: textscreen/*
Copyright:
© 1993-1996 Id Software, Inc.;
© 2002-2004 The DOSBox Team;
© 2005-2017 Simon Howard.
License: GPL-2.0+
Files: third-party/md5/*
License: public-domain
Files: third-party/miniz/*
Copyright:
© 2010-2014 Rich Geldreich and Tenacious Software LLC;
© 2013-2014 RAD Game Tools and Valve Software.
License: MIT
Files: third-party/pffft/*
Copyright:
© 2004 The University Corporation for Atmospheric Research ("UCAR");
© 2013 Julien Pommier.
License: FFTPACK License
Files: third-party/sha1/*
Copyright:
© 1998-2001 Free Software Foundation, Inc.;
© 2005-2014 Simon Howard.
License: GPL-2.0
Files: third-party/spng/*
Copyright: © 2018-2023 Randy.
License: BSD-2-Clause
Files: third-party/yyjson/*
Copyright © 2020 YaoYuan.
License: MIT
Files: win32/win_opendir.*
Copyright: © 2019 win32ports.
License: MIT