Utilities
When modding EDuke32, there are some files you will need to edit certain aspects of the game. Here we will cover the needed programs for each aspect.
Data Files
Group Files (.GRP)
.GRP files are basically like a zip file, they hold all of the relevant files for the game, and keep your folders tidy. There are several programs available for use.
The preeminent command-line programs for this purpose, and what the original developers used, are kextract and kgroup. Both programs are also present in the build directory of EDuke32 source code. To build it, just do:
cd build && make utils
We can find a program called grpextract here. To build it, just do:
gcc grpextract.c -o grpextract
While lacking a GUI, they get the job done. There are other programs, which can view art files inside the .GRP, and listen to sound bytes. Other programs include Jonah Bishop's Group File Studio and Roma Loom's GRPViewer
For your own mods, it is highly recommended to use either .zip files or folders in conjunction with the -j command line parameter instead of GRP files.
Control Files (.CON)
.CON files hold most of the important code for the game. Since they are source code, they are simply text files and can be opened in any text editor. Notepad++ and Emerald Editor (aka Crimson Editor) are recommended.
Maps (.MAP)
.MAP files are levels. To edit maps, use Mapster32, which comes with EDuke32.
8-Bit Resources
Art Files (.ART)
.ART files hold all the raw art data in a tidy manner. Once again, there are numerous programs available which can edit the .ART files. The most commonly used program is the one that came with Duke Nukem 3D: EditArt. It is a 16-bit DOS program, so the use of DOSBox is recommended. Other programs include bastART and DukeResART
There are 2 command line utilities called art2tga and tga2art that allow management of art files, available here. To build it, just run:
cd rebuild && make
There's also a replacement for art2tga/tga2art being written by Kraigose based on their codebase which aims to replace these tools using the more well known PNG format with the simplicity of the TGA tools INI file syntax. A precompiled Win32 build and source can be found here at Kraigose's website. A readme file is included in the download, as well as color tables for Adobe Photoshop. Images must be 256-color PNGs at the moment, but that'll be fixed soon. It's usage syntax is similar to art2tga nd tga2art, but it supports by default doing all ART files in batch. More development is expected.
Animations (.ANM)
.ANM files hold raw .PCX files, which are added together and then played as an animation. In the game these are the animations you see at the end of a boss fight. The sounds for the animations are not included in the .ANM. One of the few .ANM compiling programs is Animation File Maker
FFmpeg, since version 0.6, can also decode and play anm files.
Some examples :
Play the 'foo' animation file :
ffplay foo.anm
Extract all frames from the 'foo' animation file into the PNG format (works also with JPG, PCX, GIF, BMP ...)
ffmpeg -i foo.anm bar%03d.png
Encode the 'foo' animation file into a MPEG-4 format :
ffmpeg -i foo.anm bar.avi
Encode the 'foo' animation file into a WebM format :
ffmpeg -i foo.anm -threads 2 bar.webm
See 'ffmpeg -codecs' for all available codecs.
It's not possible, actually to encode into anm format with FFmpeg.
Voxels (.KVX)
Voxels are simple 3D shapes made out of three-dimensional cubes. While no voxels were ever included in any commercial versions of Duke Nukem 3D, its fellow BUILD games Shadow Warrior and Blood have many. EDuke32 supports voxels as well.
To create and edit voxels, use Ken Silverman's SLAB6.
Palettes (.DAT)
The PALETTE.DAT and LOOKUP.DAT files hold the palettes, palettes swaps, and shade tables for the game. This is one of the most loathed and untouched editable features of Duke3D. While incredibly difficult, it can come to good effect. One of the few .PAL editors is the "Build Customization Suite".
The program transpal can modify a palette file and can be found in the utils directory the of EDuke32 source code (see #Group Files (.GRP)).
High-Resolution Resources
Textures (.png/.jpg/.tga/.dds)
EDuke32 supports true color textures. These can be made in any image editing program, including Adobe Photoshop, Corel Paint Shop Pro, and The GNU Image Manipulation Program (GIMP)
3D Models (.md3)
This is a list of tools which can be used to create and edit 3D models for use with EDuke32.
Blender, open source 3D modeler can be used for UV unwrapping, texturing, rigging, water simulations, skinning, animating, rendering, particle and other simulations.
Import/Export MD3 scripts for Blender can be found here or here or here.
Misfit Model 3D, open source and OpenGL-based 3D model editor that works with triangle-based models (on Debian based distros, package is called mm3d).
G3DViewer, open source and OpenGL models viewer, support formats 3D Studio, Quake 2, Quake 3 and many others.
Gmax, video game modeling tool (Windows, freeware).
MD3 exporter plugin for Gmax can be found here.
3DS Max, 3D modeler (Windows, commercial).
MD3 export script for 3DS Max v4.2/v5 and v6.
Milkshape 3D, 3D modeler (Windows, commercial).
Movies (.ivf)
IVF files are an alternative to the ANM format utilizing a VP8 video stream, the same used in the WebM format but without the Vorbis audio stream.
To encode video, including an uncompressed raw one, to IVF, use this command line syntax with FFmpeg:
ffmpeg -i <input> -an -vcodec libvpx -quality best <output>.ivf
To extract VP8 video tracks from a WebM file into a IVF file, we can use the program mkvextract, part of MKVToolnix, available here.
eg: mkvextract tracks <filename>.webm 1:<filename>.ivf
To play it in-game now we just have to place it in a search path or in a custom mod directory and give it the same name as the .anm file that we want to replace (eg logo.ivf for the animation logo when the game starts).