If you have any trouble with Doom Legacy, you might find a solution here.
If you find a solution to a problem that was not listed here, please tell us so that we can update the FAQ and help other people!
If you have a console, start DoomLegacy with the -h switch to see the help output.
If you do not want the Launcher to start, then have at least one switch on the command line. It does not have to be a real switch, -nolaunch, or even -xx will do it.
If you do not have a command line console, or do not want to use it, you can start DoomLegacy without any switches, which will bring up the Doom Legacy built-in Launcher. From the Launcher you can specify almost all switches. The switches -mb (Zalloc memory size), -h (help) are handled before the built-in Launcher runs, and thus the Launcher will ignore them.
For command line switches, I recommend using native video, and you must select your game.
> doomlegacy -native -game doom2
Switch: -native Game: doom2 Continue
DoomLegacy 1.46 also recognizes the environment variable "UserProfile" as home, which appears on WinXP (and probably later versions of Windows too). This will make the parent of "My Documents" your home directory automatically.
The config settings are saved by DoomLegacy during program shutdown. If it is being killed some other way, the settings will not be saved.
If you are inconsisent about specifying your home directory, then DoomLegacy will create a new config file in each new location. If you find you have to setup your keyboard again, then you may have mistyped your -home directory name. Setup a profile or a batch file to start DoomLegacy from saved settings to ensure getting a consistent home directory.
OpenGL hardware rendering has its own separate config file. You will have to set all your settings again, sorry.
George will now have his own config settings. As long as you do not delete the file, George's settings will still be there next time he comes to visit.
Give your friend their own home directory, with its own config file
and savegames.
Make a directory named "george_home".
Start DoomLegacy with "-home george_home".
DoomLegacy will make a doomlegacy directory in the george_home directory, where it will put config.cfg and savegames. On Linux this is a hidden directory, so the george_home directory will appear empty, but it is not empty.
Starting DoomLegacy with the verbose switch (-v or -v2) will enable generating more messages, and will provide more detail about what DoomLegacy is doing. The -v2 switch dumps much more detail than you usually want to see, especially about video hardware.
Pre-release versions of DoomLegacy usually have debugging print statements (EMSG_debug) enabled full-time. Compiling with DEBUG_MESSAGES_ON enabled in doomdef.h, allows debug messages to be seen on the console and HUD at all times.
With a release version of DoomLegacy, use verbose (-v or -v2) to enable the same debug message displays. The message option control also can enable seeing debug messages during game play.
The development switch ( -devparm ) provides details meant for developing the game and game wads.
On Windows, the error messages go to a file "stderr.txt" that is left in the program directory.
DoomLegacy does not maintain sync with the Doom demos. It was decided some years back, that demo compatibility would be sacrificed in favor of new features and improvements.
The demos only record the player actions and movements. Every monster and object reaction is the result of applying random numbers and player input.
To playback a demo, the engine must generate the exact same sequence of random numbers, and apply them to get the exact same situation that developed during the recording. The monsters must react and walk the exact same paths as when the demo was recorded. Almost every calculation of the DoomLegacy engine must come out identical to the recording Doom engine. The slightest difference in using a random number, or in calculating a monster, player, or projectile position, has cumulative effects in the playback. With the slightest position error, it rapidly gets to the point where the playback of player movements is completely irrelevant to the current situation.
Some attempts have been made fix this with compatibility enables in the code, to revert the engine to generate compatible output This puts the bugs back in the code. The current demo compatibility code mostly covers Doom demo and Boom demo formats, but not others. It has improved old demo playback, somewhat.
DoomLegacy has its own variation on the demo format. Like Boom, it needs to record a whole bunch of optional settings, all which affect demo playback.
DoomLegacy 1.46, will playback demos recorded with DoomLegacy, and remain in sync. I will not make any guarantees on this for long demos, or every situation, as it has not been tested much.
Doomlegacy 1.47, has included some old code that is run for some old demos. This makes some of the old Doom demos stay in sync for much longer now.
However, if you're looking for the 100% authentic 1990s Doom experience, you could try Chocolate Doom.
This was fixed in DoomLegacy 1.46, which has separate Doom and Heretic internal switch tables.
Historical Info: Doom and Heretic would only load the switches for that version and lower, as identified by an episode number in the switch tables. The code as Shareware Doom episode = 1, Ultimate Doom episode = 2, Doom II episode = 3. Heretic has a similar scheme with Shareware episode = 1, and Heretic episode = 2, but it only contained two switches both with episode = 1.
The Boom SWITCHES lump is loaded for both Doom and Heretic game modes. The usage problem with Heretic was that in previous DoomLegacy the Heretic switch names were distinguished by having an episode = 4 in the entry, which required the SWITCHES lump to also have episode = 4. Such a SWITCHES lump would not have worked with other ports.
Since DoomLegacy 1.46, we no longer use that scheme. For compatibility, a Heretic SWITCHES lump should have episode = 1, or even episode = 2, but DoomLegacy will still accept switches lump entries with episode = 4 for Heretic.
First, check that the mouse/joystick is activated : go at the console and type either 'use_mouse' (or use the respective menuitem) or 'use_joystick'. If it is '0' or off then that mouse/joystick is disabled. Set the variable to 1. eg: 'use_mouse 1'.
Once the mouse or joystick is activated, you have to bind the buttons to controls in the setup controls menu.
Otherwise, the video mode you select is only temporary for this run of DoomLegacy. This supports testing modes before committing to using them. If you select some video mode that will not display properly and you have to abort, or even reboot, it does not become stuck to DoomLegacy. The next time DoomLegacy is started it will revert to the known good video mode saved in the config file.
Do not set a video mode to default until you know it is good. If you have a bad video mode and cannot see the video controls in the DoomLegacy menu, you will have to edit the config file by hand, or delete your config file to clear the bad video mode. The config file is re-written when DoomLegacy exits, so do not leave the config file open in your editor while running DoomLegacy.
The original Doom graphics were designed for a 320x200 VGA display with a 4:3 physical aspect ratio. Consequently the pixels on these displays had a 5:6 physical aspect ratio, unlike most modern displays which have square pixels. This makes rendering the graphics on modern displays somewhat complicated.
The menus and intermission screens are scaled at integer ratios to fit the screen. This will often leave bars at the edges. Because these are drawn using color palette graphics from the wad, attempts at finer interpolation required looking up blended colors in a palette, which leads to a muddy look. To avoid this problem, the menus will be scaled larger or smaller for some video display modes.
The game rendering is fully scaled to display the same view at all video display modes.
In software render mode, Doom Legacy will proportion the display to keep the original display appearance. It will display with filler bars if necessary to do this. The pixels will not be identical to those from the original Doom.
In OpenGL mode using fullscreen, the introduction and intermission pictures are stretched to fill the screen. This does not keep the original aspect ratio. The game rendering is adjusted to approximate the 320x200 screen size, and the field of view of the original software renderer, assuming the display is 4:3. There is a FOV control, but it zooms and does not change the aspect ratio.
When you have a 16:9 display, Doom Legacy displays expecting a 4:3 aspect, and the monitor may stretch it to fill the 16:9 shape. This will alter the appearance of rooms and sprites. Most monitors can be set to display a 4:3 aspect with black borders. One alternative is to turn off fullscreen, and choose a window size that fills most of the screen.
There are limits to the monitor width because every texture segment saves display state in a structure of that maximum line width. To expand the line width limit for a few, we would have to do it for every user regardless of their hardware.
Eventually, this will have to be changed to allow using larger monitors in fullscreen. That will require a rewrite of most of the texture segment code to some other, slower, texture segment state storage scheme.
Is that cheating for one player to have such a wide view? It is more fair in deathmatch for all players to have the same field of view. There will have to be network controls to allow using wide field of view.
This will also have to be changed soon (been saying that for years), as wide screen monitors are now commonplace.
The last I heard, there was still a DoomLegacy server up, but it was running an older DoomLegacy.
The Game server locations respond to requests. The interested parties should submit a request to the Game Server to host a DoomLegacy 1.47 Server.
A static IP address only has to be setup once in the DoomLegacy Server menu of each player.
If it is a dynamic IP address, then each player must setup the server IP address every time the server connects to the Internet, because that IP address will likely be different each time.
Your success at this may depend upon filtering done by your IP service providers. It will not work if they are blocking packets using the DoomLegacy port address (port 5029).
Your firewall also has to let through the DoomLegacy port address (port 5029).
Your local network will be limited to an address range, a subnet. If your netmask is the usual 255.255.255.0, then your subnet is limited to only vary the last number, and all the computers on that subnet must have the same first three numbers.
Pick an IP address for your server, such as 192.168.3.2. All your player computers then need to have unique IP addresses on the subnet 192.168.3.xx, where xx is 2..254.
For this example, lets consider the network 192.168.3.0, which has a computer 192.168.3.2, and two visitors at 192.1.3.72, and 192.1.3.246.
If you have a router with DHCP, such as your wifi-router, then it will automatically assign an IP address in your subnet when the visitor computer connects to the wifi. Without DHCP, you have static IP addresses, and the visitors will have to modify their IP address to work on your network.
If your DoomLegacy server is connected using DHCP, then the server IP address may be different then last time you played. You will then have to config every client computer to use the new server IP address, which is bothersome. Most modern routers will connect a recognized computer to the same IP address it used last time it was connected. You can set up your router to do this, or even assign a static IP address to the server. Otherwise, make sure the server connects to the network first, so some client does not steal the preferred IP address it uses.
It does not matter what IP address the clients get, as long as it is an address on your subnet. The server gets the client IP address from their first connect message.
Without DHCP, modern internet communications should allow you to add the server IP address to your recognized addresses (static or manual routing) for a particular hardware device (like your wifi-router, or Ethernet router, assuming you have the firewall enabled). Just add the needed addresses, you should not have to replace any existing internet address.
Your firewall has to let through the DoomLegacy server port address (port 5029).
If any of your clients are using an unusual port address, then your firewall will also need to let through messages to that port.
The user reserved ports start at 5000. I recommend only going up from 5029, such as 5100 .. 5199, to avoid other programs.
All your players (clients) must specify the same port number on their command line, and fix their firewalls to allow through packets that use that port.
Older versions of DoomLegacy should be eliminated from network usage for security reasons. With so many important bug fixes, there is no reason to be using older DoomLegacy for network play.
Each client should ideally run the same version of DoomLegacy as the server. Otherwise, some slight play difference may get them kicked due to consistency failure.
Bots were a new feature that was being worked on by other team members. Being that they can only be activated by a obscure console command, they may not be totally finished. The bots might not be integrated with all DoomLegacy features either, such as network play, splitplayer, and saving games.
Making the bots compatible with network play is waiting until after some other major enhancements are done. Then the whole bot system will get re-worked, integrated, and finished.