https://wiki.eduke32.com/w/api.php?action=feedcontributions&user=TX&feedformat=atomEDukeWiki - User contributions [en]2024-03-29T12:20:46ZUser contributionsMediaWiki 1.42.0-alphahttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Linux&diff=14752Building EDuke32 on Linux2022-06-03T02:45:09Z<p>TX: /* Distro-Specific Installation */</p>
<hr />
<div>{{Distribution intro}}<br />
<br />
= Compiling From Source =<br />
<br />
== Installation Notes ==<br />
* You need an actual copy of Duke Nukem 3D. See [[Installation and configuration]].<br />
* 3D acceleration drivers (recommended). NVIDIA has classically had the best Linux drivers.<br />
* A MIDI device or player for the soundtrack (optional). By default, the game uses TinySoundFont for loading sound fonts, and Nuked OPL3 for OPL emulation. It's possible to use an external MIDI device or player for Duke Nukem 3D via an ALSA MIDI port.<br />
<br />
== Getting source files ==<br />
<br />
:''See [[Acquiring the EDuke32 Source Code]].''<br />
<br />
== Prerequisites for the build ==<br />
EDuke32 requires some development files installed before you can properly build.<br />
<br />
===Packages===<br />
<br />
* Basic dev environment (GCC >= 6.1, GNU make, etc)<br />
* SDL2 >= 2.0 (SDL >= 1.2.10 also supported with SDL_TARGET=1)<br />
<br />
====Optional Packages====<br />
<br />
* NASM (recommended for i686/32-bit compilation to speed up the 8-bit classic software renderer in some cases)<br />
* libGL (required for OpenGL renderers)<br />
* libgtk2.0 >= 2.8.0 (required for the startup window)<br />
* libFLAC >= 1.2.1 (required for lossless music packs)<br />
* libvpx >= 0.9.0 (required for intro videos and cutscenes in some user-created modifications)<br />
<br />
===Distro-Specific Installation===<br />
<br />
====On Debian / Ubuntu====<br />
{| class="wikitable"<br />
|<code>sudo apt-get install build-essential nasm libgl1-mesa-dev libsdl2-dev flac libflac-dev libvpx-dev libgtk2.0-dev freepats</code><br />
|}<br />
<br />
====On Fedora 22-25====<br />
{| class="wikitable"<br />
|<code>sudo dnf groupinstall "Development Tools"</code><br />
|}<br />
{| class="wikitable"<br />
|<code>sudo dnf install g++ nasm mesa-libGL-devel SDL2-devel alsa-lib-devel libvpx-devel gtk2-devel flac flac-devel</code><br />
|}<br />
Freepats is not packaged in Fedora, you must download and install it by yourself if desired. See also the "timidity-patch-freepats" package on others RPM based distros.<br />
<br />
== Build EDuke32 ==<br />
In a terminal window move to the EDuke32 sources folder and type <code>make</code>.<br />
<br />
=== Build options ===<br />
It is possible to define some options during the build. Just add them before or after the 'make' command.<br />
<br />
Example: <code>make RELEASE=0</code><br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Various options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|PRETTY_OUTPUT||Use colored output.||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Engine options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|USE_OPENGL||Enable basic OpenGL Polymost renderer.||1<br />
|-<br />
|POLYMER||Enable modern Polymer renderer for great justice.||1<br />
|-<br />
|NOASM||Disable the use of the ASM code for the classic renderer. Should be enabled on 32-bit [http://en.wikipedia.org/wiki/Pentium_compatible_processor Pentium compatible processors] only.||0 (ASM is disabled for x86_64 automatically because the ASM is 32-bit.)<br />
|-<br />
|HAVE_GTK2||Enable run-time linkage to GTK+.||1<br />
|-<br />
|STARTUP_WINDOW||Enable the startup window.||1<br />
|-<br />
|USE_LIBVPX||VP8 video codec used as an alternative to the ANM file format (only works if compiled with the OpenGL support).||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Debugging and Build options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|CLANG||Use the Clang compiler instead of the default GCC.||0<br />
|-<br />
|RELEASE||No debugging.||1<br />
|-<br />
|FORCEDEBUG||Include debug symbols even when generating release code.<br/>Additionally, with RELEASE=0, the following arrays are allocated statically: spriteext, spritesmooth, sector, wall, sprite, tsprite, while necessarily disabling the clipshape feature (because it relies on setting sector/wall to different malloc'd block temporarily). Really only useful with CC=clang.||0<br />
|-<br />
|KRANDDEBUG||Include logging of krand() calls for debugging the demo system.||0<br />
|-<br />
|MICROPROFILE||Include a profiler that is connected to the CON VM. Provides statistics on how much processing time different CON events took in a specific time interval. To use it, launch the game and open a browser to the address "localhost:1338". This will display a snapshot of the last N milliseconds of measurements that were taken just before the page was requested. See also: https://github.com/zeux/microprofile ||0<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Optimization options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|OPTLEVEL||GCC optimization strategy. Values above 2 can cause crashes.||2<br />
|-<br />
|LTO||Enable link-time optimization, for GCC 4.5 and up.||1<br />
|-<br />
|OPTOPT||Define options specific to the CPU architecture.||empty (except for i686)<br />
|-<br />
|CUSTOMOPT||Custom options or optimizations, parameters defined here, are sent to both compiler and linker.||empty<br />
|-<br />
|}<br />
<br />
== Confirm successful compile ==<br />
These files should now be present in the EDuke32 directory:<br />
* eduke32, the binary to launch the game.<br />
* mapster32, the binary to launch the maps editor.<br />
<br />
= Run the game! =<br />
You need to have the original Duke Nukem 3D files and the newly created EDuke32 executables in the same place. So, you could create a new folder (example eduke32_linux) and copy the original game files and the newly created EDuke32 executables there.<br />
<br />
To run the game open up a terminal window, move to the proper directory and type :<br />
<br />
<pre>./eduke32</pre><br />
* To use the [http://hrp.duke4.net Polymost High Resolution Pack] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp duke3d_hrp.zip polymost_hrp_update-*.zip</pre><br />
<br />
* To use the [http://hrp.duke4.net Polymer HRP] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp polymer_hrp.zip polymer_upd.zip</pre><br />
Note that ''polymer_upd.zip'' may not be available. It is also possbile to add additional packs such as remade music and Z-Pack.<br />
<br />
* Using the autoload folder :<br />
Copy mods or HRP files in the ''$HOME/.eduke32/autoload'' folder and it will be automaticaly loaded without additional parameters.<br />
<br />
= Installing EDuke32 globally =<br />
<br />
== Why ==<br />
Installing EDuke32 as an application that you could run anywhere brings some useful advantages and is surprisingly easy to do.<br />
<br />
EDuke32 will use the directory you are currently in as the directory to work in, as well as ~/.config/eduke32 (/home/<username>/.config/eduke32). This means that you could have a directory, copy a Duke Nukem TC (or mod) in there, cd to that directory and run the global EDuke32 binary without having to make even more copies of the same EDuke32 binaries. EDuke32 will adapt to use the GAME/USER.CON files it finds in the CURRENT directory.<br />
<br />
== How ==<br />
All you'll have to do to get EDuke32 to run from anywhere is copy the eduke32 and mapster32 binaries to /usr/local/bin. After doing this, copy the ''duke3d.grp'' file to /usr/local/share/games/eduke32 or ~/.config/eduke32 (it's hidden, so try to cd to it or show hidden files). After this you'll be able to run EDuke32 from any directory on your hard disk!<br />
<br />
= Notes =<br />
== Lowercase/Uppercase problems ==<br />
<!-- '''Shareware'''<br />
If you are using the Shareware files located on the 3D Realms website, after you build and combine all the files into one folder and try to run the game you will get an error about the TABLES.DAT file. To correct the error simply rename the DUKE3D.GRP to all lowercase letter. After that the game should run. This isn't necessary anymore --><br />
<br />
'''Maps with extra resources'''<br />
Some maps that include extra resources might have trouble finding these new files (for example, an older version of Duke Plus won't be able to find Step#.wav and Grate#.wav sounds). The EDuke32 log will output a "file not found" error every time this happens. To fix this, change the names of these files to match the exact case given in EDuke32's log (for example, GRATE#.wav instead of Grate#.wav).<br />
<br />
'''ART file inconsistency'''<br />
While most standard resources are referred to as UPPERCASE by EDuke32 (for example, GAME.CON), ART files are not as consistent and should be renamed to lowercase if you want to use custom art (tiles014.art instead of TILES014.ART).<br />
<br />
== Running with HRP Notes ==<br />
If you want to run Polymer with the HRP you will need to provide the path to polymer_hrp.zip (even if its installed globally):<br />
<code>eduke32 -g/path/to/polymer_hrp.zip</code>.<br />
<br />
Running EDuke32 with an ATI card is slow for some users.<br />
One user has had success with a Radeon 4850 and Fedora 12 with the open source default driver plus the latest Mesa experimental - the game runs smooth and pretty fast.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Linux&diff=14751Building EDuke32 on Linux2022-06-03T02:44:22Z<p>TX: /* Optional Packages */</p>
<hr />
<div>{{Distribution intro}}<br />
<br />
= Compiling From Source =<br />
<br />
== Installation Notes ==<br />
* You need an actual copy of Duke Nukem 3D. See [[Installation and configuration]].<br />
* 3D acceleration drivers (recommended). NVIDIA has classically had the best Linux drivers.<br />
* A MIDI device or player for the soundtrack (optional). By default, the game uses TinySoundFont for loading sound fonts, and Nuked OPL3 for OPL emulation. It's possible to use an external MIDI device or player for Duke Nukem 3D via an ALSA MIDI port.<br />
<br />
== Getting source files ==<br />
<br />
:''See [[Acquiring the EDuke32 Source Code]].''<br />
<br />
== Prerequisites for the build ==<br />
EDuke32 requires some development files installed before you can properly build.<br />
<br />
===Packages===<br />
<br />
* Basic dev environment (GCC >= 6.1, GNU make, etc)<br />
* SDL2 >= 2.0 (SDL >= 1.2.10 also supported with SDL_TARGET=1)<br />
<br />
====Optional Packages====<br />
<br />
* NASM (recommended for i686/32-bit compilation to speed up the 8-bit classic software renderer in some cases)<br />
* libGL (required for OpenGL renderers)<br />
* libgtk2.0 >= 2.8.0 (required for the startup window)<br />
* libFLAC >= 1.2.1 (required for lossless music packs)<br />
* libvpx >= 0.9.0 (required for intro videos and cutscenes in some user-created modifications)<br />
<br />
===Distro-Specific Installation===<br />
<br />
====On Debian / Ubuntu====<br />
{| class="wikitable"<br />
|<code>sudo apt-get install build-essential nasm libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev libsdl2-dev flac libflac-dev libvorbis-dev libvpx-dev libgtk2.0-dev freepats</code><br />
|}<br />
<br />
====On Fedora 22-25====<br />
{| class="wikitable"<br />
|<code>sudo dnf groupinstall "Development Tools"</code><br />
|}<br />
{| class="wikitable"<br />
|<code>sudo dnf install g++ nasm mesa-libGL-devel mesa-libGLU-devel SDL2-devel alsa-lib-devel libvorbis-devel libvpx-devel gtk2-devel flac flac-devel</code><br />
|}<br />
Freepats is not packaged in Fedora, you must download and install it by yourself if desired. See also the "timidity-patch-freepats" package on others RPM based distros.<br />
<br />
== Build EDuke32 ==<br />
In a terminal window move to the EDuke32 sources folder and type <code>make</code>.<br />
<br />
=== Build options ===<br />
It is possible to define some options during the build. Just add them before or after the 'make' command.<br />
<br />
Example: <code>make RELEASE=0</code><br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Various options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|PRETTY_OUTPUT||Use colored output.||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Engine options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|USE_OPENGL||Enable basic OpenGL Polymost renderer.||1<br />
|-<br />
|POLYMER||Enable modern Polymer renderer for great justice.||1<br />
|-<br />
|NOASM||Disable the use of the ASM code for the classic renderer. Should be enabled on 32-bit [http://en.wikipedia.org/wiki/Pentium_compatible_processor Pentium compatible processors] only.||0 (ASM is disabled for x86_64 automatically because the ASM is 32-bit.)<br />
|-<br />
|HAVE_GTK2||Enable run-time linkage to GTK+.||1<br />
|-<br />
|STARTUP_WINDOW||Enable the startup window.||1<br />
|-<br />
|USE_LIBVPX||VP8 video codec used as an alternative to the ANM file format (only works if compiled with the OpenGL support).||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Debugging and Build options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|CLANG||Use the Clang compiler instead of the default GCC.||0<br />
|-<br />
|RELEASE||No debugging.||1<br />
|-<br />
|FORCEDEBUG||Include debug symbols even when generating release code.<br/>Additionally, with RELEASE=0, the following arrays are allocated statically: spriteext, spritesmooth, sector, wall, sprite, tsprite, while necessarily disabling the clipshape feature (because it relies on setting sector/wall to different malloc'd block temporarily). Really only useful with CC=clang.||0<br />
|-<br />
|KRANDDEBUG||Include logging of krand() calls for debugging the demo system.||0<br />
|-<br />
|MICROPROFILE||Include a profiler that is connected to the CON VM. Provides statistics on how much processing time different CON events took in a specific time interval. To use it, launch the game and open a browser to the address "localhost:1338". This will display a snapshot of the last N milliseconds of measurements that were taken just before the page was requested. See also: https://github.com/zeux/microprofile ||0<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Optimization options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|OPTLEVEL||GCC optimization strategy. Values above 2 can cause crashes.||2<br />
|-<br />
|LTO||Enable link-time optimization, for GCC 4.5 and up.||1<br />
|-<br />
|OPTOPT||Define options specific to the CPU architecture.||empty (except for i686)<br />
|-<br />
|CUSTOMOPT||Custom options or optimizations, parameters defined here, are sent to both compiler and linker.||empty<br />
|-<br />
|}<br />
<br />
== Confirm successful compile ==<br />
These files should now be present in the EDuke32 directory:<br />
* eduke32, the binary to launch the game.<br />
* mapster32, the binary to launch the maps editor.<br />
<br />
= Run the game! =<br />
You need to have the original Duke Nukem 3D files and the newly created EDuke32 executables in the same place. So, you could create a new folder (example eduke32_linux) and copy the original game files and the newly created EDuke32 executables there.<br />
<br />
To run the game open up a terminal window, move to the proper directory and type :<br />
<br />
<pre>./eduke32</pre><br />
* To use the [http://hrp.duke4.net Polymost High Resolution Pack] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp duke3d_hrp.zip polymost_hrp_update-*.zip</pre><br />
<br />
* To use the [http://hrp.duke4.net Polymer HRP] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp polymer_hrp.zip polymer_upd.zip</pre><br />
Note that ''polymer_upd.zip'' may not be available. It is also possbile to add additional packs such as remade music and Z-Pack.<br />
<br />
* Using the autoload folder :<br />
Copy mods or HRP files in the ''$HOME/.eduke32/autoload'' folder and it will be automaticaly loaded without additional parameters.<br />
<br />
= Installing EDuke32 globally =<br />
<br />
== Why ==<br />
Installing EDuke32 as an application that you could run anywhere brings some useful advantages and is surprisingly easy to do.<br />
<br />
EDuke32 will use the directory you are currently in as the directory to work in, as well as ~/.config/eduke32 (/home/<username>/.config/eduke32). This means that you could have a directory, copy a Duke Nukem TC (or mod) in there, cd to that directory and run the global EDuke32 binary without having to make even more copies of the same EDuke32 binaries. EDuke32 will adapt to use the GAME/USER.CON files it finds in the CURRENT directory.<br />
<br />
== How ==<br />
All you'll have to do to get EDuke32 to run from anywhere is copy the eduke32 and mapster32 binaries to /usr/local/bin. After doing this, copy the ''duke3d.grp'' file to /usr/local/share/games/eduke32 or ~/.config/eduke32 (it's hidden, so try to cd to it or show hidden files). After this you'll be able to run EDuke32 from any directory on your hard disk!<br />
<br />
= Notes =<br />
== Lowercase/Uppercase problems ==<br />
<!-- '''Shareware'''<br />
If you are using the Shareware files located on the 3D Realms website, after you build and combine all the files into one folder and try to run the game you will get an error about the TABLES.DAT file. To correct the error simply rename the DUKE3D.GRP to all lowercase letter. After that the game should run. This isn't necessary anymore --><br />
<br />
'''Maps with extra resources'''<br />
Some maps that include extra resources might have trouble finding these new files (for example, an older version of Duke Plus won't be able to find Step#.wav and Grate#.wav sounds). The EDuke32 log will output a "file not found" error every time this happens. To fix this, change the names of these files to match the exact case given in EDuke32's log (for example, GRATE#.wav instead of Grate#.wav).<br />
<br />
'''ART file inconsistency'''<br />
While most standard resources are referred to as UPPERCASE by EDuke32 (for example, GAME.CON), ART files are not as consistent and should be renamed to lowercase if you want to use custom art (tiles014.art instead of TILES014.ART).<br />
<br />
== Running with HRP Notes ==<br />
If you want to run Polymer with the HRP you will need to provide the path to polymer_hrp.zip (even if its installed globally):<br />
<code>eduke32 -g/path/to/polymer_hrp.zip</code>.<br />
<br />
Running EDuke32 with an ATI card is slow for some users.<br />
One user has had success with a Radeon 4850 and Fedora 12 with the open source default driver plus the latest Mesa experimental - the game runs smooth and pretty fast.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Linux&diff=14750Building EDuke32 on Linux2022-06-03T02:26:39Z<p>TX: </p>
<hr />
<div>{{Distribution intro}}<br />
<br />
= Compiling From Source =<br />
<br />
== Installation Notes ==<br />
* You need an actual copy of Duke Nukem 3D. See [[Installation and configuration]].<br />
* 3D acceleration drivers (recommended). NVIDIA has classically had the best Linux drivers.<br />
* A MIDI device or player for the soundtrack (optional). By default, the game uses TinySoundFont for loading sound fonts, and Nuked OPL3 for OPL emulation. It's possible to use an external MIDI device or player for Duke Nukem 3D via an ALSA MIDI port.<br />
<br />
== Getting source files ==<br />
<br />
:''See [[Acquiring the EDuke32 Source Code]].''<br />
<br />
== Prerequisites for the build ==<br />
EDuke32 requires some development files installed before you can properly build.<br />
<br />
===Packages===<br />
<br />
* Basic dev environment (GCC >= 6.1, GNU make, etc)<br />
* SDL2 >= 2.0 (SDL >= 1.2.10 also supported with SDL_TARGET=1)<br />
<br />
====Optional Packages====<br />
<br />
* NASM (highly recommended for i686/32-bit compilation to speed up 8-bit classic software renderer)<br />
* libGL and libGLU (required for OpenGL renderers)<br />
* libgtk+ >= 2.8.0 (required for the startup window)<br />
* libvorbis >= 1.1.2<br />
** libvorbisfile<br />
** libogg<br />
* libFLAC >= 1.2.1<br />
* libvpx >= 0.9.0<br />
<br />
===Distro-Specific Installation===<br />
<br />
====On Debian / Ubuntu====<br />
{| class="wikitable"<br />
|<code>sudo apt-get install build-essential nasm libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev libsdl2-dev flac libflac-dev libvorbis-dev libvpx-dev libgtk2.0-dev freepats</code><br />
|}<br />
<br />
====On Fedora 22-25====<br />
{| class="wikitable"<br />
|<code>sudo dnf groupinstall "Development Tools"</code><br />
|}<br />
{| class="wikitable"<br />
|<code>sudo dnf install g++ nasm mesa-libGL-devel mesa-libGLU-devel SDL2-devel alsa-lib-devel libvorbis-devel libvpx-devel gtk2-devel flac flac-devel</code><br />
|}<br />
Freepats is not packaged in Fedora, you must download and install it by yourself if desired. See also the "timidity-patch-freepats" package on others RPM based distros.<br />
<br />
== Build EDuke32 ==<br />
In a terminal window move to the EDuke32 sources folder and type <code>make</code>.<br />
<br />
=== Build options ===<br />
It is possible to define some options during the build. Just add them before or after the 'make' command.<br />
<br />
Example: <code>make RELEASE=0</code><br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Various options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|PRETTY_OUTPUT||Use colored output.||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Engine options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|USE_OPENGL||Enable basic OpenGL Polymost renderer.||1<br />
|-<br />
|POLYMER||Enable modern Polymer renderer for great justice.||1<br />
|-<br />
|NOASM||Disable the use of the ASM code for the classic renderer. Should be enabled on 32-bit [http://en.wikipedia.org/wiki/Pentium_compatible_processor Pentium compatible processors] only.||0 (ASM is disabled for x86_64 automatically because the ASM is 32-bit.)<br />
|-<br />
|HAVE_GTK2||Enable run-time linkage to GTK+.||1<br />
|-<br />
|STARTUP_WINDOW||Enable the startup window.||1<br />
|-<br />
|USE_LIBVPX||VP8 video codec used as an alternative to the ANM file format (only works if compiled with the OpenGL support).||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Debugging and Build options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|CLANG||Use the Clang compiler instead of the default GCC.||0<br />
|-<br />
|RELEASE||No debugging.||1<br />
|-<br />
|FORCEDEBUG||Include debug symbols even when generating release code.<br/>Additionally, with RELEASE=0, the following arrays are allocated statically: spriteext, spritesmooth, sector, wall, sprite, tsprite, while necessarily disabling the clipshape feature (because it relies on setting sector/wall to different malloc'd block temporarily). Really only useful with CC=clang.||0<br />
|-<br />
|KRANDDEBUG||Include logging of krand() calls for debugging the demo system.||0<br />
|-<br />
|MICROPROFILE||Include a profiler that is connected to the CON VM. Provides statistics on how much processing time different CON events took in a specific time interval. To use it, launch the game and open a browser to the address "localhost:1338". This will display a snapshot of the last N milliseconds of measurements that were taken just before the page was requested. See also: https://github.com/zeux/microprofile ||0<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Optimization options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|OPTLEVEL||GCC optimization strategy. Values above 2 can cause crashes.||2<br />
|-<br />
|LTO||Enable link-time optimization, for GCC 4.5 and up.||1<br />
|-<br />
|OPTOPT||Define options specific to the CPU architecture.||empty (except for i686)<br />
|-<br />
|CUSTOMOPT||Custom options or optimizations, parameters defined here, are sent to both compiler and linker.||empty<br />
|-<br />
|}<br />
<br />
== Confirm successful compile ==<br />
These files should now be present in the EDuke32 directory:<br />
* eduke32, the binary to launch the game.<br />
* mapster32, the binary to launch the maps editor.<br />
<br />
= Run the game! =<br />
You need to have the original Duke Nukem 3D files and the newly created EDuke32 executables in the same place. So, you could create a new folder (example eduke32_linux) and copy the original game files and the newly created EDuke32 executables there.<br />
<br />
To run the game open up a terminal window, move to the proper directory and type :<br />
<br />
<pre>./eduke32</pre><br />
* To use the [http://hrp.duke4.net Polymost High Resolution Pack] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp duke3d_hrp.zip polymost_hrp_update-*.zip</pre><br />
<br />
* To use the [http://hrp.duke4.net Polymer HRP] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp polymer_hrp.zip polymer_upd.zip</pre><br />
Note that ''polymer_upd.zip'' may not be available. It is also possbile to add additional packs such as remade music and Z-Pack.<br />
<br />
* Using the autoload folder :<br />
Copy mods or HRP files in the ''$HOME/.eduke32/autoload'' folder and it will be automaticaly loaded without additional parameters.<br />
<br />
= Installing EDuke32 globally =<br />
<br />
== Why ==<br />
Installing EDuke32 as an application that you could run anywhere brings some useful advantages and is surprisingly easy to do.<br />
<br />
EDuke32 will use the directory you are currently in as the directory to work in, as well as ~/.config/eduke32 (/home/<username>/.config/eduke32). This means that you could have a directory, copy a Duke Nukem TC (or mod) in there, cd to that directory and run the global EDuke32 binary without having to make even more copies of the same EDuke32 binaries. EDuke32 will adapt to use the GAME/USER.CON files it finds in the CURRENT directory.<br />
<br />
== How ==<br />
All you'll have to do to get EDuke32 to run from anywhere is copy the eduke32 and mapster32 binaries to /usr/local/bin. After doing this, copy the ''duke3d.grp'' file to /usr/local/share/games/eduke32 or ~/.config/eduke32 (it's hidden, so try to cd to it or show hidden files). After this you'll be able to run EDuke32 from any directory on your hard disk!<br />
<br />
= Notes =<br />
== Lowercase/Uppercase problems ==<br />
<!-- '''Shareware'''<br />
If you are using the Shareware files located on the 3D Realms website, after you build and combine all the files into one folder and try to run the game you will get an error about the TABLES.DAT file. To correct the error simply rename the DUKE3D.GRP to all lowercase letter. After that the game should run. This isn't necessary anymore --><br />
<br />
'''Maps with extra resources'''<br />
Some maps that include extra resources might have trouble finding these new files (for example, an older version of Duke Plus won't be able to find Step#.wav and Grate#.wav sounds). The EDuke32 log will output a "file not found" error every time this happens. To fix this, change the names of these files to match the exact case given in EDuke32's log (for example, GRATE#.wav instead of Grate#.wav).<br />
<br />
'''ART file inconsistency'''<br />
While most standard resources are referred to as UPPERCASE by EDuke32 (for example, GAME.CON), ART files are not as consistent and should be renamed to lowercase if you want to use custom art (tiles014.art instead of TILES014.ART).<br />
<br />
== Running with HRP Notes ==<br />
If you want to run Polymer with the HRP you will need to provide the path to polymer_hrp.zip (even if its installed globally):<br />
<code>eduke32 -g/path/to/polymer_hrp.zip</code>.<br />
<br />
Running EDuke32 with an ATI card is slow for some users.<br />
One user has had success with a Radeon 4850 and Fedora 12 with the open source default driver plus the latest Mesa experimental - the game runs smooth and pretty fast.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Windows&diff=14746Building EDuke32 on Windows2022-05-30T04:51:29Z<p>TX: /* MinGW-w64/GCC (Standalone) */ Neither of these issues apply to current versions of MSYS2 anymore</p>
<hr />
<div>{{Distribution intro}}<br />
<br />
There are several options available to develop EDuke32 on Windows. Before you begin, you will need to [[Acquiring the EDuke32 Source Code|acquire the EDuke32 source code]].<br />
<br />
==[https://www.visualstudio.com/ Microsoft Visual Studio]==<br />
<br />
For many developers, Visual Studio will be the easiest and most familiar way to work with the source. While the EDuke32 team prefers GCC for production builds, the VS IDE is a valuable and useful resource for development.<br />
<br />
===setup===<br />
<br />
[https://www.visualstudio.com/downloads/ Visual Studio can be downloaded from Microsoft's website.] The free version, ''Visual Studio Community'', works perfectly. If you don't want the IDE, the ''Build Tools for Visual Studio'' will install the toolchain by itself.<br />
<br />
Visual Studio 2013 is the minimum supported version for building EDuke32, but the newest version is always recommended.<br />
<br />
===building===<br />
<br />
====from the IDE====<br />
<br />
Either click on the green play button, or navigate '''Build &rarr; Build eduke32''' in the menus to start the build process.<br />
<br />
====from the command line====<br />
<br />
You will need to set up your paths to contain the VS toolchain. Newer versions provide shortcuts in the start menu to start a terminal with the appropriate settings. Doing so manually is out of scope of this article.<br />
<br />
Navigate to ''platform/Windows'' in the EDuke32 source code and enter:<br />
<br />
nmake -f msvc.mak<br />
<br />
==MinGW-w64/GCC with MSYS2==<br />
<br />
For a more Unix-like style of development, [http://www.msys2.org/ MSYS2] provides a bash shell, native GCC and clang builds, and the ''pacman'' package manager originally from Arch Linux.<br />
<br />
===tips to remember===<br />
<br />
*You can press the middle mouse button to paste text into the MSYS2 terminal, or right-click for more options.<br />
*You can navigate folders using the <code>cd</code> command (short for ''change directory''), or the <code>pushd</code> command, which adds the new path you specify to a stack, allowing you to return to your previous location with <code>popd</code>.<br />
*Paths use forward slashes (<code>/</code>) instead of backslashes (<code>\</code>) and drive letters take the form <code>/c/</code> instead of <code>C:\</code>, though it will likely understand either way if you put your path in <code>"quotes"</code>.<br />
<br />
===setup===<br />
<br />
#First, [http://www.msys2.org/ install MSYS2], following the instructions on that page fully. Install whichever architecture matches your computer; both can cross-compile to the other.<br />
#The installer will create three shortcuts in the Start Menu. Ignore '''MSYS2 MSYS'''. Open '''MSYS MinGW (32-bit)''' or '''(64-bit)''' to select which architecture you would like to target while building during the shell session that begins. Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the <code>-arch</code> parameter as on other platforms.<br />
#Try updating all packages with <code>pacman -Syuu</code> to verify you've completed the instructions. If all is well, you should see <code>there is nothing to do</code>. Otherwise, accept the update and repeat until there is nothing further to update.<br />
#Next, we will need to install some additional packages. The ''pacman'' package manager covers all of MSYS2 and is not affected by which shortcut you chose in the previous item.<br />
#*These packages are necessary to build:<br />
#**<code>pacman -S --needed --noconfirm mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain make nasm yasm</code><br />
#*If you would like to use Subversion and Git directly from the MSYS2 shell:<br />
#**<code>pacman -S --needed --noconfirm subversion git</code><br />
#*If you would like ''clang'' as an additional compiler option:<br />
#**<code>pacman -S --needed --noconfirm mingw-w64-i686-clang mingw-w64-x86_64-clang</code><br />
#*EDuke32 includes prebuilt Windows static libraries for all external dependencies with its source code, and therefore installing them through the package manager is superfluous. However, for reference:<br />
#**<code>pacman -S --needed --noconfirm `pacman -Ssq sdl` `pacman -Ssq libogg` `pacman -Ssq libvorbis` `pacman -Ssq flac` `pacman -Ssq libvpx` `pacman -Ssq luajit`</code><br />
<br />
You should now be all set.<br />
<br />
===building===<br />
Now that we've got everything together, you can try building EDuke32 and Mapster32. Navigate to the base directory containing [[Acquiring the EDuke32 Source Code|the EDuke32 source code]], type the following and ''eduke32.exe'' and ''mapster32.exe'' should be created.<br />
make<br />
For quick testing of changes, it is recommended to build a debug executable, which skips all compiler optimizations for a much faster compile time, and also includes information about the source code called ''debug symbols'' for debugging with GDB. Append ''RELEASE=0'' to the command, like this:<br />
make RELEASE=0<br />
You can enable parallelism and build multiple objects at the same time with '-j'. The flag by itself will use the total number of threads available, or you can specify a number, such as '-j2'.<br />
make RELEASE=0 -j4<br />
To compile only either the game or the editor, simply give ''make'' the name of the executable, like<br />
make RELEASE=0 -j4 eduke32.exe<br />
To build with clang, append the setting <code>CLANG=1</code> to your ''make'' invocation.<br />
make RELEASE=0 -j4 eduke32.exe CLANG=1<br />
<br />
===troubleshooting===<br />
If something doesn't go as planned, don't despair. Most issues are resolved rather quickly.<br />
<br />
* If you see a barrage of error messages saying that some symbols are not defined, check whether you have all necessary prerequisites like the DirectX SDK installed and that the paths in the Makefile point to the right location.<br />
* If you get errors at the end of the build process (technically, at ''link time''), there's usually a problem with the libraries -- the linker can't find one or more ''.a'' files ''[needs explanation]''.<br />
* Finally, if the executable starts but aborts shortly thereafter, a ''dynamic link library'' may be missing. Usually you'll get a helpful message with its name.<br />
<br />
===debugging===<br />
<br />
''See [[Troubleshooting EDuke32#Debugging|Troubleshooting EDuke32]].''<br />
<br />
==MinGW-w64/GCC (Standalone)==<br />
<br />
It is also possible to build with nothing but a standalone MinGW-w64 toolchain and [[Working with the Windows Command Prompt|cmd.exe]].<br />
<br />
===setup===<br />
<br />
====GCC====<br />
<br />
#First, download [http://www.winlibs.com/ a MinGW-w64 package]. You will generally want Win64 unless you specifically need a 32-bit binary. Recent packages come with clang too.<br />
#You are going to want to extract these in an organized fashion. For example:<br />
#*<code>C:\MinGW-w64\mingw32\bin\gcc.exe</code><br />
#*<code>C:\MinGW-w64\mingw64\bin\gcc.exe</code><br />
#If you are interested in building 32-bit binaries, also download '''[http://www.nasm.us/ NASM]''' and extract its contents to the i686 bin folder, so nasm.exe is located there.<br />
#*<code>C:\MinGW-w64\mingw32\bin\nasm.exe</code><br />
#Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the <code>-arch</code> parameter as on other platforms. You will need to set up your PATH variables for a session that can use the toolchain you have set up. For example, <code>set PATH=C:\MinGW-w64\mingw64\bin;%PATH%</code>. When building, the executables generated will match the target of whatever compiler is the highest in PATH, with no extra make parameters needed.<br />
#*Power users can permanently set up their PATH to one or the other toolchain through ''Advanced system settings'' (aka ''sysdm.cpl'') if desired. If you have enabled the "Launch folder windows in a separate process" option in Windows Explorer, you will need to restart explorer.exe (either by terminating and relaunching it in Task Manager, or restarting your computer) for changes made to persistent PATH to take effect in command prompt windows launched from within Explorer.<br />
#MinGW-w64 comes with GNU Make, but it is named ''mingw32-make.exe''. If you don't want to type <code>mingw32-make</code> where you would normally type <code>make</code>, feel free to <code>copy mingw32-make.exe make.exe</code>.<br />
#One final note: If you are trying to build '''ebacktrace1.dll''' and are getting errors about a missing "bfd.h", you need to copy the following files from <code><nowiki><root>\include\</nowiki></code> to <code><nowiki><root>\<target>-w64-mingw32\include\</nowiki></code>:<br />
<br />
ansidecl.h<br />
bfd.h<br />
bfdlink.h<br />
dis-asm.h<br />
symcat.h<br />
<br />
====clang====<br />
<br />
It is also possible to use mainline releases of LLVM/clang. However, recent releases of clang for Windows default to acting as a drop-in replacement for Visual Studio rather than the preferred GCC as with MinGW-w64. However, for the adventurous:<br />
<br />
#Download [http://releases.llvm.org/download.html clang for Windows].<br />
#Extract your choice of 32-bit and/or 64-bit binaries to the ''bin'' folder of the corresponding MinGW-w64 toolchain installed above.<br />
#When building EDuke32, append <code>CUSTOMOPT="-target i686-w64-mingw32"</code> (targeting a 32-bit build) or <code>CUSTOMOPT="-target x86_64-w64-mingw32"</code> (targeting 64-bit) in addition to <code>CLANG=1</code> so clang tries to use GCC's headers instead of Visual Studio's headers.<br />
<br />
Since primary purpose of a standalone setup is producing the most optimized production binaries possible, clang on Windows may or may not be stable, robust, and mature enough to be worth it in this setting. For simple development aids such as clang's very nice diagnostic output, using it in MSYS2 should be sufficient.<br />
<br />
===building===<br />
<br />
Open a [[Working with the Windows Command Prompt|command prompt window]] in the source code's location. Once there, building is the same as with MSYS2, with the exception of using <code>mingw32-make</code> instead of <code>make</code> if you did not copy it.<br />
<br />
In order to allow building in the absence of an ''sh.exe'', the PRETTY_OUTPUT colorful build process message feature provided by EDuke32's Makefile is disabled with this setup. Advanced users can open the ''MSYS2 MSYS'' shortcut, if installed above, or [https://git-scm.com/download/win Git Bash], in combination with manually configuring their Unix-style PATH variable, to get colorful output with a standalone toolchain.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=User_talk:Wolf&diff=13907User talk:Wolf2020-07-06T20:04:16Z<p>TX: Welcome!</p>
<hr />
<div>This is an automatic notification that your EDukeWiki account has been approved.<br />
If you are new to wiki editing, please look over the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages]. [[User:TX|TX]] ([[User talk:TX|talk]]) 13:04, 6 July 2020 (PDT)</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Wolf&diff=13906User:Wolf2020-07-06T20:04:16Z<p>TX: Creating user page for new user.</p>
<hr />
<div>Just a lifelong Duke3D enthusiast looking to contribute some knowledge. And potentially fix some typos.</div>TXhttps://wiki.eduke32.com/w/index.php?title=User_talk:Rob_Anybody&diff=13905User talk:Rob Anybody2020-07-06T20:04:06Z<p>TX: Welcome!</p>
<hr />
<div>This is an automatic notification that your EDukeWiki account has been approved.<br />
If you are new to wiki editing, please look over the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages]. [[User:TX|TX]] ([[User talk:TX|talk]]) 13:04, 6 July 2020 (PDT)</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Rob_Anybody&diff=13904User:Rob Anybody2020-07-06T20:04:06Z<p>TX: Creating user page for new user.</p>
<hr />
<div>Mama, just killed a man<br />
Put a gun against his head<br />
Pulled my trigger, now he's dead<br />
Mama, life had just begun<br />
But now I've gone and thrown it all away</div>TXhttps://wiki.eduke32.com/w/index.php?title=Qputs&diff=13903Qputs2020-06-29T20:03:53Z<p>TX: </p>
<hr />
<div>'''qputs''' <quote number> <quote text><br />
<br />
Like [[definequote]], but used within actors, events and states. Can be used in conjunction with [[gametext]], [[minitext]], [[qsprintf]], [[qstrcat]] and [[qstrcpy]] to dynamically display text on-screen.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:String manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Redefinequote&diff=13902Redefinequote2020-06-29T20:03:42Z<p>TX: TX moved page Redefinequote to Qputs</p>
<hr />
<div>#REDIRECT [[Qputs]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Qputs&diff=13901Qputs2020-06-29T20:03:42Z<p>TX: TX moved page Redefinequote to Qputs</p>
<hr />
<div>'''redefinequote''' <quote number> <quote text><br />
<br />
Like [[definequote]], but used within actors, events and states. Can be used in conjunction with [[gametext]], [[minitext]], [[qsprintf]], [[qstrcat]] and [[qstrcpy]] to dynamically display text on-screen.<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:String manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=User_talk:Mjr4077au&diff=13592User talk:Mjr4077au2020-02-22T17:36:48Z<p>TX: Welcome!</p>
<hr />
<div>This is an automatic notification that your EDukeWiki account has been approved.<br />
If you are new to wiki editing, please look over the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages]. [[User:TX|TX]] ([[User talk:TX|talk]]) 09:36, 22 February 2020 (PST)</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Mjr4077au&diff=13591User:Mjr4077au2020-02-22T17:36:48Z<p>TX: Creating user page for new user.</p>
<hr />
<div>I’m Mitch and I want to help bring some older articles up to date to make information more accessible for all.<br />
I’m Mitch and I want to help bring some older articles up to date to make information more accessible for all.<br />
I’m Mitch and I want to help bring some older articles up to date to make information more accessible for all.</div>TXhttps://wiki.eduke32.com/w/index.php?title=Template:Build_Intro&diff=12690Template:Build Intro2019-06-25T18:17:21Z<p>TX: </p>
<hr />
<div><div style="width: 99.8%;"><div style="text-align: center;">'''[[Build]]/[[Mapster32]] Map Editing'''</div> <div style="font-size: 95%; text-align: center;"><br />
[[Level editing|Level Editing]] &middot; [[True Room Over Room Mapping Guide]] &middot; [[Build/Mapster32 Keyboard Commands]]<br><br />
[[Special Tile Reference Guide|Special Tile Listing]] &middot; [[Sector Effector Reference Guide|Sector Effector Tag Listing]] &middot; [[Sector Tag Reference Guide|Sector Tag Listing]]<br><br />
[[Utilities Reference Guide]] &middot; [[Mapster32 Scripting]] &middot; [[Mapster32 Map Checking]]<br />
</div> </div><br />
<noinclude><br />
[[Category:Level editing documentation]]<br />
</noinclude></div>TXhttps://wiki.eduke32.com/w/index.php?title=Template:Distribution_intro&diff=12689Template:Distribution intro2019-06-20T14:12:18Z<p>TX: </p>
<hr />
<div><div style="width: 99.8%;"><div style="text-align: center;">'''[[EDuke32]] Distribution'''</div><br />
<div style="font-size: 95%; text-align: center;"><br />
[[Download EDuke32|Download]] &middot; [[Acquiring the EDuke32 Source Code|Source Code]] &middot; [[APT repository]] &middot; [[Packages]]<br><br />
Building from source on: [[Building EDuke32 on Linux|Linux]] &middot; [[Building EDuke32 on Windows|Windows]] &middot; [[Building EDuke32 on macOS|macOS]]<br />
</div><br />
</div><br />
<noinclude><br />
[[Category:Distribution documentation]]<br />
</noinclude></div>TXhttps://wiki.eduke32.com/w/index.php?title=Cstat_(wall)&diff=12658Cstat (wall)2018-10-31T07:43:23Z<p>TX: </p>
<hr />
<div>A [[bitfield]] for how to draw a wall, as well as a few flags for interaction. Add all together all wanted flag values.<br />
<br />
Flag values for wall cstat are:<br />
<br />
:'''1''' - Make wall blockable<br />
:'''2''' - Make bottoms of invisible walls swapped<br />
:'''4''' - Align picture on bottom<br />
:'''8''' - Flip wall around x-axis<br />
:'''16''' - Make wall masking, two-sided<br />
:'''32''' - Make wall masking, one-sided<br />
::Combine '''16''' and '''32''' to disable transparency in the masked texture<br />
:'''64''' - Make wall able to be hit by weapons<br />
:'''128''' - Make wall transparent<br />
:'''256''' - Flip wall around y-axis<br />
:'''512''' - Second transparency level (combine with cstat '''128''')<br />
<br />
Unused bits are '''NOT''' free for user programming, but are rather reserved for potential future EDuke32 features.<br />
<br />
[[Category:Bitfields]]<br />
[[Category:Wall structure members]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=User_talk:Seb_Luca&diff=12618User talk:Seb Luca2018-06-04T22:28:05Z<p>TX: Welcome!</p>
<hr />
<div>This is an automatic notification that your EDukeWiki account has been approved.<br />
If you are new to wiki editing, please look over the [[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents|help pages]]. [[User:TX|TX]] ([[User talk:TX|talk]]) 15:28, 4 June 2018 (PDT)</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Seb_Luca&diff=12617User:Seb Luca2018-06-04T22:28:05Z<p>TX: Creating user page for new user.</p>
<hr />
<div></div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=12486Main Page2017-11-09T07:34:04Z<p>TX: </p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki is the official [[EDuke32]] documentation resource.<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* '''[[Installation and configuration]]'''<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* '''[[Troubleshooting EDuke32]]'''<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 Distribution===<br />
* '''[[Download EDuke32]]'''<br />
* [[APT repository|APT repositories for Debian and Ubuntu]]<br />
* [[Packages|Packages for other systems]]<br />
====from source====<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [[Building EDuke32 on macOS]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* '''[[Scripting|Scripting using CON files]]'''<br />
** [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* '''[[Level editing|Editing levels with Mapster32]]'''<br />
** [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===Source port resources=== <br />
* [https://forums.duke4.net/forum/30-/ Official forum]<br />
* [irc://irc.freenode.net/eduke32 Official IRC channel (#eduke32 on irc.freenode.net)]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly SVN builds]<br />
* [http://svn.eduke32.com/log.php?repname=eduke32&max=20&all=1 SVN commit log]<br />
* [http://bugs.eduke32.com/ Bug tracker]<br />
====Community portfolio====<br />
* [[EDuke32 Modifications|EDuke32 modification showcase]]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
[[Category:Root Category]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=12342Main Page2016-03-18T23:28:05Z<p>TX: </p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki serves to provide the most accurate and complete source of [[EDuke32]] documentation on the Internet.<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* '''[[Installation and configuration]]'''<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* '''[[Troubleshooting EDuke32]]'''<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 Distribution===<br />
* '''[[Download EDuke32]]'''<br />
* [[APT repository|APT repositories for Debian and Ubuntu]]<br />
* [[Packages|Packages for other systems]]<br />
====from source====<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [[Building EDuke32 on Mac OS X]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* '''[[Scripting|Scripting using CON files]]'''<br />
** [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* '''[[Level editing|Editing levels with Mapster32]]'''<br />
** [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===Source port resources=== <br />
* [https://forums.duke4.net/forum/30-/ Official forum]<br />
* [irc://irc.freenode.net/eduke32 Official IRC channel (#eduke32 on irc.freenode.net)]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly SVN builds]<br />
* [http://svn.eduke32.com/log.php?repname=eduke32&max=20&all=1 SVN commit log]<br />
* [http://bugs.eduke32.com/ Bug tracker]<br />
====Community portfolio====<br />
* [[EDuke32 Modifications|EDuke32 modification showcase]]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
[[Category:Root Category]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Linux&diff=12086Building EDuke32 on Linux2015-01-09T01:32:57Z<p>TX: /* On Debian / Ubuntu */</p>
<hr />
<div>{{Distribution intro}}<br />
<br />
= Compiling From Source =<br />
<br />
== Installation Notes ==<br />
* You need an actual copy of Duke Nukem 3D. See [[Installation and configuration]].<br />
* 3D acceleration drivers (optional). NVIDIA has classically had the best Linux drivers.<br />
* A MIDI player for the soundtrack (optional). By default, the game uses SDL_mixer, which has a light, built-in version of [http://sourceforge.net/projects/timidity TiMidity++]. It's possible to use an external command to play back MIDI music with the EDUKE32_MUSIC_CMD [[Environment variables | environment variable]]. In all cases, a set of instrument patches is also required, such as [http://freepats.zenvoid.org Freepats].<br />
<br />
== Getting source files ==<br />
<br />
:''See [[Acquiring the EDuke32 Source Code]].''<br />
<br />
== Prerequisites for the build ==<br />
EDuke32 requires some development files installed before you can properly build.<br />
<br />
===Packages===<br />
<br />
* Basic dev environment (GCC >= 4.3.3, GNU make, etc)<br />
* SDL2 >= 2.0 (SDL >= 1.2.10 also supported with SDL_TARGET=1)<br />
** SDL2_mixer >= 2.0 (SDL_mixer >= 1.2.7 also supported with SDL_TARGET=1)<br />
<br />
====Optional Packages====<br />
<br />
* NASM (highly recommended for i686/32-bit compilation to speed up 8-bit classic software renderer)<br />
* libGL and libGLU (required for OpenGL renderers)<br />
* libgtk+ >= 2.8.0 (required for the startup window)<br />
* libvorbis >= 1.1.2<br />
** libvorbisfile<br />
** libogg<br />
* libFLAC >= 1.2.1<br />
* libpng >= 1.2.13<br />
** zlib<br />
* libvpx >= 0.9.0<br />
<br />
===Distro-Specific Installation===<br />
<br />
====On Debian / Ubuntu====<br />
{| class="wikitable"<br />
|<code>sudo apt-get install build-essential nasm libgl1-mesa-dev libglu1-mesa-dev libsdl2-dev libsdl2-mixer-dev libsdl2-dev libsdl2-mixer-dev flac libflac-dev libvorbis-dev libpng-dev libvpx-dev libgtk2.0-dev freepats</code><br />
|}<br />
<br />
====On Fedora 14-19====<br />
{| class="wikitable"<br />
|<code>sudo yum groupinstall "Development Tools"</code><br />
|}<br />
{| class="wikitable"<br />
|<code>sudo yum install nasm mesa-libGL-devel mesa-libGLU-devel SDL-devel SDL_mixer-devel libvorbis-devel libpng-devel libvpx-devel gtk2-devel flac flac-devel</code><br />
|}<br />
Freepats is not packaged in Fedora, you must download and install it by yourself if desired. See also the "timidity-patch-freepats" package on others RPM based distros.<br />
<br />
== Build EDuke32 ==<br />
In a terminal window move to the EDuke32 sources folder and type <code>make</code>.<br />
<br />
NOTE: with eduke32_src_20080924 and older GCC versions (< 4.3) remove; <code>-finline-small-functions -fpredictive-commoning</code> options from <code>debug=</code> options in <code>eduke32/Makefile</code> and <code>build/Makefile</code>. Newer source releases do not have this problem.<br />
<br />
NOTE2:<br />
<br />
If building fails with GCC version 4.4.x, try: <code>make OPTLEVEL=0</code><br />
<br />
If it fails again, you can try with another version of GCC, for example: <code>make CC=gcc-4.3</code><br />
<br />
== Build options ==<br />
It is possible to define some options during the build. Just add them before or after the 'make' command.<br />
<br />
Example: <code>make USE_LIBPNG=1</code><br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Various options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|PRETTY_OUTPUT||Use colored output.||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Engine options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|USE_OPENGL||Enable basic OpenGL Polymost renderer.||1<br />
|-<br />
|POLYMER||Enable modern Polymer renderer for great justice.||1<br />
|-<br />
|NOASM||Disable the use of the ASM code for the classic renderer. Should be enabled on 32-bit [http://en.wikipedia.org/wiki/Pentium_compatible_processor Pentium compatible processors] only.||0 (ASM is disabled for x86_64 automatically because the ASM is 32-bit.)<br />
|-<br />
|LINKED_GTK||Enable compile-time linkage to GTK+.||0<br />
|-<br />
|WITHOUT_GTK||Do not compile GTK+ code.||0<br />
|-<br />
|BUILD32_ON_64||||0<br />
|-<br />
|USE_LIBPNG||Compile with libpng (used to make screenshots in the PNG format). This may or may not require libz.||1<br />
|-<br />
|USE_LIBVPX||VP8 video codec used as an alternative to the ANM file format (only works if compiled with the OpenGL support).||1<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Debugging and Build options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|CLANG||Use the Clang compiler instead of the default GCC.||0<br />
|-<br />
|CPLUSPLUS||Enable C++ building.||0<br />
|-<br />
|RELEASE||No debugging.||1<br />
|-<br />
|DEBUGANYWAY||Include debug symbols even when generating release code.<br/>Additionally, with RELEASE=0, the following arrays are allocated statically: spriteext, spritesmooth, sector, wall, sprite, tsprite, while necessarily disabling the clipshape feature (because it relies on setting sector/wall to different malloc'd block temporarily). Really only useful with CC=clang.||0<br />
|-<br />
|KRANDDEBUG||Include logging of krand() calls for debugging the demo system.||0<br />
|-<br />
|DISABLEINLINING||Compile inline functions as extern instead of static inline.||0<br />
|-<br />
|EFENCE||Compile with Electric Fence for malloc() debugging.||0<br />
|-<br />
|DMALLOC||Compile with dmalloc for malloc() debugging.||0<br />
|-<br />
|PROFILER||||0<br />
|-<br />
|MUDFLAP||||0<br />
|}<br />
<br />
{|class="wikitable" width="65%"<br />
|+ <span style="text-decoration: underline">Optimization options</span><br />
|-<br />
!width="15%"|Options!!width="70%"|Description!!width="15%"|Default value<br />
|-<br />
|OPTLEVEL||GCC optimization strategy. Values above 2 can cause crashes.||2<br />
|-<br />
|LTO||Enable link-time optimization, for GCC 4.5 and up.||1<br />
|-<br />
|OPTOPT||Define options specific to the CPU architecture.||empty (except for i686)<br />
|-<br />
|CUSTOMOPT||Custom options or optimizations, parameters defined here, are sent to both compiler and linker.||empty<br />
|-<br />
|}<br />
<br />
== Confirm successful compile ==<br />
These files should now be present in the EDuke32 directory:<br />
* eduke32, the binary to launch the game.<br />
* mapster32, the binary to launch the maps editor.<br />
<br />
= Run the game! =<br />
You need to have the original Duke Nukem 3D files and the newly created EDuke32 executables in the same place. So, you could create a new folder (example eduke32_linux) and copy the original game files and the newly created EDuke32 executables there.<br />
<br />
To run the game open up a terminal window, move to the proper directory and type :<br />
<br />
<pre>./eduke32</pre><br />
* To use the [http://hrp.duke4.net Polymost High Resolution Pack] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp duke3d_hrp.zip polymost_hrp_update-*.zip</pre><br />
<br />
* To use the [http://hrp.duke4.net Polymer HRP] you can pass the -grp parameter :<br />
<pre>./eduke32 -grp polymer_hrp.zip polymer_upd.zip</pre><br />
Note that ''polymer_upd.zip'' may not be available. It is also possbile to add additional packs such as remade music and Z-Pack.<br />
<br />
* Using the autoload folder :<br />
Copy mods or HRP files in the ''$HOME/.eduke32/autoload'' folder and it will be automaticaly loaded without additional parameters.<br />
<br />
= Installing EDuke32 globally =<br />
<br />
== Why ==<br />
Installing EDuke32 as an application that you could run anywhere brings some useful advantages and is surprisingly easy to do.<br />
<br />
EDuke32 will use the directory you are currently in as the directory to work in, as well as ~/.eduke32 (/home/yourname/.eduke32). This means that you could have a directory, copy a Duke Nukem TC (or mod) in there, cd to that directory and run the global EDuke32 binary without having to make even more copies of the same EDuke32 binaries. EDuke32 will adapt to use the GAME/USER.CON files it finds in the CURRENT directory.<br />
<br />
== How ==<br />
All you'll have to do to get EDuke32 to run from anywhere is copy the eduke32 and mapster32 binaries to /usr/local/bin. After doing this, copy the ''duke3d.grp'' file to /usr/local/share/games/eduke32 or ~/.eduke32 (it's hidden, so try to cd to it or show hidden files). After this you'll be able to run EDuke32 from any directory on your hard disk!<br />
<br />
= Notes =<br />
== Lowercase/Uppercase problems ==<br />
<!-- '''Shareware'''<br />
If you are using the Shareware files located on the 3D Realms website, after you build and combine all the files into one folder and try to run the game you will get an error about the TABLES.DAT file. To correct the error simply rename the DUKE3D.GRP to all lowercase letter. After that the game should run. This isn't necessary anymore --><br />
<br />
'''Maps with extra resources'''<br />
Some maps that include extra resources might have trouble finding these new files (for example, an older version of Duke Plus won't be able to find Step#.wav and Grate#.wav sounds). The EDuke32 log will output a "file not found" error every time this happens. To fix this, change the names of these files to match the exact case given in EDuke32's log (for example, GRATE#.wav instead of Grate#.wav).<br />
<br />
'''ART file inconsistency'''<br />
While most standard resources are referred to as UPPERCASE by EDuke32 (for example, GAME.CON), ART files are not as consistent and should be renamed to lowercase if you want to use custom art (tiles014.art instead of TILES014.ART).<br />
<br />
== Running with HRP Notes ==<br />
If you want to run Polymer with the HRP you will need to provide the path to polymer_hrp.zip (even if its installed globally):<br />
<code>eduke32 -g/path/to/polymer_hrp.zip</code>.<br />
<br />
Running EDuke32 with an ATI card is slow for some users.<br />
One user has had success with a Radeon 4850 and Fedora 12 with the open source default driver plus the latest Mesa experimental - the game runs smooth and pretty fast.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=User_talk:Jwaffe&diff=11800User talk:Jwaffe2014-03-08T22:21:18Z<p>TX: Welcome!</p>
<hr />
<div>This is an automatic notification that your EDukeWiki account has been approved.<br />
If you are new to wiki editing, please look over the [[Help:Contents|help pages]]. [[User:TX|TX]] ([[User talk:TX|talk]]) 14:21, 8 March 2014 (PST)</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Jwaffe&diff=11799User:Jwaffe2014-03-08T22:21:18Z<p>TX: Creating user page for new user.</p>
<hr />
<div>Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.Your biography must be at least 50 words long.</div>TXhttps://wiki.eduke32.com/w/index.php?title=Frequently_Asked_Questions&diff=11770Frequently Asked Questions2014-02-17T21:24:12Z<p>TX: </p>
<hr />
<div>== EDuke32 ==<br />
<br />
'''Q: Where can I get a copy of ''Duke Nukem 3D'' to run EDuke32?'''<br />
:A: Just click the '''gog.com''' banner to the left, where you can download the full, registered version of ''Duke Nukem 3D: Atomic Edition'' for the low price of '''$5.99'''! Alternatively, you can use the [ftp://ftp.3drealms.com/share/3dduke13.zip one episode shareware version] which is available from 3D Realms for free. While the source code to ''Duke Nukem 3D'' has been released to the public under the [http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License], the game's content (artwork, sounds, maps, et cetera) remains a commercial product. DO NOT post anywhere or ask anybody at all about where to acquire this game illegally. Support 3D Realms for making the most awesome game ever and don't be a pirate, yarrr!<br />
<br />
'''Q: When launching EDuke32, I get an error about a missing file called 'GAME.CON' or 'EDUKE.CON'. Help!'''<br />
:A: It would appear that you haven't placed a copy of 'DUKE3D.GRP' from your ''Duke Nukem 3D'' or ''Duke Nukem 3D: Atomic Edition'' CD into your EDuke32 directory. Once you place 'DUKE3D.GRP' into the same directory as 'eduke32.exe', the game should launch and run fine. You may also use the shareware version's 'DUKE3D.GRP' as well. If you're sure you've put 'DUKE3D.GRP' in the right place but you still get this error, your GRP file is likely corrupt and will need to be re-copied off of your CD.<br />
<br />
[[Image:Gametab.png|frame|Here is a picture of what the startup window looks like with several different GRP files available and the DukePlus mod selected. Note that the shareware version and the original, non-''Atomic Edition'' version of the game have both had their GRP files renamed; all versions of ''Duke Nukem 3D'' ship with a GRP file named 'DUKE3D.GRP']]<br />
<br />
'''Q: What is the 'Game' section of the startup screen used for?'''<br />
:A: The 'Game' section is a feature that allows you to select which GRP file you would like to play. The GRP files must exactly match the versions found on their respective CDs, without any modifications. The following games are supported:<br />
<br />
:* ''Duke Nukem 3D Shareware Version''<br />
:* ''Duke Nukem 3D Mac Shareware Version''<br />
:* ''Duke Nukem 3D''<br />
:* ''Duke Nukem 3D: Atomic Edition''<br />
:* ''[[NAM]]'' (Note: you must rename GAME.CON from ''NAM'' to NAM.CON)<br />
:* ''[[Napalm]]'' (Wal-Mart only version of ''NAM'', some .GRP differences between the two releases)<br />
:* ''[[WWII GI]]'' (Limited Support using ''NAM'' mode as a base)<br />
<br />
:You can also use the startup window to select a third party mod to play.<br />
<br />
'''Q: When I am playing EDuke32 with 16-, 24-, or 32-bit color, everything has a blue tint! How can I fix this?'''<br />
:A: Unfortunately, most people who run into this error are out of luck, especially those with an Intel or SiS video chipset. There are a few things you can do to try and fix this problem:<br />
<br />
:* Open the [[console]] and type "r_redbluemode 0"<br />
:* Download the newest drivers for your graphics card<br />
:* Delete the texture cache<br />
:* Try the [http://dukeworld.duke4.net/eduke32/synthesis/eduke32_latest.zip most recent build] of EDuke32<br />
<br />
:The following driver vendors have been blacklisted in the newest versions of EDuke32. If you have a video card or driver from one of these companies, OpenGL modes will '''''not''''' be available:<br />
:* Microsoft (default OpenGL ICD which comes with Windows)<br />
:* SiS<br />
:* 3Dfx<br />
<br />
:OpenGL can still be enabled for these cards by setting the BUILD_FORCEGL environment variable before running EDuke32, or by using the command line <code>eduke32 -forcegl</code>. It should be noted, however, that the results will probably be less than satisfactory. If you have a blacklisted driver but EDuke32 seems to run fine using BUILD_FORCEGL, please enter the <code>glinfo</code> [[console]] command and send us your eduke32.log so that we can add an exception for your video card/driver combination.<br />
<br />
:Note: Intel video cards are no longer blacklisted.<br />
:Note2: Some recent (G33 for example) Intel graphics cards work with OpenGL mode if texture compression is disabled (<tt>r_texcompr "0"</tt>, see <tt>settings.cfg</tt> configuration file).<br />
<br />
'''Q: How can I play multiplayer on the Internet or my LAN using EDuke32?'''<br />
<br />
:A: See the [[Multiplayer]] page.<br />
<br />
'''Q: Where is my "eduke32.log" and what is it used for?'''<br />
<br />
:A: The "eduke32.log" file is generated each time you run eduke32.exe. (mapster32.exe has a separate one titled, "mapster32.log") <br />
:You can find both of these files in the same directory where your "eduke32.exe" and "mapster32.exe" is located. Having "Hide extensions for known file types" (Tools, Folder Options, View) unticked will help you locate it easier.<br />
<br />
:What is the log used for?<br />
:* Helping the EDuke32 developers and other helpful community members locate problems with a users EDuke32 if he or she is having trouble getting it to run, as the log file will 99% of the time indicate what is not working correctly plus many other various things that help developers and modders all around.<br />
<br />
:Where should I paste my log or URL?<br />
:*Follow the instructions in the [[Troubleshooting EDuke32]] page.<br />
<br />
:Note: If you are having problems with Mapster32 you should do the same as above but replace "eduke32.log" with "mapster32.log"<br />
<br />
'''Q: If in system international properties system language is not English then symbol keys on keyboard is not work (Mac OS X). So I can't play the game. And I don't want to switch system language because I'm living in Russia.'''<br><br />
&nbsp;&nbsp;&nbsp;&nbsp;['''followup Q:''' is there an OSX API call to set the keyboard layout per-process? If you're knowledgeable in OS X, please let the developers know!]<br />
<br />
'''Q: What the heck are these new-fangled '.7z' files?'''<br />
<br />
:A: Introduced in 1999, the 7-zip format offers better compression ratios than traditional .zip files, saving us space in storing our builds and saving you time in downloading them. Thanks, 7-zip! See the 7-zip site [http://www.7-zip.org/] for a great, free tool to extract them.<br />
<br />
== Mapster32 ==<br />
'''Q: I can't pan with Shift+KP5+KP<whatever> in 3D mode.'''<br />
<br />
:A: This is an issue with modern keyboards and happens because some key combinations are "dead" (See [http://www.sjbaker.org/wiki/index.php?title=Keyboards_Are_Evil] for an overview and [http://www.dribin.org/dave/keyboard/one_html/] for a technical explanation). There are various workarounds. One is to alias some key to the KP5 key with the goal of finding one for which all key combinations will be passed to the OS. To do that, you need to edit the ''remap'' line at the end of mapster32.cfg. A suggestion is to map the KP0 key to KP5. Another way to solve the issue is by finding a keyboard from circa 1996 (one with a big 5-pin connector). Newer revisions of Mapster32 also let you to use Alt instead of Shift in these situations.<br />
<br />
'''Q: Why is aiming at objects so imprecise?'''<br />
<br />
:A: The issue occurs only with the Polymost renderer and has its cause in the way it determines the aimed-at object: based on the mouse position on the screen, it constructs a direction vector and calls [[hitscan]]. Both steps are a cause of imprecision. The classic BUILD and the Polymer renderers determine the aimed-at object (roughly) by querying what object was drawn at the mouse position, and thus are pixel-perfect. If you prefer to use Polymost, try avoiding aiming at objects at the border of the screen and looking up or down, since the aiming method is particularly ill-behaved in these cases. *update: actually it's a bug that need to be fixed some time.<br />
<br />
<br />
[[Category:EDuke32_end-user_documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Cursectnum&diff=11705Cursectnum2013-11-16T15:24:01Z<p>TX: </p>
<hr />
<div>This is the [[sector]] that the [[player]] is in. This generally shouldn't be altered unless you're doing something such as teleporting the player. Unlike a sprite's [[sectnum]] value, this value is not stored in or part of a linked list and may equal -1 if the player is currently outside of a sector.<br />
<br />
A player may go outside of a sector by being crushed in a swinging door, using glitches and bugs to accelerate themselves fast enough to pass through walls (and into null space) or by simply using the "no clipping" cheat code.<br />
<br />
[[Category:Player structure members]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=File:Gametab.png&diff=11690File:Gametab.png2013-08-31T21:02:12Z<p>TX: TX uploaded a new version of &quot;File:Gametab.png&quot;</p>
<hr />
<div>This is an image of the 'game' tab.</div>TXhttps://wiki.eduke32.com/w/index.php?title=User:Roedel&diff=11524User:Roedel2013-02-28T02:09:20Z<p>TX: </p>
<hr />
<div>Just another guy running eduke on Linux. Trying to register for being authorized to update some wiki data as it. What else to say to get up to 50 words. I don't know. So I'll just write some absolutely useless lines until I hope having a 50 word biography. Does it already look like that? No. It doesn't. So I just continue typing and typing and typing. A lot of work just to add a line in the wiki.<br />
:Sorry about that. We had some pretty horrible problems with spam and this was the only method of resolving it that actually worked. [[User:TX|TX]] ([[User talk:TX|talk]]) 18:09, 27 February 2013 (PST)</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Windows&diff=11427Building EDuke32 on Windows2012-12-29T05:32:04Z<p>TX: Drop DirectX SDK requirement for Visual Studio builds</p>
<hr />
<div>{{Distribution intro}}<br />
<br />
== Getting source files ==<br />
<br />
:''See [[Acquiring the EDuke32 Source Code]].''<br />
<br />
==Building on Windows with MinGW/GCC/GNU Make==<br />
<br />
===setup===<br />
<br />
==== [http://www.mingw.org/ MinGW] (MinGW32) ====<br />
<br />
MinGW-GCC is the ''de facto'' standard for free compilers on Windows.<br />
<br />
There are three components to setting up MinGW to build EDuke32:<br />
<br />
*'''[http://sourceforge.net/downloads/mingw/ MinGW installer (automated)]<br />
*'''[[MinGW EDuke32 Setup Helper]]'''<br />
*'''[http://www.nasm.us/ NASM]'''<br />
<br />
#First, install MinGW and MSYS using the automated MinGW installer. Make sure all components are installed. This should be relatively straightforward and will install MSYS (the shell and utility commands) and MinGW (the compiler suite).<br />
#*This guide assumes that they're installed in '''c:/MinGW''' and '''c:/MinGW/msys''' -- from the wording on their page, anything else is BAD.<br />
#Next, download NASM and extract its contents to the MinGW/bin folder, so nasm.exe is located there.<br />
#*Sample path: <code>C:\MinGW\bin\nasm.exe</code><br />
#After that, download, extract, and run the '''MinGW EDuke32 Setup Helper'''. It will help ensure that everything is installed correctly as well as modify your PATH environment variable for you so you can run the compiler from any directory allowing you to compile EDuke32.<br />
<br />
==== [http://clang.llvm.org/ clang] ====<br />
<br />
Clang is another compiler that complements and works closely in tandem with MinGW. It is mainly used for its highly human readable diagnostic descriptions of compiler error and warnings.<br />
<br />
Installation is simple. [http://llvm.org/releases/ Download the binaries] marked for "Mingw32/x86", which may be marked "''Experimental''". From here you have two options. You can extract the contents of the archive in such a way so that its directory structure merges with MinGW's--you will have <code>C:\MinGW\bin\clang.exe</code> and so on. The other is to extract the data to its own folder, possibly simplifying the name, and adding it on its own to PATH--<code>C:\clang\bin\clang.exe</code>.<br />
<br />
To build with clang, append the setting <code>CLANG=1</code> to your ''make'' invocation.<br />
<br />
==== [http://mingw-w64.sourceforge.net/ MinGW-w64] ====<br />
<br />
'''NOTE: Unless you have a specific reason for wanting to use MinGW-w64 (such as building with native 64-bit architecture), use mainline MinGW instead.'''<br />
<br />
First, you are going to want to fully install mainline MinGW using the instructions above, particularly because we need MSYS for the *nix utils it includes.<br />
<br />
Unlike MinGW, MinGW-w64 has no organized setup procedure. Instead, the various packages contain the entire toolchain. The automated mainline builds tend to be outdated and sometimes deficient in files, so it is recommended to use '''[https://github.com/rubenvb rubenvb]''''s personal builds:<br />
<br />
*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/ Targeting Win32 (i686)]<br />
*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/ Targeting Win64 (x86_64)]<br />
<br />
The archives come in the format:<br />
<br />
{target arch}-w64-mingw32-{compiler}-{compiler version}-{host arch}_{build creator}<br />
<br />
Builds that produce 64-bit executables have the '''{target arch}''' "'''x86_64'''" while builds for 32-bit have "'''i686'''" (though there is a typo, "i686_64", supposed to be "i686").<br />
<br />
'''{compiler}''' is generally gcc, but clang is also available, and both may be installed. Where available, it is recommended to get "gcc-dw2" instead of "gcc". (The superiority of dw2 over sjlj is explained [http://stackoverflow.com/questions/318383/exception-handling-models-of-gcc here].)<br />
<br />
'''{host arch}''' should match the architecture of ''your computer''. This value is completely separate from the '''{target arch}'''. If you have a 64-bit processor and OS, select a <code>win64</code> package if available. If one is not available or either your processor or OS are 32-bit, grab the one marked <code>win32</code>. (If a <code>win32</code> package is not available, you are out of luck.) Packages marked <code>cygwin</code> should generally be avoided. <code>linux</code> and <code>mac</code> are for cross-compiling.<br />
<br />
You are going to want to extract these in an organized fashion. For example, you could have compilers, for your host architecture, targeting both 32-bit and 64-bit, using this directory layout:<br />
<br />
C:\MinGW-w64\mingw32-dw2\bin\gcc.exe<br />
C:\MinGW-w64\mingw64\bin\gcc.exe<br />
<br />
To use MinGW-w64, the packages' bin folders needed to be added to PATH just for your current command prompt session. (It is '''not''' recommended to add MinGW-w64 to PATH by default.) Each packages contains a command script that will accomplish this for you, named <code>mingw32env.cmd</code>, <code>mingw64env.cmd</code>, <code>clang32env.cmd</code>, etc.<br />
<br />
Unfortunately, one flaw in MinGW-w64 is that the two different targets have two separate executables, instead of both being in one using the <code>-arch</code> parameter like on *nix. When building EDuke32, the executables generated will match the target of whatever compiler is the highest in PATH--no extra make parameters needed.<br />
<br />
One final note: If you are trying to build '''ebacktrace1.dll''' and are getting errors about a missing "bfd.h", you need to copy the following files from <code><nowiki><root>\include\</nowiki></code> to <code><nowiki><root>\<target>-w64-mingw32\include\</nowiki></code>:<br />
<br />
ansidecl.h<br />
bfd.h<br />
bfdlink.h<br />
dis-asm.h<br />
symcat.h<br />
<br />
===compiling===<br />
Now that we've got everything together, navigate a command prompt window to the base directory containing the EDuke32 source code, type<br />
make<br />
and cross your fingers: this will attempt to build EDuke32 and Mapster32. If you ran the '''MinGW EDuke32 Setup Helper''' earlier in the instructions, it should work.<br />
<br />
To compile only either the game or the editor, simply give ''make'' the name of the executable, like<br />
make eduke32.exe<br />
To compile a version suitable for later debugging with GDB, append ''RELEASE=0'' to the command, like this:<br />
make RELEASE=0<br />
To have more useful function names when doing a backtrace (see '''debugging''' below), it is also advisable to disable stack protectors, like this:<br />
make F_STACK_PROTECTOR_ALL=-fno-stack-protector RELEASE=0<br />
<br />
===troubleshooting===<br />
If something doesn't go as planned, don't despair. Most issues are resolved rather quickly.<br />
<br />
* If you see a barrage of error messages saying that some symbols are not defined, check whether you have all necessary prerequisites like the DirectX SDK installed and that the paths in the Makefile point to the right location.<br />
* If you get errors at the end of the build process (technically, at ''link time''), there's usually a problem with the libraries -- the linker can't find one or more ''.a'' files ''[needs explanation]''.<br />
* Finally, if the executable starts but aborts shortly thereafter, a ''dynamic link library'' may be missing. Usually you'll get a helpful message with its name: check the MinGW download page then.<br />
<br />
===debugging===<br />
<br />
''See [[Troubleshooting EDuke32#Debugging|Troubleshooting EDuke32]].''<br />
<br />
==Building on Windows with Microsoft command line compilers==<br />
EDuke32 can be built using freely downloadable MS tools. Unfortunately MS does not appear to offer a single package containing all the needed tools so it is nessacery to get them from serveral different places.<br />
<br />
download and install the windows SDK from http://www.microsoft.com/download/en/confirmation.aspx?id=11310 accept the defaults in the installer.<br />
<br />
download and install the WDK from http://www.microsoft.com/download/en/details.aspx?id=11800 select the "full development environment" option in the installer.<br />
<br />
download and install visual c++ 2008 express from http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express<br />
<br />
Note that the following instructions assume the above programs were installed in the default locations on a 32-bit windows system. If they are installed in other locations then paths in later instructions will need to be adjusted.<br />
<br />
download http://www.vorbis.com/files/1.0.1/windows/OggVorbis-win32sdk-1.0.1.zip and extract it (These instructions assume it was extracted in c:\)<br />
<br />
copy lib.exe from C:\Program Files\Microsoft Visual Studio 9.0\VC\bin to C:\WinDDK\7600.16385.1\bin\x86<br><br />
copy mt.exe from C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin to C:\WinDDK\7600.16385.1\bin\x86<br />
<br />
start the "windows XP x86 free build environment" from the WDK<br />
<br />
set up paths etc<br />
<br />
set Include=C:\WinDDK\7600.16385.1\inc\api;C:\WINDDK\7600.16385.1\inc\crt;C:\oggvorbis-win32sdk-1.0.1\include<br />
set Lib=C:\WinDDK\7600.16385.1\lib;C:\WINDDK\7600.16385.1\lib\wxp\i386;C:\WINDDK\7600.16385.1\lib\wlh\i386;C:\oggvorbis-win32sdk-1.0.1\lib;C:\WINDDK\7600.16385.1\lib\Crt\i386<br />
PATH=C:\WinDDK\7600.16385.1\tools\sdv\bin;C:\WinDDK\7600.16385.1\bin\x86\oacr;C:\WinDDK\7600.16385.1\tools\pfd\bin\bin\x86;C:\WinDDK\7600.16385.1\tools\tracing\i386;C:\WinDDK\7600.16385.1\bin\x86;C:\WinDDK\7600.16385.1\bin\x86\x86;C:\WinDDK\7600.16385.1\bin\SelfSign;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem<br />
<br />
change to the directory containg your eduke32 source tree and run<br />
nmake -f Makefile.msvc<br />
<br />
==Building on Windows with Microsoft Visual Studio 2010==<br />
<br />
To compile EDuke32 with VS2010, you will need to install the following:<br />
<br />
* '''[http://www.vorbis.com/files/1.0.1/windows/OggVorbis-win32sdk-1.0.1.zip OggVorbis-win32sdk-1.0.1.zip]''' - Ogg Vorbis libraries<br />
<br />
Install locally to somewhere where you can find them easily, such as the Program Files directory.<br />
<br />
===Using SVN===<br />
<br />
If you want to use SVN to build the game read this section. If you already have the latest source files or don't want to use SVN, skip to the next part.<br />
<br />
First, you need to download a free SVN plugin for Visual Studio, such as:<br />
* '''[http://ankhsvn.open.collab.net/ AnkhSVN]'''<br />
<br />
Install AnkhSVN, you can find help for installing it from it's website.<br />
<br />
# Launch Microsoft Visual Studio.<br />
# Navigate through the menus: '''File &rarr; Subversion &rarr; Open from Subversion...'''<br />
# Type in the URL of the EDuke32 SVN.<br />
# Select the '''eduke32.vcproj''' file and click Open.<br />
<br />
AnkhSVN now asks you where to save the project locally.<br />
<br />
'''IMPORTANT!''' The EDuke32 source should be located in a directory with no spaces in its name (for example '''C:\EDuke32\''' or '''D:\Source\EDuke32''').<br />
<br />
Choose the local directory, the '''Type''' drop-down menu should be set to '''Latest Version''', click on OK to save the project on your hard drive. The program now downloads the latest files from SVN.<br />
<br />
When done, EDuke32 is shown as your current solution, now you can continue onto either fiddling with the source or just compiling it.<br />
<br />
===Includes===<br />
<br />
As already mentioned before, EDuke32 is a makefile project so you cannot include OGGVorbis in the '''Project &rarr; Properties''' menu as usual, but you will need to add the includes in the global properties:<br />
<br />
# Navigate to '''Tools &rarr; Options'''.<br />
# Click on '''Show all settings''' to show the settings we need to change.<br />
# Open the '''Projets and Solutions''' category and choose '''VC++ Directories'''.<br />
<br />
Now we need to link the Include directories.<br />
<br />
====General Include directories====<br />
<br />
Make sure the Platform is set to Win32 and select '''Include files''' from the '''Show directories for:''' -drop down menu.<br />
<br />
Click on an empty row and add the local directory names for OGG Vorbis. For example:<br />
* C:\Program Files\oggvorbis-win32sdk-1.0.1\include<br />
<br />
Notice how each directory has the include subdirectory chosen ("\include\"). If your version differs, try finding the correct directory for each or the program will not compile properly.<br />
<br />
The new linked directories are saved automatically so don't click on OK, it will only close the Options menu.<br />
<br />
Next up, we need to link the libaries.<br />
<br />
====Library directories====<br />
<br />
Next, Select '''Library files''' from the '''Show directories for:''' -drop down menu.<br />
<br />
Click on an empty row and add the local directory names for OGG Vorbis. For example:<br />
* C:\Program Files\oggvorbis-win32sdk-1.0.1\lib<br />
<br />
Notice how each directory has the library subdirectory chosen (either '''lib''' or '''libs''').<br />
<br />
Now click on OK to exit the Options menu.<br />
<br />
===Compiling===<br />
<br />
Either click on the green play button, or navigate the menus to '''Build &rarr; Build eduke32''' and VS2010 starts compiling the executables.<br />
<br />
You will probably see a lot of warnings with wrong datatype conversions but these don't affect the outcome.<br />
<br />
[[Category:Distribution documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Return&diff=11421Return2012-12-23T19:10:13Z<p>TX: </p>
<hr />
<div>A '''return''' command is similar to '''[[break]]''' in that it stops code after the '''return''' from executing and thus can be used to exit a state early. However, a '''return''' proparates along a call chain of [[state]]s and terminates the execution of the innermost [[event]] or [[actor]] code. Thus, when the following code snippet is run, only quote 125 ("SPAWNED HEAVYHBOMB") is displayed.<br />
<br />
'''definequote''' 125 SPAWNED HEAVYHBOMB<br />
'''definequote''' 126 RAN EVENT_EGS<br />
'''definequote''' 127 RAN TEST STATE<br />
<br />
'''state''' teststate1<br />
return<br />
userquote 127<br />
'''ends'''<br />
<br />
'''onevent''' [[EVENT_EGS]]<br />
ifactor HEAVYHBOMB<br />
{<br />
state teststate1 ''// after teststate1's return, return from EVENT_EGS!''<br />
userquote 126<br />
}<br />
'''endevent'''<br />
<br />
'''onevent''' [[EVENT_LOADACTOR]]<br />
ifvare THISACTOR 0<br />
{<br />
''// the concrete actor is irrelevant, only placeholder''<br />
[[spawn]] HEAVYHBOMB ''// --> EVENT_EGS''<br />
userquote 125<br />
}<br />
'''endevent'''<br />
<br />
Replacing the '''return''' by a '''[[break]]''' in the above example would lead to quotes 126 and 125 being displayed (in that order) at run time.</div>TXhttps://wiki.eduke32.com/w/index.php?title=Multiplayer&diff=11257Multiplayer2012-10-14T21:09:37Z<p>TX: </p>
<hr />
<div>[http://yang-online.com/ YANG (Yet Another Netplay Guider)] is recommended for Internet play.<br />
<br />
__TOC__<br />
<br />
== Modern Client/Server Multiplayer ==<br />
<br />
<font size="5">EDuke32 multiplayer is broken indefinitely in current versions. Try [[#Old-Style Master/Slave or Peer-to-Peer Multiplayer|old versions]] instead.</font><br />
<br />
===To start a multiplayer server===<br />
At the [[Working with the Windows Command Prompt|command prompt]], run the command:<br />
eduke32 -server<br />
By default servers listen on port UDP 23513.<br />
<br />
Clients will then connect with <br />
eduke32 -connect <server IP><br />
<br />
''Note: You will probably have to change the default console key in keyboard options to something else because "pause" just pauses the game and does not open console.''<br />
<br />
===Server table===<br />
<br />
We can list servers here in future when Server/Client is more stable. :)<br />
<br />
<table class=wikitable width=100%><br />
<br />
<tr><br />
<th>Server Name</th><br />
<th>Max Players</th><br />
<th>IP:Port</th><br />
<th>Status</th><br />
<th>IRC Server/Channel</th><br />
</tr><br />
<br />
<tr><br />
<td>N/A</td><br />
<td>N/A</td> <br />
<td>N/A</td><br />
<td>N/A</td><br />
<td>N/A</td><br />
</tr><br />
<br />
</table><br />
<br />
== Old-Style Master/Slave or Peer-to-Peer Multiplayer ==<br />
<br />
Since new multiplayer code is broken, you can use the last version of EDuke32 to contain the old code in the meantime.<br />
<br />
Required version: http://dukeworld.duke4.net/eduke32/synthesis/old/20091203-1551/<br />
<br />
Documentation for the command-line parameters is available here: http://static.jonof.id.au/modsuppt/jfduke3d/releasenotes.html</div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=11215Main Page2012-10-01T05:10:30Z<p>TX: </p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki serves to provide the most accurate and complete source of [[EDuke32]] documentation on the Internet.<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* '''[[Installation and configuration]]'''<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* '''[[Troubleshooting EDuke32]]'''<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 Distribution===<br />
* '''[[Download EDuke32]]'''<br />
* [[APT repository|APT repositories for Debian and Ubuntu]]<br />
* [[Packages|Packages for other systems]]<br />
====from source====<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [[Building EDuke32 on Mac OS X]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* '''[[Scripting|Scripting using CON files]]'''<br />
* [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* '''[[Level editing|Editing levels with Mapster32]]'''<br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
* [[EDuke32 Modifications|Index of existing EDuke32 mods]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===External links=== <br />
* [http://forums.duke4.net/index.php?showforum=26 Official EDuke32 forum]<br />
* [irc://irc.freenode.net/eduke32 #eduke32 on irc.freenode.net]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly EDuke32 svn builds]<br />
* [http://svn.eduke32.com/log.php?repname=eduke32&path=%2F&isdir=1& EDuke32 svn commit log]<br />
* [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
This wiki is supported by [[Plagman]]'s ongoing donation of server hosting, by our sponsored links, and by purchases of games from [http://www.gog.com/en/frontpage/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 gog.com] by accounts registered through our banners.<br />
<br />
If you don't yet own ''Duke Nukem 3D: Atomic Edition'', [http://www.gog.com/en/gamecard/duke_nukem_3d_atomic_edition/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 buy it now for $5.99!]<br />
<br />
[[Category:Root Category]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=EDuke32_Wii&diff=10938EDuke32 Wii2012-06-03T20:34:21Z<p>TX: </p>
<hr />
<div>'''EDuke32 Wii''' (sometimes mistakenly called "WiiDuke32") is a Wii port of [[Duke Nukem 3D]] using [[EDuke32]]. For more information about the Wii port specifically and Wii homebrew in general, see [http://wiibrew.org/wiki/EDuke32_Wii WiiBrew].<br />
<br />
==Download==<br />
<br />
===Latest version===<br />
<br />
[http://hendricks266.duke4.net/files/eduke32-wii-r2729-milestone-1.7z EDuke32 Wii r2729 Milestone 1]<br />
<br />
===Old versions===<br />
<br />
[http://hendricks266.duke4.net/files/eduke32-wii-r2685.7z EDuke32 Wii r2685]<br />
<br />
==Source==<br />
<br />
See [[Acquiring the EDuke32 Source Code]].<br />
<br />
===SDL Wii and libaesnd===<br />
<br />
As part of his porting, tueidj made a few custom modifications to SDL Wii and libaesnd. The source and compiled libraries of SDL Wii (incorporating the modified libaesnd) can be found here: <br />
http://hendricks266.duke4.net/files/eduke32-wii-sdl-wii-mod-2-with-aesnd.7z<br />
<br />
To install the compiled libraries into the devkitPPC folder, type <code>make install</code>.<br />
<br />
The modified libaesnd itself is necessary if you plan to compile your own SDL Wii. The patch, the patched source, and the compiled library and include header file can all be found here: http://hendricks266.duke4.net/files/eduke32-wii-libaesnd-mod.7z<br />
<br />
==Building Instructions==<br />
<br />
These instructions require Windows or WINE.<br />
<br />
#Set up [[Building EDuke32 on Windows]] using MinGW.<br />
#Download and install [http://devkitpro.org/ devkitPPC].<br />
#Download the modified [[#SDL Wii|SDL Wii]], including libaesnd. If you want to compile it yourself, at the devkitPro shell, type <code>make clean</code> then <code>make</code>. Either way, type <code>make install</code> to copy the libraries to the devkitPPC library location.<br />
#Run '''wiibuild.bat'''.<br />
<br />
==Debugging==<br />
<br />
Gets the disassembly interspersed with line numbers:<br />
<br />
powerpc-eabi-objdump -d -l boot.elf > eduke32.ppcasm<br />
<br />
Gets the addresses of various data in the executable:<br />
<br />
powerpc-eabi-nm -l boot.elf |sort > symbols.nm<br />
<br />
[http://pds.twi.tudelft.nl/vakken/in101/labcourse/instruction-set/ Simplified PPC instruction set]<br />
<br />
==To-Do List==<br />
*Controls: Basic motion controls could be tapped, and GameCube controller support needs to be added.<br />
*Compile libogg, libvorbis, and libvpx.<br />
<br />
==Credits==<br />
[[EDuke32 Team]]<br />
<br />
See [[Credits|the main EDuke32 Credits page]].<br />
<br />
Porting: tueidj<br />
<br />
Merging: [[Helixhorned]]<br />
<br />
Maintenance / Development: [[Hendricks266]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Gamevar_operators&diff=10710Gamevar operators2012-04-18T22:43:21Z<p>TX: </p>
<hr />
<div><'''operator'''>'''var''' <gamevar> <value><br><br />
<'''operator'''>'''varvar''' <gamevar> <value><br />
<br />
Gamevar operators are commands that perform various mathematical and bitwise logical operations on [[gamevar]]s. The first argument must be a writable gamevar and is taken as the destination as well and the first operand (2-address code).<br />
<br />
For example:<br />
<br />
setvar temp 1 // assigns a value of 1 to the gamevar ''temp''.<br />
<br />
addvar temp 1 // adds 1 to ''temp'', causing its value to become 2.<br />
<br />
mulvar temp 2 // multiplies ''temp'' by 2, causing its value to become 4.<br />
<br />
{| {{prettytable}}<br />
!Operator!!C/C++!!Math!!Description!!Notes!!<br />
|-<br />
|set<br />
|<code>=</code><br />
|=<br />
|assignment<br />
|-<br />
|add<br />
|<code><nowiki>+</nowiki></code><br />
|<nowiki>+</nowiki><br />
|addition<br />
|<br />
|-<br />
|sub<br />
|<code><nowiki>-</nowiki></code><br />
|<nowiki>&ndash;</nowiki><br />
|subtraction<br />
|<br />
|-<br />
|mul<br />
|<code>*</code><br />
|&times;<br />
|multiplication<br />
|<br />
|-<br />
|div<br />
|<code>/</code><br />
|&#247;<br />
|division with rounding toward 0<br />
|Ensure that <value> does not equal 0 at any time.<br />
|-<br />
|mod<br />
|<code>%</code><br />
|<br />
|[[Wikipedia:Modulo operation|modulo]], remainder<br />
|Ensure that <value> does not equal 0 at any time; '''It is undefined whether the sign of the result follows the divisor or the dividend''' (for now). <strike>sign of the result is that of left hand side operand</strike><br />
|-<br />
|and<br />
|<code>&</code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] AND<br />
|The bits in the result are set only if they were set in both of the values being operated on. Ex.:<br/><br />
01001010 AND<br/><br />
11110100 is<br/><br />
01000000<br />
|-<br />
|or<br />
|<code><nowiki>|</nowiki></code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] OR<br />
|The bits in the result are set only if they were set in either of the values being operated on. Ex.:<br/><br />
01001010 OR<br/><br />
11110100 is<br/><br />
11111110<br />
|-<br />
|xor<br />
|<code>^</code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] XOR<br />
|The bits in the result are set if only one of the values being operated on has those bits set. Ex.:<br/><br />
01001010 XOR<br/><br />
11110100 is<br/><br />
10111110<br />
|}<br />
<br />
{{varsuffix}}<br />
<br />
[[Category:Gamevar manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Gamevar_operators&diff=10709Gamevar operators2012-04-18T22:42:28Z<p>TX: Reverted edits by Rasmusthorup (talk) to last revision by Helixhorned</p>
<hr />
<div><'''operator'''>'''var''' <gamevar> <value><br><br />
<'''operator'''>'''varvar''' <gamevar> <value><br />
<br />
Gamevar operators are commands that perform various mathematical and bitwise logical operations on [[gamevar]]s. The first argument must be a writable gamevar and is taken as the destination as well and the first operand (2-address code).<br />
<br />
For example:<br />
<br />
setvar temp 3 // assigns a value of 1 to the gamevar ''temp''.<br />
<br />
addvar temp 1 // adds 1 to ''temp'', causing its value to become 2.<br />
<br />
mulvar temp 2 // multiplies ''temp'' by 2, causing its value to become 4.<br />
<br />
{| {{prettytable}}<br />
!Operator!!C/C++!!Math!!Description!!Notes!!<br />
|-<br />
|set<br />
|<code>=</code><br />
|=<br />
|assignment<br />
|-<br />
|add<br />
|<code><nowiki>+</nowiki></code><br />
|<nowiki>+</nowiki><br />
|addition<br />
|<br />
|-<br />
|sub<br />
|<code><nowiki>-</nowiki></code><br />
|<nowiki>&ndash;</nowiki><br />
|subtraction<br />
|<br />
|-<br />
|mul<br />
|<code>*</code><br />
|&times;<br />
|multiplication<br />
|<br />
|-<br />
|div<br />
|<code>/</code><br />
|&#247;<br />
|division with rounding toward 0<br />
|Ensure that <value> does not equal 0 at any time.<br />
|-<br />
|mod<br />
|<code>%</code><br />
|<br />
|[[Wikipedia:Modulo operation|modulo]], remainder<br />
|Ensure that <value> does not equal 0 at any time; '''It is undefined whether the sign of the result follows the divisor or the dividend''' (for now). <strike>sign of the result is that of left hand side operand</strike><br />
|-<br />
|and<br />
|<code>&</code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] AND<br />
|The bits in the result are set only if they were set in both of the values being operated on. Ex.:<br/><br />
01001010 AND<br/><br />
11110100 is<br/><br />
01000000<br />
|-<br />
|or<br />
|<code><nowiki>|</nowiki></code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] OR<br />
|The bits in the result are set only if they were set in either of the values being operated on. Ex.:<br/><br />
01001010 OR<br/><br />
11110100 is<br/><br />
11111110<br />
|-<br />
|xor<br />
|<code>^</code><br />
| <br />
|[[Wikipedia:Bitwise operation|bitwise]] XOR<br />
|The bits in the result are set if only one of the values being operated on has those bits set. Ex.:<br/><br />
01001010 XOR<br/><br />
11110100 is<br/><br />
10111110<br />
|}<br />
<br />
{{varsuffix}}<br />
<br />
[[Category:Gamevar manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=10522Main Page2012-03-23T02:39:04Z<p>TX: Ad revision.</p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki serves to provide the most accurate and complete source of [[EDuke32]] documentation on the Internet.<br />
<br />
Not what you're looking for? [http://www.playcasinogames.org/ Play casino games here] or try Duke's destination for [http://www.cnntees.com/no-deposit-bonuses/ no deposit casino bonuses].<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* '''[[Installation and configuration]]'''<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* '''[[Troubleshooting EDuke32]]'''<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 Distribution===<br />
* '''[[Download EDuke32]]'''<br />
* [[APT repository|APT repositories for Debian and Ubuntu]]<br />
* [[Packages|Packages for other systems]]<br />
====from source====<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [[Building EDuke32 on Mac OS X]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* '''[[Scripting|Scripting using CON files]]'''<br />
* [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* '''[[Level editing|Editing levels with Mapster32]]'''<br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
* [[EDuke32 Modifications|Index of existing EDuke32 mods]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===External links=== <br />
* [http://forums.duke4.net/index.php?showforum=26 Official EDuke32 forum]<br />
* [irc://irc.freenode.net/eduke32 #eduke32 on irc.freenode.net]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly EDuke32 svn builds]<br />
* [http://eduke32.svn.sourceforge.net/viewvc/eduke32/polymer/?view=log EDuke32 svn commit log]<br />
* [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
This wiki is supported by [[Plagman]]'s ongoing donation of server hosting, by our sponsored links, and by purchases of games from [http://www.gog.com/en/frontpage/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 gog.com] by accounts registered through our banners.<br />
<br />
If you don't yet own ''Duke Nukem 3D: Atomic Edition'', [http://www.gog.com/en/gamecard/duke_nukem_3d_atomic_edition/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 buy it now for $5.99!]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=10187Main Page2012-01-30T20:46:14Z<p>TX: </p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki serves to provide the most accurate and complete source of [[EDuke32]] documentation on the Internet.<br />
<br />
Not what you're looking for? Try [http://www.prismcasino.com/casino-games Prism Casino Games] or 123 Bingo Online, Duke's destination for [http://www.123bingoonline.com/free-bingo.php free bingo].<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* [[Installation and configuration]]<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* [[Troubleshooting EDuke32]]<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 on Linux, OS X or from source===<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [http://www.spam-filter.de/osx/eduke32_on_os_x Building and running EDuke32 on OS X]<br />
* [[APT repository | APT repositories for Debian and Ubuntu]]<br />
* [[Packages | Packages for other systems]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* [[Scripting|Scripting using CON files]] <br />
* [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* [[Level editing|Editing levels with Mapster32]] <br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
* [[EDuke32 Modifications|Index of existing EDuke32 mods]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===External links=== <br />
* [http://forums.duke4.net/index.php?showforum=26 Official EDuke32 forum]<br />
* [irc://irc.freenode.net/eduke32 #eduke32 on irc.freenode.net]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly EDuke32 svn builds]<br />
* [http://eduke32.svn.sourceforge.net/viewvc/eduke32/polymer/?view=log EDuke32 svn commit log]<br />
* [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
This wiki is supported by [http://www.plagman.net Plagman]'s ongoing donation of server hosting, by our sponsored links, and by purchases of games from [http://www.gog.com/en/frontpage/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 gog.com] by accounts registered through our banners.<br />
<br />
If you don't yet own ''Duke Nukem 3D: Atomic Edition'', [http://www.gog.com/en/gamecard/duke_nukem_3d_atomic_edition/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 buy it now for $5.99!]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Main_Page&diff=10181Main Page2012-01-27T04:08:13Z<p>TX: Ads like this make me feel dirty, but they're not any worse than the AdSense stuff I used to run and I actually get paid for these. I do have a family to support, after all. Do not delete.</p>
<hr />
<div>__NOTOC__ __NOEDITSECTION__<br />
Welcome to EDukeWiki! This wiki serves to provide the most accurate and complete source of [[EDuke32]] documentation on the Internet.<br />
<br />
EDukeWiki is sponsored by [http://www.prismcasino.com/casino-games Prism Casino Games] and by 123 Bingo Online, Duke's destination for [http://www.123bingoonline.com/free-bingo.php free bingo].<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="66%" valign="top" style="background-color: #f8f8ff; border: 2px solid #dddddd; padding: 0.6em;" |<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Using EDuke32=== <br />
* [[Installation and configuration]]<br />
** [[Command line options]]<br />
** [[Console commands]]<br />
** [[Configuration file options]]<br />
** [[Environment variables]]<br />
* [[Multiplayer]]<br />
* [[Troubleshooting EDuke32]]<br />
* [[Frequently Asked Questions]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===EDuke32 on Linux, OS X or from source===<br />
* [[Building EDuke32 on Linux]] <br />
* [[Building EDuke32 on Windows]]<br />
* [http://www.spam-filter.de/osx/eduke32_on_os_x Building and running EDuke32 on OS X]<br />
* [[APT repository | APT repositories for Debian and Ubuntu]]<br />
* [[Packages | Packages for other systems]]<br />
<br />
|}<br />
<br />
{| cellpadding="0" cellspacing="0" border="0" width="100%"<br />
| width="50%" valign="top" style="background-color: #f8f8ff; border: none; border-right: none; padding: 0.6em;" |<br />
<br />
===Creating and editing EDuke32 content=== <br />
* [[Scripting|Scripting using CON files]] <br />
* [[Tutorials|CON script tutorials and examples]] <br />
* [[DEF Language|Engine content definition language]]<br />
* [[Maphack Language|Maphack level adjustments]]<br />
* [[Level editing|Editing levels with Mapster32]] <br />
* [[Cross-Platform Modding|Can users of other operating systems play my mod?]]<br />
* [[Utilities|Utilities for use with EDuke32]]<br />
* [[EDuke32 Modifications|Index of existing EDuke32 mods]]<br />
<br />
| width="50%" valign="top" style="border: none; padding: 0.6em;" |<br />
<br />
===External links=== <br />
* [http://forums.duke4.net/index.php?showforum=26 Official EDuke32 forum]<br />
* [irc://irc.freenode.net/eduke32 #eduke32 on irc.freenode.net]<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/ Automated hourly EDuke32 svn builds]<br />
* [http://eduke32.svn.sourceforge.net/viewvc/eduke32/polymer/?view=log EDuke32 svn commit log]<br />
* [http://infosuite.duke4.net/ The Duke Nukem 3D Informational Suite (mapping guide)]<br />
* [http://www.moddb.com/engines/eduke32/ EDuke32 on Mod DB]<br />
|}<br />
<br />
<!-- | width="33%" valign="top" style="border: 2px solid #dddddd; border-left: none; padding: 0.6em;" | --><br />
<br />
|}<br />
<br />
Please remember that EDukeWiki is a community project. It relies on content contributed by users such as yourself in order to stay alive and continue to be useful. It is the responsibility of users like you to not only make sure that the documentation here is both accurate and relevant to current version of [[EDuke32]], but to also help reverse any vandalism you see. Thank you for your contributions and for helping to keep our wiki friendly and clean of vandalism and spam!<br />
<br />
This wiki is supported by [http://www.plagman.net Plagman]'s ongoing donation of server hosting, by our sponsored links, and by purchases of games from [http://www.gog.com/en/frontpage/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 gog.com] by accounts registered through our banners.<br />
<br />
If you don't yet own ''Duke Nukem 3D: Atomic Edition'', [http://www.gog.com/en/gamecard/duke_nukem_3d_atomic_edition/pp/6c1e671f9af5b46d9c1a52067bdf0e53685674f7 buy it now for $5.99!]</div>TXhttps://wiki.eduke32.com/w/index.php?title=DEF_Language&diff=10042DEF Language2011-11-26T22:15:10Z<p>TX: /* skybox */</p>
<hr />
<div>DEF files are parsed scripts which allow definition of textures, 3D models, miscellaneous settings, higher-quality sounds and music, and more.<br />
<br />
Comments can be used by prefixing the text with a double forward-slash <code>//</code>, or surrounding the text with <code>/* (comment here) */</code>.<br />
<br />
__TOC__<br />
<br />
==Setup==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>include</div>=====<br />
<br />
<span {{Def element}}>include <i><filename></i></span><br /><br />
<span {{Def element}}>#include <i><filename></i></span><br />
<br />
Processes the script commands in <i><filename></i> at the point of the <b>include</b> call.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>includedefault</div>=====<br />
<br />
<span {{Def element}}>includedefault</span><br /><br />
<span {{Def element}}>#includedefault</span><br />
<br />
Processes the script commands in the default .def file at the point of the <b>include</b> call. Only useful for command-line overrides.<br />
<br />
For Duke Nukem 3D, the file is duke3d.def. For NAM, it is nam.def. For WWII GI, it is ww2gi.def.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>define</div>=====<br />
<br />
<span {{Def element}}>define <i><label> <integer-value></i></span><br /><br />
<span {{Def element}}>#define <i><label> <integer-value></i></span><br />
<br />
Declares <i><label></i> to represent the numeric value <i><integer-value></i>. <i><integer-value></i> can be a label, in which case the value of the label given is used.<br />
<br />
NOTE: You may find it convenient to include DEFS.CON or NAMES.H to predefine many of the tile (and sound) names in the art file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>loadgrp</div>=====<br />
<br />
<span {{Def element}}>loadgrp <i><.grp\.zip file></i></span><br />
<br />
The DEF equivalent of the <b>/g</b> command line switch. <b>loadgrp</b> can only be used in the originating .def file; it is usually <b>duke3d.def</b> or the .def file specified by the <b>/h</b> command line switch.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>noautoload</div>=====<br />
<br />
<span {{Def element}}>noautoload</span><br />
<br />
Disables the autoload dir feature.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>cachesize</div>=====<br />
<br />
<span {{Def element}}>cachesize <i><size></i></span><br />
<br />
Specifies the size of the cache in Kb. Don't use this unless you know what you are doing.<br />
<br />
{{Def table2}}<br />
<br />
==Color Palettes==<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tint</div>=====<br />
<span {{Def element}}>tint <i>{ ... }</i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles.<br />
<br />
Example:<br />
<br />
tint { pal 1 red 127 green 127 blue 255 flags 0 }<br />
tint { pal 2 green 127 blue 127 }<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: The palette number the tint applies to.<br />
<br />
: <span {{Def subelement}}>red <i><value></i></span> (or <span {{Def subelement}}>r <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>green <i><value></i></span> (or <span {{Def subelement}}>g <i><value></i></span>)<br /><br />
: <span {{Def subelement}}>blue <i><value></i></span> (or <span {{Def subelement}}>b <i><value></i></span>)<br />
<br />
: Specifies a color component value, in the range of 0 to 255. Unspecified components are assumed to be 255 and any out of range values are clamped to the maximum or minimum as appropriate.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special processing effects to use for the tint. The value of flags may be the sum of any of these values:<br />
<br />
: 0 = no effects<br /><br />
: 1 = convert to greyscale<br /><br />
: 2 = invert colors<br />
<br />
{{Def table2}}<br />
<br />
== Definitions ==<br />
<br />
===8-Bit .ART File Replacements===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>tilefromtexture</div>=====<br />
<br />
<span {{Def element}}>tilefromtexture <tilenum> <i>{ ... }</i></span><br />
<br />
Used to generate an 8-bit tile from an image file. Use the alpha channel for transparency instead of the pink color.<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br /><br />
: <span {{Def subelement}}>name <i><filename></i></span><br />
<br />
: <span {{Def subelement}}>alphacut <i><value></i></span><br />
<br />
: <span {{Def subelement}}>xoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>xoff <i><value></i></span><br />
<br />
: <span {{Def subelement}}>yoffset <i><value></i></span><br /><br />
: <span {{Def subelement}}>yoff <i><value></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>animtilerange</div>=====<br />
<br />
<span {{Def element}}>animtilerange <i><tilenum1> <tilenum2> <speed value> <animation value></i></span><br />
<br />
Sets an animation range identical to the ones embedded in the .ART files. An art tile must be defined first.<br />
<br />
Speed value ranges from 0 to 15, 0 being the fastest.<br />
<br />
Values are:<br />
<br />
0 = none<br /><br />
1 = oscillating<br /><br />
2 = forward<br /><br />
3 = backward<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>voxel</div>=====<br />
<br />
<span {{Def element}}>voxel <i><filename> { ... }</i></span><br />
<br />
Defines a voxel to replace sprites. filename is the name of the .KVX file containing the voxel. The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
: Use these instructions to map tiles that should be rendered as a voxels. Use <b>tile</b> to map a single tile to be rendered as voxels and <b>tile0</b>, <b>tile1</b> together define a range of tiles to be rendered as voxels. The <b>tile0</b> instruction should appear before the <b>tile1</b> instruction to define a correct range.<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the voxelmodel when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
{{Def table2}}<br />
<br />
===High Resolution Art===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>texture</div>=====<br />
<span {{Def element}}>texture <i><tilenum> { ... }</i></span><br />
<br />
Defines a Hightile texture to replace an ART-file tile. <i><tilenum></i> may be a number, or a defined label.<br />
<br />
Example:<br />
<br />
texture 3586 {<br />
pal 0 { file "mymod/tree.png" }<br />
pal 21 { file "mymod/tree_red.png" xscale 2.0 yscale 2.0 alphacut 0 nodownsize nocompress }<br />
glow { file "mymod/tree_light.png" }<br />
detail { file "mymod/plant_texture.png" scale 0.5 }<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>pal <i><palnum> { ... }</i></span><br />
<br />
: Replaces the palette <i><palnum></i>. If a palette has no pal definition palette 0 definition will be used. Tint will not be used on palettes defined with this instruction.<br />
<br />
: The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span> (or <span {{Def subelement}}>name <i><filename></i></span>)<br />
<br />
:: Defines which texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>alphacut <i><cutoff-value></i></span><br />
<br />
:: Sets the level of transparency at which a pixel in the texture is considered opaque. Pixels with more transparency than the cut-off are not drawn to the screen when rendered. The default setting is 0.32, which is just below the 33% transparency level of Build. If your texture has areas that are more transparent than the default, you can lower the cut-off level to preserve that detail.<br />
<br />
:: <span {{Def subelement}}>nocompress</span><br />
<br />
:: Prevents the texture from being compressed using S3TC if texture compression is enabled.<br />
<br />
:: <span {{Def subelement}}>nodownsize</span><br />
<br />
:: Prevents the texture from being downsized.<br />
<br />
:: <span {{Def subelement}}>xscale <i><value></i></span><br /><br />
:: <span {{Def subelement}}>yscale <i><value></i></span><br />
<br />
:: Sets the scale of the hightile texture in relation to the original texture. A <i><value></i> of 1.0 makes it the same size, higher makes it cover more then the original tile and smaller makes it cover a smaller area. <b>xscale</b> (aka <b>scale</b>, <b>detailscale</b>, <b>intensity</b>) sets the horizontal scale and <b>yscale</b> sets the vertical scale.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the texture. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>skybox</div>=====<br />
<br />
<span {{Def element}}>skybox <i>{ ... }</i></span><br />
<br />
Defines a skybox that overrides a parallaxing floor or ceiling in OpenGL rendering modes.<br />
<br />
Example:<br />
skybox {<br />
tile 3586 pal 0<br />
front "mymod/sky_1.png" nocompress <br />
right "mymod/sky_2.png" nocompress <br />
back "mymod/sky_3.png" nocompress<br />
left "mymod/sky_4.png" nocompress <br />
top "mymod/sky_5.png" nocompress<br />
down "mymod/sky_6.png" nocompress<br />
}<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br />
<br />
: Specifies the ART file tile to override.<br />
<br />
: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
: Specifies the palette number the skybox should happen for.<br />
<br />
: <span {{Def subelement}}>front <i><filename></i></span> (or <span {{Def subelement}}>Front</span> / <span {{Def subelement}}>ft</span> / <span {{Def subelement}}>forward</span>)<br /><br />
: <span {{Def subelement}}>right <i><filename></i></span> (or <span {{Def subelement}}>rt</span> / <span {{Def subelement}}>right</span>)<br /><br />
: <span {{Def subelement}}>back <i><filename></i></span> (or <span {{Def subelement}}>bk</span> / <span {{Def subelement}}>back</span>)<br /><br />
: <span {{Def subelement}}>left <i><filename></i></span> (or <span {{Def subelement}}>lf</span> / <span {{Def subelement}}>left</span>) / <span {{Def subelement}}>lt</span>)<br /><br />
: <span {{Def subelement}}>top <i><filename></i></span> (or <span {{Def subelement}}>up</span> / <span {{Def subelement}}>top</span> / <span {{Def subelement}}>ceiling</span> / <span {{Def subelement}}>ceil</span>)<br /><br />
: <span {{Def subelement}}>down <i><filename></i></span> (or <span {{Def subelement}}>dn</span> / <span {{Def subelement}}>bottom</span> / <span {{Def subelement}}>floor</span> / <span {{Def subelement}}>down</span>)<br />
<br />
: Defines a single face of the skybox where facename may be any of these keywords appropriate for the face in question:<br />
<br />
: NOTE: All six faces are required to be specified.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>model</div>=====<br />
<br />
<span {{Def element}}>model <i><filename> { ... }</i></span><br />
<br />
Defines a model to replace certain sprites in the game when running in OpenGL Polymost mode. <i><filename></i> is the model file in md2 or md3 format.<br />
<br />
Note: md2 is considered deprecated.<br />
<br />
The brace-enclosed block may contain these instructions:<br />
<br />
: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
: <i><value></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big.<br />
<br />
: <span {{Def subelement}}>shade <i><shade-offset></i></span><br />
<br />
: <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>zadd <i><offset></i></span><br />
<br />
: <i><offset></i> is a (possibly fractional) value specifying a height offset for the model. Quake models are aligned in the center while Build models are aligned at the floor. Using this command will allow Build to use Quake models without modification to the MD2/3 file itself.<br />
<br />
: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
: Specifies any special properties the model should have, the values of which should be added together to combine multiple options.<br />
: 0: default value<br /><br />
: 1: Prevents the the model from being affected by the tints.<br /><br />
<br />
: <span {{Def subelement}}>skin <i>{ ... }</i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>pal <i><palnum></i></span><br />
<br />
:: Specifies which palette this skin maps to.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this skin should be applied to. This has no significance for MD2 models.<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies the texture file to use for the skin. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file<br />
<br />
:: IMPORTANT: If your model exists in a subdirectory (ie. the model filename includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>anim <i>{ ... }</i></span><br />
<br />
: Defines an animation from a group of frames in the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>frame0 <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame1 <i><framename></i></span><br />
<br />
:: Specifies the names of the start (<b>frame0</b>) and end (<b>frame1</b>) frames of the animation.<br />
<br />
:: <span {{Def subelement}}>fps <i><fps></i></span><br />
<br />
:: Specifies the frame rate at which the animation should play. This value may be fractional.<br />
<br />
:: <span {{Def subelement}}>flags <i><flags></i></span><br />
<br />
:: Specifies any special properties the animation should have, the values of which should be added together to combine multiple options.<br />
<br />
:: Valid options are:<br />
:: 0 none (looping animation)<br /><br />
:: 1 one-shot (plays beginning to end once and stops on the last frame).<br />
<br />
: <span {{Def subelement}}>frame <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame/animation of the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>name <i><framename></i></span><br /><br />
:: <span {{Def subelement}}>frame <i><framename></i></span><br />
<br />
:: If <i><framename></i> is identical to the starting frame of an animation, the engine will play that animation, otherwise the replacement will be static. You can choose to use the <b>frame</b> or <b>name</b> versions of this instruction as both are identical.<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: Use the tile instruction to specify an ART-file tile which this model should replace. Use the <b>tile0</b> and <b>tile1</b> instructions together to specify a range of ART-file tiles. If you use <b>tile0</b>, you must also have a <b>tile1</b>. You may not use the same instruction twice to specify multiple ranges.<br />
<br />
:: <span {{Def subelement}}>smoothduration <i><value></i></span><br />
<br />
:: If smoothduration is non-zero switching from another animation to the one defined by that frame block will trigger an intermediary animation smoothing state of duration <i><value></i> seconds.<br />
<br />
:: <span {{Def subelement}}>pal <i><value></i></span><br />
<br />
:: Makes the model definition exclusive for the this pal. This allow to assign different models for different pal.<br />
<br />
: <span {{Def subelement}}>hud <i>{ ... }</i></span><br />
<br />
: Defines a range of ART-file tiles to use with a heads-up-display. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile0 <i><tilenum></i></span><br /><br />
:: <span {{Def subelement}}>tile1 <i><tilenum></i></span><br />
<br />
:: <b>tile0</b> and <b>tile1</b> together specify a range of ART-file tiles which this model frame should replace when rendered as part of the HUD. You can specify individual tiles using a single tile command.<br />
<br />
:: <span {{Def subelement}}>xadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>yadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>zadd <i><offset></i></span><br /><br />
:: <span {{Def subelement}}>angadd <i><offset></i></span><br />
<br />
:: Use these offsets to fine-tune the location of the model placement. <b>xadd</b>, <b>yadd</b>, and <b>zadd</b> are position offsets relative to the viewer's orienation. You can use floating point values with them. <b>angadd</b> is a Build angle offset. (512 90 degrees, 1024 180 degrees, etc...).<br />
<br />
:: <span {{Def subelement}}>hide</span><br />
<br />
:: Some weapons use multiple ART tiles for constructing the gun or animation. Use this option to hide parts that you don't need in your replacement.<br />
<br />
:: <span {{Def subelement}}>nobob</span><br />
<br />
:: By default, the HUD model offset is affected by the player bobbing offset when the player is walking. Use this option to disable that.<br />
<br />
:: <span {{Def subelement}}>flipped</span><br />
<br />
:: Use this option to apply the settings inside the hud block only if the object is normally rendered x-flipped (mirror image). Some weapons, such as the devastator, are rendered in 2 pieces, the left devastator is actually a mirror image of the right.<br />
<br />
:: <span {{Def subelement}}>nodepth</span><br />
<br />
:: Use this to render a HUD model without the use of the depth buffer. Normally, you should avoid this. The one exception where this is useful is for the spinning nuke menu icon because it should always be in front -- and it just happens to be convex, which is the one case that is safe with the depth buffer disabled.<br />
<br />
: <span {{Def subelement}}>detail <i>{ ... }</i></span><br />
<br />
: Defines a [[Detail_mapping|detail texture]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which detail texture file to use. File may be any PNG, JPG, DDS, TGA, BMP, GIF or PCX file. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>scale <i><value></i></span><br />
<br />
:: <i><value></i> is a positive floating-point value that'll determine how much your detail map should repeat on your diffuse map (if you want your detail map to repeat five times, use a 1/5 scale : 0.2).<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this detail texture should be applied to. This has no significance for MD2 models.<br />
<br />
: <span {{Def subelement}}>glow <i>{ ... }</i></span><br />
<br />
: Defines a [[Glow_mapping|glow map]] for the model. The brace-enclosed block may contain these instructions:<br />
<br />
:: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
:: Specifies which glow map file to use. This instruction must be supplied.<br />
<br />
:: <span {{Def subelement}}>surface <i><surfnum></i></span><br />
<br />
:: Specifies which MD3 surface this glow map should be applied to. This has no significance for MD2 models.<br />
<br />
{{Def table2}}<br />
<br />
===Audio===<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>music</div>=====<br />
<span {{Def element}}>music <i>{ ... }</i></span><br />
<br />
Example:<br />
music { id "E1L1" file "stalker1.ogg" }<br />
music { id "Intro" file "grabbag.ogg" }<br />
music { id "Briefing" file "briefing.ogg" }<br />
music { id "Loading" file "bonus.ogg" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: <i><value></i> is "Intro", "Briefing", "Loading" or "E'''x'''L'''y'''" (where x is the episode and y is the level).<br /><br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which music file to use. File types: MID, OGG<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>sound</div>=====<br />
<span {{Def element}}>sound <i>{ ... }</i></span><br />
<br />
Example:<br />
sound { id "249" file "bonus.ogg" }<br />
<br />
: <span {{Def subelement}}>id <i><value></i></span><br />
<br />
: Specifies the ID of sound. The ID can be found in DEFS.CON.<br />
<br />
: <span {{Def subelement}}>file <i><filename></i></span><br />
<br />
: Specifies which music file to use. File types: WAV, VOC, OGG<br />
<br />
{{Def table2}}<br />
<br />
== Un-Definitions ==<br />
<br />
The main use for these is for cases in which the .ART files are somewhat different, and you want to ensure compatibility for the new art without new textures or models. A good example of this is [http://hendricks266.duke4.net/nw_plus.php Duke: Nuclear Winter Plus] by [[User:Hendricks 266|Hendricks266]]. (see undef.def)<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>undeftexture</div>=====<br />
<span {{Def element}}>undeftexture <i><tile></i></span><br /><br />
<span {{Def element}}>undeftexturerange <i><tile0> <tile1></i></span><br />
<br />
This is for undefining Hightile textures.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>undefmodel</div>=====<br />
<span {{Def element}}>undefmodel <i><tile></i></span><br /><br />
<span {{Def element}}>undefmodelrange <i><tile0> <tile1></i></span><br /><br />
<span {{Def element}}>undefmodelof <i><tile></i></span><sup>1</sup><br />
<br />
This is for undefining 3D models.<br />
<br />
With <b>undefmodelof</b> all the tiles grouped together within the same .def code block are un-defined.<br />
<br />
1. Support of <b>undefmodelof</b> seems to be broken at this time. Using it in your .def files will result in crashing upon compiling.<br />
<br />
{{Def table2}}<br />
<br />
== Misc ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytile</div>=====<br />
<br />
<span {{Def element}}>dummytile <i><tilenum> <x-dimension> <y-dimension></i></span><br /><br />
<span {{Def element}}>dummytilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension></i></span><br />
<br />
Used in DEF files to create a blank tile at location <b><''tilenum''></b> of the dimensions <b><''x-dimension''></b> and <b><''y-dimension''></b>. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
'''NOTE:''' In most circumstances '''setuptile''' is a better command to use, unless you specifically want black boxes.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>setuptile</div>=====<br />
<br />
<span {{Def element}}>setuptile <i><tilenum> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br /><br />
<span {{Def element}}>setuptilerange <i><tilenum1> <tilenum2> <x-dimension> <y-dimension> <x-offset> <y-offset></i></span><br />
<br />
Used in DEF files to setup the properties which are applied to the highres replacement of the tile. This allows the creation of placeholder tiles for use with definetexture\texture without having to edit .ART files.<br />
<br />
Unlike <b>dummytile</b> this command won't draw black squares and accepts offsets.<br />
<br />
It doesn't affect 8-bit tiles or HUD images.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>dummytilefrompic</div>=====<br />
<br />
<span {{Def element}}>dummytilefrompic <i><tileID> <file></i></span><br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>fogpal</div>=====<br />
<br />
<span {{Def element}}>fogpal <i><palette number> <red intensity> <green intensity> <blue intensity></i></span><br />
<br />
<b>fogpal</b> defines a palette a sector-based fog effect. To use it, change the pal of your sector to the pal defined with <b>fogpal</b>.<br />
<br />
Intensities range from 0-63. Palettes 26, 27, 28 and 29 are pre-defined for you as white, red, green and blue respectively. Sector visibility controls fog density.<br />
<br />
{{Def table2}}<br />
<br />
== Mapster32 ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>2dcol</div>=====<br />
<br />
<span {{Def element}}>2dcol <i><colornum> <red> <green> <blue></i></span><br />
<br />
<b>2dcol</b> is a definition of a color to be used in the 2D mode of [[Mapster32]], in conjunction with <b>spritecol</b> that works similarly to <b>tint</b> and <b>definetint</b>. <i><colornum></i> is a unique identifier, similar to [[define|defines]] and [[gamevar|gamevars]]. <i><red></i>, <i><green></i>, and <i><blue></i> are the RGB color values that are mixed together to get your custom color.<br />
<br />
Certain low values are already hard-coded, and redefining them will change colors of the default layout. If you know the correct value, you can replace the default colors used for <b>all</b> the sprites. You truly have the power to customize Mapster32. Lime green 2D mode background, anyone?<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritecol</div>=====<br />
<br />
<span {{Def element}}>spritecol <i><tilenum> <normalcolornum> <blockingcolornum></i></span><br />
<br />
<b>spritecol</b> is a definition of the color a sprite will appear in 2D mode, instead of the standard sky blue and hot pink, or another special color (like yellow for hard-coded enemies or white for the [[Special_Sprite_Reference_Guide|special sprites]]). <b><''normalcolornum''></b> is the <b><''colornum''></b> of the <b>2dcol</b> definition of your color for the standard sprite color as defined by <b><''tilenum''></b>. The same goes for <b><''blockingcolornum''></b>, except that this value is for when the sprite has the first bit of [[cstat]] set (1) (<code>[']+[B]</code> keys in [[Mapster32]]), which is the blocking flag.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>spritehotkey</div>=====<br />
<br />
<span {{Def element}}>spritehotkey <i><key> <spriteID></i></span><br />
<br />
Pressing a key from 1 to 0 on the upper row before pressing S will make the inserted sprite's picnum change according to this definition.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>tilegroup</div>=====<br />
<br />
<span {{Def element}}>tilegroup <i><groupname> { ... }</i></span><br />
<br />
Defines group for the tile selector (press 'T'). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>tile <i><tilenum></i></span><br /><br />
: <span {{Def subelement}}>tilerange <i><tilenum1> <tilenum2></i></span><br /><br />
: <span {{Def subelement}}>tiles <i>{ <tile1> <tile2> ... <tileN> }</i></span><br />
<br />
: Adds tiles to the group. Names can be found in DEFS.CON.<br />
<br />
: <span {{Def subelement}}>hotkey <i><value></i></span><br />
<br />
: Specifies the hotkey for the group.<br />
<br />
: <span {{Def subelement}}>colors <i><value1> <value2></i></span><br />
<br />
: Colors are the colors for Blocking OFF and Blocking ON.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphabet</div>=====<br />
<br />
<span {{Def element}}>alphabet <i>{ ... }</i></span><br />
<br />
Defines alphabet for the input text feature (Ctrl+T). Mapster32 loads TILES.CFG on startup.<br />
<br />
: <span {{Def subelement}}>map <i><value> <tile></i></span><br />
<br />
: <span {{Def subelement}}>mapa <i><string> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprange <i><value1> <value2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>maprangea <i><char1> <char2> <tile></i></span><br />
<br />
: <span {{Def subelement}}>offset <i><value> <offset></i></span><br />
<br />
: <span {{Def subelement}}>offseta <i><string> <offset></i></span><br />
<br />
{{Def table2}}<br />
<br />
== Deprecated Commands ==<br />
<br />
{{Def table1}}<br />
<br />
=====<div {{Def link}}>definetexture</div>=====<br />
<br />
<span {{Def element}}>definetexture <i><tile-number> <palette-number> <x-center> <y-center> <x-size> <y-size> <filename></i></span><br />
<br />
Defines a Hightile texture to replace an ART-file picture. <i><tile-number></i> may be an number, or a defined label. Use a value of 0 for <i><x-center></i> and <i><y-center></i> and a value of -1 for <i><x-size></i> and <i><y-size></i> for now until these values are actually used. <i><filename></i> may be any PNG, JPG, DDS, TGA, BMP, GIF, or PCX file.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definetint</div>=====<br />
<br />
<span {{Def element}}>definetint <i><palette-number> <red> <green> <blue> <flags></i></span><br />
<br />
Defines a Hightile texture tint to simulate palette effects normally used on ART-file tiles. <i><red></i>, <i><green></i>, and <i><blue></i> are numbers in the range 0 to 255 which specify the color the tint should look like. <i><flags></i> specifies any processing effects to use. Valid values are:<br />
<br />
0 no effects<br /><br />
1 convert to greyscale<br /><br />
2 invert colours<br /><br />
<br />
These values can be added together to produce a combination of effects.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>defineskybox</div>=====<br />
<br />
<span {{Def element}}>defineskybox <i><tile-number> <palette-number> <reserved> <front-face-filename> <right-face-filename> <back-face-filename> <left-face-filename> <top-face-filename> <bottom-face-filename></i></span><br />
<br />
Defines a sky-box composed of six images mapped onto the faces <br />
of a cube to be used when <i><tile-number></i> is set as parallaxing in GL Polymost mode. <i><reserved></i> should be 0 for now until its meaning is fully conceived.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definemodel</div>=====<br />
<br />
<span {{Def element}}>definemodel <i><filename> <scale> <shade-offset></i></span><br />
<br />
Defines an MD2/3-format model file to replace certain sprites in the game. See <b>definemodelframe</b> and <b>definemodelanim</b> for details on how to specify the ART-file tiles to replace. <i><filename></i> is the name of the MD2/3 model. <i><scale></i> is a (possibly fractional) value specifying a scaling factor for the model when it is rendered, eg. 1.5 for one-and-a-half times as big. <i><shade-offset></i> is an integer value specifying how much to bias the sprite's shade value by. A negative value for this makes the model brighter. Conversely, a positive value makes it darker.<br />
<br />
: <span {{Def subelement}}>definemodelskin <i><palette-number> <filename></i></span><br />
<br />
: Defines a skin to be used on the model for all frames declared after this command, when the sprite palette is equal to <i><palette-number></i>. (This makes more sense when given a demonstration.) IMPORTANT: If your model exists in a subdirectory (ie. <b>definemodel</b> includes a path to the .md2/3) you will need to give the same path to filename if the skin is in the same directory.<br />
<br />
: <span {{Def subelement}}>selectmodelskin <i><skin ID></i></span><br />
<br />
: Selects a model skin.<br />
<br />
: <span {{Def subelement}}>definemodelanim <i><start-frame> <end-frame> <frame-rate> <flags></i></span><br />
<br />
: Defines an animation from a group of frames in the model given by the last preceding <b>definemodel</b> instruction. <i><start-frame></i> and <i><end-frame></i> specify the names of the starting and ending frames of the animation. <i><frame-rate></i> is the frame rate at which the animation should play. This value can be fractional. <i><flags></i> specifies any special properties the animation should have. Valid options are:<br />
<br />
: 0 none (looping animation)<br /><br />
: 1 one-shot (plays beginning to end once and stops on the last frame)<br />
<br />
: <span {{Def subelement}}>definemodelframe <i><frame-name> <first-tile> <last-tile></i></span><br />
<br />
: Defines a range of ART-file tiles to correspond with the given frame of the model specified in the last preceding <b>definemodel</b> instruction. <i><frame-name></i> is the name of the frame, which if identical to the starting frame of a <b>definemodelanim</b> animation will play that animation. If <i><frame-name></i> is not corresponding with an animation, the replacement will be static. <i><first-tile></i> and <i><last-tile></i> specify a range of ART-file tiles which this model frame should replace.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>definevoxel</div>=====<br />
<br />
<span {{Def element}}>definevoxel <i><filename></i></span><br /><br />
<span {{Def element}}>definevoxeltiles <i><first-tile> <last-tile></i></span><br />
<br />
Defines a voxel to replace sprites in the game. <i><filename></i> is the name of the .KVX file containing the voxel.<br />
<br />
<b>definevoxeltiles</b> defines the range of ART-file tiles to replace with the voxel.<br />
<br />
{{Def table2}} {{Def table1}}<br />
<br />
=====<div {{Def link}}>alphahack</div>=====<br />
<br />
<span {{Def element}}>alphahack <i><tilenum> <value></i></span><br /><br />
<span {{Def element}}>alphahackrange <i><tilenum1> <tilenum2> <value></i></span><br /><br />
<br />
<b>alphahack</b> is a deprecated command previously used to improve alpha filtering of highres art of <i><tilenum></i>. <i><value></i> is always -1.<br />
<br />
{{Def table2}}<br />
<br />
[[Category:All commands]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Displayrand&diff=10017Displayrand2011-11-10T15:45:22Z<p>TX: Reverted edits by Plugwash (talk) to last revision by Helixhorned</p>
<hr />
<div>'''displayrand''' <gamevar><br><br />
generates a random number between 0 and a certain maximum value and assigns it to <gamevar>. With EDuke32 revisions prior to r2105, the maximum values may differ between EDuke32 builds produced with the GCC and MSVC compilers, and/or operating systems. Revisions r2105 and up always generate numbers from 0 to 32767 (inclusive).<br />
<br />
'''displayrandvar''' <gamevar> <maxvalue_constant><br><br />
'''displayrandvarvar''' <gamevar> <maxvalue_gamevar><br />
<br />
The '''displayrandvar''' commands limit the number to be between 0 and <maxvalue>, inclusive.<br />
<br />
'''displayrandvarvar''' takes a [[gamevar]] rather than a constant or a [[define]]d label for <maxvalue>.<br />
<br />
Since this function is sync safe, it can be used in unsynchronized code.<br />
<br />
See [[randomseed]].<br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Gamevar manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Level_editing&diff=10000Level editing2011-10-30T18:56:25Z<p>TX: Reverted edits by 89.158.88.233 (talk) to last revision by 219.90.217.142</p>
<hr />
<div>{{Build Intro}}<br />
<div class="floatleft">__TOC__</div><br />
<br />
<strong>NOTE: This section is based on The Map Editing FAQ for Duke Nukem 3D v. 2.1 by Jonah Bishop, &copy;2000. The majority of the information presented here was written over five years ago. Some may be outdated, and some may be incorrect -- this page exists to get you started with the Level Editing and may not currently cover some of the additional features available in Mapster32, although as of 2011 some of the less well known yet handy new mapster32 features have been added.</strong><br />
<br />
==Information About Maps==<br />
===What is a map?===<br />
<br />
A "map" is a general term used to describe the levels in [[Duke Nukem 3D]] (or just about any other game for that matter). Maps include all the level information (effect parameters, wall placement, sprite placement, etc.).<br />
<br />
===What can I do to maps?===<br />
<br />
Unlike games such as Doom or Unreal, maps are solely the layout of a level, the effects used in that level, etc. Enemy coding, sounds, and art textures can be found in the .grp and .con files.<br />
<br />
===Can I look at the game maps?===<br />
<br />
Yes. The program "[[KEXTRACT]]" is used to extract map files into your game directory, where they then can be viewed.<br />
<br />
You also can view the maps without extracting them. Use the command line parameter -map <mapname>.<br />
<br />
===What do I use to make maps?===<br />
<br />
The editor available for creating your own maps are the [[Build]] program (used to create the levels found in [[Duke Nukem 3D]]), [[Makemap]] (distributed with Eduke 2.0), JFBuild (distributed with [[JFDuke]]), and [[Mapster32]], which is included with [[EDuke32]]. This FAQ currently only discusses features of [[Build]] and [[Mapster32]] specifically, although the other editors may (and generally do) function the same way. In this FAQ we are specifically covering [[Mapster32]].<br />
<br />
===Can I make maps for other games?===<br />
<br />
Yes. [[Mapster32]] was designed in mind for Duke Nukem 3D, but it can also be used to make levels for [[NAM]], [[WWII GI]], [[Redneck Rampage]], and others.<br />
<br />
===How do I run user maps?===<br />
<br />
Running user maps that you create and/or download is can be run within EDuke32 by selecting "User Map" under the "New Game" menu. The command line parameter -map <mapname> also may be used to execute user maps.<br />
<br />
===What exactly is the Build engine?===<br />
<br />
The [[Build]] engine is the graphics engine that games such as [[Duke Nukem 3D]], [[Shadow Warrior]], [[Blood]], and [[NAM]] run on. Although it isn't truly 3-D, you can fake it by using sprites and overlapping sectors on top of each other. A modern eduke32 feature called [TROR] (true room over room) has been created to give the [[Build]] engine the appearance and functionality of a true 3-D engine, with only minor limitations. Most Build games also allow a level of interactivity in their environment that was unmatched for years.<br />
<br />
==Things You Should Know Before Starting==<br />
===Introduction===<br />
<br />
There are quite a few things that you will need to know prior to making your first level. Read this section completely, and you will have everything you need to know to start making levels!<br />
<br />
===2D and 3D Modes===<br />
<br />
There are two different editing modes in Mapster32. The 2D mode shows the layout of the map, sprites, tags. The 3D mode looks like the game itself. To switch between these two modes, press the [ENTER] key on the numberpad. The regular [ENTER] key does not switch modes, so this must be noted!<br />
<br />
In 2D mode, you lay out the map itself. Here you draw walls, place and resize sprites, change tags of walls, sprites, and floors, and save your work. In 3D mode, you change the textures of the walls, change how high or low the floor, ceiling, sprites, and other objects are, and you can change the shade here as well.<br />
<br />
===Hitags And Lotags===<br />
<br />
<strong>NOTE NEW SYSTEM: (Still read the rest of the information as it's completely valid, the following describes a method of making tagging MUCH easier) A new smart tagging system has been implemented in eduke32 (for the 'pairing' of effects and sprites together). In addition to tagging with numbers, you can now tag with letters as well. This means if you give say a sector effector a hitag of "door1" (you can use any name) the engine automatically assigns the SE an unused hi-tag. If you then type "door1" on a switch, it assigns an identical number. Note numbers can still be used just as before.<br />
<br />
This has 3 benefits. <br />
Firstly, it means you don't have to remember numbers when linking effects together, you can remember them by an appropriate name, which is FAR easier. <br />
Secondly, if you stick with the smart tagging system, you'll never use a number that has already been taken, which means you won't accidentally link 2 effects together which shouldn't be linked, and you don't have to keep track of which numbers you've used as was previously necessary.<br />
Lastly, while most effects use the hitag to pair up, some effects use the lotag instead, and remembering which is which used to be a hassle. Now, however, the smart tagging system knows which tag an effect uses, and will only assign words to that tag.</strong><br />
<br />
This topic is complicated, yet simple at the same time. Tags can be given to walls, sprites, or sectors, and they tell the wall, sprite, or sector what to do. There are two numbers that any of these objects can be given. The first number is called a hitag. Hitags usually identify the object, so that other objects can be paired with it (I'll give an example in one moment). Lotags are generally a fixed number that tells the game exactly what to do.<br />
<br />
Here is an example:<br />
<br />
I make two sectors, and I want them to be teleporters (i.e. - I step into one sector, and teleport to the other sector). I place a sector effector sprite in both sectors, and give them tags to identify them. I first give *both* sprites a lotag of 7. This number is preset, and it tells the game that when the player enters this sector, he is to "teleport" to the other teleporting sector. I then give *both* sprites the *same* hitag. This number must be unique, as it gives an identity to both sprites. Here is what the program is probably thinking when I'm playing this level:<br />
<br />
Hmmm. The player has just entered a sector with a special sector effector sprite in it (lotag of 7). Let me see if I can find another teleporting sector with the same identity (unique hitag), so that I can "teleport" him there. Hey - There's the other sector! WOO-HOO!<br />
<br />
All the hitags do are link various effect sprites together. If you only gave one sprite a hitag, the program would not be able to find another, matching teleporting sector, and then would not be able to teleport you anywhere, because it can't find this sprite's "mate". Here are the key strokes that you need to do in order to place these tags (in 2D mode):<br />
<br />
:* Sector Hitag : Press [H] in the desired sector<br />
:* Sector Lotag : Press [T] in the desired sector<br />
:* Sprite Hitag : Press [ALT]+[H] on the desired sprite<br />
:* Sprite Lotag : Press [ALT]+[T] on the desired sprite<br />
:* Wall Hitag : Press [ALT]+[H] on the desired wall<br />
:* Wall Lotag : Press [ALT]+[T] on the desired wall<br />
<br />
These same tag assignments can be made in 3D mode as well. Here are the key strokes for use in 3D mode:<br />
<br />
:* Sector Hitag : Press [']+[H] in the desired sector<br />
:* Sector Lotag : Press [']+[T] in the desired sector<br />
:* Sprite Hitag : Press [']+[H] on the desired sprite<br />
:* Sprite Lotag : Press [']+[T] on the desired sprite<br />
:* Wall Hitag : Press [']+[H] on the desired wall<br />
:* Wall Lotag : Press [']+[T] on the desired wall<br />
<br />
:NOTE: To set wall tags in 2D mode, it is advised to turn off the grid, so that you are not selecting sprites. Press [G] several times to turn the grid off.<br />
<br />
===Placing Sprites===<br />
<br />
:NOTE: When I say that you should press the [V] key (or any other key for that matter) on a sprite, I mean that you should move the cursor over that sprite with the mouse, and then press the key.<br />
<br />
Without sprites, levels in Duke Nukem 3D would be nothing. Sprites make up all the "eye candy" in the level and are the root of all effects in Duke 3D. To place a sprite in the level, press the [S] key in either 2D or 3D mode. It is advised to place them in 2D mode, as you have the grid as a guide for placement.<br />
<br />
There are several different modes sprites can be in (3 of them to be exact). Sprites can lie flat on the floor, be "pasted" to the wall, or they can be in the "normal" mode (guns and other goodies are usually in this mode). Normal mode is the default setting, and to switch the current mode of a sprite, enter 3D mode, and press the [R] key on it. It will go from normal to being pasted on the wall (according to which direction the sprite is facing). Pressing [R] on it again will paste it to the floor, and again will make it normal.<br />
<br />
:NOTE: If you place a sprite on a wall in 3D mode (using the [S] key), the sprite will automatically be "pasted" flat to the wall that you placed it on.<br />
<br />
:NOTE: Only "square" sprites can be made to lie flat on the floor. Sprites that fit this condition are ones that have the same x-axis height as the y-axis height. Note that this limitation does not apply if you are using the Polymost renderer.<br />
<br />
Sprites can face in different directions as well. In 2D mode, you will notice a "tail" coming out of the circle which represents the sprite. This tail points in the direction that the sprite is currently facing, and it also denotes the "front" side of the sprite. To change this, press the [,] or [.] keys on the sprite in 3D mode.<br />
<br />
To change the texture of a sprite (changing what the sprite actually is), enter 3D mode and press [V] on it. This will bring up a screen of all the current sprites used in the level you currently are working on (This is useful as you start to need the same sprite over and over). Press [V] again, and you will proceed to the tile selection screen. Here, you can press [PGUP] and [PGDN] to scroll through the many textures used in Duke and use [/] and [*] to zoom in and out. When you have found a suitable texture, press [ENTER]. You can also search for textures' names using [s] then typing the name of the sprite and hitting [ENTER]. Unless you know for sure what the sprite's name is, this might not be all that useful, but sometimes educated guesses can be lucky. You can also go to a tile number you want by pressing [g] then typing the number and hitting [ENTER]. This saves a lot of time if you know what tile you want, or want to skip ahead a few thousand tiles. You can also use the 'goto' feature in 3D mode by moving the cursor over a wall or sprite and hitting [g].<br />
<br />
To change palette (color) of the sprite, simple press [ALT]+[P]. Then the program will ask for palette number. Bosses won't end level when their palette is set to 21.<br />
<br />
To raise or lower the sprite, press the [PGUP] or [PGDN] keys on the sprite in 3D mode. This changes the altitude of the sprite. Holding down [CTRL] while doing the same will move the sprite onto the ceiling or ground.<br />
<br />
Here is an example of placing a sprite in a room:<br />
<br />
I want to place a calendar on the wall in my room. In 2D mode, I would press the [S] key ON THE WALL where I want the sprite to be, and I would then enter 3D mode, pressing the [V] key on it twice. I would select the calendar sprite, raise it up to the height I want it on my wall (with the [PGUP] and [PGDN] keys) and then press [R] on it *once*. But now that I look at it, the sprite is turned to the side, or it is backwards! You must remember to set the sprite direction with the [,] and [.] keys. The tail should face *away from the wall, so that it lies flat on the wall. Check out some of the levels that came with the game if you don't understand.<br />
<br />
===The Special Sprites===<br />
<br />
There are a few special sprites that need to be explained. The most important ones are as follows:<br />
<br />
====Sector Effectors====<br />
<br />
::Sprite #1 - The sector effector sprite is the most used sprite in the entire game. It does just about what the name says: effects a sector. These sprite are used to create game effects and manipulate sector attributes. These sprites are the main tool used to create all effects in Duke Nukem 3D. Place the sprite in the sector to effect. The lotags for these are preset, and a list of the lotags for this sprite can be found in section 5.4.<br />
<br />
====Activators====<br />
<br />
::Sprite #2 - Activators are used to activate a sector effector (SE) sprite when a switch or touchplate is triggered. They also can activate sector lotags.<br />
<br />
====Touchplates====<br />
<br />
::Sprite #3 - The touchplate will activate an activator or a masterswitch sprite, when the player walks over the sector that contains it. A hitag of 0 means that the touchplate will activate every time the player walks on top of the sector. A hitag of greater than 0 means that the touchplate will only be activated that many times (whatever number you put on there). The only number I've ever seen used that is greater than 0, is 1 (to activate an effect only once). But use the value that you want to. <br />
<br />
::If the touchplate and the sector containing it are at different heights then the sector will be raised to the height of the touchplate when the game starts, and lower to the sector's original height when the player walks on it.<br />
<br />
::If the touchplate angle is set to south (angle 512), then the it will affect the whole sector, not only if the player walks over the sector that contains it. That's means that the player trigger the touchplate as soon he enter the sector, regardless of the height where the player is.<br />
<br />
====ActivatorLocked====<br />
<br />
::Sprite #4 - This sprite locks the sectors lotag function, so that it cannot take effect until the player unlocks it with a switch or touchplate. This is used to make locked doors and other such effects.<br />
<br />
====Music&SFX====<br />
<br />
::Sprite #5 - This sprite is used to create all the sound effects in the game. It can be used in 3 ways:<br />
<br />
::::* 1. Activation Sound<br />
::::* 2. Ambient Sound<br />
::::* 3. Echo Effect<br />
<br />
::We will go into this sprite in much more detail later on.<br />
<br />
====Locator====<br />
<br />
::Sprite #6 - These are used to define a path that moving sectors and certain enemies (the Pigcop Recon Cars) will follow. Both moving sectors and the Pigcop Recon Cars cannot be used in the same map. They are also used as the endpoints of a two-way train.<br />
<br />
====Cycler====<br />
<br />
::Sprite #7 - This sprite is used to make the sector floor, walls, and ceiling pulsate in brightness. Section 4.20 goes into great detail about this sprite.<br />
<br />
====Masterswitch====<br />
<br />
::Sprite #8 - This sprite is the exact same as the activator, but it has the ability to use a time delay. The hitag is the time delay that the effect should wait to be carried out. I think that a value of 32 is one second.<br />
<br />
====Respawn====<br />
<br />
::Sprite #9 - This sprite is used to spawn enemies or other items after activated by a touchplate or switch. An example of this is entering a room, and a bad guy spawns behind you.<br />
<br />
====GPSPEED====<br />
<br />
::Sprite #10 - This sprite is used to define rates of effects. The lotag is the only thing that is needed here, and the value for it is how fast the effect should go (i.e. - smaller means slower). These cannot be used on all effects, but they can be used on some.<br />
<br />
==Your First Map==<br />
===Installing and Setting up Mapster32===<br />
<br />
Mapster32 is bundled along with EDuke32. After extracting the files into your Duke Nukem 3D directory simply double click the program executable and you will be given prompts where you may select your desired settings.<br />
<br />
===Creating a Room===<br />
<br />
Throughout this section, I will walk you through making your very first Duke Nukem 3D level. Build is an extremely fun editing program, and some cool stuff can be done in this editor, so let's get started.<br />
<br />
:NOTE: The user map [[Media:Tutorial.map|TUTORIAL.MAP]], is an example map that which includes everything covered in this section. If you want to see exactly what something looks like as you go along in this section, just take a look at this map in Mapster32.<br />
<br />
:NOTE: Save early and ''*often*''! I cannot stress this enough! Pressing the ''[ESC]'' key in 2D mode allows you to save your work by pressing the ''[S]'' key (saves it as the current filename (the default is '''''NEWBOARD.MAP''''')) or by pressing the ''[A]'' key (saves it as a new filename, which you specify). Mapster32 also autosaves every 3 minutes to autosave.map by default.<br />
<br />
The first thing that we'll do is create a square room. Press the ''[G]'' key several times, until the largest grid size in Mapster32 appears. Zoom out a little bit (by using the ''[Z]'' key). Move your mouse cursor near one of the vertices, and press the ''[SPACEBAR]''. What you are doing is beginning to draw the walls of your level. Move your mouse cursor up 3 grid blocks and press the ''[SPACEBAR]'' again. You have just drawn your first wall! Move to the right 3 blocks, press ''[SPACE]'' again, move down 3 blocks, press ''[SPACE]'' again, and finally move the cursor back to the first vertex you drew, pressing ''[SPACE]'' one last time. Your room should now be 3 grid blocks by 3 grid blocks.<br />
<br />
===Setting a level starting point===<br />
<br />
One of the first things you might want to do after creating your first room (assuming your first room will be the start of the level) is to specify where Duke will spawn when starting the level. To set a starting point, simply click in the room where you want to start so the white arrow is at that point, turn the arrow the direction you want to face, and press [Scroll Lock]. A different coloured arrow will appear in that position to show the starting point, as well as your normal white arrow.<br />
<br />
===Adding Textures===<br />
<br />
Textures are added in 3D mode. Press the ''[ENTER]'' key on the number pad (it's found on the far right on your keyboard). You should now be in 3D mode, which looks much like the game. The current texture, however, is quite ugly, and one that you do not want to use, especially since it can glitch and start animating sometimes. So let's change the texture of the walls, the ceiling, and the floor.<br />
<br />
Move the mouse cursor over the floor. Press the ''[V]'' key once. This screen (which currently has that ugly texture on it) is a listing of all the textures that appear on either the floor or ceiling of your level (This screen becomes quite handy later on when you want to use a texture already used in your level). Now press the ''[V]'' key again. You should be looking at a large screen of sprites, textures, and other items. Press the ''[PGDN]'' key several times, or use the arrow keys to scroll around the screen. There are literally thousands of tiles in Duke Nukem 3D, so choose one that you want to use as your floor, and press the ''[ENTER]'' key (not the one on the numberpad). Your floor is now the texture you wanted it to be! Now do the exact same thing for the ceiling.<br />
<br />
When you have that done, move the mouse cursor over one of the walls in your level. Press the ''[V]'' key once. The screen you are now looking at is much like the first one for the floor and ceiling, but this time it shows all the wall textures used in your level. Press ''[V]'' again, and select a good texture for the wall. Your texture appears, but it doesn't look like it's all there! You need to scale the texture by using the ''[4]'', ''[8]'', ''[6]'', and ''[2]'' keys on the numberpad. Experiment a little, and get it to look like you want. Pressing the ''[5]'' key, in addition to the keys listed above, will make the scale of the texture change in larger increments (making it faster to do). To shift the texture, hold down ''[SHIFT]'' while pressing the same keys.<br />
<br />
You could do this for each wall, but that would take quite some time to do in a big level. So move the mouse cursor over the wall that you have just changed (after you have it like you want it) and press the ''[TAB]'' key. Now move the mouse cursor over one of the other walls. Press the ''[ENTER]'' key (not the one on the numberpad). You have just copied and pasted the texture, its scale factor, and its shade value! This makes texturing a room much quicker, and it is quite a handy feature. Do this for each wall. (NOTE: Sometimes, the scale isn't pasted 100% correctly, so minor adjustment might be needed.)<br />
<br />
===Adding Sprites===<br />
<br />
Sprites are what levels in [[Duke Nukem 3D]] revolve around. Without sprites, this game would have no meaning at all. Sprites consist of enemies, weapons, ammo and all kinds of eye candy, as well as certain objects that cause the various effects seen in the game like explosions, working doors, flickering lights etc. Placing sprites is quite easy and can be done in either 2D or 3D mode. Placement in 2D mode is *much* easier, because you have the grid to line up sprites with other objects.<br />
<br />
Let's add a shotgun sprite to our level. In 2D mode, move the mouse cursor into one of the corners in the room. Press the ''[S]'' key. You have just placed a sprite. What you now see is a circle with a "tail" coming out of it. The tail indicates the direction of the sprite. This is not important in the case of ammunition, health, enemies, weapons, and some eye candy, but some objects that you might want to place on a wall need the angle to be just right. If the sprite you just placed is currently pink, it means that this sprite will block your movement in the game. If it is pink, move your mouse cursor over the sprite you just placed and press the ''[B]'' key. This toggles sprites between "blockable" and "not blockable". No sprites *need* to be blockable, but it comes in use when placing a table or chair sprite and you want it to block the movement of the player. Now enter into 3D mode. You should see some sort of sprite (probably that ugly texture again). Move the mouse cursor over the newly created sprite, and press the ''[V]'' key once. Like the textures, this first screen shows you what sprites are used in your level. Press the ''[V]'' key again. Select tile #28 (which is the shotgun sprite). You have now placed a shotgun in your level! You might want to size this sprite down a bit (using the ''[4]'', ''[8]'', ''[6]'', and ''[2]'' keys on the numberpad), but weapons, health, ammo, enemies, and inventory items all size themselves in the game.<br />
<br />
Now let's add a poster type sprite to our level. In 2D mode, move your mouse cursor over one of the walls of your room (the cursor should be on the side of the wall that the player will see). Press the ''[S]'' key. Now change the angle of this sprite to face straight away from the wall. This is done using the ''[,]'' and the ''[.]'' keys (also known as the ''[<]'' and ''[>]'' keys). When you have the angle properly set, enter 3D mode. Change this sprite to #500. We want this sprite to stick to the wall, but it doesn't seem to be doing that. Move the mouse cursor over the sprite in 3D mode, and press the ''[R]'' key once. This makes the current sprite lie in a flat plane, perpendicular to the sprite's angle. So if the sprite is facing to the right (or east), the sprite would lie flat in the north-south plane (the sprite would still face east). This is kind of hard to explain, but play around with it to see what I mean. Change the angle of the sprite after the ''[R]'' key has been pressed, and you will see how the flat position and the angle relate. Size your sprite to your liking.<br />
<br />
Let's add one more sprite to our level for now. Place one sprite in 2D mode somewhere in the middle of your room. Change this sprite to #568. This is the magazine sprite. Back in 2D mode, change the angle of this sprite to be 45 degrees or something of that nature (press the ''[<]'' or ''[>]'' key twice to do this). Now enter 3D mode again. This time, move the mouse cursor over the sprite and press the ''[R]'' key *twice*. This command makes sprites lie flat on the floor. Pressing ''[R]'' again returns the sprite to its default setting. Size this sprite to your liking. NOTE: Not all sprites can be made to lie flat on the floor. If the sprite you want to make lie flat on the floor looks really weird (or messed up) when you try to place it flat on the floor, it simply cannot be made to be in that position. If I am not mistaken, the only sprites that can lie flat on the floor have dimensions that are powers of 2. This limitation is not present in the Polymost renderer.<br />
<br />
===Adding a Child Sector===<br />
<br />
Now we need to add what is called a "nested" or "child" sector. This term simply means that you have a sector within a sector. We will first create a small box sector in our room. Somewhere in your room, begin drawing a new sector. Make sure that the grid size is smaller than the largest setting, and draw a square sector again. If you enter 3D mode at this point, you will notice that the sector you just drew has appeared as new walls, taking a chunk out of your room. This is not what we want, so enter back into 2D mode. Move your mouse cursor inside this newly created sector, and press the ''[ALT]''+''[S]'' keys. Your sector walls should have just turned red! Now enter back into 3D mode again. Looks like normal huh? Well, it's not quite like it was before. You have just created a child sector, which will now raise up from the floor.<br />
<br />
===Raising and Lowering Sectors===<br />
<br />
In 3D mode, move your cursor over to the general area of your newly created nested sector (point the cursor at the sector floor). Now press the ''[PGUP]'' key several times. You are now raising your sector out of the ground! Raise it to a decent height (but don't raise it all the way to the ceiling), and put some good textures on it (maybe the crate texture or something of that sort). Using the ''[PGUP]'' key raises either the floor or ceiling of a sector, and using the ''[PGDN]'' key lowers either the floor or ceiling of a sector. This is how you will set your sector heights in the game, and will most likely become one of the most used commands in Mapster32. These two commands can also be used to raise and lower sprites. Remember that poster-type sprite we added to our level? Press the ''[PGUP]'' key on it several times. You have just raised the sprite up on the wall. Very useful and very easy, is it not?<br />
<br />
===Parallaxing Skies===<br />
<br />
In 3D mode, move the mouse cursor over the ceiling of the room sector. Now change the texture of this sector's ceiling to #89. This is the Los Angeles texture, and for it to look right, needs to be parallaxed. Press the ''[P]'' key. Do this for the ceiling of the nested sector we created as well. Several special cases with parallaxing (and several problems) are documented in the parallax sub-section.<br />
<br />
===Sloped Surfaces===<br />
<br />
Let’s now create a sector off to one side of our room. To do this, we first need to insert some vertices. Pick the wall that you want to have the sector on, and move your mouse cursor over that wall. Press the ''[INSERT]'' key in the places on this wall where you want the vertices for our new sector to be (you should only need 2). Move the mouse cursor over one of these newly created vertices and press the ''[SPACEBAR]'', starting the drawing process. Now move the mouse cursor over the second vertex that you inserted, pressing ''[SPACE]'' again. The move out away from the room sector, drawing your sector as normal. When you finish drawing your sector, the part of the wall between the two vertices you inserted should change into a red line. Enter 3D mode and take a look at the newly created sector. Let’s make the floor of this sector sloped.<br />
<br />
By using the ''['' and '']'' keys, slope the floor of this sector downwards (or upwards, whichever you prefer – just experiment with it). Keep in mind that when sloping sectors, you need to set the "first wall" of the sector. The "first wall" is the wall that the slope will pivot around (think of it as a hinge point). This can be set in either 2D or 3D mode by pressing the ''[ALT]''+''[F]'' key combination on the wall you want to be the first wall of the sector. Experiment with setting this parameter, and see how it changes the tilting angle of the sector (try this on our newly created sector).<br />
<br />
===Creating a Circle===<br />
<br />
This is a feature that is (unfortunately) not used enough in level design, and it can be a little tricky to get just right.<br />
<br />
Somewhere in your level (do this outside of your room sectors), draw a triangular sector. Move your cursor over one of the walls of this sector, and press the ''[C]'' key. Now move the mouse around. You will see the beginnings of a circle, but we need to manipulate this circle to get it the way we want it to be. Pressing the ''[-]'' and ''[+]'' keys (on the numberpad) decreases and increases the number of points on the circle, respectively. Pressing the ''[SPACEBAR]'' draws the circle, while pressing the ''[C]'' key cancels the drawing of the circle. Once you’ve got half of the circle drawn, move the vertex of the triangle (that you initially created) that is sticking out away from the half-circle, over one of the vertices that runs across the half-way point of the circle. This is quite hard to explain in words, so take a look at the [[Media:Tutorial.map|tutorial map]] (I've placed several iterations of this circular construction on the map, so you can see how this is done step by step). Then create the other half of the circle.<br />
<br />
===The Art of Shading===<br />
<br />
One of the key elements in any level made is the shading technique. Shading is a delicate art that must be learned and used *everywhere* in the level. Leaving your level's walls, sprites, floors, and ceilings set with a shade value of 0 makes most level reviewers shun (or even skip) your level entirely. There are several shading techniques that you must learn to use, and they're not hard to learn at all! Once you learn these techniques, you will be able to make some very cool looking levels!<br />
<br />
In addition to the sector based lighting described below, another why to light your levels is by using the advanced Polymer renderer's dynamic lights. These have the ability to cast shadows, and can make a Duke level look much more modern (especially when combined with the HRP.) Dynamic lights are also faster to implement than sector based shading, as it doesn't involve making extra sectors and shading surfaces individually. To make these lights, use the Sector Effectors 49 and 50 as described in the Sector Effector tag listing section accessible at the top of this page.<br />
<br />
====Shading Techniques====<br />
<br />
:Before we learn about the different techniques needed to make shading what it needs to (and should) be, we first need to learn how to shade. All shading is done in 3D mode. Pressing the ''[+]'' key (on the numberpad) makes the object under the mouse pointer get brighter (the shade value decreases). Pressing the ''[-]'' key (on the numberpad) makes the object under the mouse pointer get darker (the shade value increases). For small shading amounts, this can be handy, but to make things dark, pressing these keys over and over can be a pain. So there's a shorter way to do this! Point at the object you want to shade and press the ''[']''+''[S]'' key combination. Then enter the value you want the shade to be. The larger the number, the darker the shade. A value of about 50 is almost completely dark, but you can go all the way up to 128. Negative values are allowed (down to -128) and make things bright (but not noticeably lighter than a shade value of 0 except at a distance). Entering negative values in version 1.3D isn't as easy as in 1.4 or 1.5, but it can be done. To enter negative values, you simply need to enter a value that is greater than 128. The value you enter will simply be 256 minus whatever value you type in. For example, if you type in a value of 155, the value entered will be -100. Remember this only needs to be done in version 1.3D. In versions 1.4 and 1.5, you simply type the ''[-]'' key (not on the numberpad) before typing the value.<br />
<br />
::*The first shading technique that you need to learn is that you should offset the shade of walls of a room. To do this, select two opposite directions on your map (i.e. - north and south) and make *all* walls in that direction one shade value (let’s use a value of 10 for now). Now you should give *all* the walls in the opposite two directions (i.e. - east and west) a shade somewhat lighter or darker than the previous shading (let’s use a value of 15 for now). This allows your eye to find the corner of the room much faster, and it gives a much more realistic look to any room (if you make joined walls the same shade, finding the corner can be quite a difficult thing to do). This technique should be used in *every* room and passageway in your level, and it should remain consistent (i.e. – if you made all east-west walls the lighter value, then all east-west walls should remain lighter in the future). If you have a angled wall (i.e. - it doesn’t run perfectly north-south or east-west) use a value somewhere between your east-west and north-south values. It is a good idea to set this type of shading before setting the next type.<br />
<br />
::*The second technique that you need to learn is that light travels in a straight line. The light from a ceiling light should make straight shadows when passing past a corner of a hallway or other object. Remember to light your areas according to the positioning of your lights. This is the second type of shading you should set.<br />
<br />
::*The third technique is ambient shading. Although light travels in a straight line, there is some ambience. Use multiple sectors for shading, making the sectors farther from the light source incrementally darker. Although this type of shading isn't needed, it definitely makes for some cool looking effects (gradual shading effects make some scenes look excellent – especially at a high resolution).<br />
<br />
===Advanced Features===<br />
<br />
[[Build]] has a few features that can be very useful to a learning Builder, and make the Building process *much* faster to complete.<br />
<br />
====Splitting Walls====<br />
<br />
:Splitting walls is quite easy to do. In 2D mode, simply point at the place on the wall where you would like to insert a vertex and press the ''[INS]'' key. That's all you have to do! Easy, huh?<br />
<br />
====Resizing and Moving Sectors====<br />
<br />
:Another nice feature of Build is the ability to resize and move sectors. To select multiple vertices to move at the same time, hold the ''[RIGHT SHIFT]'' key down, and move the box (you'll see it appear when you move the mouse) over the desired vertices. Now moving one of these vertices will also move the other selected vertices! To move a sector, hold down the ''[RIGHT ALT]'' key and, again, drag the mouse over the desired sector. Now, release the ''[RIGHT ALT]'' key and move the sector with the mouse. Press the ''[RIGHT ALT]'' key one last time to deselect the sector once you have successfully moved it.<br />
<br />
:To resize sectors, highlight them with ''[RIGHT ALT]'' and press and hold ''[']'' and ''[f]''. This will bring up a menu with various options, and one of them is to resize, so press the number next to that option, and use the mouse to resize your highlighted sectors.<br />
<br />
====Joining Sectors====<br />
<br />
:Joining sectors is a useful feature when you don't want a sector to be split up into individual (red lined) sectors. In 2D mode, simply press the ''[J]'' key in the first sector you wish to join (this is the sector from which the properties (height, shade, etc.) will be taken). Then press the ''[J]'' key again on the second, adjacent sector. There you go - No more red line!<br />
<br />
====Deleting Sectors====<br />
<br />
Deleting sectors is also an easy thing to do. Simply move the mouse into the sector you wish to delete, and press the ''[CTRL]''+''[DEL]'' keys to delete the sector. Be warned that there is no undo feature in Build, so make sure you know *exactly* what you are doing before using this command. A quick save of the level before using this command wouldn't hurt.<br />
<br />
====Copying and Pasting Sectors====<br />
<br />
:Copying sectors can make Building go very fast. You can copy sectors to the current level, or even to another level! To copy sectors, hold down the ''[RIGHT ALT]'' key in 2D mode and move the box (you'll see it appear when you move the mouse) over the desired sectors. Then release the ''[RIGHT ALT]'' key. Once the sectors are selected (they will flash yellow), press the ''[INSERT]'' key. You'll notice that the original sectors have been deselected, however a new set of identical sectors have appeared, highlighted, nearby. Use the mouse to drag these sectors to anywhere you want on the map, then press the ''[RIGHT ALT]'' key again to deselect them.<br />
<br />
:You can paste sectors into void space (space which doesn't already contain sectors) or you can paste it inside another sector. To paste inside another sector, drag the sectors inside another sector (sorry for saying sector a lot) and release them with ''[RIGHT ALT]'', mapster will ask you if you want to create an inner loop (for a child sector). This is what we want, so press the ''[y]'' key for yes. You have just pasted a sector inside another sector (I'm doing it again), creating a red line around the boundary. If you hit ''[n]'' then the sectors will be pasted separately (not connected in anyway), so that the two areas will coexist in the same space, which is kind of pointless.<br />
<br />
:'''More ways of highlighting: You can highlight a second, third, and multiple sectors by holding down ''[']'' as you drag the selection box over them. This way you can highlight sectors in different parts of the map. Likewise, use the ''[;]'' key to deselect sectors. A small plus or minus will appear next to the cursor depending on which button you're holding. '''<br />
:'''You can select individual sectors with the mouse by moving the cursor inside the sector you want, holding ''[RIGHT ALT]'', and holding ''[RIGHT CTRL]'' as you release ''[RIGHT ALT]''. The sector is now highlighted. This method of selection also works with ''[']'' and ''[;]'' to select/deselect additional sectors by mouse. Simply hold ''[RIGHT ALT]'' and the appropriate button depending on what you want to do, then hold ''[RIGHT CTRL]'' while releasing the other buttons. This becomes very quick and easy to do after doing it a few times.'''<br />
<br />
:To copy sectors from one level to another, simply select the desired sectors (as stated above) and press the ''[INSERT]'' key (again, just like before). Now, while the sectors are still selected (they should still be flashing green), load another level. The selected sectors should appear in your level, and you can move them to the desired location. Pressing the ''[RIGHT ALT]'' key will then deselect the sectors.<br />
<br />
===Completing This Map===<br />
<br />
You are now through the basic parts of editing. The next section goes into detail on making every effect known in Duke Nukem 3D (there are even several effects not used in the game itself that people have invented). To run your map, simply use command line '''''-map <mapname>''''' or select "User Map" under the "New Game" menu in [[EDuke32]] and select the desired map.<br />
<br />
Welcome to the world of Build!<br />
<br />
==Effects List==<br />
<br />
This section of the FAQ covers most known effects available to the map designer. Due to the number of effects available, this section is quite lengthy. Example ''.map'' files are used throughout this section, so take a look at any of the how-tos for the corresponding map name.<br />
<br />
If there's an effect you want to do that's not listed here, or you're having trouble understanding how to achieve one of the effects because of the way it's explained, try this mapping guide: [[http://infosuite.duke4.net/]], which is arguably the best, most succinct, and easiest to read mapping guide, great for both beginners and veteran mappers. It's illustrated with diagrams.<br />
<br />
:*[[:Category:Editing Doors|Doors]]<br />
:*[[:Category:Editing Parallaxed Skies|Parallaxed Skies]]<br />
:*[[:Category:Editing Lighting Effects|Lighting Effects]]<br />
:*[[:Category:Editing Moving Sectors|Moving Sectors]]<br />
:*[[:Category:Editing General Sector Effects|General Sector Effects]]<br />
:*[[:Category:Editing Water|Water]]<br />
:*[[:Category:Editing Walls and Wall Effects|Walls and Wall Effects]]<br />
:*[[:Category:Editing Mirrors|Mirrors]]<br />
:*[[:Category:Editing Teleporters|Teleporters]]<br />
:*[[:Category:Editing Ending the Level|Ending the Level]]<br />
:*[[:Category:Editing Switch Effects|Switch Effects]]<br />
:*[[:Category:Editing C-9 Effects|C-9 Effects]]<br />
:*[[:Category:Editing Sectors That Rise and Fall|Sectors That Rise and Fall]]<br />
:*[[:Category:Editing Music and Sound Effects|Music and Sound Effects]]<br />
:*[[:Category:Editing Working with Sprites|Working with Sprites]]<br />
:*[[:Category:Editing Multiplayer Level Making|Multiplayer Level Making]]<br />
:*[[:Category:Editing Miscellaneous|Miscellaneous]]<br />
<br />
[[Category:Level editing documentation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=EDuke32_Modifications&diff=9960EDuke32 Modifications2011-09-25T03:57:16Z<p>TX: Reverted edits by 207.81.125.117 (talk) to last revision by Hendricks 266</p>
<hr />
<div><table width ="100%" style="border:1px solid #000"><br />
<br />
<tr style="background:#000; color:#fff"><td width="25%">Title</td><br />
<td width="25%">Type</td><br />
<td width="25%">Status</td><br />
<td width="25%">Creator(s) & Developer(s)</td></tr><br />
<br />
<br />
<br />
{{Mod_table <br />
|[http://fissile.duke4.net/fissile_dukeplus.html Duke Plus]<br />
|Gameplay enhancement<br />
|Released, in development<br>(Latest Release: '''2.21''')<br />
|[[User:DeeperThought|DeeperThought]]<br />
|[[Image:DP1.jpg|200px]][[Image:DP2.jpg|200px]]<br />
|Enhanced Engine Design Capabilities, including: Transparent Water; Giving Monsters Special Flags; Climbable Ladders; Mantling/Grappling on ledges; Bot-Allies; Footstep Sounds; Rain and Snow-based weather effects; Quake3-Style Jump Pads; Slippery Floors; etc. [http://www.picturepush.com/public/652573 Gravity gun footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/vaca_plus.php Duke Caribbean: Life's A Beach Plus]<br />
|Total Conversion/enhancement<br />
|Released, in development<br><br />
|[[User:Hendricks 266|Hendricks266]] and the Duke community<br />
|[[Image:2492_vaca.png|200px]][[Image:3281_vaca.png|200px]]<br />
|Duke takes a vacation to the Caribbean and discovers that the aliens are using the tropical climate to breed. The classic Duke 3D add-on gets a modern facelift, and additional enhancements.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/nw_plus.php Duke: Nuclear Winter Plus]<br />
|Total Conversion/enhancement<br />
|Released, in development<br><br />
|[[User:Hendricks 266|Hendricks266]] and the Duke community<br />
|[[Image:2492_nw.png|200px]][[Image:3240_3245.png|200px]]<br />
|Duke receives a telegram that the aliens have brainwashed Santa and are trying to steal Christmas! The HRP of the classic Duke add-on, Nuclear Winter, adds many new EDuke32-based elements to the game, and fixes most, if not all of the original bugs.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://www.resurgence.dukenukem.com.br/ Duke Nukem 64: Resurgence]<br />
|Total Conversion<br />
|In Development<br />
|Fox, Nukey, SomeThingEvil, Hellfire<br />
|[[Image:Duke64_1.png|200px]][[Image:Duke64_2.png|200px]]<br />
|Duke Nukem 64: Resurgence intends to bring this Nintendo experience from 1997 to your PC.<br />
<br />
There will be customization options, such as removing Nintendo's censoring.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://naferia.duke4.net Naferia's Reign: Invasion of the Dark Mistress]<br />
|Total Conversion<br />
|Released, in development<br> (Latest Version: '''5.20.06112010''')<br />
|[[User:LordMisfit|Lord Misfit]], TheSeriousCacodemon, Davidos, Vero-chan<br />
|[[Image:NRIOTDM-1.png|200px]][[Image:NRIOTDM-2.png|200px]]<br />
|What will come to be an alternate-universe Duke Nukem story revolving around a pivotal point in the history of Duke Nukem and the Aliens he has faced since the original Duke Nukem 3D. Duke is no longer working alone in his quest, as his enemies ramp up their power and allegiances substantially, as well as their intelligence to a point. Play as up to 15 different characters, with the ability to use multiple characters in the same party, unlike in Hexen (and more like a real RPG). Monsters are more interactive and to a point more intelligent, able to grab items like health and armor, get damaged by slime and other hazards, and even pick up power-ups to make them deadlier in combat. Find money laying around or get it out of your characters' ATM accounts, and use it to buy new items from shops or other NPCs. Voice Acting is also present.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://www.moddb.com/mods/9541/duke-nukem-weapon-of-mass-destruction Duke Nukem: Weapon of Mass Destruction]<br />
|Gameplay enhancement<br />
|Released<br>(Latest Release: '''1.52 [beta]''')<br />
|[[User:DeeperThought|DeeperThought]]<br />
|[[Image:Dnwmd1.jpg|200px]][[Image:Dnwmd2.jpg|200px]]<br />
|Duke Nukem: Weapon of Mass Destruction is a gameplay mod for Duke Nukem 3D. It has tons of new weapon modes, enemies, and player abilities, such as UT style dodge moves, spinning hook kicks, and a Duke bot companion who fights by your side. In some levels you can even get in your skycar and fly it, doing bombing runs on enemies. In DNWMD, Duke collects glowing coins from slain enemies which are used to purchase various upgrades via a mouse controlled menu. In addition, each of Duke's weapons has its own experience level which increases with use.<br />
}}<br />
<br />
{{Mod_table <br />
| [{{3DR}}32161 HellDuke TC!]<br />
|Total Conversion<br />
|Released, in development<br>(Latest Release: '''1.3''')<br />
|XTHX2, Quakis (Inactive), Broiler1985, Rolls, Fantinaikos, SuperGoofy<br />
|[[Image:scr1.jpg|200px]][[Image:scr2.jpg|200px]]<br />
|HellDukeTC! will make your doom become alive, as the thread name calls it. My main purpose is to create Doom with a different angle and of course my secret recipe. As well as aiming to have a doom theme, we will also introduce you what hell actually means. It is still under development, however it is playable enough with it's satisfying levels, new enemies, new additions, new WEAPONS!, new HUD, CON scripted EVENTS, and much more. And last but not least, extra information can be found at hellreadme.txt. If you have any questions, you can ask me, XTHX2, and contact me. If you like Doom, and if you like challenges, this TC is just what you are in need of!<br />
}}<br />
<br />
{{Mod_table <br />
|[http://files.filefront.com/Nuclear+Showdown+v11zip/;12148372;/fileinfo.html Nuclear Showdown v1.1]<br />
|Gameplay enhancement<br />
|Released<br />
|[[User:Jblade|James Stanfield]]<br />
|[[Image:NS01.jpg|200px]][[Image:NS02.jpg|200px]]<br />
|Nuclear showdown is a gameplay mod for Duke Nukem that adds many features such as new weapons, enemies, effects to the default game as well as usermaps - it is built so you can play your favourite usermaps with, even ones that use custom art. You can also play through Duke It Out In D.C. if you have it. The TC also includes several features for mappers like more keycards, items such as the spacesuit and toolkit, and more textures to work with.<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}25830 The AWOL Project Source]<br />
|Total Conversion<br />
|Released, discontinued<br />
|[[User:Reaper_Man|Reaper_Man]], Hudson, Mblackwell, and the entire AWOL TC Team<br />
|[[Image:AWOL1.jpg|200px]][[Image:AWOL2.jpg|200px]]<br />
|The AWOL Project Source is the release of the source files for the once highly anticipated mod, The AWOL Project. After several years of sitting idly on the hard drives of the creators, Reaper_Man and Hudson decided to release all of the content for the TC to those who might find it useful. The release includes a few demo maps showing off various effects and AI, as well as all 3 of the drivable vehicles. Most of the code is complete but very few of the maps are. There is an Official 1.0 Patch as well as the AWOL Map Pack available for download also.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hosted.filefront.com/kenia43 Duke Nukem Army]<br />
|Total Conversion<br />
|Official final Release<br />
|[[User:Kenia|Kenia]]<br />
|[[Image:Teaser2.jpg|200px]][[Image:Teaser3.jpg|200px]]<br />
|A TC that changes Duke Nukem 3D into an exaggerated army-style shooter with various multiplayer additions (CTF, Hill Defend, Assault). Main focus is multi-player (though 1 playable single-player episode is included) and the massive unrealistic use of gore elements to turn the TC in kind of a "splatter game". [{{YouTube}}xl1E9BtOe9U Gameplay footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}30761 WG Medieval Mod]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|William Gee, [[User:DeeperThought|DeeperThought]], Hellbound<br />
|[[Image:WG1.jpg|200px]][[Image:WG2.jpg|200px]]<br />
|Medieval mod with melee combat, magic bows, skeleton knights, dragons and demons. [http://www.picturepush.com/public/590728 Gameplay footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}25350 Symphony of Orekia (AKA The Mansion)]<br />
|Total Conversion (single level)<br />
|Unreleased, in development<br />
|Quakis<br />
|[[Image:Mansion1.jpg|200px]][[Image:Mansion2.jpg|200px]]<br />
|Resident Evil-style TC with Demons and creepy interiors. <br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}9670 Decay]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|Hudson, MBlackWell, Hellbound, Cage, others<br />
|[[Image:Decay1.jpg|200px]][[Image:Decay2.jpg|200px]]<br />
|Survival-horror TC with zombies! <br />
}}<br />
<br />
<br />
{{Mod_table <br />
|[{{3DR}}30962 Blood TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:M210|M210]]<br />
|[[Image:Blood1.jpg|200px]][[Image:Blood2.jpg|200px]]<br />
|BloodTC is a recreation of Blood (by Monolith Productions) for EDuke32 to bring all the fun and action of Blood to the EDuke32 port. This mod will be more powerful in the future, considering EDuke32 keeps getting better and better.<br />
'''Big thanks:''' The Lezing, DeeperThought, DefaultDan(97), Zykov Eddy, --DarkSoL--, Yura_evil, KLIMaka, XTHX2, Ilovefoxes, Sanek, LipSheZ, Possessed-by-zeal. <br />
'''Some videos'''<br />
<br>[{{YouTube}}3thhSyIGPZQ BloodTC Beta Video E1M1]<br />
<br>[{{YouTube}}rhNNtd0Sp9w Animation of weapon test and some effects]<br />
<br>[{{YouTube}}2r2qj5pTAJs Second weapon-test Video]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{AMC}}7591.0 AMC TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|James Stanfield and AMC<br />
|[[Image:AMCTC1.jpg|200px]][[Image:AMCTC2.jpg|200px]]<br />
|The AMC TC is a multi-character TC and gameplay modification. There are 8 characters to choose between, each with different weapon sets and items. Fight through the solar system against Duke's old enemies as well as other dark forces that each plan something unpleasant for Earth and Mars. A initial gameplay release with the finished characters, intro map, and Duke user map episode is planned with actual story based releases later.<br />
}}<br />
<br />
{{Mod_table <br />
|Duke Nukem: Return of the King<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:Captain Awesome|Captain Awesome]]<br />
|[[Image:DukeROTK.gif|200px]][[Image:DukeROTK2.gif|200px]]<br />
|Duke Nukem: Return of the King plans to centralize Duke's universe. The game will fix numerous bugs, graphical glitches, logical fallacies, and other problems with Duke3D. The mod will boast an impressive amount of new weapons, and a few alt-fire modes. It will also feature quite a few new enemies or variants, with improved coding over the originals. There is a new thought out approach to the traditional episodes, along with new missions for you to play. It plans to bring a completely fresh experience to the old game, while still being familiar and simple. This mod is 8bit exclusive, and completely incompatible with the HRP. Retains compatibility with ''most'' user-maps for replay value.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/dmdr.php Duke Meets DOOM Rebirth]<br />
|Total Conversion<br />
|Unreleased as Rebirth, in development<br />
|[[User:Hendricks 266|Hendricks266]]<br />
|[[Image:DMDR_001.gif|200px]][[Image:DMDR_002.jpg|200px]]<br />
|Duke Meets DOOM Rebirth is an upgrade of the original vanilla TC "Duke Meets Doom". The basis for this mod is that the original maps are good, but the coding and artwork were sloppy. There are three different art modes available. The first is Classic, which consists of the artwork converted to the Duke palette. The second is Faithful, which has the original artwork displayed as high-resolution textures, so that it won't be hindered by the differences of the DOOM, Duke, and Shadow Warrior palettes. The third is Updated, which introduces high-resolution content from the jDRP and related packages.<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}31983 Cradle to Grave]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|Daedalus, Dimebog, Daedolon, Tekedon<br />
|[[Image:Screen00.PNG|200px]][[Image:Screen01.png|200px]]<br />
|Cradle to Grave is a hyper-mod aiming to bring the frantic pace and hugely enjoyable gameplay of Blood (by Monolith Productions) into a new medium and with our new granted freedom we'll even be able to implement some of the ideas which didn't quite make it into the original, not limited to new and never released weaponry, enemies, gameplay modes and perhaps even magic. This product exists only as our homage to Blood's spirit and, if successful, it could help bring Blood's glory to new heights.<br />
}}<br />
<br />
{{Mod_table <br />
|[[Duke Theft Auto]]<br />
|Total Conversion<br />
|Beta Released, On Hold<br />
|[[User:The Commander|The Commander]]<br />
|[[Image:DTA0000.jpg|200px]][[Image:DTA0001.jpg|200px]]<br />
|Duke Theft Auto is based upon the classic DMA/Rockstar game, "Grand Theft Auto" Run, Shoot, Kill, Car Jack your way through many cities on your way of becoming the number one criminal! <br><br> [http://www.moddb.com/games/duke-theft-auto Beta Released]<br />
}}<br />
<br />
{{Mod_table <br />
|[http://totalduke.narod.ru RailSingle TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:LipSheZ|LipSheZ]]<br />
|[[Image:RS1.jpg|200px]][[Image:RS2.jpg|200px]]<br />
|Rail Single is a mod based on early version of Duke Plus and includes some amazing features such as 22 weapon types (each weapon has 2 fire modes), approx 30 different voxel ammo pickups and 20 inventory items. Most of RS levels are king-size, but in the spirit of the original Duke Nukem: Atomic Edition. Some level segments made with LEBuild Map Editor.<br />
}}<br />
<br />
</table></div>TXhttps://wiki.eduke32.com/w/index.php?title=Addinventory&diff=9958Addinventory2011-09-23T13:03:50Z<p>TX: Reverted edits by Ularedmond (talk) to last revision by One</p>
<hr />
<div>'''addinventory''' <item> <amount><br />
<br />
Sets <amount> of <item> to the closest player in range.<br />
<br />
Items are [[define]]d in DEFS.CON and the maximum amounts are defined in USER.CON<br />
<br />
[[Category:Duke3D 1.3/1.5 commands]]<br />
[[Category:Player manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Hitscan&diff=9957Hitscan2011-09-23T13:03:46Z<p>TX: Reverted edits by Ularedmond (talk) to last revision by One</p>
<hr />
<div>'''hitscan''' <x1> <y1> <z1> <sect1> <cos of ang> <sin of ang> <zvel> <hit sector return var> <hit wall return var> <hit sprite return var> <hit x return var> <hit y return var> <hit z return var> <clip mask><br />
<br />
Hitscan returns the values of what would be hit if one travelled in a straight line from a set of coordinates in a specified direction.<br />
<br />
All parameters are [[gamevar | gamevars]]. The first three are the coordinates from which the hitscan occurs, followed by the scanning sector. The [[cos]], then the [[sin]] of an angle (typically the [[ang]] of the actor performing the scan) come next, followed by the z angle, which must be calculated before the hitscan. The six return gamevars hold the values of what the hitscan hits. The value of [[clipmask]] tells hitscan which sorts of things it can hit. A [[clipmask]] of 4294901808 is useful for most purposes.<br />
<br />
Example of hitscan:<br />
<pre><br />
// This state will return the sector, wall, and sprite(id, x ,y, and z data)currently under the crosshair.<br />
<br />
state checkhitscan<br />
getplayer[THISACTOR].posx MY_X<br />
getplayer[THISACTOR].posy MY_Y<br />
getplayer[THISACTOR].posz MY_Z<br />
getplayer[THISACTOR].cursectnum MY_SECTOR<br />
getplayer[THISACTOR].ang MY_ANGLE<br />
getplayer[THISACTOR].horiz MY_ZDIST<br />
subvar MY_ZDIST 100<br />
mulvar MY_ZDIST -2048<br />
cos MY_COS MY_ANGLE<br />
sin MY_SIN MY_ANGLE<br />
<br />
hitscan MY_X MY_Y MY_Z MY_SECTOR MY_COS MY_SIN MY_ZDIST HITSECTOR HITWALL HITSPRITE HITX HITY HITZ 4294901808<br />
ends<br />
</pre><br />
<br />
[[Category:EDuke32 specific commands]]<br />
[[Category:Gamevar manipulation]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Building_EDuke32_on_Linux&diff=9951Building EDuke32 on Linux2011-09-15T16:54:20Z<p>TX: /* Confirm successful compile */</p>
<hr />
<div>= Compiling From Source =<br />
<br />
== Installation Notes ==<br />
* You need an actual copy of Duke Nukem 3D. The shareware version can be found [http://www.3drealms.com/duke3d/ here]<br />
* Proper 3D acceleration drivers. NVIDIA has classically had the best Linux drivers.<br />
* Proper MIDI install. The EDuke32 will appear to "randomly" crash without one. Use ''timidity'' for an easy software midi solution.<br />
<br />
== Getting source files ==<br />
* Current version (You need to install the ''subversion'' program) : <br />
<pre>svn co https://eduke32.svn.sourceforge.net/svnroot/eduke32/polymer/eduke32</pre><br />
* [http://dukeworld.duke4.net/eduke32/synthesis Source tarballs] (Lite subversion snapshots, it does not include metadata, Apple compiled libraries, third-party jaudiolib and Photoshop files).<br />
* [http://dukeworld.duke4.net/eduke32/synthesis/old/ Old] and [http://dukeworld.duke4.net/eduke32/old_versions/source_code/ Older versions].<br />
<br />
== Prerequisites for the build ==<br />
EDuke32 requires some development files installed before you can properly build.<br />
* Basic dev environment (GCC >= 4.3.3, make, etc)<br />
* Nasm (optional)<br />
* LibStdc++<br />
* LibGL and LibGLU (optional)<br />
* LibSDL >= 1.2.10 '''or''' 1.3<br />
* LibSDL Mixer > 1.2.6<br />
* LibVorbis >= 1.1.2<br />
* LibPNG >= 1.2.13 (optional)<br />
* LibVPX >= 0.9.0 (optional)<br />
* LibGTK+ >= 2.8.0 (optional)<br />
<br />
<span style="text-decoration: underline">On Debian / Ubuntu</span><br />
<pre>sudo apt-get install build-essential nasm libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev libsdl-mixer1.2-dev libvorbis-dev libpng12-dev libvpx-dev libgtk2.0-dev timidity freepats</pre><br />
<br />
<span style="text-decoration: underline">On Fedora 14</span><br />
<pre>sudo yum groupinstall "Development Tools"</pre><br />
<pre>sudo yum install SDL-devel SDL_mixer SDL_mixer-devel SDL_image-devel nasm libstdc++-devel libstdc++-static libpng-devel</pre><br />
<br />
== Build the EDuke32 ==<br />
In a terminal window move to the EDuke32 sources folder and type <code>make</code>.<br />
<br />
NOTE: with eduke32_src_20080924 and older GCC versions (< 4.3) remove; <code>-finline-small-functions -fpredictive-commoning</code> options from <code>debug=</code> options in <code>eduke32/Makefile</code> and <code>build/Makefile</code>. Newer source releases do not have this problem.<br />
<br />
NOTE2:<br />
<br />
If building fails with GCC version 4.4.X, try: <code>make OPTLEVEL=0</code><br />
<br />
If it fails again, you can try with another version of GCC, for example: <code>make CC=gcc-4.3</code><br />
<br />
== Build options ==<br />
It is possible to define some options during the build. Just add them before or after the 'make' command.<br />
<br />
Example: <code>make USE_LIBPNG=1</code><br />
<br />
{|class="wikitable" width="45%"<br />
|+ <span style="text-decoration: underline">Various options</span><br />
|-<br />
!Options!!Description!!Default value<br />
|-<br />
|PRETTY_OUTPUT||use colored output||1<br />
|}<br />
<br />
{|class="wikitable" width="45%"<br />
|+ <span style="text-decoration: underline">Engine options</span><br />
|-<br />
!Options!!Description!!Default value<br />
|-<br />
|USE_OPENGL||enable basic OpenGL Polymost renderer||1<br />
|-<br />
|POLYMER||enable fancy Polymer renderer||1<br />
|-<br />
|NOASM||disable the use of inline assembly pragmas||0<br />
|-<br />
|LINKED_GTK||enable compile-time linkage to GTK+||0<br />
|-<br />
|WITHOUT_GTK||do not compile GTK+ code||0<br />
|-<br />
|BUILD32_ON_64||||0<br />
|-<br />
|NEDMALLOC||use nedmalloc instead of malloc()||0<br />
|-<br />
|USE_LIBPNG||compile with libpng (used to make screenshots in the PNG format)||0<br />
|-<br />
|USE_LIBVPX||VP8 video codec used as an alternative to the ANM file format (only works if compiled with OpenGL support)||0<br />
|}<br />
<br />
{|class="wikitable" width="45%"<br />
|+ <span style="text-decoration: underline">Debugging/Build options</span><br />
|-<br />
!Options!!Description!!Default value<br />
|-<br />
|RELEASE||no debugging||1<br />
|-<br />
|DEBUGANYWAY||include debug symbols even when generating release code||0<br />
|-<br />
|KRANDDEBUG||include logging of krand() calls for debugging the demo system||0<br />
|-<br />
|EFENCE||compile with Electric Fence for malloc() debugging||0<br />
|-<br />
|OPTLEVEL||GCC optimization strategy||2<br />
|-<br />
|PROFILER||||0<br />
|-<br />
|MUDFLAP||||0<br />
|-<br />
|LTO||enable link-time optimization, for GCC 4.5 and up||0<br />
|}<br />
<br />
== Confirm successful compile ==<br />
These files should now be present in the EDuke32 directory.<br />
* mapster32 (executable)<br />
* eduke32 (exectuable)<br />
<br />
== Use the game files ==<br />
You need to have the original Duke Nukem files and the newly created EDuke32 executables in the same place. So, you could create a new folder (example eduke32_linux) and copy the original game files and the newly created EDuke32 executables there.<br />
<br />
== Run the game! ==<br />
To run the game open up a terminal window, move to the proper directory and type :<br />
<br />
<pre>./eduke32</pre><br />
* To use the [http://hrp.duke4.net High Resolution Pack] you need to pass the -g parameter :<br />
<pre>./eduke32 -g duke3d_hrp.zip hrp_update.zip maphacks.zip eduke32_mus.zip</pre><br />
<br />
* To use the [http://hrp.duke4.net Polymer HRP] you need to pass the -g parameter :<br />
<pre>./eduke32 -g polymer_hrp.zip polymer_upd.zip polymer_mhk.zip eduke32_mus.zip</pre><br />
<br />
* Using the autoload folder :<br />
Copy mods or HRP files in the ''$HOME/.eduke32/autoload'' folder and it will be automaticaly loaded without additional parameters.<br />
<br />
= Installing EDuke32 globally =<br />
<br />
== Why ==<br />
Installing EDuke32 as an application that you could run anywhere brings some useful advantages and is surprisingly easy to do.<br />
<br />
EDuke32 will use the directory you are currently in as the directory to work in, as well as ~/.eduke32 (/home/yourname/.eduke32). This means that you could have a directory, copy a Duke Nukem TC (or mod) in there, cd to that directory and run the global EDuke32 binary without having to make even more copies of the same EDuke32 binaries. EDuke32 will adapt to use the GAME/USER.CON files it finds in the CURRENT directory.<br />
<br />
== How ==<br />
All you'll have to do to get EDuke32 to run from anywhere is copy the eduke32 and mapster32 binaries to /usr/local/bin. After doing this, copy the ''duke3d.grp'' file to /usr/local/share/games/eduke32 or ~/.eduke32 (it's hidden, so try to cd to it or show hidden files). After this you'll be able to run EDuke32 from any directory on your hard disk!<br />
<br />
= Notes =<br />
== Lowercase/Uppercase problems ==<br />
<!-- '''Shareware'''<br />
If you are using the Shareware files located on the 3D Realms website, after you build and combine all the files into one folder and try to run the game you will get an error about the TABLES.DAT file. To correct the error simply rename the DUKE3D.GRP to all lowercase letter. After that the game should run. This isn't necessary anymore --><br />
<br />
'''Maps with extra resources'''<br />
Some maps that include extra resources might have trouble finding these new files (for example, an older version of Duke Plus won't be able to find Step#.wav and Grate#.wav sounds). The EDuke32 log will output a "file not found" error every time this happens. To fix this, change the names of these files to match the exact case given in EDuke32's log (for example, GRATE#.wav instead of Grate#.wav).<br />
<br />
'''ART file inconsistency'''<br />
While most standard resources are referred to as UPPERCASE by EDuke32 (for example, GAME.CON), ART files are not as consistent and should be renamed to lowercase if you want to use custom art (tiles014.art instead of TILES014.ART).<br />
<br />
== Running with HRP Notes ==<br />
If you want to run Polymer with the HRP you will need to provide the path to polymer_hrp.zip (even if its installed globally):<br />
<code>eduke32 -g /path/to/polymer_hrp.zip</code>.<br />
<br />
Running EDuke32 with an ATI card is slow for some users.<br />
One user has had success with a Radeon 4850 and Fedora 12 with the open source default driver plus the latest Mesa experimental - the game runs smooth and pretty fast.</div>TXhttps://wiki.eduke32.com/w/index.php?title=Ifhitweapon&diff=9917Ifhitweapon2011-08-14T17:06:55Z<p>TX: </p>
<hr />
<div>'''ifhitweapon''' { do something } else { do something else }<br />
<br />
Checks if the current [[actor]] was struck by a weapon. Built-in damage processing occurs when using '''ifhitweapon''', so it must be called frequently in actor code in order for the actor to be affected by projectiles. Also see [[ifwasweapon]].<br />
<br />
[[Category:Duke3D 1.3/1.5 commands]]<br />
[[Category:Sprite manipulation]]<br />
[[Category:If conditions]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=PROJECTILE_TIMED&diff=9914PROJECTILE TIMED2011-08-11T23:11:51Z<p>TX: Reverted edits by 189.32.73.27 (talk) to last revision by Rasmusthorup</p>
<hr />
<div>If projectile is flagged as an RPG projectile, then this flag will make the projectile disappear.<br />
<br />
You have to define the projectile with [[PROJ_RANGE]]. 30 units = 1 second. Which is the ammount of time before the projectile will disappear. Keep in mind. If this flag is set, the projectile won't start the spawn option, sound options, and probably a few more options. See <br />
<br />
[[Category:Projectile_Workslike_flags]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Shade&diff=9884Shade2011-07-31T00:23:07Z<p>TX: </p>
<hr />
<div>The actor/wall-in-question's shade. Shade is available for the [[sprite]] structure and [[Members of the wall structure|wall]] structure. Legal values are between '''-127''' and '''128''' with '''0''' being default brightness and negative/lower values being brighter.<br />
<br />
''Note: Negative values don't appear obviously brighter but instead cause the actor/wall to be less affected by changes in visibility.''<br />
<br />
<br />
Related structure members include [[floorshade]] and [[ceilingshade]].<br />
<br />
See also [[spriteshadow]] and [[spritenoshade]].<br />
<br />
[[Category:Sprite structure members]]<br />
[[Category:Wall structure members]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=Max_ammo_amount&diff=9871Max ammo amount2011-07-22T15:16:50Z<p>TX: Reverted edits by 112.202.121.89 (talk) to last revision by Jblade</p>
<hr />
<div>'''''max_ammo_amount #''''' is an array holding the maximum amount of ammo the player currently has for each weapon. ''#'' Indicates the weapon which the game is getting or setting the maximum ammo for.<br />
<br />
[[Category:Player structure members]]</div>TXhttps://wiki.eduke32.com/w/index.php?title=EDuke32_Modifications&diff=9836EDuke32 Modifications2011-06-27T18:56:49Z<p>TX: Reverted edits by 121.54.58.137 (talk) to last revision by 86.124.210.187</p>
<hr />
<div><table width ="100%" style="border:1px solid #000"><br />
<br />
<tr style="background:#000; color:#fff"><td width="25%">Title</td><br />
<td width="25%">Type</td><br />
<td width="25%">Status</td><br />
<td width="25%">Creator(s) & Developer(s)</td></tr><br />
<br />
<br />
<br />
{{Mod_table <br />
|[http://deeperthought.dukertcm.com/dp/ Duke Plus]<br />
|Gameplay enhancement<br />
|Released, in development<br>(Latest Release: '''2.21''')<br />
|[[User:DeeperThought|DeeperThought]]<br />
|[[Image:DP1.jpg|200px]][[Image:DP2.jpg|200px]]<br />
|Enhanced Engine Design Capabilities, including: Transparent Water; Giving Monsters Special Flags; Climbable Ladders; Mantling/Grappling on ledges; Bot-Allies; Footstep Sounds; Rain and Snow-based weather effects; Quake3-Style Jump Pads; Slippery Floors; etc. [http://www.picturepush.com/public/652573 Gravity gun footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/vaca_plus.php Duke Caribbean: Life's A Beach Plus]<br />
|Total Conversion/enhancement<br />
|Released, in development<br> (Latest Version: '''v2.0''')<br />
|[[User:Hendricks 266|Hendricks266]] and the Duke community<br />
|[[Image:2492_vaca.png|200px]][[Image:3281_vaca.png|200px]]<br />
|Duke takes a vacation to the Caribbean and discovers that the aliens are using the tropical climate to breed. The classic Duke 3D add-on gets a modern facelift, and additional enhancements.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/nw_plus.php Duke: Nuclear Winter Plus]<br />
|Total Conversion/enhancement<br />
|Released, in development<br> (Latest Version: '''v2.0''')<br />
|[[User:Hendricks 266|Hendricks266]] and the Duke community<br />
|[[Image:2492_nw.png|200px]][[Image:3240_3245.png|200px]]<br />
|Duke receives a telegram that the aliens have brainwashed Santa and are trying to steal Christmas! The HRP of the classic Duke add-on, Nuclear Winter, adds many new EDuke32-based elements to the game, and fixes most, if not all of the original bugs.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://www.resurgence.dukenukem.com.br/ Duke Nukem 64: Resurgence]<br />
|Total Conversion<br />
|In Development<br />
|Fox, Nukey, SomeThingEvil, Hellfire<br />
|[[Image:Duke64_1.png|200px]][[Image:Duke64_2.png|200px]]<br />
|Duke Nukem 64: Resurgence intends to bring this Nintendo experience from 1997 to your PC.<br />
<br />
There will be customization options, such as removing Nintendo's censoring.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://naferia.duke4.net Naferia's Reign: Invasion of the Dark Mistress]<br />
|Total Conversion<br />
|Released, in development<br> (Latest Version: '''5.20.06112010''')<br />
|[[User:LordMisfit|Lord Misfit]], TheSeriousCacodemon, Davidos, Vero-chan<br />
|[[Image:NRIOTDM-1.png|200px]][[Image:NRIOTDM-2.png|200px]]<br />
|What will come to be an alternate-universe Duke Nukem story revolving around a pivotal point in the history of Duke Nukem and the Aliens he has faced since the original Duke Nukem 3D. Duke is no longer working alone in his quest, as his enemies ramp up their power and allegiances substantially, as well as their intelligence to a point. Play as up to 15 different characters, with the ability to use multiple characters in the same party, unlike in Hexen (and more like a real RPG). Monsters are more interactive and to a point more intelligent, able to grab items like health and armor, get damaged by slime and other hazards, and even pick up power-ups to make them deadlier in combat. Find money laying around or get it out of your characters' ATM accounts, and use it to buy new items from shops or other NPCs. Voice Acting is also present.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://www.moddb.com/mods/9541/duke-nukem-weapon-of-mass-destruction Duke Nukem: Weapon of Mass Destruction]<br />
|Gameplay enhancement<br />
|Released<br>(Latest Release: '''1.52 [beta]''')<br />
|[[User:DeeperThought|DeeperThought]]<br />
|[[Image:Dnwmd1.jpg|200px]][[Image:Dnwmd2.jpg|200px]]<br />
|Duke Nukem: Weapon of Mass Destruction is a gameplay mod for Duke Nukem 3D. It has tons of new weapon modes, enemies, and player abilities, such as UT style dodge moves, spinning hook kicks, and a Duke bot companion who fights by your side. In some levels you can even get in your skycar and fly it, doing bombing runs on enemies. In DNWMD, Duke collects glowing coins from slain enemies which are used to purchase various upgrades via a mouse controlled menu. In addition, each of Duke's weapons has its own experience level which increases with use.<br />
}}<br />
<br />
{{Mod_table <br />
| [{{3DR}}32161 HellDuke TC!]<br />
|Total Conversion<br />
|Released, in development<br>(Latest Release: '''1.3''')<br />
|XTHX2, Quakis (Inactive), Broiler1985, Rolls, Fantinaikos, SuperGoofy<br />
|[[Image:scr1.jpg|200px]][[Image:scr2.jpg|200px]]<br />
|HellDukeTC! will make your doom become alive, as the thread name calls it. My main purpose is to create Doom with a different angle and of course my secret recipe. As well as aiming to have a doom theme, we will also introduce you what hell actually means. It is still under development, however it is playable enough with it's satisfying levels, new enemies, new additions, new WEAPONS!, new HUD, CON scripted EVENTS, and much more. And last but not least, extra information can be found at hellreadme.txt. If you have any questions, you can ask me, XTHX2, and contact me. If you like Doom, and if you like challenges, this TC is just what you are in need of!<br />
}}<br />
<br />
{{Mod_table <br />
|[http://files.filefront.com/Nuclear+Showdown+v11zip/;12148372;/fileinfo.html Nuclear Showdown v1.1]<br />
|Gameplay enhancement<br />
|Released<br />
|[[User:Jblade|James Stanfield]]<br />
|[[Image:NS01.jpg|200px]][[Image:NS02.jpg|200px]]<br />
|Nuclear showdown is a gameplay mod for Duke Nukem that adds many features such as new weapons, enemies, effects to the default game as well as usermaps - it is built so you can play your favourite usermaps with, even ones that use custom art. You can also play through Duke It Out In D.C. if you have it. The TC also includes several features for mappers like more keycards, items such as the spacesuit and toolkit, and more textures to work with.<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}25830 The AWOL Project Source]<br />
|Total Conversion<br />
|Released, discontinued<br />
|[[User:Reaper_Man|Reaper_Man]], Hudson, Mblackwell, and the entire AWOL TC Team<br />
|[[Image:AWOL1.jpg|200px]][[Image:AWOL2.jpg|200px]]<br />
|The AWOL Project Source is the release of the source files for the once highly anticipated mod, The AWOL Project. After several years of sitting idly on the hard drives of the creators, Reaper_Man and Hudson decided to release all of the content for the TC to those who might find it useful. The release includes a few demo maps showing off various effects and AI, as well as all 3 of the drivable vehicles. Most of the code is complete but very few of the maps are. There is an Official 1.0 Patch as well as the AWOL Map Pack available for download also.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hosted.filefront.com/kenia43 Duke Nukem Army]<br />
|Total Conversion<br />
|Official final Release<br />
|[[User:Kenia|Kenia]]<br />
|[[Image:Teaser2.jpg|200px]][[Image:Teaser3.jpg|200px]]<br />
|A TC that changes Duke Nukem 3D into an exaggerated army-style shooter with various multiplayer additions (CTF, Hill Defend, Assault). Main focus is multi-player (though 1 playable single-player episode is included) and the massive unrealistic use of gore elements to turn the TC in kind of a "splatter game". [{{YouTube}}xl1E9BtOe9U Gameplay footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}30761 WG Medieval Mod]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|William Gee, [[User:DeeperThought|DeeperThought]], Hellbound<br />
|[[Image:WG1.jpg|200px]][[Image:WG2.jpg|200px]]<br />
|Medieval mod with melee combat, magic bows, skeleton knights, dragons and demons. [http://www.picturepush.com/public/590728 Gameplay footage]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}25350 Symphony of Orekia (AKA The Mansion)]<br />
|Total Conversion (single level)<br />
|Unreleased, in development<br />
|Quakis<br />
|[[Image:Mansion1.jpg|200px]][[Image:Mansion2.jpg|200px]]<br />
|Resident Evil-style TC with Demons and creepy interiors. <br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}9670 Decay]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|Hudson, MBlackWell, Hellbound, Cage, others<br />
|[[Image:Decay1.jpg|200px]][[Image:Decay2.jpg|200px]]<br />
|Survival-horror TC with zombies! <br />
}}<br />
<br />
<br />
{{Mod_table <br />
|[{{3DR}}30962 Blood TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:M210|M210]]<br />
|[[Image:Blood1.jpg|200px]][[Image:Blood2.jpg|200px]]<br />
|BloodTC is a recreation of Blood (by Monolith Productions) for EDuke32 to bring all the fun and action of Blood to the EDuke32 port. This mod will be more powerful in the future, considering EDuke32 keeps getting better and better.<br />
'''Big thanks:''' The Lezing, DeeperThought, DefaultDan(97), Zykov Eddy, --DarkSoL--, Yura_evil, KLIMaka, XTHX2, Ilovefoxes, Sanek, LipSheZ, Possessed-by-zeal. <br />
'''Some videos'''<br />
<br>[{{YouTube}}3thhSyIGPZQ BloodTC Beta Video E1M1]<br />
<br>[{{YouTube}}rhNNtd0Sp9w Animation of weapon test and some effects]<br />
<br>[{{YouTube}}2r2qj5pTAJs Second weapon-test Video]<br />
}}<br />
<br />
{{Mod_table <br />
|[{{AMC}}7591.0 AMC TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|James Stanfield and AMC<br />
|[[Image:AMCTC1.jpg|200px]][[Image:AMCTC2.jpg|200px]]<br />
|The AMC TC is a multi-character TC and gameplay modification. There are 8 characters to choose between, each with different weapon sets and items. Fight through the solar system against Duke's old enemies as well as other dark forces that each plan something unpleasant for Earth and Mars. A initial gameplay release with the finished characters, intro map, and Duke user map episode is planned with actual story based releases later.<br />
}}<br />
<br />
{{Mod_table <br />
|Duke Nukem: Return of the King<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:Captain Awesome|Captain Awesome]]<br />
|[[Image:DukeROTK.gif|200px]][[Image:DukeROTK2.gif|200px]]<br />
|Duke Nukem: Return of the King plans to centralize Duke's universe. The game will fix numerous bugs, graphical glitches, logical fallacies, and other problems with Duke3D. The mod will boast an impressive amount of new weapons, and a few alt-fire modes. It will also feature quite a few new enemies or variants, with improved coding over the originals. There is a new thought out approach to the traditional episodes, along with new missions for you to play. It plans to bring a completely fresh experience to the old game, while still being familiar and simple. This mod is 8bit exclusive, and completely incompatible with the HRP. Retains compatibility with ''most'' user-maps for replay value.<br />
}}<br />
<br />
{{Mod_table <br />
|[http://hendricks266.duke4.net/dmdr.php Duke Meets DOOM Rebirth]<br />
|Total Conversion<br />
|Unreleased as Rebirth, in development<br />
|[[User:Hendricks 266|Hendricks266]]<br />
|[[Image:DMDR_001.gif|200px]][[Image:DMDR_002.jpg|200px]]<br />
|Duke Meets DOOM Rebirth is an upgrade of the original vanilla TC "Duke Meets Doom". The basis for this mod is that the original maps are good, but the coding and artwork were sloppy. There are three different art modes available. The first is Classic, which consists of the artwork converted to the Duke palette. The second is Faithful, which has the original artwork displayed as high-resolution textures, so that it won't be hindered by the differences of the DOOM, Duke, and Shadow Warrior palettes. The third is Updated, which introduces high-resolution content from the jDRP and related packages.<br />
}}<br />
<br />
{{Mod_table <br />
|[{{3DR}}31983 Cradle to Grave]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|Daedalus, Dimebog, Daedolon, Tekedon<br />
|[[Image:Screen00.PNG|200px]][[Image:Screen01.png|200px]]<br />
|Cradle to Grave is a hyper-mod aiming to bring the frantic pace and hugely enjoyable gameplay of Blood (by Monolith Productions) into a new medium and with our new granted freedom we'll even be able to implement some of the ideas which didn't quite make it into the original, not limited to new and never released weaponry, enemies, gameplay modes and perhaps even magic. This product exists only as our homage to Blood's spirit and, if successful, it could help bring Blood's glory to new heights.<br />
}}<br />
<br />
{{Mod_table <br />
|[[Duke Theft Auto]]<br />
|Total Conversion<br />
|Beta Released, On Hold<br />
|[[User:The Commander|The Commander]]<br />
|[[Image:DTA0000.jpg|200px]][[Image:DTA0001.jpg|200px]]<br />
|Duke Theft Auto is based upon the classic DMA/Rockstar game, "Grand Theft Auto" Run, Shoot, Kill, Car Jack your way through many cities on your way of becoming the number one criminal! <br><br> [http://www.moddb.com/games/duke-theft-auto Beta Released]<br />
}}<br />
<br />
{{Mod_table <br />
|[http://totalduke.narod.ru RailSingle TC]<br />
|Total Conversion<br />
|Unreleased, in development<br />
|[[User:LipSheZ|LipSheZ]]<br />
|[[Image:RS1.jpg|200px]][[Image:RS2.jpg|200px]]<br />
|Rail Single is a mod based on early version of Duke Plus and includes some amazing features such as 22 weapon types (each weapon has 2 fire modes), approx 30 different voxel ammo pickups and 20 inventory items. Most of RS levels are king-size, but in the spirit of the original Duke Nukem: Atomic Edition. Some level segments made with LEBuild Map Editor.<br />
}}<br />
<br />
</table></div>TXhttps://wiki.eduke32.com/w/index.php?title=Room_Over_Room&diff=9820Room Over Room2011-06-18T22:25:46Z<p>TX: </p>
<hr />
<div>'''Room Over Room''' (ROR), also referred to as '''Sector Over Sector''' (SOS) and '''Floor Over Floor''' (FOF), is a technique in the BUILD engine used to simulate more realistic environments by combining more than one sector over another in a vertical fashion to seamlessly create the appearance of a single area of higher complexity than is natively possible. This can be used for multi-level structures and things such as pools of liquids.</div>TX