/d2k

A Doom Source Port for the 20th Century

Primary LanguageCGNU General Public License v2.0GPL-2.0

D2K

D2K is a fork of PrBoom+ with several lofty goals.

Maintain Compatibility

D2K maintains the PrBoom+'s commitment to compatibility, using a compatibility testing framework to guard against regressions.

Enhance Network Play

D2K features enhanced client/server network play inspired by the Quake 3 networking model. Compared with the original, games no longer pause when one player lags and players can join in-progress games. We also plan to lift the 4 player limit, and to add modern multiplayer features like spectators and scripted game modes.

Add Extensibility via Scripting

D2K is scriptable with https://www.lua.org, a language used by dozens if not hundreds of other games including World of Warcraft and Garry's Mod.

Doom's behavior and assets are hardcoded, making it difficult to extend the engine with new capabilities. ACS, DECORATE, EDF and ExtraData attempt to solve this problem, but all leave much to be desired. D2K will move behavior and assets into Lua, allowing modders full control over the engine.

Web Play

While the specifics have yet to be decided upon, D2K will be accessible on the web. Current major contending implementations are:

  • web-based launcher executing a local, native executable
  • fully web-native client

Add Console and Customizable HUD Widgets

D2K features a console and a fully scriptable HUD, and can be scripted via the console.

Modernize Renderer

D2K will convert the renderer from the fixed-function pipeline to the programmable pipeline and require support for OpenGL 2.0. Deprecated features such as paletted textures will be removed and functionality dependent on them will be reimplemented.

Add Modern Features and Compatibility

Doom source ports are splintered. There is no single port that maintains compatibility with previous Doom/Boom releases while keeping up with the state-of-the-art in ports (much less the state-of-the-art in FPS gaming in general). D2K aims to be compatible with as many features from other source ports as possible, including:

  • ACS scripting
  • DECORATE
  • MAPINFO
  • EDF
  • ExtraData
  • 3D floors
  • 3D MidTex
  • Portals
  • Slopes
  • Polyobjects
  • Ambient sounds
  • Support for other ID Tech 1 engines (Heretic, Hexen, etc.)
  • Advanced binds
  • Cameras
  • UDMF
  • ZIP/PK3
  • Bots
  • ...and much more

What follows is the original README file included in the PrBoom+ distribution.


PrBoom+ 2.5.1.4

PrBoom is a version of the classic 3D shoot'em'up game Doom, originally written by id Software.

See the file AUTHORS in this distribution for a list of authors and other contributors, and a history of the projects PrBoom is derived from.

PrBoom is made available under the GNU General Public License. See the file COPYING included in this distribution for details.

Please see the NEWS file included for changes since the previous version.

Game data - WADs

(This section is aimed at people not familiar with Doom and the data files it uses.)

PrBoom is a game engine - it provides a program to play Doom levels, but it doesn't include any levels itself. More importantly, you need all the sounds, sprites, and other graphics that make up the Doom environment. So to play PrBoom, you need one of the main Doom date files from id Software - either doom.wad, doom2.wad, tnt.wad or plutonia.wad from one of the commercial Doom games, or the shareware doom1.wad. This file is called the IWAD.

PrBoom also supports playing Doom add-on levels, called "PWADs", which are small extra .wad files which just contain extra levels or other resources. PWADs are ONLY ADD-ONS, you still need the original IWAD that they are designed to work with. In practice, most PWADs on the Internet require doom2.wad (although some work with doom.wad).

If you don't own any of the Doom games, get the shareware doom1.wad from doom19s.zip on Doomworld's shareware download page. But note that you will not be able to play most add-ons.

Windows Installation

Just extract the zip to a directory of your choice and copy your IWAD files into it. Now you can make shortcuts and add -iwad filename.wad to them.

The SDL_mixer library used by PrBoom supports software MIDI music synthesis. If you want to hear the Doom music, you need a set of Timidity instrument patches. Do a web search for timidity patch sets, there are plenty around. These patch sets are a large download (>5megs). SDL_mixer does not currently support hardware MIDI synthesis. But we have added a hacked version of SDL_mixer with native MIDI support. If you like to try it out, rename SDL_mixer_beta.dll to SDL_mixer.dll. You should rename the original SDL_mixer.dll before. Tell us if it works or not. Please note, that there might be bugs in the native midi implementation.

Linux Installation

For UNIX, Linux, and other POSIX systems, you need the SDL libraries in order to use PrBoom. If you haven't already done so, visit http://prboom.sourceforge.net/linux.html and follow the instructions there for your system, downloading the necessary libraries, and either installing the binary RPM package or compiling PrBoom from source.

