Dynamic Airport Configuration – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "Category:Arma 3: Editing" to "{{GameCategory|arma3|Editing}}")
m (Some wiki formatting)
 
(4 intermediate revisions by 2 users not shown)
Line 7: Line 7:
{
{
simulation = "airport";
simulation = "airport";
 
ilsPosition[] = { -270, 0 };
ilsPosition[] = { -270, 0 };
ilsDirection[] = { -1, 0.08, 0 };
ilsDirection[] = { -1, 0.08, 0 };
Line 13: Line 13:
ilsTaxiOff[] = { 20, 0, 240, 0, 250, -10, 250, -30, 245, -35, 240, -38, 40, -38 };
ilsTaxiOff[] = { 20, 0, 240, 0, 250, -10, 250, -30, 245, -35, 240, -38, 40, -38 };
};
};
</syntaxhighlight>  
</syntaxhighlight>


The parameters above are a series of plotted coordinates, which define the layout and the direction of the airfield. The coordinates used to plot these points are from X,Y,Z positioning system. Unlike with airports in terrain config, where the points are set of an absolute coordinates when it comes to the terrain, dynamic airport's points are relative to the "model centre" - in other words, [0,0] coordinates. Seeing that dynamic airport is a set of nodes, it is often difficult to determine visually, and for creating it's configuration. Personally, I recommend usage of squared paper :)
The parameters above are a series of plotted coordinates, which define the layout and the direction of the airfield. The coordinates used to plot these points are from X,Y,Z positioning system.
Unlike with airports in terrain config, where the points are set of an absolute coordinates when it comes to the terrain, dynamic airport's points are relative to the "model centre" - in other words, [0,0] coordinates.
Seeing that dynamic airport is a set of nodes, it is often difficult to determine visually, and for creating it is configuration. Personally, I recommend usage of squared paper :)


Placing the airport in 3DEN allows to see its shape in the map view (2D map), as well it's rotation. However, in 3D it's basically invisible.  
Placing the airport in 3DEN allows to see its shape in the map view (2D map), as well it is rotation. However, in 3D it is basically invisible.
This is an example of the airport shape with the configuration above (not rotated in 3DEN):
This is an example of the airport shape with the configuration above (not rotated in 3DEN):


Line 23: Line 25:




== Airfield parameters ==
== Airfield Parameters ==


'''ilsPosition''' - touchdown / takeoff position. This position has three purposes:
'''ilsPosition''' - touchdown / takeoff position. This position has three purposes:
Line 39: Line 41:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
ilsDirection [] = {sin(opposite of desired landing direction in degrees), sin(desired glideslope in degrees), cos(opposite of desired landing direction in degrees)};
ilsDirection [] = {sin(opposite of desired landing direction in degrees), sin(desired glideslope in degrees), cos(opposite of desired landing direction in degrees)};
</syntaxhighlight>  
</syntaxhighlight>
'''ilsTaxiOff''' - path to taxi off the runway
'''ilsTaxiOff''' - path to taxi off the runway
* A series of X, Y coordinates(waypoints) used by AI to taxi off the end of the runway.
* A series of X, Y coordinates(waypoints) used by AI to taxi off the end of the runway.
Line 50: Line 52:




== Aircraft carrier landing ==
== Aircraft Carrier Landing ==


As this feature has been introduced mainly because of USS Freedom, there is several things worth noting with usage on the aircraft carrier:
As this feature has been introduced mainly because of USS Freedom, there is several things worth noting with usage on the aircraft carrier:
Line 57: Line 59:
* Dynamic airport was added to the carrier by a script.
* Dynamic airport was added to the carrier by a script.


To allow the plane AI / autopilot to land on carrier, is has to have following parameter in it's class:
To allow the plane AI / autopilot to land on carrier, is has to have following parameter in it is class:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
// config.cpp
// config.cpp
class Plane_Fighter_01_Base_F : Plane_Base_F
class Plane_Fighter_01_Base_F : Plane_Base_F
{
{
...
// ...
tailhook = true;
tailhook = true;
...
// ...
};
};
</syntaxhighlight>  
</syntaxhighlight>


For script-placed airports which are part of another asset, it might be wise to create the airport already with shape and direction intended, as the currently available might not be ideal for every asset.  
For script-placed airports which are part of another asset, it might be wise to create the airport already with shape and direction intended, as the currently available might not be ideal for every asset.




Carrier dynamic airport has also specific parameter to be distinguish from the ones on the land.
Carrier dynamic airport has also specific parameter to be distinguish from the ones on the land.


