The Doomsday Engine FAQ
The FAQ for Doomsday, jDoom, jHeretic & jHexen.
http://www.doomsdayhq.com/
http://deng.sourceforge.net/
Version 1.03
24th November 2003
1.4 What are jDoom, jHeretic and jHexen?
1.8 Where can I get Doomsday (and game.dlls)?
1.9 What are Doomsday 'Snapshots'?
1.10 Where can I get a reference for Doomsday’s extended features?
1.11 Where can I get a Doomsday Map extensions reference?
1.12 Where can I get further help, downloads and discuss Doomsday?
1.13 What are the NewDoom Community Forums?
1.13.1 Further information about NewDoom
1.14 Can I help with Doomsday?
2.2 How can I play without KickStart?
2.3 What is the -allowsoftware option?
2.4 Why does it take several minutes for the models to load?
3.1 What Game Modes are available
3.2 Do the old cheat codes still work?
3.3 Why does pressing/clicking Forward twice open doors?
3.5.1 How can I get a list of how many enemies killed, secrets found and items collected?
4.1 Introduction to Network Gaming
4.1.1 How do I play over the Internet?
4.1.2 Which (TCP/IP) ports are used?
4.1.3 Which Computer should be the server?
4.2 Network Gaming - Using the GUI
4.3 Network Gaming - Using the console
4.5.5 Net tcpip address (addr)
4.5.10 Net serial baud (setting)
4.5.11 Net serial stop (setting)
4.5.12 Net serial parity (setting)
4.5.13 Net serial flow (setting)
4.5.15 Net connect (server number)
4.5.17 Net mconnect (server number received from master)
4.6 How do I automatically cycle through maps?
4.7.1 How to kick clients out of a game
5.1.1 How do I disable High-Resolution textures?
5.1.2 Where Can I get High-Resolution Textures From?
5.2 What are Doomsday Graphic Patches?
5.2.1 Where can I get Patch replacement graphics?
5.2.2 Can I use patches with the same name for different games?
5.4 How can I make my own Sprites for Doom?
5.7.1 Where can I get Detail textures?
5.8 How can I use 3D models instead of sprites?
5.9 How can I get new effects like Blood, Particles and shiny skins?
5.10 How can I alter the lens flares appearance?
5.11 How can I adjust contrast/gamma/etc.?
5.12 How do I change the color depth?
5.13 How do I uncap the frame rate in Doomsday?
5.14 What is the best Field of View (FOV) setting for my monitor?
5.15 How do I take screenshots?
6.1 How do I Use External Music (MP3, CD etc…)?
6.2 How can I change the original Sound effects?
7 WAD Files, PK3 Files, Mods and Resource Files
7.2 Where can I get DOOM2.WAD or other official IWADs?.
7.3 Definitions and Files in WADs
7.4 How can I open/edit WAD files?
7.5 Automatic Loading of Data and Definitions
7.7 Can I edit/add to/extract/view the contents of a PK3?
7.11 Can I play custom WADs? WADs And Mods
7.12 Can I play Deathkings with jHexen? How?
7.13 How can I change the IWAD used?
7.14 Can you add (favourite feature) to Doomsday?
7.15 Can I customise my game myself?
7.16 Can I use ‘Dehacked’ (DEH) Patches?
8.2 Why is the console text unreadable when I use OpenGL?
8.3 Can I change the menu background?
9 Know Issues, Problems and Errors.
9.1 Where can I view a list of reported bugs?
9.2.1 What is Connection Refused / "Duplicate ID"
9.2.2 Client returns to main menu when connecting to server.
9.2.3 Clients can't find the server (TCP/IP).
9.2.4 Clients experience ‘warping’.
9.2.5 Gameplay is very lagged.
9.2.6 Wrong flat textures on clientside
9.3.1 What do the DirectX errors when using Direct3D mean?
9.3.2 What can I do to get a Voodoo2 working?
9.3.3 Why does Doomsday run so slow (under 1 FPS)
9.3.4 Why do rooms with lots of light slow the game down?
9.3.5 Why do lens flares slow down the game immensely!
9.3.6 The gamma levels are too bright/dark (D3D).
9.3.8 Why is the player sprite visible when looking down?
9.3.9 Why are some of the textures missing?
9.3.10 Hi-res textures are unused with pwads that have textures.
9.3.11 Why do the screen borders flicker when I size down?
9.3.12 Some textures (water and the portals especially) aren’t shown, leaving flat white areas
9.3.13 Wrong flat textures on clientside
9.3.14 Multiple Overlapping Items
9.3.15 Why do I have strange problems with textures?
9.4.1 Why do the sound effects echo/repeat distractingly?
9.5.1 The game crashes often or there are strange lockups.
9.5.2 Why does it say "PNAMES not found"?
9.5.3 Why does it say "STTMINUS (or M_NMARE etc.) not found"?
9.5.4 What does “R_InitTextures: Missing patch in texture…” mean?
9.5.5 Why don’t some Wads work with jDoom?
9.5.6 jDoom: lost souls spawned inside walls/ outside map
9.5.7 jDoom: Some enemies Revived by Archvile are invulnerable
9.5.8 jHexen: Problem replacing Yorick's Skull
9.5.9 jHexen: Cannot progress shortly after going through Axe Key Door
10.1 How about a Duke Nukem 3D port?
10.3 How can I record movies (Doom Demos)?
10.4 Can I convert demo movies into standard video formats?
10.5 Why can't I play old (LMP) demos?
10.6 Why does the game suffer from momentary pauses?.
10.7 Who has contributed to this FAQ?
11 Acknowledgements and Thanks
12 Appendix A -Command Line Options
Appendix B – Console Variables (cvars)
The Doomsday Engine is an enhanced and extended Win32 version of the DOOM engine. It was originally based on the Hexen source code but parts of it have later been completely rewritten. Doomsday is only an engine:
You will also need a Game DLL. Three such DLLs are being developed alongside the engine: jDoom, jHeretic and jHexen.
Doomsday is a direct descendant of JHexen. The first version of JHexen was released in October 1999. The first version of Doomsday was released in February 2000.
The engine, jDoom, jHeretic and jHexen are being developed by Jaakko Keränen. Of late, an increasing number of people have been involved in the project (see Acknowledgements).
Doomsday is based at http://www.doomsdayhq.com.
This FAQ is a compilation of materials by Skyjake (Jaakko Keränen) and others (see acknowledgements)
Information about concepts, options and how to’s are under their respective headings – for information about errors and solutions to problems go to section 9 - Know Issues, Problems and Errors.
As mentioned above; jDoom, jHeretic and jHexen are Game DLLs for the Doomsday Engine. These are developed by Jaakko Keränen alongside Doomsday and allow the original games to be played via the Doomsday engines features.
What you need to get started:
Please note that if you wish to use Kickstart (the Doomsday launcher) you will need to use a directory path that conforms to DOS standards (i.e. no spaces, 8 characters or less for each individual folder name for example c:\games\Doomsday is fine but c:\program files\games\doomsday will cause kickstart to fail)
For example Doom2.WAD should go into data\jdoom within your Doomsday install folder, whereas Hexen.WAD should go into data\jHexen within the installation folder.
You can use Kickstart to automatically run GLBSP.
To use GLBSP manually (located in your main doomsday install folder), simply use windows explorer and drag and drop the IWAD onto the GLBSP program – the program will the create a data file (with the same name as the IWAD with the extension .gwa) in the same location as the dragged IWAD (so if the IWAD was in the location described above the data file also now in the correct place).
Here is a brief list of popular addon packs for the Doomsday user, this is an incomplete list and further details on these and other packs are available later in this guide. You may obtain these files and others from: Doomsday HQ, the NewDoom Forums, the Model Yard, fallen man’s links page (see Modelyard) and Slidespace.
jDRP – jDoom Resource Pack
jDTP – jDoom Texture Pack
Abbs Alternate Model’s Pack
Detail Textures Pack
jDUI – jDoom User Interface pack
jDEP – jDoom Environment Pack
jHRP – jHeretic Resource Pack
jHUI – jHeretic User Interface pack
jXRP – jHexen Resource Pack
This guide and the documents within the Doomsday Docs folder should be your first stop but the Doomsday Technical Forums are available for new problems that may occur. Please look at the next few sections for details:
http://forums.newdoom.com/forumdisplay.php?s=&forumid=44
When asking for help you may need to supply further information such as OS (Windows 2000/XP/Longhorn etc…), hardware and driver information.
You may be asked to supply the Doomsday.out file. This file is a log of what the Doomsday engine was doing as it ran – it will log errors warning and other information. If Doomsday fails it will attempt to show you the file in order for you to see what went wrong, if Doomsday crashes (i.e. you get the Windows debug report dialog) you will not get this, however the file will still be available from this folder within your Doomsday installation directory:
For jDoom: run\jDoom\doomsday.out
For jHeretic: run\jDoom\doomsday.out
For jHexen: run\jDoom\doomsday.out
For example if your installtin folder is c:\program files\doomsday the doomsday.out file for jDoom would be in this folder:
c:\program files\doomsday\run\jDoom\doomsday.out
Additional documentation is available in the Doc\ folder within the Doomsday installation folder and from the main Doomsday Website (http://www.doomsdayhq.com).
Beginner.txt
A Beginner's Guide to Doomsday. Installation instructions and basic usage information for a first-time user.
CmdLine.txt
Doomsday command line options. A quick reference listing all the command line options recognized by Doomsday, with a short explanation for each.
DEDDoc.txt
Doomsday Engine Definition reference. An in-depth look into the syntax and uses of DED files.
InFine.txt
InFine scripts reference. InFine scripts are used to define interludes and finale animations.
DHistory.txt
Doomsday version history.
DSS.txt
Doomsday directory structure standard. Mod-makers and other developers are encouraged to follow the structure described here.
Network.txt
Multiplayer games with Doomsday. Some details about network games running on Doomsday.
Example.bat
Example batch file for launching.
An up-to-date version history of the Doomsday engine (including jDoom, jHeretic and jHexen) are available at:
http://www.doomsdayhq.com/changes.php
Doomsday snapshots are beta release (unfinished / incomplete / untested) versions of the main Doomsday binaries (executable files). While snapshots often include bug fixes and new features they can by there nature introduce new errors and issues. It is recommended that only expert users make use of snapshots unless you have a specific issue that is resolved by a snapshot release.
Up-to-date documentation is always available at http://www.doomsdayhq.com/
Map Makers also see 1.7
The Extended General Line And Sector Type Reference (XGRef) can be downloaded from:
http://iki.fi/code/files/XGRef.pdf
Go to the forums on New Doom (http://forums.newdoom.com) the actual Doomsday thread is located here:
http://forums.newdoom.com/forumdisplay.php?s=&forumid=12
The forums at NewDoom cover a variety of subjects around the Doom franchise including the Doomsday Engine.
Located here: http://forums.newdoom.com/forumdisplay.php?s=&forumid=12
You will need to register (for free) before you can post messages to the forum
The forums are divided into several sections:
Doomsday is fortunate to have a large and interested community which is constantly producing new add-ons and levels for the Doomsday project, please remember to be polite and check that you posting in the appropriate place. Also please remember to search the forums before asking questions.
You may have a custom Avatar (thumbnail image under your name) and slogan (a little bit of text beneath your name) but only after posting 60 messages (for avatar) and 60 days (custom text). Don’t spam the forums just to get your 60 posts as you’ll only end up banned by the forum’s administrators.
Of course you can; if you look round the forums you’ll find that many people help with new graphics, sounds, gameplay mods and even new levels. There are plenty of guides available.
If you want to help with the main Doomsday source first check Doomsday on sourceforge where the entire CVS tree is available for download so you can see what your getting into (if you don’t know what CVS is you are probably out of your depth and might want to get some more experience before diving in).
Look at the: WAD Files, PK3 Files, Mods and Resource Files section for more help on enhancing to Doomsday.
Kickstart is a frontend for Doomsday written in Pascal, it is part of the Doomsday download package.
Important – Kickstart Does not support long filenames (for example c:\program files\games\Doomsday to use it you must place it within a MS-DOS safe folder name i.e. C:\Games\doomsday).
Advanced users may find Kickstart somewhat limiting so can use the command line options to customise their game (in fact kickstart merely automates this procedure by compiling the command line for you – is possible to extract the correct settings from kickstart configuration files in order to base your custom settings on).
For example, use the following batch file (Run\jDoom\Play.bat, all of this on one line):
@..\..\Bin\Doomsday -game ..\..\Bin\jDoom.dll -gl ..\..\Bin\drOpenGL.dll -file your-wad-file -basedir ..\.. %1 %2 %3 %4 %5 %6 %7 %8 %9
You need a video card that supports hardware accelerated 3D rendering. Most modern cards do. If Doomsday gives you an error message saying that "the driver is not accelerated, use -allowsoftware" there are two things that might be wrong:
There's no fix for case one, except to use the -allowsoftware command line option, which enables Doomsday to run (very slowly) in software rendering mode. In the second case, you can either try to update your OpenGL drivers or try the Direct3D renderer instead.
Thanks to M. G. Troyas
The reason might be that Norton Antivirus (or some other antivirus program, but probably NAV) is running in the background and scans the opened files, slowing everything down. Disabling the antivirus program makes things work at normal speed.
Other things you can do to alleviate this problem include using Disk defragmenter, and ensuring you have sufficient RAM.
Unfortunately like many games there are a number of reasons why Doomsday won’t start – Here is a general troubleshooting list. For more specific help check Section 9 (Problems and Issues)’
One Game DLL, such as jDoom, is able to run in many different modes. Each mode emulates a specific version of the original game and typically has its own IWAD file. In some cases two modes can have a resource with the same name. This is a problem if the same resource file can't be used by both modes.
The resource class directory can have a subdirectory for each game mode. When Doomsday looks for an external resource, it first checks the current game mode's subdirectory. If no suitable resource is found there, the class directory is searched instead.
Below is a list of all the game modes supported by jDoom, jHeretic and jHexen.
| Game |
Mode |
Description |
| jDoom |
doom1-share |
Shareware Doom |
| doom1 |
Registered Doom |
|
| doom1-ultimate |
Ultimate Doom (has a 4th episode) |
|
| doom2 |
Doom 2 |
|
| doom2-plut |
Final Doom: Plutonia Experiment |
|
| doom2-tnt |
Final Doom: TNT Evilution |
|
| jHeretic |
heretic-share |
Shareware Heretic |
| heretic |
Registered Heretic |
|
| heretic-ext |
Heretic: Shadow of the Serpent Riders (has episodes 4, 5) |
|
| jHexen |
hexen |
Hexen |
| hexen-dk |
Hexen: Death Kings of Dark Citadel |
|
| hexen-demo |
The 4-level Hexen Demo |
For example, textures meant only for Final Doom: Plutonia Experiment would be placed in the directory Data\jDoom\Textures\doom2-plut\.
Yes, but only the way they did in the original Doom. The console commands that correspond to the cheat codes are different, for example the "warp" command has the functionality of IDCLEV.
Pressing or clicking the Forward or Strafe key two times in a rapid succession simulates a press of the Use key. The cvar ctl-use-dclick controls this behaviour. Setting it to zero will disable the feature.
After you've created a Jump binding in the Controls menu you'll also need to enable jumping on the whole. This can be done in the Gameplay & HUD Options menu (starting from version 1.01) or by setting the console variable AllowJump to one
You can customise almost every element of Doomsday based games (i.e. jDoom) via DED files. For more information on customisation look at the DED documentation within the Docs folder of your installation directory.
Also look on the Doomsday HQ forum on NewDoom.com for lots of customised modifications for all Doomsday Games.
Simply type:
map-cheat-counter 63
for all the above at the console or for hust number of kills type:
Using DirectPlay, the Doomsday engine is capable of multiplayer games over the Internet, a local area network (LAN), a modem or a serial link. This document describes how to use the Server and Client setup screens and the "net" console command, which can also be used to setup and configure network games.
Please make sure your DirectX drivers are recent enough (at least version 6.0).
jDoom networking doesn't yet work very well over the Internet. It's not even worth a try unless you know the connection will have <500ms ping and can sustain a reliable transfer rate of at least 3 kB/s.
Use the TCP/IP protocol, port number zero. This'll let DirectPlay decide the ports to use. If a firewall is being used, the port number can be used to set a specific port for all traffic. The port must be the same for both the server and the client.
Clients must know the server's IP address. The Windows utility winipcfg can be used to find it out (run it on the computer that will be the server).
Start the server using the Multiplayer menu.
The clients will need to type the server's IP address to the TCP/IP Address box before they can click the Search button. After a moment the server should appear in the Located Servers list. The client can then click the Connect button, after which the game begins.
When the game is running, the Multiplayer menu can be used to disconnect or change the game setup (map, skill, etc.).
Up to 16 players are supported.
Useful console commands: net info, ping.
Useful console variables:
net_FrameInterval sets the number of tics between frames sent from the server to the clients. Can be used to reduce the bandwidth requirement, but makes gameplay choppier for clients. Only for the server.
PredictTics sets the maximum number of clock ticks (35 Hz) for the client to predict ahead if the frame from the server doesn't arrive in time. Best set to a big value like 35 (predicts one second).
net_SkewDampen controls client time skew. Time skew means that the client tries to interpolate the frames arriving from the server so that they be will shown at the right time. The purpose of this is to eliminate the cases where the frames from the server get delayed from some reason and then arrive too late. The best value depends on the latency variance of the connection. If the latency doesn't change at all, a small value like 4 should do well.
net_ShowSkew is used to enable or disable the displaying of the time skew in the console.
net_StressMargin controls the sensitivity with which the server reacts to excess or missing ticcmds from a client. A good value should be around 10. Set to a small value like zero to one if too many commands are being buffered (clients lag for no apparent reason).
net_Dev shows some network debug info on-screen (for server only). The first line, G<number>, is the game time. For each client a following line is printed:
<client#>:<time dif.>[<lag stress>](<# of buf.cmds>/<client run time>)
Time dif. is the difference between current server time and the time of the most recent command received from the client. Positive lag stress means the client is missing cmds, negative stress means there are too many commands. # of buf.cmds is the number of commands in the buffer waiting to be executed. Client run time is the time of the command that was last executed.
Setting net_Latencies to one will show the same info in the console.
From DirectX 6.0 documentation:
[When you have set Doomsday's TCP/IP port to zero] The TCP/IP service provider uses port 47624 to send and receive enumeration requests. Communications are sent on the port range 2300-2400. To work through a firewall, all computers must be using DirectPlay 6.0 (or newer) and the ports 47624, and the range 2300-2400 must be open for both inbound and outbound TCP and UDP traffic. Note: DirectPlay starts assigning ports at 2300 and works its way up, sequentially. It is possible to open a smaller range starting at 2300.
If an application selects a specific port to use, all communication is sent through that port, and it is only necessary to open that one port (for both inbound and outbound using TCP and UDP).
Ideally the machine with the fastest processor and connection should be the server
When a computer is in this mode it not only acts as a host to clients but will not be actually playable as a client itself. No graphics or sound engine will be loaded and as such the efficiency of the server will increase.
The graphical user interface provided by Doomsday offers a simple way to host and join multiplayer games. It can usually be accessed via the "Multiplayer" menu.
Use of the setup screens should be self-explanatory.
With TCP/IP, use port number zero. If you're behind a firewall, open a port of your choice and set its number in the TCP/IP protocol setup screen. Don't use the same port number that's used by the server you will be connecting to, or the master server's port number (10123).
You start a dedicated server by using the "-dedicated" command-line option (more information about command line options in CmdLine.txt).
The game begins but all you'll see is a text mode representation of the console. You can now start the server exactly like a non-dedicated one, but you don't have to worry about your name and player color because the server naturally hasn't got a player when running in dedicated mode. You can place the init commands in autoexec.cfg for convenience.
Note: Player limit is 15 on dedicated servers.
Connecting to a server as a client is quite straightforward. Before doing anything it's a good idea to make sure your player name and color are what you want them to be. You can use the commands "setname" and "setcolor" even when off-line.
Notice that you can use your player number as a color if you do "setcolor 4" (both Doom and Heretic have four player colors: 0-3).
Hexen has eight colors, so you'll need to use "setcolor 8". This means your color will be chosen automatically following the same logic as in the original Doom, Heretic and Hexen.
1. Set the protocol's configuration variables, for example "net-ip-address" and "net-ip-port" with the TCP/IP protocol.
TCP/IP notes: the port should be zero if you're not behind a firewall, or some specific port of your choice (you'll need to open it) if you are behind a firewall. You can't use the same port number as the server, neither can you use the master server's port number 10123.
2. Initialize the protocol with the "net init (service)" command.
3. Issue the command "net search" as many times as it takes to see the server you're looking for (usually two times).
4. "net connect (server number)" will connect you to the server.
5. "net disconnect" will disconnect you.
(service) is one of: tcpip (or tcp/ip), ipx, modem or serial.
Initializes the network driver for use with the specified service provider. This command must be given before any of the other network commands. To make things easier, you could for example place a "net init ipx" in your autoexec.cfg so the IPX network driver is automatically initialized when the Doomsday engine is started.
If you want to change the service provider at runtime, you must first use "net shutdown" and then initialize the provider you want.
Shuts down the current network driver. You don't have to use this command unless you mean to change the service provider at runtime.
Displays the current network settings along with some debug information.
If the Modem service provider is in use, this command displays a list of available modems. Use "net modem (num)" to select one from the list.
Before you can connect to a server using TCP/IP, you need to specify the server's IP address. For example: "net tcp/ip address 127.0.0.1". The program winipcfg can be used to find out your own IP address, if your computer is going to be a server (winipcfg supposedly comes with Windows). If the IP address of the server you frequently connect to doesn't change, it's good to place this command into autoexec.cfg.
If necessary, this command can be used to set the port to use when connecting. Leave to zero if you know nothing about TCP/IP ports.
Selects the active modem from the list displayed by "net modems".
You only need to issue this command if you're using the Modem service provider.
Sets the phone number to dial to if connecting to a server using
the Modem service provider. You must set the phone number before
using the command "net servers".
Sets the COM port to use with the Serial Link service provider. Notice that usually this is the only config command you need to give with the Serial Link service. The other settings are given reasonable defaults when the service is initialized.
(setting) is one of: 110, 300, 600, 1200, 2400, 4800, 9600, 14400,
19200, 38400, 56000, 57600, 115200, 128000, 256000.
(setting) is 0-2:
0 = one stop bit
1 = 1.5 stop bits
2 = 2 stop bits
(setting) is 0-3:
0 = no
1 = odd
2 = even
3 = mark
(setting) is 0-4:
0 = no flow control
1 = software flow control (xon/xoff)
2 = hardware flow control with RTS
3 = hardware flow control with DTR
4 = hardware flow control with RTS and DTR
If you want to connect to a server and you have configured your service provider with the necessary commands listed above, this command lists all the servers that can be found. Unless you're using the IPX service provider, there will be a slight delay before this command gives you the server list because DirectPlay has to first make the actual connection between the computers. It's best to keep repeating this command until you see the server you want.
Connects to the specified server. Only works after "net search" shows the number of the server (usually zero).
Connects to the master server and retrieves a list of running servers. You must set the console variable "net-master-address" before you can use this command. "net-master-port" should be zero, or a port of your choice (not 10123) if you're behind a firewall.
SailorSat's master server IP: 137.226.156.135
This command connects to the specified server. Only works after "net servers" has successfully ended and the list of servers has been printed in the console.
When issued on the server, this command displays a list of all the connected players. For clients this command just displays the name of the server player and the client's own name.
Disconnects from the server you're currently connected to. Automatically done when you return to the operating system. You will naturally have to disconnect from a server if you want to connect to another one.
If you want your computer to be a server, use this command after initializing the network driver. It will start the game so other players will be able to join.
The server is responsible for choosing the game specific multiplayer settings, such as the map to play in. The server is able to change the current map with the console command "setmap". net server close
Stops the current game and disconnects all connected players.
Servers can set up a sequence of maps to cycle through automatically. This is done by defining the cycling rules with the console variable "server-game-mapcycle" and then, after starting the server, issuing the command "startcycle". The command "endcycle" ends map rotation.
Note: You must enclose a string in quotes if it contains spaces.
For example:
> server-game-mapcycle "F:10 22 23"
The cycling rules have a very simple format:
(rule)[,(rule)] (map) [(map) [...] ] [(rule) ... ]
(Brackets [ and ] enclose optional parts here.) (rule) can be either "Frags:X" or "Time:X", where X is either the maximum number of frags or maximum amount of time in minutes. The words "Frags" and "Time" can be abbreviated down to one letter. The comma between rules can be replaced with a semicolon, a plus character, a forward slash or a backslash. Map numbers always consist of two digits. Either or both digits of a map number can be replaced with an asterisk (*), which makes the server replace it with a random number.
It's not that difficult, really. Take a look at the examples:
"F:10 11 12 13 14 2* T:15,F:5 37"
The cycle consists of maps E1M1, E1M2, E1M3, E1M4, a random map from the second episode and E3M7 (assuming this is not Hexen or Doom II). For the first five maps the rule for changing the map is a maximum of 10 frags. The last map (E3M7) will end when either 15
minutes has passed or someone gets 5 frags. "Frag:5 ** 25 24 23 Tim:1 11"
The cycle consists of a completely random map, E2M5, E2M4, E2M3 and E1M1. The first four maps will end when someone gets 5 frags. The last map (E1M1) ends after one minute of gameplay. The extra spaces between the map numbers are ignored.
Clients are able to create a remote connection to the server's console. The server can set a password with the console variable "server-password".
When a client issues the "login" console command, a remote connection is started. If the server has a password, it must be given to "login" as an argument, for instance "login foobar". After logging in any consequent commands are executed on the server's console. The remote connection can be terminated with the
"logout" command.
Servers can use the console command "kick" to get rid of unwanted players. The number of the player to kick out is given as an argument, for instance "kick 2". Player numbers can be found out with the "net info" command.
DMaster is a simple master server program that can be used to keep track of all the running Doomsday servers on the Internet. Clients can ask the master for a list of servers. Use the console variables "net-master-address" and "net-master-port" to define the
master server's IP address and TCP/UDP port. Port number zero is DirectPlay's autodetection port, it should work under most conditions. Before starting a server, set the cvar "server-public" to one to allow the server to inform the master of its existance. After "net init (something)", clients can use the console command"net servers" to send a server list request to the master. The returned list of servers has indices, use "net mconnect (index)" to connect to one of the listed servers.
Normal wall textures and flats can be replaced with TGA (Truevision Targa), PNG (Portable Network Graphics) or PCX (Zsoft Paintbrush) images. The engine currently supports these image formats:
| Pixel size |
PCX |
PNG |
TGA |
| 8-bit (paletted)* |
Yes |
Yes |
- |
| 16-bit |
- |
- |
Yes** |
| 24-bit |
- |
Yes |
Yes** |
| 32-bit (alpha channel) |
- |
Yes |
- |
* = the palette does not have to match the palette of the game
** = TGAs must be type 2 (uncompressed, unmapped RGB)
Note- that 32-bit images are just 24-bit images with an additional 8 bits per pixel for the alpha channel. Contact Skyjake if you feel that it's necessary to add support for other formats.
The recommended format for high-resolution textures is paletted PNG. It is the easiest format in which to distribute the textures due to its small size. Since the palette doesn't have to be the same as the game's, it should be enough for many textures.
The high-resolution textures can be of any size. The engine will render them scaled so that they fit the size of the original texture. This means the aspect ratio of the new texture doesn't have to be the same as of the original texture. Note that the engine will have to resize all textures so that their dimensions are powers of two (e.g. 32, 64, 128, 256). This means TGA/PNG textures whose width and height are already powers of two can be loaded faster.
Color keying is done if the file name of the image ends in "-ck", for example brnbigc-ck.png. Both cyan (0,255,255) and purple (255,0,255) are used as keys. An alternative way to have transparency is to use an alpha channel. In it, white (255) means opaque and black (0) is fully transparent. All values in between can be used, too, for partly translucent pixels. When using an alpha channel, the "-ck" suffix is not needed.
To create a high-resolution texture for the wall texture STARTAN3 you'd place a TGA file named startan3.tga or a PNG file named startan3.png into the Textures directory. The file names of images that replace flats must begin with "flat-", e.g. to replace the flat FLOOR7_2 you'd need to have a TGA file flat-floor7_2.tga in the Textures directory. If there are both PNG and TGA versions of the same texture, the engine will use the PNG version.
NOTE- The file names of the high-resolution textures must match the *texture* names, not the names of the patches that make up the textures. For example: DOOR2_5 is a patch name, DOOR3 is the texture that uses DOOR2_5.
To disable high-resolution textures use the command line option
"-nohightex". The option "-texdir" can be used to change the directory from which the textures are searched.
More texture-related resources are available at DoomsdayHQ:
http://www.doomsdayhq.com/files.php?class=4&type=3
And look for the jDoom Texture Pack (jDTP) in the Resources forum within the Doomsday HQ forums here:
http://forums.newdoom.com/showthread.php?s=&threadid=9832.
Links to other high-resolution texture sites:
http://switch.to/doom2textures
http://switch.to/heretictextures
http://switch.to/hexentextures
Patches are images that are commonly used in game menus and intermission screens. Like textures, patches can be replaced with TGA, PNG or PCX images. The Patches resource class directory is searched using the lump names of the original patches. For example, to replace the Doom menu title, you would place the file m_doom.png to the Patches directory.
The original data lumps are required even if an external resource is found, because the original data includes information about offsets and the on-screen size of the patch. This means the image from the external resource can be of any arbitrary resolution: it will be scaled to match the original patch.
Currently external patch resources are not precached, which may cause slight delays when the patches are first loaded.
You can look around the forums and Fallen Mans links site (check the resources forum within the Doomsday HQ forums). Also you can download a rollup of common replacement graphics (HUD, Title screens, intermissions etc) b various people in the jDoom User Interface Pack (jDUI) check the Resources forum within the Doomsday HQ forums for more details.
Some games (such as Doom 1 and Doom 2) use the same names for specific patches even though they are different in each game (a good example being Titlepic).
To combat this simply place external patches in a sub folder with the same name as the gamemode you are playing. For example for doom 1 you may place all your patches in the root Data\jDoom\patches folder whereas for Doom 2 you can place it’s unique patches in Data\jDoom\Patches\doom2. To find out the various Game modes available see section 3.1.
Sprite frames are patches. They can be replaced with external resources just like all other patches (with the same rules for different game modes). The same restrictions apply, though: the dimensions of the external resource do not affect the actual size of the sprite frame. This means the external resources must really be *high-resolution* versions of the original images. Otherwise the size and/or aspect ratio will not be right for the resource.
For example, in order to replace the Doom medikit (lump name MEDIA0), one would place the file media0.png into the Patches directory.
Color-mapped versions of sprite frames can have external resources, too. To indicate that a resource is color-mapped, its name is formed like this:
(patchName)-table(classNum)(tableNum).ext
(patchName) is the sprite frame lump name. (classNum) is the number of the color translation class. This number is always zero in jDoom and jHeretic. In jHexen, it's the player's class (0=Fighter, 1=Cleric, 2=Mage). tableNum is the index number of the color translation table. jDoom and jHeretic have 4 tables, jHexen has 8. For example: playa1-table01-ck.png would be the Doom player sprite frame A1 with color table 1. The -ck suffix makes the image color keyed (i.e. special colors indicate transparent pixels).
First get yourself a Wad editor (doesn't matter which check the WAD file section for more information on editors) and find the sprites you are trying to replace - extract them and open them in a graphics editor now resize the image to at least 4x (8x might be better) the original size keeping the aspect ratio (this should mean Doomsday won't distort your sprite frame when it's placed in engine).
Now make a note of the dimensions of the frame (width and height) and filename and make a new file (this is important for copyright reasons) and either draw the image from scratch. You may wish to take further positioning notes so that custom sprites will line up with the originals. Another method (that was used by id themselves) is to make or find a 3D model of the sprite and take pictures of it from different angles (and different states: attacking, dead etc…) and paste them in.
I'd recommend saving the files as 24bit pngs, but if you feel confident you can try saving space by using custom palettes with 8 bit images. You should already have the right filename because you used the original file for the aspect ratio. Now simply place them in your patches folder to replace the original just like any other patch.
Some background pictures are in the raw screen format, which is used to store 320 x 200 pixel paletted images. A lump containing a raw screen image (for example Heretic's TITLEPIC) is exactly 320 x 200 = 64000 bytes long. Raw screens can be replaced with external resources in the Patches directory.
Light maps are monochrome images that can be used with dynamic lights. The dimensions of a light map must be powers of two, for example 256 x 256. If the map contains an alpha channel, the actual color values are ignored; only the alpha values are significant. If the map doesn't have an alpha channel, one is generated by averaging the color values of the image.
Example: If you assign the light map "Round" to a light source, images with that file name are searched from the LightMaps directory. The accepted image formats are PCX, TGA and PNG. If Round.pcx, Round.tga or Round.png is found, it will be loaded.
Detail textures are grayscale images that are rendered on top of normal textures when walls and planes are viewed from close by. A signed-add blending is used, which lets the detail texture either darken or brighten the underlying texture: black => dark, gray => no change, white => bright.
Detail textures can be assigned to specific wall textures and flats using Detail definitions (Details.ded). The definition is described in the Doomsday Engine Definitions Reference (DEDDoc.txt).
Detail textures can be loaded from PCX images or raw image data. Either way, the image must be inside a WAD file or loaded using the "-file" option. When using the "-file" option to load detail textures, the file names of the images become lump names (see "-file" option).
PCX images used as detail textures must have a color depth of 8 bits and their width and height must be powers of two. The palette should be a grayscale one. It's possible to use other colors but the result can be weird due to the way the blending of detail textures is done.
If the source data is a raw image, it must be either 64x64, 128x128 or 256x256 pixels in size. Raw images contain only the pixel values, (one byte per pixel) and have only one color component per pixel (they're black and white images), which means the lump or file that contains the detail texture can either be 4096, 16384 or 65536 bytes long.
Using the default scaling, the pixels of detail textures are four times smaller than the pixels of regular textures.
The console variables rend-tex-detail, rend-tex-detail-far, rend-tex-detail-strength and rend-tex-detail-scale control the rendering of detail textures.
Check the main Doomsday HQ webpage under ‘Textures’ for a detailed textures pack.
See: How can I get new effects like Blood, Particles and shiny skins?
For jDoom 3D models and other effects can be acquired from the jDRP (jDoom Resource Pack) available from http://modelyard.newdoom.com. After installing ensure you enable the 3D Models option in the Graphics Options menu by setting it to 'Yes'.
You can also get alternative model sets from the Doomsday HQ homepage (under models).
See the Doomsday forums for more on jHexen/jHeretic addons
Place these packs (as they are – don’t try extracting the files- into your data\jDoom\auto folder)
For skyboxes and fog try the jDoom Environment Pack here:
ftp://jfiles@server1.thefourwinds.net/jdoom/slide/environmentpack.pk3.zip
For enhancing the original doom text, title screens, intermission screens and HUD graphics try the jDUI:
ftp://jfiles@server1.thefourwinds.net/jdoom/slide/jdui/jdui.pk3.zip
You can customise the jDUI with your own favourite graphics from the web.
The console command flareconfig 0 tex 2 activates the flares that have rings (put that in autoexec.cfg for it to run automatically; remember that autoexec.cfg should be in your runtime directory Run\jDoom\). The default lens flares are activated with the command flareconfig 0 tex -1.
Add these lines in Defs\jDoom\User.ded if you want to make the health bonuses a bit brighter: (if User.ded doesn't exist, just create a new file)
Light { State = "BON1"; Size = 0.7; }
Copy Light { State = "BON1A"; }
Copy Light { State = "BON1B"; }
Copy Light { State = "BON1C"; }
Copy Light { State = "BON1D"; }
Copy Light { State = "BON1E"; }
See Doc\DEDDoc.txt to see what other things can be done with Light definitions.
Starting from Doomsday 1.5.5 it's possible to adjust gamma correction, display contrast and brightness using console variables. The requirement is that your display adapter supports hardware gamma ramps.
The console variables are:
vid-gamma
Gamma correction factor. 1.0 is the default, which results in no correction. Values greater than 1.0 increase display brightness. The smallest value you can use is 0.1.
vid-contrast
Display contrast. 1.0 is the normal contrast level. If you increase contrast it's a good idea to increase vid-bright as well.
vid-bright
Display brightness. 0.0 is the normal brightness. Positive values increase brightness, negative values decrease it. Good values are pretty small: if you for example set vid-contrast to 1.2 it might be good to set vid-bright to 0.1.
When using these variables make sure the software gamma correction is turned off: setgamma 0.
If your display adapter doesn't support hardware gamma ramps or you're using an old version of the engine, you might try the following:
The PLAYPAL lump consists of 14 palettes each 256 colors long. Doomsday only uses the first palette (the first 3*256 bytes) but it's best to operate on all of them.
Extract PLAYPAL to a file using the -dumplump option or a simple WAD extractor (Wintex for example).
Open the file with an image editor such as Paint Shop Pro or Adobe Photoshop as a raw image. I'm sure other programs support the raw format as well. You're most likely prompted for the format of the image (raw images are just pixel data): set width to 256 and height to 14 (as interleaved RGB). You should get a nice picture of the palettes, each row being a separate one.
Now tune the image with gamma correction, brightness, contrast, etc.
When you're finished, save the palette image back to the file and load it into the game.
You don't need to create a WAD file out of the modified palette lump, the engine can read single data lumps as well. You can use the -file command line option, or put the new palette file to your defaultWads in the .cfg file. You can also load the palette at runtime (with the "load" console command) but it won't necessarily have an effect everywhere that way. Certainly not before forcing a texture reload.
Use the -bpp command-line option. Some versions of Windows 95 do not support color depth changes without restarting the computer, though (with the OpenGL renderer). In that case you must change the Windows desktop color depth.
Originally Doom based game ran at 35FPS (Frames Per Second), doomsday can smooth camera, and sprite and object movement: go to Graphics Options in the control panel and select ‘Smooth Camera Movement’, to smooth Actor movement go to Objects and enable ‘Smooth Actor Rotation’ and choose to smooth sprite and object Movement, as required, from the ‘Smooth Actor Movement’.
Most resolutions can use 90 Degrees to give a realistic view; because they are at the same aspect ratio, the most common exception to this is 1280x1024. At 1280x1024 the width, relatively, decreases by about 12 percent, so for this resolution the best FOV is 84.4 degrees.
Screenshots can be taken with the console command "screenshot". You could for example bind it to F12: "bind f12 screenshot". A 24-bit Targa file will be written.
Doomsday can play various external music files using the FMOD library (http://www.fmod.org/). FMOD supports many music file formats including MP3, OGG, MOD and S3M (mods are a good choice due to their good quality/size ratio). External music files can be played at any time using the playext console command.
NOTE On some systems, using FMOD with Doomsday has caused lock-ups or other unwanted behavior. If this appears to be the case for you, you should disable FMOD with the "-nofmod" option. However, this will also make it impossible to play external music files such as MP3s.
Like other external resources, placing a music file into the Music resource class directory is enough. The file name must match the lump name of the original music data lump. For example, to replace the music for Doom's first episode's second map, the file d_e1m2.mp3 would be placed in the Music directory.
It is also possible to store music files into a WAD. Again, you must name the lumps so that they match the lumps of the original songs, and are thus loaded instead of them. Any music files supported by FMOD can be loaded from a WAD.
Another way to specify an external resource file is to use the "Ext" key of a Music definition (in Audio.ded). An example of editing the definitions: You have a terrific song called song.mp3 and you'd like to hear it instead of Doom's regular "e1m2".
The first thing to decide is whether you want to play the song from where it's currently located, or do you want to move it under the Doomsday directory. In the latter case it would be easy to distribute the song and its definition file to others, since they wouldn't have to worry about where the music file is. If you decide to move the song, create a directory under