BSP (Source)/Game-Specific: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
This page documents some game-specific differences in the [[Source BSP File Format|BSP file format]], compared to the format used for the traditional engine branches. | This page documents some game-specific differences in the [[Source BSP File Format|BSP file format]], compared to the format used for the traditional engine branches. | ||
== | == [[Alien Swarm]] and [[Portal 2]] == | ||
Both games use a slightly different <code>dbrushside_t</code> structure: | |||
<source lang="cpp">struct dbrushside_t | |||
{ | |||
unsigned short planenum; // facing out of the leaf | |||
short texinfo; | |||
short dispinfo; // displacement info (BSPVERSION 7) | |||
byte bevel; // is the side a bevel plane? (BSPVERSION 7) | |||
byte thin; // is a thin side? | |||
};</source> | |||
== [[Left 4 Dead 2]] == | |||
<code>version</code> and <code>filelen</code> in <code>lump_t</code> are swapped: | |||
<source lang="cpp">struct lump_t | <source lang="cpp">struct lump_t | ||
Line 10: | Line 22: | ||
int filelen; // length of lump(bytes) | int filelen; // length of lump(bytes) | ||
char fourCC[4]; // lump ident code | char fourCC[4]; // lump ident code | ||
};</source> | |||
== [[The Ship]] == | |||
Static props use a modified <code>StaticPropLumpV5_t</code> structure, which contains a target name string. | |||
<source lang="cpp">struct StaticPropLumpV5_ship_t | |||
{ | |||
Vector m_Origin; | |||
QAngle m_Angles; | |||
unsigned short m_PropType; | |||
unsigned short m_FirstLeaf; | |||
unsigned short m_LeafCount; | |||
unsigned char m_Solid; | |||
unsigned char m_Flags; | |||
int m_Skin; | |||
float m_FadeMinDist; | |||
float m_FadeMaxDist; | |||
Vector m_LightingOrigin; | |||
float m_flForcedFadeScale; | |||
char m_TargetName[128]; | |||
};</source> | };</source> | ||
Revision as of 01:09, 8 May 2011
This page documents some game-specific differences in the BSP file format, compared to the format used for the traditional engine branches.
Alien Swarm and Portal 2
Both games use a slightly different dbrushside_t
structure:
struct dbrushside_t
{
unsigned short planenum; // facing out of the leaf
short texinfo;
short dispinfo; // displacement info (BSPVERSION 7)
byte bevel; // is the side a bevel plane? (BSPVERSION 7)
byte thin; // is a thin side?
};
Left 4 Dead 2
version
and filelen
in lump_t
are swapped:
struct lump_t
{
int version; // lump format version
int fileofs; // offset into file (bytes)
int filelen; // length of lump(bytes)
char fourCC[4]; // lump ident code
};
The Ship
Static props use a modified StaticPropLumpV5_t
structure, which contains a target name string.
struct StaticPropLumpV5_ship_t
{
Vector m_Origin;
QAngle m_Angles;
unsigned short m_PropType;
unsigned short m_FirstLeaf;
unsigned short m_LeafCount;
unsigned char m_Solid;
unsigned char m_Flags;
int m_Skin;
float m_FadeMinDist;
float m_FadeMaxDist;
Vector m_LightingOrigin;
float m_flForcedFadeScale;
char m_TargetName[128];
};
Vampire: The Masquerade – Bloodlines
Version 17 BSP files contain a substantially modified dface_t
structure. The known elements are:
MAXLIGHTMAPS changed from 4 to 8 // 4 lightstyle for day + 4 for night = 8 ( nightime lightmapping system )
struct dface_bsp17_t
{
colorRGBExp32 m_AvgLightColor[MAXLIGHTMAPS]; // For computing lighting information
unsigned short planenum;
byte side; // faces opposite to the node's plane direction
byte onNode; // 1 of on node, 0 if in leaf
int firstedge; // we must support > 64k edges
short numedges;
short texinfo;
short dispinfo;
short surfaceFogVolumeID;
byte styles[MAXLIGHTMAPS]; // lighting info
byte day[MAXLIGHTMAPS]; // Nightime lightmapping system
byte night[MAXLIGHTMAPS]; // Nightime lightmapping system
int lightofs; // start of [numstyles*surfsize] samples
float area;
int m_LightmapTextureMinsInLuxels[2];
int m_LightmapTextureSizeInLuxels[2];
int origFace; // reference the original face this face was derived from
unsigned int smoothingGroups;
};
The extra data seems to be related to lighting of the face, and makes the length of the structure 104 bytes per face. Both the face lump and the original face lump in version 17 files use this structure.