Data structures¶
This section documents the mdl file format itself, structure by structure, as ValveMDL understands it.
What is supported¶
ValveMDL is evidence driven: a structure is documented here once it has been read out of real files and cross-checked against the Source SDK, and not before. Gaps are left as gaps rather than guessed at.
Documented means the structure is defined here and checked against the SDK. Loaded means ValveMDL follows the offsets to it and hands it to you.
Structure |
Documented |
Loaded |
|---|---|---|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
|
yes |
|
yes |
|
|
yes |
|
|
cdtextures (search paths) |
yes |
|
Skin replacement table |
yes |
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
|
|
yes |
not yet |
|
yes |
not yet |
|
Vertex and tangent pools |
yes |
|
Vvd fixup table |
yes |
|
Vtx mesh tree |
yes |
|
Versions¶
Team Fortress 2 ships mdl versions 44, 45, 46, 47 and 48 – five variants of
the same format, in the same game. Version 48 accounts for about 91% of them.
studiohdr_t itself is unchanged across that whole range; the version
differences live in how the structures it points at are interpreted.