====================================================================
Eternity Engine v3.31 'Delta' - Frequently Asked Questions
====================================================================

This is a FAQ file for the Windows version of the Eternity Engine.
It attempts to address some common problems that may arise during
play, but doesn't claim to be a complete list. If problems are
encountered not addressed herein, contact the author by email at:

haleyjd@hotmail.com

or, stop into #zdoom on the OFTC IRC network (irc.oftc.net).

More questions will be added in the future. Check the Eternity
website to see if a new version of the FAQ has become available.

========
Contents
========

*** Gameplay/General Feature Questions ***

Q1. What are those stupid splashes? They look crazy in my TC/wad/etc
    that wasn't designed for them. Also, the particle gunshots like
    to change color, and this doesn't look right in my wad either!
   
Q2. I've heard all about your supercool particles, but I don't see any.
    WTF is up with that?
    
Q3. I looked in the configuration file to change some stuff, and all
    the messages are screwed up. It says the obituary color is the
    gamepad device, etc. What's wrong with you? Can't you program??
    
Q4. Gaw, get with the times man. Where's jumping and mlook??

Q5. Where'd the boxed message option from BOOM go?

Q6. Can I log the console so I can read those long lists of stuff
    while not playing?
    
Q7. How do I get the MBF dogs to play with? There's no menu option
    for them.
    
Q8. How do I get Eternity to find my IWAD(s) without copying them
    or the program around?
    
Q9. Does Eternity support netplay?

QA. Why does Eternity crash if I use certain WADs or IWADs?

QB. Why does Eternity say "eternity.wad not found?"

QC. I jumped off a tall building on "The Industrial Zone" and then
     the DOOM guy started screaming and I died. Am I crazy or is this
     some kind of bizarre code mutation? Also, why are there feet
     sounds when I land off short ledges rather than an "oof" like
     I'm used to?

QD. I tried to use an old config file or savegame from DOS Eternity
     with Eternity for Windows and it screwed up. What now?
     
QE. Why are several of my keyboard keys broken, including the escape
     key and the enter key for menus?
     
QF. What is the keys.csc file, and can I safely edit it to my liking?

QG. Does Eternity support Legacy skins?

QH. Can I reset the video mode from the command line?

*** System-Specific Questions ***

Q1. I'm not getting any digital sound. How about some help here?

Q2. MIDI is not working. Why might this be?

Q3. I'm getting severe flickering in full-screen mode with my
    GeForce 4 card.

Q4. Can Eternity use my gamepad devices?

Q5. Starting Eternity from a command line is a bummer. Is there
    another, better way to start it?

Q6. Eternity just got *way* slower. What could be the cause?
    
Q7. Why does Eternity bomb to the desktop without any error messages?

Q8. Why does Eternity say "SDL.dll" or "SDL_mixer.dll" not found?

Q9. Does Eternity support dragging and dropping files from the Windows
    shell yet?

*** Miscellaneous ***

Q1. What's the purpose of Eternity in a world so full of source ports?

Q2. What features can we expect to see in the Eternity Engine v3.31?

Q3. Whodunnit?
   
=====================
Questions and Answers
=====================

=====================================================================
Gameplay/General Feature Questions
=====================================================================
=====================================================================
Q1: What are those stupid splashes? They look crazy in my TC/wad/etc
    that wasn't designed for them. Also, the particle gunshots like
    to change color, and this doesn't look right in my wad either!

A1: This is a feature of Eternity called TerrainTypes, which allows the
    engine to keep information about what flats represent what kind of
    terrain -- be it water, lava, swamp muck, or what have you.
    Currently there are two effects controlled by the TerrainTypes
    system -- splashes when things touch down on the ground, and a
    new feature, bullet puff particles change color when you shoot
    special floors and ceilings.
    
    You have two options when playing wads and TCs that might replace
    flats and make TerrainTypes look inappropriate -- first, you can
    disable them on the Options->Eternity Options menu, by setting
    "Terrain effects inactive" to "YES". This'll get rid of them.
    Or, instead, you could use the TerrainEd utility, available at the
    same place you got this engine, to generate a TERTYPES lump
    customized for your own project or for existing wads. Info on how
    to use TerrainEd is included with the utility.

