-
Notifications
You must be signed in to change notification settings - Fork 0
texturing
This document describes how textures are used in Generals Zero hour' UI and how to modify and create new textures. Textures are used to provide the visual appearance of various UI elements, such as buttons, backgrounds, and controls.
Generals uses .tga
(Targa) files to store textures. These files are often large images that contain multiple smaller
images, each used for a different UI element.
Note: While .tga
was the original format, in Patch 1.04p development, support has been added for formats
.psd
and .tiff
formats. These newer formats offer advantages such as layer support, which simplifies the texture
editing process. Additionally, you can also use .dds
(DirectDraw Surface) files, specifically in DXT1 or
DXT5 formats, and reference them within the game's .wnd
files.
you can find the texture files in the Data\Art\Textures
directory.
The main texture file used for the game's UI is SCSmShellUserInterface512_001.tga
.
This file contains a large number of textures, packed together into a single image file.
The dimensions of this texture are typically 512x512 pixels, butother sizes might be used for other files.
The game uses .ini
files to define how the textures within the TGA files are used. These mapping files specify the
name, location, and other attributes of each individual texture within the larger TGA file.
You can find the mapping files in the Data/INI/MappedImages/TextureSize_512
directory.
The main mapping file for SCSmShellUserInterface512_001.tga
is SCSmShellUserInterface512.ini
. This file contains
entries that map texture names to their coordinates within the texture file.
Each mapping entry in the INI file has the following structure:
MappedImage TextureName
Texture = TextureFileName.tga
TextureWidth = WidthOfTextureFile
TextureHeight = HeightOfTextureFile
Coords = Left:X Top:Y Right:Z Bottom:W
Status = NONE
End
-
TextureName
: The unique name used to reference the texture within the game's WND files. -
Texture
: The name of the .tga file where the texture is stored. -
TextureWidth
: The width of the .tga texture file in pixels. -
TextureHeight
: The height of the .tga texture file in pixels. -
Coords
: The coordinates of the texture within the .tga file.Left
,Top
,Right
andBottom
define the position of the top-left and bottom-right corners of the texture, in pixels. -
Status
: UsuallyNONE
.
MappedImage Buttons-Disabled-Left
Texture = SCSmShellUserInterface512_001.tga
TextureWidth = 512
TextureHeight = 512
Coords = Left:358 Top:275 Right:403 Bottom:315
Status = NONE
End
In this example:
- The texture name is
Buttons-Disabled-Left
. - The texture is located in the file
SCSmShellUserInterface512_001.tga
. - The dimensions of the image is 512x512.
- The texture's coordinates are
Left:358
,Top:275
,Right:403
,Bottom:315
.
You reference textures in WND files using the DRAWDATA
tags, such as ENABLEDDRAWDATA
, DISABLEDDRAWDATA
,
and HILITEDRAWDATA
. Each DRAWDATA
tag consists of a sequence of exactly 9 entries,
each defining how a specific part of the control's texture should be rendered.
Important: The order and position (or "slot") of each texture within the DRAWDATA
tag is crucial.
The game expects the textures to be in a specific order, and placing them in the wrong slots can lead to incorrect
rendering or even cause the game to crash.
The correct order and slots for textures can be determined by examining the code examples for each specific control.
Even if some parts of the control don't have a texture and need to use NoImage
,
you must still include the NoImage
entry in the correct slot.
Example:
Note
Colors whose alpha value is 0 are not actually applied.
ENABLEDDRAWDATA = IMAGE: LoadingBar_R, COLOR: 255 0 0 0, BORDERCOLOR: 255 128 128 0,
IMAGE: LoadingBar_L, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: LoadingBar_C, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: NoImage, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: NoImage, COLOR: 47 55 168 255, BORDERCOLOR: 254 254 254 255,
IMAGE: LoadingBar_DePowered, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: LoadingBar_Progress, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: NoImage, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0,
IMAGE: NoImage, COLOR: 255 255 255 0, BORDERCOLOR: 255 255 255 0;
Here, LoadingBar_R
, LoadingBar_L
and other are the names of textures defined in the
SCSmShellUserInterface512.ini
file. The NoImage
entries must still be included in their correct slots,
even if there is no specific texture for that part of the control.
Important
Each control has it's own way of setting up DRAWDATA
, for example, a LoadingBar_Progress
must have the progress
bar texture in slot 7, so if you try to use that slot for anything else, the progress bar will not be shown.
It's important to use the example for each specific control and keep the textures on the exact slot, so the rendering will be correct, or you may cause the game to crash.
You can create new textures or modify existing ones by editing the .tga
files and the corresponding INI mapping files.
-
Edit the
.tga
File:- Open the TGA file (
SCSmShellUserInterface512_001.tga
) with an image editor that supports TGA files (e.g., Photoshop, GIMP). - Add or modify the textures as needed.
- Make sure the new textures do not overlap with existing ones.
[!NOTE] While TGA has been the traditional format, for Patch 1.04p development, support for formats like PSD or TIFF has been added. These formats allow saving layers and greatly simplify editing.
- Open the TGA file (
-
Update the Mapping INI File:
- Open the corresponding INI file (
SCSmShellUserInterface512.ini
). - For each new texture, create a new
MappedImage
entry, as shown above, using a uniqueTextureName
, the correct filename,TextureWidth
,TextureHeight
and the precise coordinates (Coords
) of the new texture within the edited TGA file. - If you modified an existing texture, update its
Coords
values accordingly.
[!NOTE] It is also possible to use DDS files in DXT1 or DXT5 formats and reference them in the WND file.
- Open the corresponding INI file (
-
Test Your Changes:
- Save both the edited TGA and INI files.
- Launch the game and check that the changes to the UI are applied correctly.
- Coordinate Precision: Be accurate when recording the texture coordinates in the INI file.
- Texture Overlap: Avoid having textures that overlap in the TGA file.
- Backup (Optional): If you are using Git or a similar version control system, a backup is not necessary. However, if you are not using such a system, it's recommended to always back up the original files before editing.
- DDS: Consider using DDS files in DXT1 or DXT5 formats for textures, which can be referenced in the WND files.
- TGA Format: If you choose to use the TGA format, save your images as a 32-bit uncompressed TGA file.
- Note that texture loading in the engine is handled specially. At runtime, the engine will first attempt to
load the texture with the
.dds
extension (e.g.,Texture.dds
). If it doesn't find the DDS file, it will then try to load the same texture with the.tga
extension (e.g.,Texture.tga
). This process occurs regardless of whether the input name is.tga
or.dds
. Therefore, if a reference exists forTexture.tga
but onlyTexture.dds
is present, the engine will still successfully load the texture, as it prioritizes.dds
first and falls back to.tga
if necessary.
-
Art
- Models
- Textures
-
Audio & Video
- WAV
- BIK
-
Game Design
-
Maps
-
Localization
-
GUI
- FinalBIG
- Generals Mode Builder