The first step in understanding how Spring is put together is to understand where the filetypes came from and how the files are organized, and what all the different files do. In Spring, there are several formats you can use, including relic supported TA formats and standards such as zlib and 7zip.
In Total Annihilation, all files were compressed with a format known as HAPI. Files of this format included .HPI, .UFO, .CCX, and .GP3. For all practical purposes, you can think of the HPI file like their own home-grown ZIP file, containing its own directory structure and groups of files. All HAPI files are compressed in the same way, the only difference is the extension used.
Spring also supports reading from zlib zip and non-solid 7zip files. The filenames for these compression types must be .SDZ for zlib and .SD7 for 7zip respectively. They are standard files, just with different extensions for Spring. Here's a list of all filetypes supported by Spring; a higher read order means the contents of a file of that extension will take priority over files of a lower read order.
An interesting twist is that map archivse can be placed into the /maps/ folder and contains another /maps/ folder inside the archive.
Read Order |
File Extension |
Compression Method |
Description |
|---|---|---|---|
1 |
SD7 |
Non-Solid 7zip |
A 7zip file with the extension changed to .SD7. These files have the same structure as an HAPI file, they are just compressed in a different manner. 7zip compressed archives generally have the highest compression (and therefore lowest filesizes). Files of this type are read first, so any filetypes encountered after .SD7 with the same data will take priority. For example, if you have ARMCOM.FBI in an SD7 file, and a modified version of ARMCOM.FBI in a CCX file, the CCX version will be used. |
2 |
SDZ |
ZLIB ZIP |
A zlib ZIP file with the extension changed to .SDZ. These files have the same structure as an HAPI file, they are just compressed in a different manner. Maps and mods alike can be stored in these files. These are read second. |
3 |
HPI |
HAPI |
One of the HAPI file format extensions. These are read third. |
4 |
UFO |
HAPI |
Another HAPI file extension. Fourth in line of being read. |
5 |
CCX |
HAPI |
Yet another HAPI file. These are fifth in the chain of being read. |
6 |
GP3 |
HAPI |
The sixth in the chain of files being read. |
7 |
SWX |
HAPI |
The seventh in the chain of command of files. This extension was originally used by the Star Wars Total Annihilation mod, but Spring doesn't care whether or not it's actually used for SWTA. It is an HAPI file. |
8 |
GP4 |
HAPI |
The eighth filetype read. Any data in a .GP4 file will override any other compressed data in any other files. This is also an HAPI file. |
The best tools to use to view the contents of a compressed Spring file, and to pack and unpack the contents of such a file are:
- HPIView to view, browse, and extract HAPI files.
- HPIPack to pack HAPI files.
- WinRAR to view, browse, extract, and pack SDZ files, or to browse SD7 files.
- 7zip to view, browse, extract, and pack SD7 files.
- HPIEdit to view, extract and pack HPI, SDZ or SD7 files.
- HPI Manager to view extract and pack HPI files aswell.
There are many other utilities that can also serve the same purpose. Peruse FileUniverse if for some reason the tools listed here don't suit you.
Subdirectory |
File Types |
Description |
|
|---|---|---|---|
anims |
Mod_Development:Cursors |
Cursors | |
download |
Units:Download_TDF |
Information to assign a unit to a location on a given build menu. | |
features |
Contains information about miscellaneous features, such as corpses, trees, scars, etc., that may or may not be specific to particular maps or map types. | ||
\ |
corpses |
TDF |
Information about wreckage left behind when a unit dies. |
\ |
allworlds |
TDF |
Information about features (such as trees, scars, etc.) for specific world maps.Other subdirectories may exist alongside "allworlds", such as "acid", "crystal", "green", etc. |
gamedata |
Mod_Development:Gamedata |
General information, such as sound assignments, can-build information, and other such data. | |
guis |
GUI |
Alternative build tree definition method | |
objects3d |
3DO |
3D object definitions for units, unit corpses. | |
maps |
SMD |
Schema, starting points, and other information pertaining to a particular map. | |
SMF |
Map layout, heights, and features information. | ||
scripts |
BOS |
Text description/subroutines that describe how a unit moves, animates, etc. | |
COB |
A compiled version of the .BOS file. | ||
sidepics |
BMP |
The faction icons which display in the multiplayer lobby. See Mod Development:Sidepics. | |
sounds |
WAV |
Sounds. | |
unitpics |
Units:Buildpics |
"Large" (96x96) color pictures of units. | |
unittextures |
DDS and TGA (Maybe BMP) |
Textures for S3O models. | |
\ |
tatex |
BMP (also DDS or TGA) |
Textures for 3DO models(buildings, kbots, vehicles, etc.) |
units |
Units:FBI |
General properties of units. | |
weapons |
TDF |
Contains the definition and properties of particular weapons that are used throughout the game. | |
