BattleMap (map.bin)
Binary based map file format that replaced JSON and XML based formats, it is exported out of the unity editor and stored as map.bin.
Format
This file is wrapped and serialised using the Alternativa Protocol, it has no signature or header and is simply a protocol packet with optional mask.
struct BattleMap
{
OptionalMask optionalMask; // See Alternativa Protocol documentation
Atlas atlases[]; // Optional
Batch batches[]; // Optional
CollisionGeometry collisionGeometry; // Required
CollisionGeometry collisionGeometryOutsideGamingZone; // Required
Material materials[]; // Required
SpawnPoint spawnPoints[]; // Optional
Prop staticGeometry[]; // Required
};
Atlas
Defines an atlas file, atlas texture files store all the textures required by the map, they are stored next to the map.bin file.
struct Atlas
{
uint32_t height; // Required
string name; // Required
uint32_t padding; // Required
AtlasRect rects[]; // Required
uint32_t width; // Required
};
AtlasRect
Defines an individual texture in the atlas.
struct AtlasRect
{
uint32_t height; // Required
string libraryName; // Required
string name; // Required
uint32_t width; // Required
uint32_t x; // Required
uint32_t y; // Required
};
Batch
Defines a render batch, a group of geometry which shares the same material and can be rendered together.
struct Batch
{
uint32_t materialID; // Required
string name; // Required
vec3 position; // Required
string propIDs; // Required
};
CollisionGeometry
Stores physics information, collision meshes for the map.
struct CollisionGeometry
{
CollisionBox collisionBoxes[]; // Required
CollisionPlane collisionPlanes[]; // Required
CollisionTriangle collisionTriangles[]; // Required
};
CollisionBox
Primitive box physics collider.
struct CollisionBox
{
vec3 Position; // Required
vec3 Rotation; // Required
vec3 Scale; // Required
};
CollisionPlane
Primitive plane physics collider.
struct CollisionPlane
{
double length; // Required
vec3 position; // Required
vec3 rotation; // Required
double width; // Required
};
CollisionTriangle
Primitive triangle physics collider.
struct CollisionTriangle
{
double length; // Required
vec3 position; // Required
vec3 rotation; // Required
float vertices[3]; // Required
};
Material
Defines a material used within the map.
struct Material
{
uint32_t ID; // Required
string name; // Required
ScalarParameter scalarParameters[]; // Optional
string shader; // Required
TextureParameter textureParameters[]; // Required
Vector2Parameter vector2Parameters[]; // Optional
Vector3Parameter vector3Parameters[]; // Optional
Vector4Parameter vector4Parameters[]; // Optional
};
ScalarParameter
Defines a material parameter with one component.
struct ScalarParameter
{
string name; // Required
float value; // Required
};
Vector2Parameter
Defines a material parameter with two components.
struct Vector2Parameter
{
string name; // Required
vec2 value; // Required
};
Vector3Parameter
Defines a material parameter with three components.
struct Vector3Parameter
{
string name; // Required
vec3 value; // Required
};
Vector4Parameter
Defines a material parameter with four components.
struct Vector4Parameter
{
string name; // Required
vec4 value; // Required
};
SpawnPoint
A point at which tanks can spawn, specific to different gamemodes.
struct SpawnPoint
{
vec3 position; // Required
vec3 rotation; // Required
uint32_t type; // Required
};
type
Specifies which gamemode and team the spawn is for.
enum SpawnType
{
TUTORIAL_PLAYER = 0,
TUTORIAL_BOT = 1,
TEAM_A = 2,
TEAM_B = 3,
DM = 4,
DOM = 5,
DOM_TEAM_A = 6,
DOM_TEAM_B = 7,
RUGBY_TEAM_A = 8,
RUGBY_TEAM_B = 9,
SURVIVAL_TEAM_A = 10,
SURVIVAL_TEAM_B = 11,
SURVIVAL_NEUTRAL = 12,
ASSAULT_ATTACKING = 13,
ASSAULT_DEFENDING = 14,
SGE_TEAM_A = 15,
SGE_TEAM_B = 16,
TJR_TEAM_A = 17,
TJR_TEAM_B = 18,
};
Prop
Defines a visual object within the map.
struct Prop
{
string groupName; // Optional
uint32_t ID; // Required
string libraryName; // Required
uint32_t materialID; // Required
string name; // Required
vec3 position; // Required
vec3 rotation; // Optional
vec3 scale; // Optional
};