How to add Textures to The Dark Mod
Create your texture
This is mostly artwork. Be sure to start off with useful raw material with a reasonably high resolution. Where possible, work from photo-references. A basic guide can be found here: Texture Creation - Basic Tutorial.
A few things to remember: Make sure your texture dimensions are a power of 2 (eg, 128, 256, 512, 1024, etc). Other common mistakes can be found here: Common Texture Mistakes
Save your Texture in the correct Format
Save the diffusemap, the normalmap and an optional specularmap to a TGA file. The Texture Guidelines will help you choosing the correct resolution. A TGA version of your diffusemap is supposed to be uploaded to our hi-res repository for future reference (see below).
Once your TGA file is saved, you will have to create DDS files for the diffuse and specular (not the normalmap) as well. These are smaller in size and can be loaded faster by the engine. Follow the DDS creation guide to learn how to create the DDS files in the correct formats.
Also, create an editor image out of your diffusemap. The editor image dimension should be 256x256 pixels and the file should be saved in the JPG format. Add the _ed postfix to the filename name (like
Name your Texture
The following convention should be used for naming all new texture additions to TDM (many existing textures do not follow this convention, and over time effort will be made to update them). The goal is consistency among material names based on ordered characteristics.
Some or all of the following may apply to any given material:
- Object Type descriptor first (mostly for very specific-use textures) - it's a window, a door, a chest...
- Material descriptor next - made from marble, wood, mud...
- Size descriptor next - it is large, small...
- Quality descriptors next - texture-wise, it is rough, new, cracked...
- Color descriptors next - what color is it? red, green...
- Number Increment next - which of the list is it? 001, 002...
- Tiling and Image Type descriptors, if needed (file only, not material definition - see below)
If establishing precedent (creating a new Size descriptor, e.g., "huge"), try to avoid ambiguity and unnecessary overlapping with other descriptors (e.g., "enormous"), and set a good example others will follow.
This name omits an Object Type descriptor, instead starting with the Material descriptor - it is a general, non-specialized texture.
Why is this preferred? Some existing materials are named by quality descriptor first (e.g., 'cracked_slate...'). This is an inconvenience for the user, because they were looking for a 'slate', not a 'cracked'.
This name omits a Size descriptor and a Color descriptor.
Why is this preferred? In the case of a model name (which this convention also covers), or a specific object type texture like the above, some existing assets are named by quality descriptor first (e.g., 'battered_wood...'). This is an inconvenience for the user, because they were looking for a 'door', not a 'battered'.
Be sure to rename all your DDS file extensions to a lowercase .dds (the Compressonator always creates files with uppercase extension, TDM requires them to be lowercase).
If your texture tiles only in one direction, include the phrase tiling_1d at the end of the name. If your texture does not tile (repeat) at all, add the phrase nontiling. So, a normalmap could be names as concrete_dirt01_tiling1d_local.tga.
Diffusemaps should have no extension to their name. Normalmaps should have a _local extension at the end of their name. Specular maps should have a _s extension, the editor images go with an _ed extension.
Move the Texture to the right Location
When you upload textures, be sure to upload the files to the right spot. The Texture Folder Structure can help you finding the right folder for your texture.
The .dds diffuse and specular go in the dds/textures/ folder structure. The .tga normalmap goes in the textures/ folder structure. Also, the texture may not render properly unless it's nested inside "../textures/darkmod/.." and for a custom texture (only for FM use) you should use "../textures/darkmod/your_texture_folder" in both the parent Darkmod folder (for mapping) and the same folder structure inside your pk4 (for release). Note that there is a peculiarity of the Doom 3 engine not being able to load DDS textures that are more than five folders deep. The deepest level allowed would be something along the lines of dds/textures/darkmod/door/metal/. This is something to be watched out for.
Create your Shader Definition (Material)
Your material entry should be added to the .mtr file that has the same name as the folder your texture is saved in. For example, the material entry for a texture saved in textures/darkmod/wood/panels should be saved in the .mtr file, tdm_wood_panels.mtr. See also the Material File Naming Convention.
You should name your material entry the same name as your diffuse texture, including the folder path structure (eg, "textures/darkmod/wood/panels/rectangle_oak_face"). (Do not add .tga or .dds to the end, and also skip the dds/ folder prefix.)
The only exception is when multiple shaders are using the same diffusemap, or when your texture doesn't tile (or tiles in only one direction). In the latter case, you would add /nontiling/ or "/tiling_1d/ to the end of the shader folder (a 'virtual' folder, essentially). (The textures used to be separated like that in the actual folder structure, but due to D3's inability to read .dds files five folders deep, they had to be moved.)
Upload the Textures
Once, you have checked your texture in-game (and are pleased with the results), you'll need to upload the files to our SVN repository. This requires that you have a valid username/password for SVN, which you can request from sparhawk.
The .tga of the diffuse and specular is needed as well in case we ever want to make modifications to the texture or new textures based on the old. Opening and resaving .dds files results in loss of detail, so all new versions of textures should be made from the .tga files. So, additional to the textures needed for the engine and editor (diffuse/normal/specular/editorimage) you're encouraged to upload the uncompressed textures to the hires repository.
The hires repository is located at https://<InsertDarkmodServerHere>/svn/darkmod_hires/trunk/tga_backup/. As only diffuse/speculars are compressed in DDS format, these are the only two that need to be uploaded in TGA format. The TGA files should be named just like the DDS versions and should be located in the analogous folder than they are in the main repository, but below the tga_backup/ folder. For instance tga_backup/textures/darkmod/stone/etc.
The hires TGA can be RLE-compressed to save some space, but this is not too important. Uncompressed TGAs are only important for the textures used by the engine itself.
As last part, it would be nice to have the actual working versions (Photoshop/Gimp source files) stored on the server too. This is of course a large upload, but having the source files is very valuable. For this purpose, there is another repository texture_src installed at https://<InsertDarkmodServerHere>/svn/texture_src/.