Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

10,774 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DarkPlaces Engine

DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.

Developed by LadyHavoc. See CREDITS for a list of contributors.

Help/support

#darkplaces:matrix.org

Discord*

https://discord.com/invite/ZHT9QeW

IRC

#darkplaces on irc.anynet.org

(* Not currently bridged to IRC or Matrix)

NOTE: DarkPlaces does not have a special relationship with Xonotic.

The Xonotic GitLab mirror is not officially maintained by the DarkPlaces team.

Please use the official GitHub for reporting issues and submitting pull requests to DarkPlaces.

Any references to their resources are strictly for user convenience as we may not yet provide official counterparts, such as our own Windows binaries.

Downloading and running

Linux x86_64 builds are available in GitHub CI artifacts.

More complete builds are available in xonotic.org engine zips.
These support Windows, Linux and macOS, and include the current libraries needed for all features.

DarkPlaces supports many Quake-based games and you can select which it will run by renaming the executable so it's prefixed with the game's name, for example rogue-sdl.exe, or by passing a cmdline argument
such as -rogue. This changes various engine behaviours and cvar defaults to suit the game.
The supported list and related details are defined in com_game.c.

Mods which aren't listed there can be run with (for example) -game quake15 in which case DP will use the same behaviours and cvar defaults as for id1 Quake.

Quake Virtual File System

All of Quake's data access is through a hierarchical file system, the contents of the file system can be transparently merged from several sources.

The "base directory" is the path to the directory holding the quake.exe and all game directories. This can be overridden with the "-basedir" command line parm to allow code debugging in a different directory. The base directory is only used during filesystem initialization.

The "game directory" is the first tree on the search path and directory that all generated files (savegames, screenshots, demos, config files) will be saved to. This can be overridden with the "-game" command line parameter. If multiple "-game " args are passed the last one is the "primary" and files will be saved there, the rest are read-only.

Build instructions (WIP)

These instructions are adequate for Quake, but for Xonotic please refer to its wiki.

Required packages

The minimum SDL version is 2.0.18 for Linux and 2.24.0 for Windows.
The supported compilers are GCC and Clang.
The following package names are for Debian, see below for Windows and Mac.

Client

Build (mandatory): build-essentiallibjpeg-devlibsdl2-dev
Runtime (optional): libcurllibpnglibfreetype6libvorbisfile

Dedicated Server

Build (mandatory): build-essentiallibjpeg-devzlib1g-dev
Runtime (optional): libcurllibpng

Windows (MSYS2 MinGW):

  1. Install MSYS2, found here.
  2. Once you've installed MSYS2 and have fully updated it, open a MinGW64 terminal (not an MSYS2 terminal) and input the following command:
pacman -S --needed gcc make mingw-w64-x86_64-{toolchain,libjpeg-turbo,libpng,libogg,libvorbis,SDL2}
  1. See Unix instructions.

macOS

  1. Open a terminal and input xcode-select --install
  2. Install Homebrew
  3. In the same (or a different terminal), input the following command:
brew install sdl2 libjpeg-turbo libpng libvorbis curl
  1. See Unix instructions.

Unix (General)

From a terminal, in the engine's root directory, input make help to list the targets.
To build the main executable, input make sdl-release which creates the file called
darkplaces-sdl or darkplaces-sdl.exe (Windows).

If you get errors (that don't seem to be about missing dependencies) try make clean before compiling, especially if you updated your system since the last time you compiled.

Windows (Visual Studio 2019)

Not recommended due to poor support for C standards, and lack of maintenance.

DarkPlaces requires C11, so Windows SDK 10.0.20348.0 or later is needed.
To install it, run the Visual Studio Installer, click "Modify", click "Individual components", type "Windows SDK" in the search box, select the latest Windows SDK and de-select older versions.
You will also need "NuGet package manager" selected (to download SDL2 headers the first time you build). Click "Modify" to apply the changes.

Open darkplaces-vs2019.sln, select build type (Debug or Release) and platform (Win32 or x64), and choose "Build Solution" from the "Build" menu to create files darkplaces-sdl2-vs2019.exe and SDL2.dll.

The Release build crashes. The Debug x64 build doesn't crash (but is rather slow) so this will be Fun for someone to debug.

To get a build suitable for playing you'll need to use MinGW GCC, or download the autobuild from Xonotic (see above).

Web-Assembly (Emscripten)

Note that this requires a linux device or WSL2.

  1. Install the Emscripten SDK
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-release
  3. Copy darkplaces-wasm.js, wasm/index.html, and wasm/autoexec.cfg files to your web server
  4. Copy the Quake pak0.pak and any other files into the same web server directory

For the standalone version (single HTML file containing engine and data):

  1. Before compiling, copy game data and .cfg files to the appropriate gamedir in wasm/preload (for example, pak0 from Quake would be in wasm/preload/id1/pak0.pak)
  2. After activating and sourcing emsdk, compile DarkPlaces for wasm using;
    make emscripten-standalone
  3. To start DP you must click somewhere in the window!
  4. If you want to upload files into the game filesystem, use em_upload in the darkplaces console (upload to /save if you want it to save across restarts)
  5. To save the stuff you uploaded to /save, use em_save (note that if you embedded the game, you won't be able to save changes to /save/games)

Contributing

DarkPlaces Contributing Guidelines

Documentation

Doxygen: https://xonotic.org/doxygen/darkplaces

About

The DarkPlaces Quake engine, created by LadyHavoc. Official Git repository (replaces SVN).

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages