.TH EDUKE32 "6" "May 2009" "EDuke32 1.5.0devel 20090313" "User Commands"
.SH NAME
EDuke32 \- Enhanced Duke Nukem 3D Build engine
.SH SYNOPSIS
.B eduke32
\fI[options]\fR \fI[files]\fR
.SH DESCRIPTION
EDuke32 is a fork of the JFDuke3D port of Duke Nukem 3D (aka Duke3D),
merging it with EDuke to provide many new features for mod authors.
.PP
For normal single\-player gameplay, \fBeduke32\fR will usually be run with no
command\-line options. This will display a graphical interface
allowing the user to choose the game and options.
.SH OPTIONS
\fBeduke32\fR is sensitive to spaces between command\-line options
and their arguments. Use the spacing shown here, e.g. \fI\-l2\fR,
not \fI\-l 2\fR. Generally speaking, single\-character options may
not have a space, while multiple character options (e.g. \-cfg)
require a space.
.PP
Options may not be bundled (\fI\-rc1\fR is invalid, use \fI\-r \-c1\fR).
Options are case\-insensitive (\fI\-d\fR and
\fI\-D\fR do the same thing, e.g.)
.PP
Options marked with \fI[*]\fR are disabled when playing the shareware
version of Duke Nukem 3D.
.TP
\fB\-?\fR, \fB\-help\fR
Show the list of command line options.
.TP
\fB\-cfg\fR \fI[file.cfg]\fR
Use an alternate configuration file
.TP
\fB\-c\fR\fI#\fR
Use multiplayer mode #, where 1 = Dukematch, 2 = Coop, 3 = Dukematch (no spawn)
.TP
\fB\-d\fR\fI[file.dmo]\fR
Play a demo. By default, \fBeduke32\fR looks for \fIdemo1.dmo\fR,
\fIdemo2.dmo\fR, etc. in the \fB~/.eduke32\fR directory, and plays
them in order if they're found.
.TP
\fB\-g\fR\fI[file.grp]\fR
Use an extra group file
.TP
\fB\-h\fR\fI[file.def]\fR
Use an alternate def
.TP
\fB\-j\fR\fI[dir]\fR
Adds a directory to EDuke32's search list
.TP
\fB\-l\fR\fI#\fR
Warp to level #, see \-v
.TP
\fB\-map\fR \fI[file.map]\fR
\fI[*]\fR Loads a map
.TP
\fB\-m\fR
Disable monsters
.TP
\fB\-nam\fR
Run in NAM\-compatible mode
.TP
\fB\-ww2gi\fR
Run in WW2GI\-compatible mode
.TP
\fB\-net\fR, \fB\-n\fR, \fB\-p\fR
Networked multiplayer options (see \fBNETWORK PLAY\fR, below)
.TP
\fB\-r\fR
Record demo. The output file will be \fB~/.eduke32/demo1.dmo\fR
(or demo2.dmo if demo1.dmo already exists, or demo3.dmo if 1 and
2 both exist). Unfortunately, there's no way to specify the filename
to record to, and no way to find out from eduke32's log file or
standard output/error messages. Try "ls -t ~/.eduke32/*.dmo | head -1".
.TP
\fB\-s\fR\fI#\fR
Set skill level (1\-4)
.TP
\fB\-setup\fR, \fB\-nosetup\fR
Enables/disables startup window
.TP
\fB\-t\fR\fI#\fR
Set respawn mode: 1 = Monsters, 2 = Items, 3 = Inventory, x = All
.TP
\fB\-usecwd\fR
Read game data and configuration file from working directory
.TP
\fB\-u\fR\fI#########\fR
User's favorite weapon order (default: 3425689071)
.TP
\fB\-v\fR\fI#\fR
\fI[*]\fR Warp to volume #, see \-l
.TP
\fB\-x\fR\fI[game.con]\fR
Load custom CON script
.TP
\fB\-\fR\fI#\fR
Load and run a game from slot # (0\-9)
.SS Debug Options
The following options are considered debugging options, but may be
useful for general play.
.TP
\fB\-a\fR
Use fake player AI (fake multiplayer only; \fB\-q\fR required)
[yes, this means eduke32 has bots]
.TP
\fB\-cachesize\fR \fI#\fR
Sets cache size, in Kb (default: 32768)
.TP
\fB\-f\fR\fI#\fR
Send fewer packets in multiplayer (1, 2, 4) (deprecated)
.TP
\fB\-game_dir\fR \fI[dir]\fR
Duke3d_w32 compatibility option, see -j
.TP
\fB\-gamegrp\fR
Selects which file to use as main grp
.TP
\fB\-i\fI#\fR
Use networking mode (1/0) [appears to be the same as \fB\-n\fR?]
.TP
\fB\-name\fR \fI[name]\fR
Player name in multiplay
.TP
\fB\-nD\fR
Dump default gamevars to gamevars.txt
.TP
\fB\-noautoload\fR
Disable loading content from autoload dir [e.g. to disable
the High Resolution Pack]
.TP
\fB\-nologo\fR
Skip the logo animation
.TP
\fB\-ns\fR
Disable sound
.TP
\fB\-nm\fR
Disable music
.TP
\fB\-q\fR\fI#\fR
Fake multiplayer with # (2-8) players (with \fB\-a\fR, the other
players are "bots"; without it, they stand there like punching bags).
.TP
\fB\-rmnet\fR
Use network config file (OBSOLETE, see -net)
.TP
\fB\-stun\fR
Use UDP hole punching for multiplayer connections
.TP
\fB\-unstable\fR
Force EDuke32 to execute unsafe CON commands (and crash)
.TP
\fB\-w\fR
Show coordinates
.TP
\fB\-z\fR\fI#\fR
Enable line-by-line CON compile debugging at level #
.TP
\fB\-condebug\fR \fI#\fR
Equivalent to \fB\-z1\fR
.SH NETWORK PLAY
Multiplayer games are started via command-line parameters passed to
\fBeduke32\fR This is a short guide to getting a multiplayer game running
between these three hypothetical computers:
.PP
.nf
Host name   IP address
faye        192.168.1.2
asuka       192.168.1.5
kaoru       192.168.1.6
.fi
.PP
Keep in mind that the networking features are still being refined and
there are certain issues and caveats to be aware of when using it. The
basic syntax of the network command line is like so:
.PP
\fBeduke32\fR \fI(normal game parameters)\fR \fB\-net\fR \fI(network parameters)\fR
.SS Network parameters
.TP
\fB\-n\fR\fIx\fR:\fIy\fR
Game comm type. x = 0 for master/slave or 1 for peer-to-peer.
If unspecified, y defaults to 2. For more than two players in a
master-slave game, you have to indicate the number on the master. eg:
\-n0 or \-n0:4
.TP
\fB\-p\fR\fIx\fR
Overrides the default port (23513) with x being the new port value.
.TP
\fBaddress:port\fR
An address of a machine. See the items below for more information.
.SS Master/Slave mode
This mode is the easiest mode for use with Internet play since it requires
only the address of the master of the game (the person hosting the game)
be specified by each slave who joins. Here are example command lines each
machine must run to join the game hosted by the machine named 'asuka':
.PP
\fIuser@asuka$\fR eduke32 \-net \-n0:3
.br
\fIuser@faye$\fR eduke32 \-net \-n0 192.168.1.5
.br
\fIuser@kaoru$\fR eduke32 \-net \-n0 192.168.1.5
.SS Peer-to-peer mode
This mode is often useful for playing on a LAN where it is easier to
coordinate and organise the order of peers in the game. This mode will
become simpler to set up in the future but for now this is how to do
it. Peer-to-peer mode requires each machine specify the addresses of
each other machine in the game in the same order, but indicating its
own position in the sequence with the \-n1 option.
.PP
\fIuser@asuka$\fR eduke32 \-net \-n1 192.168.1.2 192.168.1.6
.br
\fIuser@faye$\fR eduke32 \-net 192.168.1.5 \-n1 192.168.1.6
.br
\fIuser@kaoru$\fR eduke32 \-net 192.168.1.5 192.168.1.2 \-n1
.SS Addresses and ports
The networking code is capable of resolving
DNS names to their corresponding addresses, so if your network
is configured with such services, instead of having to specify raw IP
addresses, you can give the computer's DNS host name. (Actually,
the standard system resolver is used, so things like \fB/etc/hosts\fR
or NIS should work fine, as well).
.PP
The default port the game communicates on is 23513. Some users may find it
necessary to set up a forward through their Internet firewall in order to
get games working when playing across the Internet. You can override the
default port via the \-p??? switch where ??? is the new port number. If
a master is running a game on a port other than the default, the slaves
will have to specify the alternative port with address:port notation,
eg. 192.168.1.5:20000
.SH FILES
.TP
\fBduke3d.grp\fR
The primary game data file, containing all the game graphics, art, sound,
music, levels, etc. \fI*.grp\fR files will be searched for in both
\fB/usr/libexec/eduke32/eduke32\fR and \fB~/.eduke32\fR. The startup menu
offers the user a choice of games under the "Game" tab, if multiple .grp
files are found. .grp files are checksummed; if yours doesn't appear
in the menu, it's probably not recognized due to an invalid checksum
(either the file is damaged, or it came from a pirated/hacked/modified
copy of the game).
.TP
\fB/usr/games/eduke32\fR
Shell script wrapper, to make the eduke32 binary appear to work more
like a standard Linux program.
.TP
\fB/usr/libexec/eduke32/eduke32\fR
The actual game binary. Called by the shell script wrapper.
.TP
\fB/usr/share/games/eduke32\fR
System\-wide game data. The High Resolution Pack is normally installed
in \fB/usr/share/games/eduke32/autoload/duke3d.grp/\fR. The last
directory name must match the .grp filename.
.TP
\fB~/.eduke32\fR
Per\-user game data, config files, savegames, and logs.
.SS ~/.eduke32 Contents
.TP
\fBeduke32.cfg\fR
Main config file. Normally not edited directly; use the in\-game
menus instead.
.TP
\fBeduke32_binds.cfg\fR
Key bindings; created by the in\-game setup menu.
.TP
\fBtextures\fR, \fBtextures.cache\fR
The texture cache.
.TP
\fBegam\fR\fI#\fR\fB.sav\fR
Saved games. \fI#\fR is a number between 0 and 9.
.SH LIMITATIONS
Because of its DOS/Windows heritage, the \fBeduke32\fR binary expects to
find its config files, savegames, etc. in the current directory from
which it was run (in fact, it expects to be able to write to the
current directory). To make it behave in a more UNIX\-like way, the actual
binary is called by a wrapper script, which creates and chdirs to a \fB~/.eduke32/\fR
directory, and runs the real binary.
This means that any options that take filenames (such as \fB\-map\fR
or \fB\-cfg\fR) treat them as relative paths from the \fB~/.eduke32/\fR
directory, \fBnot\fR the directory from which the wrapper script was
called.
.PP
In addition, most of the options that take filenames don't seem to
accept anything but a simple filename with no absolute or relative path
components. This means that e.g. demo files to be played back with
the \fB\-d\fR option \fImust\fR reside in the \fB~/.eduke32/\fR
directory.
.PP
It's also worth mentioning here that the game will not abort in case of
errors in command\-line syntax (e.g. nonexistent option, or extra
space between options and argument) or semantics (e.g. trying to warp
to non\-existent level with \-l). If you're trying to use
any of the options described here and they don't seem to work, check
your typing: many typos won't even cause a warning to be printed in
the game's debugging output.
.SH AUTHORS
The Build engine was originally written by Ken Silverman
.PP
EDuke32 includes code by many authors, including Richard Gobeille
and Jonathan Fowler.
.PP
Duke Nukem 3D is copyrighted by 3DRealms, Inc.
.PP
This man page was written by B. Watson, for the SlackBuilds.org project.