.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.