Once you've done that, you'll need to copy your IWAD file (see the section above if you don't know what this is) to a directory where PrBoom can find it. Make /usr/local/share/games/doom/, and copy your IWAD (all of your IWADs, if you own more than one) to that directory.

Mac OS Installation

Copy your IWAD (see above) into your home folder under Library:Application Support:PrBoom (this folder will be created for you the first time you run PrBoom).

First Use

If it's the first time you've run PrBoom, you'll need to do some configuring to get the controls and display right for you.

On a new installation, PrBoom runs at 640x480 resolution. If you have used PrBoom before, you may have an old config file in your home directory which specifies a lower resolution, such as Doom's normal 320x200. You can use the -width and -height parameters to select a higher resolution, e.g.:

prboom -width 640 -height 400

sets the resolution. This setting is remembered for future sessions. For other parameters, see the included README.command-line.

You may also wish to customise the key bindings. PrBoom's default keybindings are the same as the original Doom; unlike original Doom, you can change keybindings in the game. In the in-game menus, go to Options, Settings, Key Bindings.

On Mac OS X, you can't use the command line, but after running the program once, you can edit YOURHOME:Library:Application Support:PrBoom:prboom.cfg to change settings like your screen resolution.

Features

This is all the features PrBoom has compared to the original Doom game; it's intended to give you an idea of the enhancements, rather than burying you in details.

See http://prboom.sourceforge.net/about.html for an HTML version of this list.

This is shamelessly modelled on Boom's changes pages. By each change, there's the name of the port the feature comes from (so it's compatible with).

Playing the game

  • Supports loading dehacked files at the command line, or in WADs (BOOM, MBF)
  • Supports PWADs containing sprites and flats (BOOM)
  • Save games and demos completely store game parameters (BOOM, MBF)
  • Savegames store list of loaded WAD files, warning if wrong files loaded (BOOM, MBF)

Game engine

  • Player bobbing improved, optional (BOOM, MBF)
  • Friction effects (BOOM), affecting players and monsters (MBF)
  • Wind, current, conveyor effects (BOOM)
  • Far more flexible scrolling wall/floor types (BOOM)
  • Always run (BOOM)
  • Weapon change logic overhauled and improved (BOOM)
  • Support for friendly monsters, helper dogs (MBF)
  • Monster target finding code improved (MBF)
  • AI improvements (MBF)
  • Bouncy and touchy things (MBF)
  • New code pointers (MBF)
  • Per-level and animated skies (MBF)
  • Generalised line types system gives complete flexibility (BOOM)
  • Elevators (BOOM)
  • Translucent sprites, walls (BOOM)
  • Independent floor and ceiling lighting (BOOM)
  • Silent teleports (BOOM)
  • Deep water, true underwater areas (BOOM)
  • Icon of Sin telefragging made more consistent (MBF)
  • Fix large numbers of game bugs (BOOM, MBF, LxDoom)
  • Support arbitrary texture heights (BOOM)

Screen

  • High resolution support (PrBoom)
  • Optional message console, multiple message lines (BOOM)
  • Status bar shows health/armour/ammo in colours (BOOM)
  • Heads up display, showing ammo, health, keys overlayed on view (BOOM)

Multiplayer

  • Spy mode improved (BOOM)
  • Support for loadgame in a net game (LxDoom)
  • Client server style network games (LxDoom)

Automap

  • No limit on marks (BOOM)
  • Rotation and overlay modes (DOSDoom, LxDoom)
  • Map shows coordinates (BOOM), optionally follow pointer (MBF)
  • Teleport lines, key doors and switches marked specially (BOOM)
  • Keys, secrets visible on map with cheat codes (BOOM)
  • Colours fully configurable from menus (BOOM)

Intermission screens

  • Par times hidden when not relevant (BOOM)
  • Total episode time shown (LxDoom)

Menus

  • F1 help screen shows current key setup (BOOM)
  • Key bindings, monster behaviour, and compatibility settings all set in menus (BOOM, MBF)

Compatibility

  • Game is capable of behaving like any of: original Doom v1.9, Boom v2.02, MBF (BOOM, MBF, LxDoom)
  • Plays most original Doom v1.9 demos (more than Boom or MBF)
  • Plays most Boom v2.02 demos (apart from levels with friction effects everything should work).
  • Plays some DOSDoom, earlier Doom, earlier Boom, and LxDoom demos.
  • Plays all MBF demos.
  • Auto-correction of common bugs in old levels (MBF), with warnings (LxDoom)
  • Fine control of options controlling compatibility and new features (MBF)

Controls

  • Greater control of key bindings from in game menus (BOOM)
  • More accurate mouse sensitivity control (BOOM, LxDoom)

Misc

  • Screenshot code improved, supports BMPs (BOOM)
  • Support for ENDOOM and ENDBOOM (BOOM, LxDoom)
  • -timedemo and -fastdemo options (BOOM)
  • Real time frame rate, segs, visplanes, sprites display (LxDoom)
  • Various extra cheat codes (BOOM, LxDoom)

Internals

  • Greatly improved internal memory management (BOOM, LxDoom)
  • Startup time greatly shortened by lazy generation of some lookups (DOSDoom, LxDoom)
  • Removed internal limits (BOOM)

Other Tips

On Linux, SDL tries to detect an appropriate video device automatically. If you want to overrite the default, you can set the SDL_VIDEODRIVER enviromental variable. At a bash prompt, this is as easy as running:

SDL_VIDEODRIVER=fbcon prboom

or

SDL_VIDEODRIVER=svga prboom

Details

Details on these extra features are split into separate text files:

  • README.demos: provides a guide to PrBoom's demo support
  • README.compatibility: describes PrBoom's various compatibility options and modes
  • README.command-line: gives a command line reference for prboom, prboom-game-server, and the format of boom.cfg. On UNIX/Linux systems use the man pages instead.

Editing features are not covered in the docs with this package. We plan to bundle the editing docs as a separate download. Watch our website for news.