=====================================================================    
Q2. I've heard all about your supercool particles, but I don't see any.
    WTF is up with that?   

A2: The various particle effects can be turned on and off from the
    Options->Video Options->Particle Options menu ^_^

=====================================================================    
Q3. I looked in the configuration file to change some stuff, and all
    the messages are screwed up. It says the obituary color is the
    gamepad device, etc. What's wrong with you? Can't you program??
    
A3. This is a known problem which has been with the code base since
    BOOM. It is harmless except for readability, and even better,
    there's a simple workaround. Just set the very first variable in
    the file, which looks like this:
    
    [0-1(1)] 1 to show help strings about each variable in config file 
    config_help                   1
    
    to zero, then run Eternity and exit. The messages will be gone.
    Set the variable to 1 and run Eternity again, and the messages
    will be fine. Its just a temporary problem caused when things
    get out of sync.

=====================================================================    
Q4. Gaw, get with the times man. Where's jumping and mlook??

A4. While Eternity doesn't have jumping yet due to concerns other than
    how it can affect gameplay, it *does* have full mlook and keylook
    support. look up, look down, and centerview are bound to the
    page up, page down, and end keys by default. mlook can be enabled
    on the Options->Mouse Options menu and through console commands.

=====================================================================    
Q5. Where'd the boxed message option from BOOM go?

A5. This option was removed in SMMU during the heads-up system
    rewrite. It may be reinstated later.

=====================================================================    
Q6. Can I log the console so I can read those long lists of stuff
    while not playing?
    
A6. Yes, this version of Eternity features a new console command,
    dumplog. To use it, just type the following at the console:
    
    dumplog filename
    
    and replace "filename" with the name of a file to write all the
    text to. The text will be appended if the file already exists, 
    so you can use the same log file more than once if you so wish.
    
    Eternity now also includes interactive console logging which
    runs in the background and records all messages as they appear.
    To run an interactive console log, use the openlog command:
    
    openlog filename
    
    Again, replace "filename" with the name of a file in which to
    record the text.
    
    If you wish to close an existing interactive log, use the
    closelog command:
    
    closelog
    
    This will close the file opened earlier by the openlog command.
    If Eternity exits without closelog being run, any open console
    log file will automatically be closed at that time.

=====================================================================    
Q7. How do I get the MBF dogs to play with? There's no menu option
    for them.
    
A7. Start up Eternity using the -dog or -dogs n command-line
    parameters (where n is a number from 1 to 3, depending on how
    many dogs you want). You can also set the numhelpers console
    variable while in the game, but this variable will not take effect 
    until the start of the next level :)
    
    Example:
    
    eternity -dogs 3

=====================================================================    
Q8. How do I get Eternity to find my IWAD(s) without copying them
    or the program around?
    
A8. There are many ways to get Eternity to find an IWAD. The first
    is to simply put it in the directory with it. It will use the
    first recognized IWAD (doom.wad, doom2.wad, doom2f.wad, etc)
    that it finds.
    
    Second, you can set the HOME or DOOMWADDIR environment variables
    via a DOS prompt or in your AUTOEXEC.BAT file. To do this,
    simply type 
    
    set DOOMWADDIR=path
    
    where path is the full path, including drive letter, to your IWAD
    of choice. Note, however, that if the "set" command is not in your 
    AUTOEXEC.BAT file, you will need to launch Eternity from the same
    command prompt where you entered the set command, since environment 
    variables added in a command session disappear when the session is 
    closed.
    
    The final and easiest way is to use the -iwad command-line
    parameter, like so:
    
    eternity -iwad c:\doom\doom.wad
    
    Just provide the full path, again.

=====================================================================
Q9. Does Eternity support netplay? 

A9. Not yet. This is definitely on the slate of things to do, however.

=====================================================================
QA. Why does Eternity crash if I use certain WADs or IWADs?

