1
0
Fork 0
mirror of https://github.com/jonof/jfduke3d.git synced 2025-12-03 16:23:59 -05:00
No description
Find a file
2025-10-26 20:14:55 +10:00
.github/workflows ci: add xaudio2 dependency for msvc 2025-09-23 18:42:16 +10:00
installer housekeeping, move source directory 2013-04-28 00:46:01 +10:00
jfaudiolib@a5f899b5e9 update jfaudiolib, jfbuild 2025-09-22 18:03:58 +10:00
jfbuild@2a8cfbb54a update jfaudiolib, jfbuild 2025-09-22 18:03:58 +10:00
jfmact@1f0746a3b9 further adaptation for jfbuild housekeeping 2023-01-07 23:08:12 +10:00
rsrc update jfbuild and jfaudiolib 2025-09-14 14:03:54 +10:00
src fix key mapping menu fault caused by keyfifo now including key-ups 2025-10-26 20:14:55 +10:00
tools macos: packaging 2024-03-03 15:03:56 +10:00
xcode update jfbuild 2025-03-08 12:36:20 +10:00
.gitignore update jfaudiolib, jfbuild 2025-09-22 18:03:58 +10:00
.gitmodules bring the subprojects in 2013-04-28 00:46:00 +10:00
ChangeLog config.c: Added default remote ridicule strings. 2005-02-16 00:39:03 +00:00
GPL.TXT better branding and version labelling 2018-04-02 12:13:40 +10:00
Makefile further adaptation for jfbuild housekeeping 2023-01-07 23:08:12 +10:00
Makefile.deps further adaptation for jfbuild housekeeping 2023-01-07 23:08:12 +10:00
Makefile.msvc update jfaudiolib, jfbuild 2025-09-22 18:03:58 +10:00
makemsc.bat Initial import 2004-09-15 04:49:35 +00:00
README.md update readme 2025-09-15 17:43:11 +10:00
releasenotes.html check for ogg music alternatives in a music subdirectory 2025-08-20 19:38:21 +10:00

JonoF's Duke Nukem 3D Port

by Jonathon Fowler, with contributions by Ken Silverman and others

This is the source code for my port of 3D Realms' Duke Nukem 3D using my port of Ken Silverman's Build game engine.

Minimum system requirements

  • 32 or 64-bit CPU. These have been tried first-hand:
    • Intel x86, x86_64
    • PowerPC 32-bit (big-endian)
    • ARM 32-bit hard-float, 64-bit
  • A modern operating system:
    • Linux, BSD, possibly other systems supported by SDL 2.0.
    • macOS 10.15+
    • Windows Vista, 7, 8/10+
  • Optional: 3D acceleration with OpenGL 2.0 or OpenGL ES 2.0 capable hardware.

You will require game data from an original release of Duke Nukem 3D. Refer to the documentation on my website on what releases are suitable and where to locate their game files.

Compilation

Before you begin, clone this repository or unpack the source archive. If you cloned using Git, be sure to initialise the submodules of this repository (i.e. git submodule update --init).

Now, based on your chosen OS and compiler:

Linux and BSD

  1. Install the compiler toolchain and SDL2 development packages, e.g.
    • Debian 9: sudo apt-get install build-essential libsdl2-dev
    • FreeBSD 11: sudo pkg install gmake sdl2 pkgconf
  2. Install optional sound support development packages.
    • Debian 9: sudo apt-get install libvorbis-dev libfluidsynth-dev
    • FreeBSD 11: sudo pkg install libvorbis fluidsynth
  3. Install GTK+ 3 development packages if you want launch windows and editor file choosers, e.g.
    • Debian 9: sudo apt-get install libgtk-3-dev
    • FreeBSD 11: sudo pkg install gtk3
  4. Open a terminal, change into the source code directory, and compile the game with: make or gmake (BSD)
  5. Assuming that was successful, run the game with: ./duke3d

macOS

  1. Install Xcode from the Mac App Store.
  2. Open duke3d.xcodeproj from within the JFDuke3D source code's xcode folder.
  3. Select the 'JFDuke3D' target and then from the Product menu choose Run.

The jfbuild submodule will automatically download the SDL2 framework upon first build.

Windows using Microsoft Visual C++ 2015 (or newer) and NMAKE

  1. If needed, install Visual Studio Community 2017 for free from Microsoft. Terms and conditions apply. Install at minimum these components:
    • VC++ 2015.3 v140 toolset for desktop (x86,x64)
    • Windows Universal CRT SDK
    • Windows 8.1 SDK
  2. Open the command-line build prompt. e.g. VS2015 x64 Native Tools Command Prompt or VS2015 x86 Native Tools Command Prompt.
  3. Change into the JFDuke3D source code folder, then compile the game with: nmake /f Makefile.msvc
  4. Assuming success, run the game with: duke3d

Compilation options

Some engine features may be enabled or disabled at compile time. These can be passed to the MAKE tool, or written to a Makefile.user (Makefile.msvcuser for MSVC) file in the source directory.

These options are available:

  • RELEASE=1 build with optimisations for release.
  • RELEASE=0 build for debugging.
  • USE_POLYMOST=1 enable the true 3D renderer.
  • USE_POLYMOST=0 disable the true 3D renderer.
  • USE_OPENGL=1 enable use of OpenGL 2.x acceleration.
  • USE_OPENGL=3 enable use of OpenGL 3.x acceleration.
  • USE_OPENGL=USE_GL2 enable use of OpenGL 2.x acceleration. (Not a valid setting for MSVC.)
  • USE_OPENGL=USE_GL3 enable use of OpenGL 3.x acceleration. (Not a valid setting for MSVC.)
  • USE_OPENGL=USE_GLES2 enable use of OpenGL ES 2.0 acceleration. (Not a valid setting for MSVC.)
  • USE_OPENGL=0 disable use of OpenGL acceleration.
  • WITHOUT_GTK=1 disable use of GTK+ to provide launch windows and load/save file choosers.

Warnings

  1. You should exercise caution if you choose to use multiplayer features over untrustworthy networks with untrustworthy players.
  2. 3D Realms and Apogee do not support this port. Contact me instead.

Enjoy!

Jonathon Fowler