OTA

Last updated:  11/07/98 00:08

The OTA file is one of the two components of a Total Annihilation map or mission.   The second component is the TNT file.  The OTA file contains text information that describes properties of a map/mission, such as the planet type, narration, tidal strengths, wind speeds, gravity, and unit starting positions and orders.  OTA and TNT files are found side-by-side in the maps subdirectory, and should be given the same filename for consistency.

Within OTA files is the cpncept of schemas.  Each schema is a slight variation on the map and/or mission based on difficulty (easy, medium, or hard) or if it is a multiplayer map.  Many variables that are set in a particular OTA file are specific to all schemas (such as the map size, etc.), but they can be altered, added, or removed for different schemas.  For example, you could place extra metal deposits, trees, or steam vents on easier schemas, or add additional computer units for harder schemas.

In addition to units and features, OTA files also contain what are simply called "special" objects.  In simple terms, the special objects are simply the 10 starting positions that are placed in the map's multiplayer schema to determine where everybody starts on the map.

In most cases, your OTA file will be generated for you by map/mission editing tools such as TAE and Kinboat's Annihilator (man, he's a busy guy!).  However, it could be helpful to understand the contents of this file in case you want to do any fine-tuning of your own.

A small example from the Core Contingency's Biggie Biggs multiplayer map:

[GlobalHeader]
{
    missionname=Biggie Biggs;
    missiondescription=36 X 16 Dance from island to island crushing your opponents.;
    planet=Slate;
    missionhint=;
    brief=;
    narration=;
    glamour=;
    lineofsight=1;
    mapping=1;
    tidalstrength=20;
    solarstrength=20;
    lavaworld=1;
    killmul=50;
    timemul=0;
    minwindspeed=3500;
    maxwindspeed=5000;
    nosealeveltrigger=1;
    gravity=112;
    maxunits=200;
    waterdoesdamage=0;
    waterdamage=100;
    numplayers=2, 4, 6, 8, 10;
    size=36 x 16;
    memory=32 mb;
    useonlyunits=biggie biggs.tdf;
    SCHEMACOUNT=1;
    [Schema 0]
    {
        Type=Network 1;
        aiprofile=AirBattle;
        SurfaceMetal=3;
        MohoMetal=40;
        HumanMetal=1000;
        ComputerMetal=1000;
        HumanEnergy=1000;
        ComputerEnergy=1000;
        MeteorWeapon=earthquake;
        MeteorRadius=650;
        MeteorDensity=.4;
        MeteorDuration=4;
        MeteorInterval=700;
        [specials]
        {
            [special0]
            {
                specialwhat=StartPos7;
                XPos=1216;
                ZPos=3840;
            }
            [special1]
            {
                specialwhat=StartPos8;
                XPos=16112;
                ZPos=3312;
            }
            .....
        }
    }
}               

Within an OTA file that describes a mission associated with a map, you will typically have additional schemas defined that will look similar to this piece from the Core Contingency ARM Mission 1 OTA file:

.....
SCHEMACOUNT=3;
[Schema 0]
{
    Type=Easy;
    aiprofile=Waterwrld;
    .....
    [units]
    {
        .....
        [unit13]
        {
            Unitname=CORCS;
            Ident=;
            XPos=3216;
            YPos=0;
            ZPos=1184;
            Player=2;
            HealthPercentage=100;
            Angle=0;
            Kills=0;
            InitialMission=w 900,p 1416 852,;
        }
        .....
        [unit18]
        {
            Unitname=CORPLAT;
            Ident=;
            XPos=4192;
            YPos=0;
            ZPos=1040;
            Player=2;
            HealthPercentage=100;
            Angle=180;
            Kills=0;
            InitialMission=w 920,b CORSEAP 1,w 300,b CORSEAP 1, ....;
        }
        .....
    }
    [features]
    {
        [feature0]
        {
            Featurename=WaterAquaOre3;
            XPos=362;
            ZPos=427;
        }
    }
    [specials]
    {
        [special0]
        {
            specialwhat=StartPos1;
            XPos=5696;
            ZPos=6816;
        }
    }
}
[Schema 1]
{ 
    .....
}
.....               

Within the OTA files, the following variables can be set for the particular map, mission, schema, unit, or special object.

