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; |