AA. Many things could conceivably cause Eternity to crash. Among
    those known are the following:
     
     * Some levels which are incorrectly constructed, especially
       those with bad sidedef references, can cause crashes or
       at the least, exit with an error message, *even some* which
       the original DOOM engine tolerated. This is because DOOM,
       given the "luxury" of lax memory protection under its DOS
       extender, was able to commit murder and get away with it.
       Neither DJGPP nor Windows tolerate such bad behavior, so
       Eternity would be unable to emulate these bugs even if
       it wanted to do so. Note that Eternity *can* detect and
       repair some of these bugs automatically, unlike DOOM.
              
     * More than once, people have tried to use an IWAD with
       Eternity which has been converted to zdoom/Hexen format.
       Eternity does not currently support this map format, and
       running levels that use it will crash the game quickly.
       
     * Eternity may also misinterpret features of other source ports,
       so in general, do not run levels with it that are designated
       as being compatible only with other ports. Note that some
       efforts have been made to consolidate features with other
       ports, though -- for instance, particle fountains use the
       same doomednums in both zdoom and Eternity, and thus maps
       using them would have them in both ports.
       
     * Last but not least, there may be an honest-to-goodness bug
       in Eternity. If you can verify a bug to be repeatable and
       find a way to trigger it, please write the author about it
       and send an example level or any instructions if possible.

=====================================================================
QB. Why does Eternity say "eternity.wad not found?"

AB. Eternity has moved all its added resources into an external
    resource wad, eternity.wad -- this file is required to run
    Eternity, and will be loaded automatically before any other 
    wads. Make sure it's in the same directory with any copy of the 
    EXE file, and do *not* add it with -file, as this is
    unnecessary.
     
=====================================================================
QC. I jumped off a tall building on "The Industrial Zone" and then
    the DOOM guy started screaming and I died. Am I crazy or is this
    some kind of bizarre code mutation? Also, why are there feet
    sounds when I land off short ledges rather than an "oof" like
    I'm used to?
     
AC. Eternity features falling damage, which causes the player to
    get hurt and possibly even die when falling off tall ledges. As
    extra bonuses, you also get a wider gradient of floor-hit sounds
    and even a scream when you fall so far you'll die. To disable
    all of these features to play levels not designed for it, just
    go to Options->Eternity Options and set "Falling damage inactive"
    to "YES" -- the engine now behaves exactly as DOOM did with
    respect to falling, even with the "oof" sound all the time.
     
    Note that God mode and Invulnerability Spheres always protect
    you from falling damage, no matter what.
     
=====================================================================
QD. I tried to use an old config file or savegame from DOS Eternity
    with Eternity for Windows and it screwed up. What now?
     
AD. You shouldn't copy over any generated files from DOS Eternity
    or from any older source ports into Eternity for Windows'
    directory. Savegames are not backward-compatible and never
    have been. The old DOS configuration file also does not 
    contain many necessary configuration variables added to
    Windows, and has inappropriate values for others, especially 
    for non-dynamic key bindings.

=====================================================================
QE. Why are several of my keyboard keys broken, including the escape
    key and the enter key for menus?
     
AE. See the above question. You should not import old config files
    into Eternity for Windows' directory, as they have bad values
    for keys and other variables which differ between platforms.
     
=====================================================================
QF. What is the keys.csc file, and can I safely edit it to my liking?

AF. keys.csc is the keybindings console script that is executed
    automatically at startup. It stores all your dynamic keybinding
    settings that you specify in the game. You can also add your
    own bindings to the file, or delete undesired ones, by hand if
    you wish.
     
    For that matter, it's also possible to put other console commands
    besides bindings into keys.csc; however, these commands will not
    be saved back to the file when the game exits, and so they'll
    disappear after the first execution. If you want to have an
    autoexecuted console script, set the cscript_1 and/or cscript_2
    variables in the configuration file to point to command script
    files -- the game will run them at startup right after loading
    the keybindings ^_^
     
    If you want to restore all default keybindings, simply delete
    keys.csc and the game will write out the defaults the next
    time you run it.

=====================================================================
QG. Does Eternity support Legacy skins?

AG. Yes it does. Simply add a skin wad just like any other wad,
    and then you can select it from the Features->Multiplayer->Player 
    Setup menu. Currently, Eternity does not remember your skin
    setting from game to game though, since it cannot easily verify
    that the skin wad has been loaded. This may be improved in
    later versions. If you want to autoload a skin wad, use one
    of the autoloaded wad variables in the configuration file.

=====================================================================
QH. Can I reset the video mode from the command line?

AH. As of Eternity Engine v3.31 public beta 7, the "-v_mode" command-
line parameter can be used to force the video mode to a given value.
These are the valid values for the DOS and Windows versions of
Eternity.