'''USS Freedom dynamic airport''' configuration (for original use in the editor for development purposes and tweaking), together with (unrotated) picture of it's shape:
'''USS Freedom dynamic airport''' configuration (for original use in the editor for development purposes and tweaking), together with (unrotated) picture of it is shape:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
class CfgVehicles
class CfgVehicles
{
{
class AirportBase;
class AirportBase;
class DynamicAirport_01_F: AirportBase
class DynamicAirport_01_F : AirportBase
{
{
scope = 1;
scope = 1;
displayName = "Dynamic Airport";
displayName = "Dynamic Airport";
DLC = Jets;
DLC = Jets;
 
editorCategory = "EdCat_Structures";
editorCategory = "EdCat_Structures";
editorSubcategory = "EdSubcat_AircraftCarrier";
editorSubcategory = "EdSubcat_AircraftCarrier";
icon = iconObject_1x1;
icon = iconObject_1x1;


// airplanes with "tailHook = true" will be able to land here
// airplanes with "tailHook = true" will be able to land here
isCarrier = true;
isCarrier = true;


ilsPosition[] = { -5, 150 };
ilsPosition[] = { -5, 150 };
ilsDirection[] = { -0.5, 0.08, 3 };
ilsDirection[] = { -0.5, 0.08, 3 };
ilsTaxiIn[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
ilsTaxiIn[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
ilsTaxiOff[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
ilsTaxiOff[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
};
};
};
};
</syntaxhighlight>  
</syntaxhighlight>
[[File:ils new.jpg]]
[[File:ils new.jpg]]




{{GameCategory|arma3|Editing}}
{{GameCategory|arma3|Editing}}

Latest revision as of 11:54, 26 March 2024

Jets DLC introduced a new feature which is creating landing strips dynamically, instead of them being hardcoded in the terrain config. This feature was necessary to create and configure the USS Freedom aircraft carrier, to allow AI and autopilot land there.

For this purpose, a new base class in the core config has been introduced, and by inheriting from this class, there can be created and object placeable even in 3Den editor.

class AirportBase : NonStrategic
{
	simulation = "airport";

	ilsPosition[] = { -270, 0 };
	ilsDirection[] = { -1, 0.08, 0 };
	ilsTaxiIn[] = { 40, -38, -212, -38, -218, -32, -218, -10, -200, 0 };
	ilsTaxiOff[] = { 20, 0, 240, 0, 250, -10, 250, -30, 245, -35, 240, -38, 40, -38 };
};

The parameters above are a series of plotted coordinates, which define the layout and the direction of the airfield. The coordinates used to plot these points are from X,Y,Z positioning system. Unlike with airports in terrain config, where the points are set of an absolute coordinates when it comes to the terrain, dynamic airport's points are relative to the "model centre" - in other words, [0,0] coordinates. Seeing that dynamic airport is a set of nodes, it is often difficult to determine visually, and for creating it is configuration. Personally, I recommend usage of squared paper :)

Placing the airport in 3DEN allows to see its shape in the map view (2D map), as well it is rotation. However, in 3D it is basically invisible. This is an example of the airport shape with the configuration above (not rotated in 3DEN):

ils old.jpg


Airfield Parameters

ilsPosition - touchdown / takeoff position. This position has three purposes:

  • Position, which the aircraft will aim for the touchdown - quite often the aircraft misses this point and touches down after it, so please keep it in mind when plotting this position
  • Start position for the takeoff
  • First set of coordinates for ilsTaxiOff position
  • Format is [x,y]
  • Represented by blue dot on the picture below

ilsDirection - defines the land / takeoff direction as well as the landing glide slope

  • There can be only one direction for both landing and takeoff per runway
  • Three values need to be input - defining a point in 3D relative to the ilsPosition
  • Format is [x,z,y]
  • Represented by black arrow on the picture below
  • Formula for working out the values (opposite of landing direction - add/subtract 180 from the angle of the direction):
ilsDirection [] = {sin(opposite of desired landing direction in degrees), sin(desired glideslope in degrees), cos(opposite of desired landing direction in degrees)};

ilsTaxiOff - path to taxi off the runway

  • A series of X, Y coordinates(waypoints) used by AI to taxi off the end of the runway.
  • Represented by green set of dots on the picture below

ilsTaxiIn - path to taxi onto the runway

  • A series of X, Y co-ordinates (waypoints) used by AI to taxi on to the start of the runway.
  • Represented by red set of dots on the picture below

airstripsmall.png


Aircraft Carrier Landing

As this feature has been introduced mainly because of USS Freedom, there is several things worth noting with usage on the aircraft carrier:

  • The landing strip for aircraft carrier is very short
  • Not every plane will be able to land on carriers, and instead the autopilot will land on other nearest airport
  • Dynamic airport was added to the carrier by a script.

To allow the plane AI / autopilot to land on carrier, is has to have following parameter in it is class:

// config.cpp
class Plane_Fighter_01_Base_F : Plane_Base_F
{
	// ...
	tailhook = true;
	// ...
};

For script-placed airports which are part of another asset, it might be wise to create the airport already with shape and direction intended, as the currently available might not be ideal for every asset.


Carrier dynamic airport has also specific parameter to be distinguish from the ones on the land.

USS Freedom dynamic airport configuration (for original use in the editor for development purposes and tweaking), together with (unrotated) picture of it is shape:

class CfgVehicles
{
	class AirportBase;
	class DynamicAirport_01_F : AirportBase
	{
		scope = 1;
		displayName = "Dynamic Airport";
		DLC = Jets;

		editorCategory = "EdCat_Structures";
		editorSubcategory = "EdSubcat_AircraftCarrier";
		icon = iconObject_1x1;

		// airplanes with "tailHook = true" will be able to land here
		isCarrier = true;

		ilsPosition[] = { -5, 150 };
		ilsDirection[] = { -0.5, 0.08, 3 };
		ilsTaxiIn[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
		ilsTaxiOff[] = { 40, -60, 35, -80, 25, -80, 20, -70, -10, 110 };
	};
};

ils new.jpg