Targetware: Flight Model Development


Targetware ACM File Guide

An aircraft file, with the .acm extension, has 5 main headers or sections, defined by the square brackets around them.  They are [graphics], [sounds], [aircraft], [part] and [option] (see more about options below).  An X, Y, Z coordinate system is used to define the position of a force, mass or viewpoint in 3-dimensional space.   The point of origin (0, 0, 0) can be any point the designer chooses (propeller hub, right wing tip, etc...).  All measurements relative to the origin are to be made in metric units (meters).  Any measurements in the X direction are parallel to the lateral axis (about which the aircraft pitches).  Measurements in the Y direction are parallel to the longitudinal axis (about which the aircraft rolls).  Finally, the Z direction is perpendicular to the other 2 axis (about which the aircraft yaws).  Values increase (become more positive or less negative) as one moves right, forward and up from the origin.

[Graphics]

The graphics section contains pointers to the files that determine which external and internal 3d models will be attached to the flight model. There is also a provision to allow for an optional "death animation". If destroy_anim_time is anything greater than zero seconds, the death anim link will be available to the aircraft's anm files. It is activated when the plane is destroyed.

external = f-86/anm_ext.anm
internal = f-86/anm_int.anm
external_origin = 0,0,0
internal_origin = 0,0,0
destroy_anim_time = x

[Sounds]

The flight simulator supports a number of different sound effects, most of which are self explanatory.  The links point to the sound files, relative to the 'data' folder.  All sounds must be 16 bit, mono, 44.1 kHz WAV. A base sound directory and an optional sound directory can be specified. Subsequent sound links should be relative, ie, just the file name. If there is a sound by that name in the optional directory, it will be used, otherwise, a file will be pulled from the standard (base) directory.

base = path to standard (generic) sound files
optional = path to optional (custom) sound files
stall_sound = name of sound effect file
wind_sound = name of sound effect file
stress_sound = name of sound effect file
explode_sound = path to sound effect file
grunt_sound = name of sound effect file
check_six_sound = name of sound effect file

Any number of hit sounds can be used to provide some randomness.  Example,

num_hit_sounds = number
hit_sound_1 = name of sound effect file
hit_sound_2 = name of sound effect file
hit_sound_3 = name of sound effect file
etc...

[Aircraft]

The aircraft section contains basic information about the model, such as the name of the plane as it would appear in the plane selection menu, the label as the icon would appear in the simulation and the location of the center of gravity.  Things like fuel, guns, ammo or any other ordnance that are added to the empty aircraft as 'parts' will add mass and affect the location of the center of gravity.  Specific information about piloting the aircraft can be placed into a text file and referenced from within the software as a handbook.

name = plane name
target_type = type of object this is, for AI targeting purposes. "air" for airplanes.
handbook = path/filename.txt
handbook_image = path/filename.jpg
label = label
empty_cg = x, y, z
peak_wind_ias = km/h at which wind sound will be at full volume. A value similar to the top speed of the aircraft is probably good for most airplanes.

The number of 'parts' used in a model must be defined by a separate entry under the [aircraft] header by:

num_parts = number

This number depends on the complexity of the plane.

A scenario need not start on the ground at an airfield.  For those scenarios that start closer to the action, the amount of fuel used in getting there is determined by how many kilometers it takes to consume one kilogram of fuel.

range_per_kg = km

A plane may also carry a variety of external stores such as droptanks, bombs and rockets in many different combinations.  For these combinations, we need to know how many stations, or hardpoints the plane has.  These are called 'options'.  Next, we need to know what types of stores could be carried on each station.  These are called 'choices'.  So, the number of options is defined by:

num_options = number (See more about options and choices below)

[Part number]

An aircraft is made up of a number of 'parts'.  Each part is assigned a number in a header, such as [part 1], [part 2].  The location of each part is set in 3-dimensional space using the X, Y, Z coordinate system.   If the part can be damaged, it should have a damage box surrounding it.  When the 3d object is hit, the damage box surrounding that part of the model tells the simulator which part got hit and what the damage effects will be.  The box itself does not determine the hit area.  Each part also has a mass associated with it.

name = name
location = x, y, z
size = width, length, height
mass = mass in kilograms
type = part type

Legal part types are as follows: (click on type for more detail)

It is easier to make things like guns, bombs, rockets and airfoils as separate .acm files, since they can be shared by other aircraft.  To do this, just include the relevant entries for that part type in a separate .acm file and use the #include filename.acm command to add it to your model under it's part header.  This can save alot of work with cutting and pasting in the long run and makes the file a little bit smaller.

All parts are joined together to make the whole aircraft. Since damage can occur and parts can be broken off, it's necessary to link a part to its parent part, the part to which it is attached.

parent = name of part



[Option]

Options look alot like 'parts' in that each option is also assigned a number in square brackets [option 1], [option 2], etc.
The first entry should say how many choices there will be for the option.  Remember, an option is like a pair of hardpoints or stations, such as a set of wing pylons, but it could also be an auxiliary internal fuel tank, just as long as it's something that has the option of being added to the basic aircraft.  Each choice then, is a different type of ordnance that can be loaded onto those pylons like droptanks, rockets or bombs.

num_choices = number

Then follow with a new header:

[option number choice number]

Each choice needs a name attached to it as well as how many parts will make up the choice.  For example, choice 1 might be the 500 lbs bomb, of which there might be 2 of them, one under each wing.

name = 500 lbs bombs (2)
num_parts = 2

Then we need a section for each part,

[option number choice number part number]

If the part is a separate .acm file, like most of them should be, include it now by,

#include filename.acm

Otherwise, use the entries for the part type as listed above.