DOS:
 0 = 320x200
 1 = 320x200 pageflipped
 2 = 320x200 VESA
 3 = 640x400
 4 = 640x400 pageflipped

Windows:
 0 = 320x200 windowed
 1 = 320x200 fullscreen
 2 = 320x240 windowed
 3 = 320x240 fullscreen
 4 = 640x400 windowed
 5 = 640x400 fullscreen
 6 = 640x480 windowed
 7 = 640x480 fullscreen
 8 = 800x600 windowed
 9 = 800x600 fullscreen
10 = 1024x768 windowed
11 = 1024x768 fullscreen

Example of usage:

eternity -v_mode 0

This would start up Eternity in 320x200 VGA or 320x200 windowed,
depending on the version being used.

=====================================================================


=====================================================================
System-Specific Questions
=====================================================================
=====================================================================    
Q1. I'm not getting any digital sound. How about some help here?

A1. Eternity uses SDL for, among other things, digital audio. SDL is
    a widely tested and stable portability layer.  The digital sound
    code used in Eternity has been tested fairly well, so if there is
    a problem, it is probably with your system or a conflict between
    programs -- if there are other sound-playing programs open, try
    closing them before playing.

=====================================================================    
Q2. MIDI is not working. Why might this be?

A2. Eternity now uses SDL_mixer to play MIDI. Hardware MIDI support
    is new for this library, so it may still have a few kinks to
    work out. Eternity will always link against the newest release
    version of SDL_mixer, so if you're having problems now, they
    may be fixed in the next release. All the same, please let us
    know if you are having such problems.

=====================================================================
Q3. I'm getting severe flickering in full-screen mode with my
    GeForce 4 card.
     
A3. This is some type of mysterious driver-specific issue. Make
    sure you have upgraded to the latest GeForce 4 drivers. Users
    who had this problem were able to fix it simply by upgrading.

=====================================================================
Q4. Can Eternity use my gamepad devices?

A4. Yes! Eternity v3.31 for Windows includes robust support for
    game input devices. You should be able to use any device
    recognized by Windows that has at least two axes and four buttons.
    You can enable gamepad usage on the Options->Mouse Options menu,
    and you can select a recognized device from a list on the
    Options->Mouse Options->Configure Joystick menu. Note that no
    device is selected by default, so you will need to pick one the
    first time you want to use a gamepad device.

=====================================================================
Q5. Starting Eternity from a command line is a bummer. Is there
    another, better way to start it?

A5. Yes! Version 1.1 of the official Eternity Engine Frontend is now
    available at the Team Eternity website.
    
    Don't forget about response files, too. You can type up to 100
    command line parameters into a text file, separating each with
    white space, and then use it on the command-line like this:
    
    eternity @filename
    
    This is very handy when you have the same parameters to type
    over and over again. Starting with v3.31 beta 3, Eternity now
    supports quoted long file names in response files.
    
    A new alternative is to use a GFS file. See the GFS documentation
    in the Eternity docs pack for detailed information. Mod authors
    are encouraged to distribute GFS'es with their multiple-file
    projects.
    
    As of Eternity Engine v3.31 public beta 4, you can also drag and
    drop WAD, DEH/BEX, EDF, and GFS files onto the Eternity
    executable. See question Q9 below for more information.

=====================================================================
Q6. Eternity just got *way* slower. What could be the cause?

A6. Many things could cause this, but one is that Eternity's zone
    heap could be too small. Eternity uses a fancy thing called a
    zone memory allocator to avoid having to call system memory
    functions during gameplay. Eternity uses a 16 Megabyte heap
    by default.
    
    If the zone heap is exhausted, Eternity will try to revert
    to using system memory for new allocations, including virtual 
    memory. If it is forced to do this, however, there may be a 
    significant performance drop.
    
    To avoid this, try using the -heapsize parameter, like this:
    
    eternity -heapsize 24
    
    The heap size may be set to any value between 8 and 255 MB
    (this upper limit is a Windows limitation, not an Eternity one).
    16 MB is enough memory to play the infamous "nuts.wad" without
    using system or virtual memory.
    
    Other causes for slowdown could be related to Windows. If you
    have a lot of programs running, close them down, and check
    your system resources. If you're running Windows 98 and the
    system is very laggy, try forcing Explorer to shut down and
    restart -- this can sometimes free up to 40% of lost system
    resources :)

