# D2K

D2K is a fork of [PrBoom+](http://prboom-plus.sourceforge.net) 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](Lua), 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](http://www.doomworld.com/files/shareware.shtml).  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.

<!-- vi: set et ts=4 sw=4 tw=79: -->

