Annotation of doom/windoom.doc, revision 1.1.1.1

1.1       root        1: WinDoom - V0.96
                      2: 
                      3: 14 Mar, 1998
                      4: 
                      5: CONTENTS:
                      6: 
                      7: i. foreword
                      8: 1. What is WinDoom?
                      9: 2. Program requirements
                     10: 3. Setting up WinDoom
                     11: 4. The console
                     12: 5. Changing your controls
                     13: 6. Using hi-res mode
                     14: 7. Playing a network game
                     15: a. Acknowledgments
                     16: 
                     17: ---------------------------------------------------------------------
                     18: 
                     19: i. Foreword - What's new with this version?
                     20: 
                     21: 1.  Fixed bug that kept left alt key from working.
                     22: 
                     23: 2.  Fixed "exit crash" bug.
                     24: 
                     25: 3.  Various memory leaks plugged.
                     26: 
                     27: 4.  Changed bind command to allow for key scancode entry.  This was
                     28:     done solely to allow for foreign keyboard (or Dvorak) owners to
                     29:     customize their controls.  You still can't change the weapons
                     30:     keys nor can you change the console or menu keys.
                     31: 
                     32: NOTE: I cannot stress enough that you MUST have DirectX 5 installed
                     33:       and working on your machine for this program to work.  If you
                     34:       don't have DirectX 5, IT WILL NOT WORK. And no amount of com-
                     35:       plaining to me about it will change that.
                     36: 
                     37: ---------------------------------------------------------------------
                     38: 
                     39: 1. What is WinDoom?
                     40: 
                     41: Thanks go first to id Software for making a great game then releasing
                     42: the source code to it so we could have something else to play with.
                     43: 
                     44: I have changed no gameplay at all.  You CAN use some new cheat codes
                     45: in the console but about all you can do now is get the backpack you
                     46: couldn't get by cheating before.
                     47: 
                     48: WinDoom is my version (so far) of a Win32 port of the Linux Doom
                     49: source code released by id Software.  I have gotten most of the
                     50: features of the original program working but it isn't quite finished
                     51: yet.  It does odd things occasionally.
                     52: 
                     53: Please DO E-Mail me with problems you've had with this especially if
                     54: you can't get it working at all. I already know of most of the
                     55: problems you may encounter and I am already addressing them.  But I
                     56: want feedback about any problems you encounter.  There is a file
                     57: generated in your game directory called windoom.dbg.  It contains
                     58: some data that will probably be helpful to me in debugging whatever
                     59: problem you've encountered. Screenshots may be helpful, too.
                     60: 
                     61: I have several very different systems to test this on and a LAN as
                     62: well but I couldn't possibly duplicate the variety of systems you
                     63: all have. Running it on your systems is the best testing I can get.
                     64: 
                     65: I know this is more like a public Beta test but I did want to share
                     66: what I have done so far, though.
                     67: 
                     68: Also, please don't send me E-Mails asking for features or changes.
                     69: There will be time enough for that after the game actually works
                     70: properly. Please don't ask me to fix bugs in the original game. I'm
                     71: just trying to make sure that changes I've made haven't introduced
                     72: new bugs.
                     73: 
                     74: New revisions will be forthcoming soon.
                     75: 
                     76: Also, when I've got all the original Doom features working and the
                     77: program stabilized, I will release my source code for the program.
                     78: 
                     79: To anyone working on their own Win32 ports of Doom: If you want to
                     80: share programming information then all you have to do is ask. I'll
                     81: tell you whatever I know if it will help.  I AM going to release my
                     82: modified source code when I get this stabilized.
                     83: 
                     84: A few new things have been added along the way.
                     85: 
                     86: 1. A print screen key is now always available by pressing
                     87:    the (Print Screen/Sys Rq) key on your keyboard.  If you
                     88:    aren't playing a game, no message will appear on the
                     89:    screen but a print screen PCX file WILL be generated.
                     90: 
                     91: 2. I have added a console similar to the Quake/Quake II
                     92:    console.  It isn't as fancy and no doubt not as functional
                     93:    as the Quake console but it works and any keyboard command
                     94:    such as the cheats can be entered in the console.  Also,
                     95:    all messages that appear on the screen briefly will be
                     96:    displayed in the console.  The console key is the "`"
                     97:    key.
                     98: 
                     99: 3. As you see above, a CD player is now supported.  A number
                    100:    of features are planned for this (playlists, directory,
                    101:    naming, song naming, etc.)  Trying to play a CD with no
                    102:    CD in the drive will do nothing.  Removing the CD from the
                    103:    drive while playing will result in the MIDI song being
                    104:    restarted.  The CD player will detect if the CD has been
                    105:    changed and start playing on the first music track (if
                    106:    there is one) and will not play if there are no music
                    107:    tracks.
                    108: 
                    109: 4. Midi file playing. Currently a single MIDI file will be played
                    110:    (if it exists) in the game directory. The name of this file is
                    111:    doomsong.mid.  It can be any valid MIDI file.  It will be played
                    112:    ALL the time unless you turn on the CD player.
                    113: 
                    114: 5. There is now an "always_run" key. I got this idea from Chi
                    115:    Hoang and his DOSDoom. The always_run key is the <CAPS LOCK>
                    116:    key and it toggles between on and off.
                    117: 
                    118: 6. There is an "mvert" setting and an "mvert" key to toggle it on
                    119:    and off.  It is persistent (gets saved and restored).
                    120: 
                    121: 7. Keyboard bindings have been added.
                    122: 
                    123: 8. Mouse and joystick bindings have been added.
                    124: 
                    125: 9. The system uses keyboard scancodes exclusively for system
                    126:    controls.  All other values in windoom.ini are true=1 and
                    127:    false=0.  true=on, false=off
                    128: 
                    129: 10.The ability to record, stop and play back demo from the console.
                    130:    This is currently not working properly.  You can try it but it
                    131:    probably won't work right.
                    132: 
                    133: ---------------------------------------------------------------------
                    134: 
                    135: 2. Program Requirements
                    136: 
                    137: This program is a Win32 application and REQUIRES DirectX 5
                    138: (available for NT).  It would not have been possible to do
                    139: what was done with DirectX 3.  DirectX 5 will be supported in
                    140: the 5.0 version of NT. If you have Windows95 and you don't have
                    141: DirectX 5, you can get it here:
                    142: 
                    143: http://www.microsoft.com/msdownload/directx5/directx5.htm
                    144: 
                    145: If you have NT 4.0 and want DirectX 5 you'll have to look around
                    146: for it.  It's there but I don't know a stable place you can
                    147: download it from.
                    148: 
                    149: If you want to run ANYTHING under Windows95 you really should
                    150: have at least 16 Meg of RAM.  32 Meg is MUCH better. NT better
                    151: have 32 to start with.
                    152: 
                    153: You must have a functioning TCP/IP connection to play a
                    154: network game using this program.  Internet play is not stable
                    155: at all and not recommended.
                    156: 
                    157: You CAN play with just the keyboard but both the mouse and
                    158: a joystick (or other game controller) are supported.
                    159: 
                    160: There is a way for people who use NT 4 to run this program.
                    161: There is a version of DirectX 5 for NT 5 floating around the
                    162: Internet.  I found it at www.op3dfx.com on the 15 Jan, 1998
                    163: news page. It appears to be the DirectX 5 from the NT 5 beta.
                    164: I don't know that this is supposed to be distributed but I
                    165: downloaded it and installed it on my NT 4.0 Server and it
                    166: works.
                    167: 
                    168: As far as I can tell, no resolutions below 640x480 are supported
                    169: by the DirectX 5 for NT drivers.
                    170: 
                    171: 
                    172: ---------------------------------------------------------------------
                    173: 
                    174: 3. Setting up WinDoom
                    175: 
                    176: Create a directory and put the WinDoom.exe program in it
                    177: along with the Doom IWAD of your choice  (I've tested this
                    178: with all three of the Doom I wads (doom1.wad, doom.wad and
                    179: doomu.wad) as well as doom2.wad, tnt.wad and plutonia.wad.
                    180: 
                    181: The order of precedence in looking for an IWAD is this:
                    182: 
                    183: doom2.wad    - retail Doom II wad file
                    184: plutonia.wad - Another Doom II IWAD from id
                    185: tnt.wad      - Another Doom II IWAD from id
                    186: doomu.wad    - ultimate Doom I retail wad file
                    187: doom.wad     - Doom I registered shareware wad
                    188: doom1.wad    - Doom I unregistered shareware wad
                    189: 
                    190: When the program is first run, it will create a section in
                    191: the win.ini file for WINDOOM that stores the location of
                    192: the WinDoom program.  If you move the program or change the
                    193: name of the directory in which the program is installed you
                    194: need to update this ini file entry or remove it.
                    195: 
                    196: An ini file will be created (or updated) in the directory
                    197: in which WinDoom is run with the configuration information
                    198: for the program. Modifying this file is currently the only way
                    199: to change some of the mouse/joystick mappings.
                    200: 
                    201: A way to change your keyboard mappings and the values for your
                    202: mouse and joystick has been added to the console in the program.
                    203: 
                    204: Make sure your shortcut, if you create one, has the directory
                    205: where you installed the program as the working directory.  It
                    206: probably won't run otherwise.
                    207: 
                    208: I have not tried some of the original command line options to see
                    209: if they work or not.  I have spent most of my time writing code
                    210: to get the program working.  I will be testing the rest of these soon.
                    211: 
                    212: I have tested the following and know that they work:
                    213: 
                    214: -nomonsters
                    215: -deathmatch
                    216: -altdeath
                    217: -net
                    218: -skill
                    219: -warp
                    220: -episode
                    221: -playdemo
                    222: -timedemo
                    223: -record
                    224: -file
                    225: -width
                    226: -height
                    227: 
                    228: For information on how to use the options other than -net, -width
                    229: and -height please see the official Doom FAQ.
                    230: 
                    231: I don't know of any others that are normally usable.
                    232: 
                    233: 
                    234: ----------------------------------------------------------------
                    235: 
                    236: 4. The console
                    237: 
                    238: This program does not currently support the original music from 
                    239: the game. It is stored in a format called "MUS" and is not
                    240: directly playable by the MCI midi sequencer in Windows.
                    241: 
                    242: In order to still have music in the game, I wrote some routines
                    243: to access and control the cd player that is found in most pc's
                    244: today.
                    245: 
                    246: I made a vain attempt to map the cd controls into unused keys
                    247: in the Doom keyboard but no combination I could think of made
                    248: any sense.  So I created a console where cd commands could be
                    249: entered.
                    250: 
                    251: While I was testing the code for controlling the cd player from
                    252: the console, I remembered what an absolute pain it was to try 
                    253: to enter cheat codes without being able to tell if the keys
                    254: were entered properly.  I decided to allow cheat code entry
                    255: into the console as well so I could see what I was typing.
                    256: 
                    257: I then decided to add NEW cheat codes that were similar to
                    258: the ones I had gotten used to in Quake and Quake II. It sort
                    259: of ballooned from there...
                    260: 
                    261: The console command key is "`".  This key both opens and closes
                    262: the console.  The menu command key <ESC> also closes the console
                    263: and starts the menu.  If the menu is up when you press the console
                    264: command key, the menu will close and the console will open.
                    265: 
                    266: Here is a list of the commands you can now enter on the command
                    267: line of the console:
                    268: 
                    269:    iddqd          - god mode
                    270:    idfa           - full ammo
                    271:    idkfa          - keys full ammo
                    272:    idclev         - change level
                    273:    idchoppers     - chainsaw and invulnerability
                    274:    idclip         - no clipping toggle
                    275:    idspispopd     - no clipping toggle
                    276:    idbeholdi      - invisibility
                    277:    idbeholdv      - invulnerability
                    278:    idbeholds      - strength (berserk pack)
                    279:    idbeholdr      - radiation/environment suit
                    280:    idbeholdl      - light amplification goggles
                    281:    idbeholda      - all map cheat
                    282:    cd on          - starts your cd player (switches from midi)
                    283:    cd off         - stops your cd player (switches to midi)
                    284:    cd pause       - pause/resume cd music toggle
                    285:    cd resume      - pause/resume cd music toggle
                    286:    cd next        - play next song on cd
                    287:    cd +           - play next song on cd
                    288:    cd prev        - play previous song on cd
                    289:    cd -           - play previous song on cd
                    290:    cd XX          - plays song number specified in XX 00 to 99
                    291:    midi pause     - pauses/resumes the midi playback (toggle)
                    292:    midi resume    - pauses/resumes the midi playback (toggle)
                    293:    quit           - quits the game (immediately)
                    294:    god            - enable god mode (degreelessness?) toggle
                    295:    map            - e?m? or map?? (Doom I or Doom II map names)
                    296:    noclip         - no clipping toggle
                    297:    give all       - gives full ammo,armor,health,weapons,keys
                    298:    give ammo      - gives full ammo
                    299:    give armor     - gives full armor
                    300:    give health    - give 100% health
                    301:    give weapons   - gives all weapons
                    302:    give keys      - gives all keys
                    303:    give backpack  - gives ammo backpack
                    304:    always_run X   - toggles always run 0 = off, 1 = on
                    305:    swap_stereo X  - toggles swap left/right 0 = off, 1 = on
                    306:    bind           - binds a value to a cvar
                    307:    record         - records a demo in new demo II format
                    308:    finish         - stops recording a demo II format demo
                    309:    play           - plays back a demo II format demo
                    310:    cmdlist        - lists console commands
                    311: 
                    312:    The map and idclev commands are disabled from the console
                    313:    during a network game. It crashes the machine you do it
                    314:    on and locks up the KEY player's machine.  The other players
                    315:    can exit the game but their systems are VERY slow. (You
                    316:    have to hold the keys longer.)
                    317: 
                    318:    All the original cheat codes work EXACTLY as they did
                    319:    originally.  No changes have been made to those. The
                    320:    new MAP command works similarly to the MAP command in
                    321:    Quake/QuakeII. If you want to select a Doom 1 or Doom
                    322:    II level you type in MAP then the full name of the
                    323:    map you want to load (E1M7 or MAP19).
                    324: 
                    325:    All the cheats are disabled during network games, also.
                    326:    Note: This does not include the game control commands,
                    327:    just the "cheats".
                    328: 
                    329:    A number of other commands are planned for this. Mostly
                    330:    just game variables that you can set. (like always_run)
                    331: 
                    332:    All game input is dead while the console is active, so
                    333:    be warned! The <ESCAPE> key as well as the "`" key will
                    334:    terminate the console.  Any command that you have not
                    335:    pressed <ENTER> to complete will be thrown away.  The
                    336:    menu and console shut each other down when you call
                    337:    them up.  They are mutually exclusive.
                    338: 
                    339: 
                    340: ----------------------------------------------------------------
                    341: 
                    342: 5. Changing your controls
                    343: 
                    344: 
                    345: With the "bind" command on the console, you can now change
                    346: your keyboard mappings from the console.  Additional mappings
                    347: and controls will be added later.
                    348: 
                    349: The bind command works backwards from the Quake bind command.
                    350: You enter the bind command, the cvar you want a keystroke bound
                    351: to followed by the key or the keyname.
                    352: 
                    353: Some keys are not printable and so are accessed through their
                    354: keyname.  Other keys are printable and accessed directly by
                    355: entering the actual key.
                    356: 
                    357: The following are the keyboard control cvars that have been
                    358: implemented so far:
                    359: 
                    360: key_right       - the key to turn right - also used in menu
                    361: key_left        - the key to turn left - also used in menu
                    362: key_up          - the key to move forward - also used in menu
                    363: key_down        - the key to move backward - also used in menu
                    364: key_strafeleft  - key used to slide to the left
                    365: key_straferight - key used to slide to the right
                    366: key_fire        - key used to fire weapons
                    367: key_use         - key used to open doors and flip switches
                    368: key_strafe      - toggle key used to change turn to strafe
                    369: key_speed       - key used to go faster (straight or turning)
                    370: joyb1           - joystick button 1
                    371: joyb2           - joystick button 2
                    372: joyb3           - joystick button 3
                    373: joyb4           - joystick button 4
                    374: mouseb1         - left mouse button
                    375: mouseb2         - right mouse button
                    376: mouseb3         - middle mouse button
                    377: 
                    378: These cvars can be set to any printable character or they
                    379: can be set to any of the following key names:
                    380: 
                    381: NULL        - do nothing
                    382: BACK        - back-space
                    383: ENTER       - normal enter key (may not function properly)
                    384: LCTRL       - left control key
                    385: LSHIFT      - left shift key
                    386: RSHIFT      - right shift key
                    387: LALT        - left alt key
                    388: SPACE       - space bar
                    389: CAPS        - caps lock key
                    390: NUMLOCK     - numlock lock key
                    391: SCROLL      - scroll lock key
                    392: PAD7        - 7/home key on keypad
                    393: PAD8        - 8/up arrow on keypad
                    394: PAD9        - 9/page up on keypad
                    395: PAD-        - the "-" key on keypad
                    396: PAD4        - 4/left arrow on keypad
                    397: PAD5        - 5 key on keypad
                    398: PAD6        - 6/right arrow on keypad
                    399: PAD+        - the "+" key on keypad
                    400: PAD1        - 1/end key on keypad
                    401: PAD2        - 2/down arrow on keypad
                    402: PAD3        - 3/page down on keypad
                    403: PAD0        - 0/insert on keypad
                    404: PAD.        - ./delete on keypad
                    405: PADENTER    - enter key on keypad
                    406: RCTRL       - right control key
                    407: PAD/        - the "/" key on keypad
                    408: RALT        - right alt key
                    409: HOME        - home key (grey)
                    410: UP          - up key (grey)
                    411: PAGEUP      - page up (grey)
                    412: LEFT        - left arrow (grey)
                    413: RIGHT       - right arrow (grey)
                    414: END         - end key (grey)
                    415: DOWN        - down key (grey)
                    416: PAGEDOWN    - page down (grey)
                    417: INSERT      - insert key (grey)
                    418: DELETE      - delete key (grey)
                    419: 
                    420: The bind command currently works backward from the bind command
                    421: in Quake.  The Quake bind command binds commands to keys.  This
                    422: bind command binds keys to commands.  A subtle but important
                    423: difference. (and one that may change)
                    424: 
                    425: Doom was designed with only a few customizable commands. The
                    426: rest are set and unchangable.  Quake was designed with a very
                    427: different idea about how the controls should work.
                    428: 
                    429: Doom may, at a later date, be converted to use the type of
                    430: command control that Quake uses.  For now I have stayed with
                    431: the original command implementation.
                    432: 
                    433: The commands in Doom are referred to as cvars.
                    434: 
                    435: The bind command syntax works like this:
                    436: 
                    437: BIND KEY_USE SPACE
                    438: 
                    439: Which will bind the space bar to the use cvar. You will get a
                    440: message if the bind command is successful telling you that the
                    441: cvar is bound to the key you specified like this:
                    442: 
                    443: CMD KEY_USE BOUND TO SCANCODE 57
                    444: 
                    445: In this case the space bar has a keyboard scan code of 57.
                    446: 
                    447: If the keyboard command you are trying to bind to a command
                    448: cvar does not exist, you will get this error message:
                    449: 
                    450: BIND ERROR: INVALID KEY VALUE
                    451: 
                    452: If the keyboard command cvar you are trying to bind does
                    453: not exist, you will get this error message:
                    454: 
                    455: BIND ERROR: INVALID CVAR
                    456: 
                    457: There is also another type of command you can issue at the
                    458: console which is not listed above because it is used to
                    459: set the value of some game control cvars.
                    460: 
                    461: Control cvars are not the same as command cvars.  Command
                    462: cvars are used to generate program input.  Control cvars
                    463: are used to control the way the program behaves.
                    464: 
                    465: The currently defined control cvars are:
                    466: 
                    467: always_run     - you always run in the game
                    468: swap_stereo    - reverses stereo sound "panning"
                    469: usemouse       - is mouse input available
                    470: mousebfire     - which mouse button is used to "fire"
                    471: mousebstrafe   - which mouse button toggles "strafe"
                    472: mousebforward  - which mouse button moves you forward
                    473: usejoystick    - is joystick input available
                    474: joybfire       - which joystick button is used to "fire"
                    475: joybstrafe     - which joystick button toggles "strafe"
                    476: joybuse        - which joystick button opens doors/flips switches
                    477: joybspeed      - which joystick button makes you run
                    478: mvert          - 0 = mouse normal, 1 = mouse left/right only
                    479: 
                    480: The syntax for using these controls is simple. You enter the
                    481: name of the cvar and the value you wish to assign to it like
                    482: this:
                    483: 
                    484: always_run 0
                    485: 
                    486: If the cvar is valid and the value is within the acceptable
                    487: limits, you will get a message like this:
                    488: 
                    489: always_run SET TO 0
                    490: 
                    491: If you enter an invalid cvar name, you will get this error
                    492: message:
                    493: 
                    494: ERROR: INVALID CVAR
                    495: 
                    496: If you enter a valid cvar name but enter an invalid value for
                    497: it, you will get this error message:
                    498: 
                    499: ERROR: INVALID VALUE
                    500: 
                    501: The usemouse and usejoystick cvars tell the program whether
                    502: you want to use mouse and/or joystick input if either or both
                    503: are available.
                    504: 
                    505: The value of 0 for either of these turns off the support for
                    506: that device.  A value of 1 turns it back on.
                    507: 
                    508: The button numbers for the mouse and joystick start at 0 rather
                    509: than 1. So a two button mouse has buttons 0 and 1. The left and
                    510: right mouse buttons respectively. A joystick with two buttons
                    511: also has buttons 0 and 1.  Which button is which usually depends
                    512: on the joystick but the trigger is usually button 0 while the
                    513: the other buttons are numbered starting at 1.  Some experimen-
                    514: tation may be required before you get the buttons to work the
                    515: way you expect them to.
                    516: 
                    517: Remember that usemouse must be set to 1 to be able to use a
                    518: mouse and usejoystick must be set to 1 to be able to use a
                    519: joystick with the program.
                    520: 
                    521: The functions defined in the cvars list are ALL the functions
                    522: that could ever be assigned to mouse and joystick controls in
                    523: Doom.  No other functions have ever been possible.
                    524: 
                    525: The changes you make to your controls with this are immediate
                    526: and persistent. (meaning that they are saved in the windoom.ini
                    527: file and are used the next time you start the WinDoom)
                    528: 
                    529: 
                    530: ----------------------------------------------------------------
                    531: 
                    532: 6. Using hi-res mode
                    533: 
                    534: 
                    535: Part of the reason for porting this code to Win32 was to be
                    536: able to use high resolution video modes.
                    537: 
                    538: This program supports all video 8 bit (256) color modes that are
                    539: available with the DirectDraw drivers on your computer.  Some are
                    540: not recommended.  Do NOT try to use video modes where the height
                    541: value is greater than the width value. (i.e. 320x400)  You will
                    542: NOT be happy with the result and the program will probably die.
                    543: 
                    544: In order to know what video modes are available to you, you can
                    545: look in the DirectX applet in your control panel or you can run
                    546: the program once and look at the contents of the windoom.dbg
                    547: file created in the directory where you installed the program.
                    548: 
                    549: Once you have run WinDoom a video mode list will be written to
                    550: the windoom.dbg file.  You can pick a mode from this list as
                    551: long as the height does not exceed the width and the color bits
                    552: value is 8.
                    553: 
                    554: I have had some machines not give a picture when running in some
                    555: of the high resolution modes even though the program was running.
                    556: I could press escape, down, enter and "y" to exit the program
                    557: but I never saw any output from the game.  I don't know what
                    558: causes this.  I am investigating it.  If you have this problem
                    559: please notify me and tell me what video setup you have.
                    560: 
                    561: The syntax for high the resolution modes is:
                    562: 
                    563: -width xxxx -height yyy
                    564: 
                    565: where the xxxx is the width you want to use (like 320) and the
                    566: yyy is the height you want to use (like 240).  So to start
                    567: WinDoom and run the program at 640x480 resolution, you would
                    568: put the following parameters on the command line of your WinDoom
                    569: shortcut:
                    570: 
                    571: -width 640 -height 480
                    572: 
                    573: You can access the command line for your shortcut by right
                    574: clicking the mouse on the shortcut then selecting the properties
                    575: option then clicking on the properties tab in the dialog box.
                    576: 
                    577: 
                    578: DISCLAIMER
                    579: 
                    580: I make absolutely NO warrantees of any kind for this
                    581: program.  I am not responsible for any consequences
                    582: of anyone using this program.
                    583: 
                    584: id Software owns the rights to Doom and to the source
                    585: code they distributed.  This program was compiled from
                    586: source code to that game that was modified by me. So
                    587: don't bug id Software if you've got a problem with
                    588: this program.  I'm the one who screwed up. Tell me.
                    589: 
                    590: 
                    591: ---------------------------------------------------------------------
                    592: 
                    593: 7. Playing a network game
                    594: 
                    595: Okay, this is little different than a DOS Doom network game.
                    596: It's just like the Linux parameters, though.
                    597: 
                    598: What you want to do is create a shortcut to your game and
                    599: then change the parameters of your shortcut to include the
                    600: network commands on the command line.
                    601: 
                    602: The parameter to start a network game is "-net" (without the
                    603: quotes).  You then follow the -net command with the player
                    604: number your machine is going to be (1 to 4) and the IP
                    605: addresses or hostnames of the OTHER systems you will be
                    606: playing with. The IP addresses MUST be preceded by a period
                    607: ".". If you leave off the leading period, the game will
                    608: think that the IP address is a hostname and try to resolve
                    609: it into an IP address (and die on you).
                    610: 
                    611: Sample command lines for two players would look like this:
                    612: 
                    613: machine 1: (hostname: rimmer IP address: 192.168.1.5)
                    614: windoom -net 1 holly -deathmatch -nomonsters
                    615: OR
                    616: windoom -net 1 .192.168.1.4 -deathmatch -nomonsters
                    617: 
                    618: machine 2: (hostname: holly IP address: 192.168.1.4)
                    619: windoom -net 2 rimmer -deathmatch -nomonsters
                    620: OR
                    621: windoom -net 2 .192.168.1.5 -deathmatch -nomonsters
                    622: 
                    623: In order to use hostnames rather than IP addresses you
                    624: must either have DNS setup or have a valid hosts file.
                    625: 
                    626: If you add a third or fourth machine to the game you need
                    627: to add the IP addresses of the OTHER machines to the
                    628: command line on each machine. You do not put your own
                    629: machine's IP address on the command line.  You also
                    630: do not put how many machines are in the game after the
                    631: -net command.  Only which player, out of the 4, you are.
                    632: 
                    633: The player numbers must be contiguous.  You can't have
                    634: players 1,2 and 4.  Also, one player MUST be player 1.
                    635: Player 1 is the KEY player and that machine coordinates
                    636: all the other systems.
                    637: 
                    638: The number of players in the game is determined by how
                    639: many IP addresses you put on the command line plus your
                    640: machine.
                    641: 
                    642: The command line on the KEY player's machine in a four
                    643: player game might look like this:
                    644: 
                    645: windoom -net 1 .192.168.1.3 .192.168.1.4 .192.168.1.5 -deathmatch -nomonsters
                    646: OR
                    647: windoom -net 1 cat holly rimmer -deathmatch -nomonsters
                    648: 
                    649: The other player's command lines in the same game might
                    650: look like this:
                    651: 
                    652: windoom -net 2 lister holly rimmer -deathmatch -nomonsters
                    653: OR
                    654: windoom -net 2 .192.168.1.2 .192.168.1.4 .192.168.1.5 -deathmatch -nomonsters
                    655: 
                    656: windoom -net 3 lister cat rimmer -deathmatch -nomonsters
                    657: OR
                    658: windoom -net 3 .192.168.1.2 .192.168.1.3 .192.168.1.5 -deathmatch -nomonsters
                    659: 
                    660: windoom -net 4 lister cat holly -deathmatch -nomonsters
                    661: OR
                    662: windoom -net 4 .192.168.1.2 .192.168.1.3 .192.168.1.4 -deathmatch -nomonsters
                    663: 
                    664: If you start a network game and the program appears to be
                    665: "hung" (black screen only), press and hold the escape
                    666: key for a few seconds.  The program will terminate. It
                    667: generates an error when shutting down but it doesn't
                    668: affect game play.  I should have that error figured out
                    669: soon.
                    670: 
                    671: I DO NOT know if the UDP datagrams used are robust enough
                    672: to allow this to be played over the internet.  My assumption
                    673: is that it would be but I don't know. I haven't tried it.
                    674: 
                    675: I have started up a four player game on my network and
                    676: played at all four stations. Response was good and play
                    677: appeared to be smooth.
                    678: 
                    679: I'd be interested to know if anyone is able to play this
                    680: over the Internet with all the problems that entails. I can't
                    681: because of my router.
                    682: 
                    683: ---------------------------------------------------------------------
                    684: 
                    685: a. Acknowledgements
                    686: 
                    687: Thanks to all of you who have downloaded the program (I'm not
                    688: calling it a game. The game part comes from id!).  Your feedback
                    689: has been very helpful and has made this a better program.
                    690: 
                    691: And to those of you who have had problems.  I thank you for
                    692: your patience while I worked out the bugs you've reported.
                    693: 
                    694: Thanks again to id Software for making Doom.
                    695: 
                    696: Thanks to Chi Hoang, Andy Bay, and Bernd Kreimeier for the
                    697: programming ideas.
                    698: 
                    699: Thanks to the other members of Project Doom for their support
                    700: and interest.
                    701: 
                    702: Thanks to John Carmack, John Cash, Michael Abrash, Brian Hook
                    703: for letting me peek over your shoulder (figuratively speaking)
                    704: occasionally.  It's been very instructive.
                    705: 
                    706: 
                    707: Microsoft(tm)(c) 1975-1998, Microsoft, Inc., All Rights Reserved.
                    708: Quake(R)(c) 1996, id Software, Inc. All Rights Reserved.
                    709: Quake II(R)(c)1997, id Software, Inc. All Rights Reserved.
                    710: DOOM(R)(c) 1993, id Software, Inc. All Rights Reserved.
                    711: DOOM(R) and the DOOM image are registered trademarks of
                    712: id Software, Inc.
                    713: 
                    714: ---------------------------------------------------------------------
                    715: 
                    716: WARNINGS!
                    717: 
                    718: This program is by no means ready for prime time but it does work
                    719: mostly.  The original music was a large part of Doom for some of
                    720: us and this game isn't complete without it. It IS being worked on.
                    721: It may not be possible, however, to play against other versions of
                    722: Doom with this code.  I DO have the specifications for the IPX
                    723: protocol used by the original Doom and I will attempt to make that
                    724: work as well.
                    725: 
                    726: Supporting DOS Doom in network games is, therefore, doubtful but
                    727: it may happen.  However if Chi and I can maintain the same message
                    728: data for the networking, you should be able to play network games
                    729: between the two.
                    730: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.