=====================================================================
Q7. Why does Eternity bomb to the desktop without any error messages?

A7. This may be an error related to the Windows MCI system, which
    SDL uses to play MIDI. However, it could also be a bug in
    Eternity itself, since some fatal signals aren't handled properly
    for console programs in Windows (division by zero is one such
    error).  If you can get Eternity to consistently bomb out with
    no error message by doing something in particular, please report
    the bug, being as specific as possible, and we'll look into it.
    
    If the bug is not consistent, then it is probably MCI-related, or
    possibly a system-wide stability issue. The only currently known
    solution for this is rebooting and hoping it won't happen again.
    An MCI-related error has not been observed to occur in Eternity
    for several versions now, so it should be rare for this to happen
    unless the system is already unstable (as when a previous
    MCI-using program crashed).

=====================================================================
Q8. Why does Eternity say "SDL.dll" or "SDL_mixer.dll" not found?

A8. Eternity uses the SDL and SDL_mixer libraries for portable
    multimedia support. These two DLLs are included in the Win32
    distribution archive, and should not be deleted unless they
    are already installed elsewhere on your system.

=====================================================================
Q9. Does Eternity support dragging and dropping files from the
    Windows shell yet?
    
A9. Yes! Eternity currently supports drag-and-drop loading of any
    number of WADs and DEH/BEX files, and up to one each of EDF and
    GFS files.
    
    Any file drag-and-dropped onto the executable MUST have the
    appropriate expected extension for its file type. Files without
    a recognized extension will be ignored, and any files with
    inappropriate extensions may cause errors.
    
=====================================================================

=====================================================================
Miscellaneous Questions
=====================================================================
=====================================================================
Q1. What's the purpose of Eternity in a world so full of source ports?

A1. The Eternity Engine aims to provide features that extend the 
    DOOM experience in a way that is as natural and seamless as
    possible. It is one of only a few ports that boasts a DOOM
    compatibility level that is near 100%. New features are all
    optional and can be individually enabled or disabled by the
    player; even old v1.9 demos have a good chance of staying in
    sync, in large part thanks to enhancements shared with prboom.
    The small amount of work it takes to keep the engine compatible
    doesn't keep new features out of the it, either. See the next 
    question for some ideas of what will appear in future versions of 
    the Eternity Engine.

=====================================================================    
Q2. What features can we expect to see in the Eternity Engine v3.31?

A2. These features are on the line-up of TODO's for EE v3.31:

    * Room-over-room    
    * Small Scripting (partially implemented)
    * ExtraData -- extended map data to allow for new effects 
      (partially implemented)
    * Polyobjects -- moving walls ala Hexen
    * Hubs -- still working on fixing these from SMMU
    
    These features will be Windows-only:
    * CD audio support -- DOOM to your favorite tunes
    * Netplay -- this one is likely to be long in coming, though

=====================================================================    
Q3. Whodunnit?

A3. The Eternity Engine is maintained by James "Quasar" Haley and
    Steven "SoM" McGranahan. It is based on the SMMU port by
    Simon "fraggle" Howard, which is based on MBF by Lee Killough.
    MBF was, of course, based on BOOM by TeamTNT.
    
    Julian Aubourg, Joel Murdoch, and Anders strand have provided 
    special programming support. Extra special thanks are due to 
    these guys ^_^
    
    Additionally, Eternity features some code derived from the 
    following source ports, to the authors of which credit is due:
    
    * zdoom       -- Randy Heit
    * DOOM Legacy -- The Legacy Team
    * PrBoom      -- Florian Schulze, Colin Phipps
    
    Eternity uses code from the following libraries/applications. We
    extend thanks to their authors and maintainers.
    
    * SDL         -- Sam Lantinga et al. (http://www.libsdl.org)
    * SDL Mixer   -- Sam Lantinga et al.
    * DJGPP libc  -- DJ Delorie 
    * libConfuse  -- Martin Hedenfalk
    * Small AMX   -- Thiadmer Riemersma (ITB CompuPhase, Inc.)
    
=====================================================================
          The Eternity Engine -- A Team Eternity Production          
                               2004
=====================================================================
