Database

The Tacview database contains the definition of numerous civilian and military vehicles as well as many related objects you can find in a mission. Every time Tacview detects a new object in the incoming telemetry data, it will look for the corresponding best match in its database in order to display the most appropriate name, shape, and additional properties such as engagement range where applicable.

See the entire database on our GitHubarrow-up-right.

Creating an Empty Definition File

To extend or modify the Tacview database, you need to create one or more XML files in the %ProgramData%\Tacview\Data\Database\Default Properties\ or %APPDATA%\Tacview\Data\Database\Default Properties\ folders. Feel free to use subfolders to organise your data, Tacview will recursively load any appropriate XML file found in the corresponding folders and sub-folders. Here is an example of an empty definition file:

<?xml version="1.0" encoding="UTF-8"?>
<DefaultPropertiesCollection Version="1.0" LoadingOrder="0.5">

	<!-- Put your definitions here -->

</DefaultPropertiesCollection>

The LoadingOrder attribute is used to define in which order the XML files will be injected in the database. Files with the lowest numbers will be loaded first. Tacview uses numbers between 0.0 and 0.1 for its own definitions. You should use numbers between 0.5 and 1.0 for your own files, so your definitions will be loaded after Tacview ones and overwrite them when applicable.

Modifying default definitions

Let’s say you are not happy with the way the M163 Vulcan AAA is declared by default in Tacview. You want to fix the name which is displayed by default, as well its engagement range.

First, create an empty definition file. Then, copy paste into it the default AntiAircraft.M163 definition which can be found in GitHubarrow-up-right.

Modify the entry as desired. The engagement is expressed in meters. You can even provide a default color, for when your telemetry data does not already provide one (like from GPX files)!

<?xml version="1.0" encoding="UTF-8"?>
<DefaultPropertiesCollection Version="1.0" LoadingOrder="0.5">

	<!--
		This file could be saved as
		%ProgramData%\Tacview\Data\Database\Default Properties\AAA range fixes.xml
	-->

	<!-- M163 Vulcan redefinition -->

	<DefaultProperties Id="AntiAircraft.M163" Base="AntiAircraft.AAA">
		<Criteria>
			<Name>M163</Name>
			<Name>Vulcan</Name>
		</Criteria>
		<Properties>
			<ShortName>M163 VADS</ShortName>
			<LongName>M163 VADS</LongName>
			<FullName>M163 Vulcan Air Defense System (VADS)</FullName>
			<EngagementRange>2850</EngagementRange>
			<Shape>Vehicle.APC.M113.obj</Shape>
			<Color>Blue</Color>	<!-- Default Color -->
		</Properties>
	</DefaultProperties>

</DefaultPropertiesCollection>

It is important to remember that your new definition will completely replace Tacview one. Therefore, you must duplicate all the properties, even the ones you do not intend to modify.

Adding a New Entry

Let's say your favorite aircraft is not yet part of the default database and you want to add a new definition as well as a new 3D shape.

First, create empty definition file. Then, create a new definition based on the examples you can find in GitHubarrow-up-right.

Use the <Criteria> node to specify as many aliases as relevant. Tacview seeks the best match between the Name= property provided in the ACMI filearrow-up-right and the <Name> nodes in the database entries.

Optionally, you could specify a <Type> to include only objects of a specific type. This is handy to reduce ambiguities between objects of distinct types which uses the same name, such as a SA-18 launcher and its SA-18 missile. Note that Tacview base definitions like Base=FixedWing.Fighter.Jet already includes the type filter <Type>FixedWing</Type>. If the source telemetry data is inaccurate (no or invalid type declared), simply use an empty <Type/> node to disable filtering by type.

Any of the telemetry properties listed in the dedicated documentation can be used in Tacview database.

For example, you can use the <Shape> node to specify a custom 3D model. See the 3d objects documentationarrow-up-right for more information.

Each definition is identified by an unique identifier Id. Id is a free text. If two definitions have the same identifiers, then Tacview will keep the one which is declared in the file with the highest LoadingOrder.

Base represents the identifier of a base definition which is going to be used as a reference for the current definition. Any properties defined in Base will keep the same values in the derived definition. If you want to cancel the value of a specific property, simply overwrite it or write an empty node like: <Color/>.

Checking for Errors

After modifying or extending the database, it is best practice to check the debug log for errors.

Open the debug log by going to OptionsDebug Log

Scroll through the log to check for error messages:

Database - Debug Log

Last updated