Skip to content

MrAlaux/Nugget-Doom

 
 

Repository files navigation

Nugget Doom

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.

DISCLAIMER

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!

Features

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.

General

  • 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
  • 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]

Weapons

  • 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)

Status Bar/HUD

  • NUGHUD, an alternative lump for HUD customization (see docs/nughud.md)
  • SBARDEF:
    • Optional vertical layout for Stats and Coordinates widgets
    • Chat hack to move it vertically based on the height of the message list
  • 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 Fadeout setting
  • Message Flash setting
  • Message Lines setting (scrolling direction determined by the CFG-only hud_msg_scrollup CVAR)
  • Group Repeated Messages setting [i.b. Doom Retro]
  • (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

Automap

  • 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)

Enemies

  • Extra Gibbing setting, to force gibbing under certain conditions (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]

Doom Compatibility settings

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 of DSOOF 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)

Cheats

  • '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.

Miscellaneous

  • 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 and screenshot_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].
  • Customizable darkening level for dark menu background and Automap overlay (CFG-only: menu_background_darkening and automap_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)

Releases

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.

Versioning

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).

Compiling

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.

Linux, and Windows with MSYS2

The following build system and libraries need to be installed:

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.

Windows with Visual Studio

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.

Contact

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.

Acknowledgement

Help was provided by:

Thanks to all of you!

Legalese

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;
© 2024 pvictress.
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*, man/simplecpp
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: data/io.github.MrAlaux.Nugget-Doom.metainfo.*
Copyright:
© 2023-2024 Fabian Greffrath.
License: CC0-1.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