Variable Description Example
aiprofile The name of the TXT file that describes the AI profile that the computer opponent will be using for the given mission being defined. aiprofile=AirBattle;
AllUnitsKilled A victory condition.  If set to one, you are victorious after killing all enemy units. AllUnitsKilled=1;
Angle The starting "angle" of a unit.  (i.e. which direction is it facing when the mission begins) Angle=90;
brief The name of the TXT text file containing the mission briefing that will be displayed before beginning a mission, and while the narration sound is being played. brief=Krogoth;
CommanderKilled A victory condition.  You are victorious if you kill the enemy commander. CommanderKilled=1;
ComputerEnergy How much energy the computer opponent begins with in a mission. ComputerEnergy=1500;
ComputerMetal How much metal the computer opponent starts with in a mission. ComputerMetal=1000;
Featurename The name of a feature being placed on the map. Featurename=WaterAquaOre3;
glamour The "glamour shot" (i.e. picture) PCX image that will be displayed on the screen upon completion of the mission. glamour=Krogvict;
glamoursound The "glamour sound" (i.e. sound) WAV file that will be played upon completing a mission, while the "glamour" picture is being displayed. glamoursound=Exp1kevs;
gravity The strength of the planet's gravity.  This mainly affects ballistic weaponry. gravity=122;
HealthPercentage The amount of health remaining for a particular unit (if you want to damage them before the mission begins). HealthPercentage=100;
HumanEnergy How much energy the human player (i.e. you) begin with in a mission. HumanEnergy=1000;
HumanMetal How much metal the human player (i.e. you) begin with in a mission. HumanMetal=1000;
Ident A special identifier assigned to a unit during a mission.   This identifier is used during in the "Initial Mission" designations to assign orders to a unit regarding another unit. Ident=GANT2;
InitialMission The "initial mission" to be carried out by a specific unit.  These are it's orders.  It is a bit of a programming language in and of itself that is described in the TAE help files. InitialMission=wa GANT2,g GANT2,;
KillAllOfType A victory condition.  If set, you are victorious if you kill all units of the specified type. KillAllOfType=CORKROG;
killmul   killmul=50;
Kills The number of kills a unit has.  This value is used to determine a unit's veteran status, if its kill count is greater than 5. kills=0;
KillUnitType A victgory condition.  You are victorious if you kill the specified number of the specified unit type. KillUnitType=CORGANT, 2;
lavaworld Is the world a lava world? lavaworld=1;
lineofsight The "line of sight" setting for the mission.   A value of 1 indicates that normal line-of-sight rules apply (you only see what is within your range, and what is not blocked from your view). lineofsight=1;
mapping The "mapping" setting for the mission.  A value of 1 indicates that normal mapping rules apply (i.e. if you haven't seen it, you don't know what's there). mapping=1;
maxunits The maximum number of units a player is allowed to have during the mission. maxunits=200;
maxwindspeed The maximum speed of the wind. maxwindspeed=5000;
memory The recommended amount of system RAM you should have to use the map/mission described in this OTA file. memory=32 mb;
MeteorDensity How "dense" is the meteor storm? MeteorDensity=.4;
MeteorDuration How long do the meteor showers last? MeteorDuration=4;
MeteorInterval How often meteors fall from the sky. MeteorInterval=700;
MeteorRadius How large an area is included in the meteor showers. MeteorRadius=650;
MeteorWeapon What weapon describes the damage inflicted by the meteors. MeteorWeapon=earthquake;
minwindspeed The minimum speed of the wind. minwindspeed=3500;
missiondescription A brief description of the mission. missiondescription=36 X 16 Dance from island to island crushing your opponents.;
missionhint    
missionname The name of the mission. missionname=Biggie Biggs;
MohoMetal   mohometal=40;
narration The name of the narration sound file that will be played during the missoin introduction. narration=Exp1kebm;
nomovie   nomovie=1;
nosealeveltrigger   nosealeveltrigger=1;
numplayers What are the recommended number of players to use on this map for multiplayer games? numplayers=2, 4, 6, 8, 10;
planet What type of planet does this map take place on?  (This value is used to determine what the spinning planet image looks like during the mission briefing) planet=Slate;
Player When placing units, to which player does the unit belong? player=2;
SCHEMACOUNT How many individual schemas are present in the OTA file?   (Should be between 1 and 4) SCHEMACOUNT=3;
size The size of the map in 512 pixel squares. size=36 x 16;
solarstength How strong is the sunlight?  (i.e. how much energy will a solar collector produce) solarstrength=28;
specialwhat When placing a "special" object (i.e. a player starting position), which "special" object is being placed. specialwhat=StartPos1;
SurfaceMetal   surfacemetal=3;
tidalstrength How strong are the tides?  (i.e. how much energy will a tidal generator produce) tidalstrength=24;
timemul    
Type For a given schema, what type of schema is it?  The valid values are "easy", "medium", and "hard" for missions, and a value of "network 1" indicates schema information for multiplayer games. Type=easy;
Unitname The shortname of the unit that is being placed in the mission. Unitname=CORSS;
useonlyunits The name of the TDF file that contains the "use-only" specifications for this mission.  (i.e. the list of units that you are only allowed to use during the mission). useonlyunits=Exp1Ac01.tdf;
waterdamage The amount of damage water (acid) does to a unit while the unit is touching it. waterdamage=100;
waterdoesdamage Does the water do damage to units that enter it?  (a positive value indicates that water is really acid) waterdoesdamage=0;
XPos The X-position (East-West) for the placement of a unit, feature, or special. XPos=362;
YPos The Y-position (Up-Down) for the placement of a unit, feature, or special.  (But why???) YPos=0;
ZPos The Z-position (North-South) for the placement of a unit, feature, or special. ZPos=427;