Overview
Notes on Aircraft Systems
This document provides notes on the aircraft supplied with ESP and guidelines on how to implement some of the more complex systems, requiring the use of attach points, event IDs, simulation variables and aircraft configuration file settings.
See Also
Table of Contents
Stock Aircraft Models
Notes on Catapult Launches
- Catapult Assisted Takeoff
- Landing using Arrestor Cables
Notes on Sling and Hoist Systems
- Defining and Using a Hoist System
- Defining and Using a Sling System
- Specifying that an Object can be Lifted
- Releasing an Object
Notes on Multiplayer Racing
- To Add Nitrous Oxide and Anti-Detonation Fuel Tanks
Stock Aircraft Models
The following table shows the aircraft that are supplied with ESP, and whether or not an interior model is supplied. If no interior model is available, then the aircraft can only be scheduled to appear as an AI controlled aircraft (see the Traffic Toolbox SDK), and cannot be piloted by a user.
Airbus A321 | No |
Aircreation 582SL | Yes |
Boeing 737 800 | Yes |
Boeing 747 400 | Yes |
Beech Baron 58 | No |
Beech Baron King Air | No |
Bombardier CRJ 700 | No |
Cessna 172 | Yes |
Cessna 208B | Yes |
DeHavilland Beaver DHC2 | No |
DeHavilland Dash8 100 | No |
Douglas DC3 | Yes |
Extra 300 | Yes |
F-18 Hornet | Yes |
Grumman Goose G21A | No |
Learjet 45 | No |
Maule M7 206C | No |
Maule M7 260C Ski | No |
MD 83 | No |
Mooney Bravo | Yes |
PS1 Racer | Yes |
PA28 180 | No |
Piper J3 Cub | No |
Bell 206B Helicopter | Yes |
Robinson R22 Helicopter | Yes |
Notes on Catapult Launches
The catapult launch system is designed to simulate a modern catapult assisted takeoff from a large flat-decked aircraft carrier. It is used in a number of missions featuring the F-18 Hornet. To specify that a ship has one or more catapults, runways and arrestor cables, the appropriate Attach Points need to be added to the model.
- For the carrier runway add an attachpt_runway_start, an attachpt_runway_end and an attachpt_runway_edge attach point. The attachpt_runway_edge point defines the half-width of the runway, and should be to starboard of attachpt_runway_start. A carrier cannot have more than one runway.
- For each catapult required add an attachpt_catapult_start_n, attachpt_catapult_end_n, and an attachpt_blast_shield_n. The start position is the point where the aircraft should connect its launch bar. The blast shield point should be the center hinge of the shield.
- For each arrestor cable required, add an attachpt_cable_n_1 and attachpt_cable_n_2.
- Note that n is a number between 1 and 4, and a maximum of four operational catapults, blast shields and arrestor cables is supported.
- There is a setting in the ESP.cfg file -- in the [Realism] section: CatapultForceLimiter=1. With this set to 1 only flighter type aircraft can be catapulted. Set this to 0 to enable the catapult systems to generate the required force for any type of aircraft.
Catapult Assisted Takeoff
- To add a launch bar to an aircraft, either set the attachpt_Launch_Bar_Pivot and attachpt_Launch_Bar_Lug attach points in the model, or define a [launch_assistance] entry in the aircraft configuration file. An entry in the configuraion file will override the attach points, if they exist.
- Use one of the KEY_TOGGLE_LAUNCH_BAR_SWITCH or KEY_SET_LAUNCHBAR_SWITCH key events to drop the launch bar from the nose of the aircraft. This is an animated feature of the F-18, and the launch bar should be visible.
- The aircraft should be moved into position on the catapult, and then one of the KEY_TAKEOFF_ASSIST_ARM_SET or KEY_TAKEOFF_ASSIST_ARM_TOGGLE key events should be used to attach the launch bar to the bogie of the catapult (which is not animated). If the aircraft is not in the correct location, the connection will not be made. If all goes well, the connection will be made, and the blast shield will be raised.
- The KEY_TAKEOFF_ASSIST_FIRE event key is used to fire the catapult. The user cannot control the position of the aircraft until the aircraft clears the deck.
- If for any reason the assist arm is unset, again using the KEY_TAKEOFF_ASSIST_ARM_SET or KEY_TAKEOFF_ASSIST_ARM_TOGGLE key events, then the blast shield will also be retracted. The aircraft can then be moved away from the catapult.
Landing Using Arrestor Cables
- To add a tailhook to an aircraft, either set the attachpt_tailhook_pivot and attachpt_tailhook_hook attach points in the model, or define a [tailhook] entry in the aircraft configuration file. An entry in the configuraion file will override the attach points, if they exist.
- Use one of the KEY_SET_TAIL_HOOK_HANDLE or KEY_TOGGLE_TAIL_HOOK_HANDLE key events, or the TAILHOOK POSITION simulation variable, to set the tail hook in position.
- Land on the appropriate spot on the carrier. There are typically four arrestor cables.
- If the aircraft does not land with excessive speed, it will be brought to a halt and pulled back a short distance. If it does land with excessive speed the cables will not prevent the aircraft going off the deck. Cable breaks are not simulated.
- The aircraft can be parked on deck, perhaps using the KEY_TOGGLE_WING_FOLD or KEY_SET_WING_FOLD key events to fold the wings.
Notes on Sling and Hoist Systems
The sling and hoist systems are designed for use with a heavy-lift type helicopter. Such a helicopter can have multiple systems, such as a fixed-length sling, a hydraulic hoist and an electric winch, though typically no more than one would be deployed at the same time. In ESP only sling and hoist type systems are simulated. Use of two or more systems simultaneously is not prohibited in the simulation. There are a few differences in how sling and hoist systems are defined and used. The real world differences are that a sling is of fixed length, is attached to the belly of the aircraft before it takes off, and remains hanging there until the aircraft returns. A hoist system deploys and a cable extends to pick up an object, and the object can be retracted to a certain position, or pulled all the way into the cargo area of the helicopter. Typically a sling system can handle much larger weights than a hoist.
Defining and Using a Hoist System
To specify that a helicopter has a hoist system, a [sling] section must be present in the Aircraft Configuration File and that section must contain hoist_extend_rate and hoist_retract_rate entries. The model of the aircraft should contain a hoist arm animation, but it is not required.
The normal sequence in using a hoist system is first to deploy the hoist arm (the rate at which the arm is deployed is set by an animation in the helicopter model, and not a variable that can be defined elsewhere) using the KEY_HOIST_DEPLOY_TOGGLE or KEY_HOIST_DEPLOY_SET key events. Next the cable would be extended to the appropriate length. Cable extension is controlled by the KEY_HOIST_SWITCH_EXTEND or KEY_HOIST_SWITCH_SET key events, with the rate set by the extend and retract rate entries mentioned in step 1. The cable and hook system is also animated. If a cable is extended after it reaches the ground, it will curl up appropriately. A single key event, KEY_SLING_PICKUP_RELEASE, is used to put the hoist system into pick-up mode, and when a suitable object is in range and meets the pick-up conditions (see the Specifying that an Object can be Lifted section) then it will be attached to the hook.
Following successful attachment of an object, the cable would then be retracted, using the KEY_HOIST_SWITCH_RETRACT or KEY_HOIST_SWITCH_SET key events, to the desired length. This is often not all the way up when carrying awkward objects. A 600lb limit specified for the rated_load would be typical. Breaking strain and moments of inertia are computed in the simulation. If the cable is fully retracted, then releasing the object will bring the object inside the helicopter. If the cable is extended even by a small amount, sending a release event will drop the object. There is no graphical representation of an object that is inside a helicopter, nor is there a check that the object will physically fit inside the cargo area. However, the weight of the object, where it is placed in the cargo area, and moments of inertia, are calculated and will affect the performance of the aircraft. A hoist arm cannot be retracted if there is an object attached to it.
If an object is stored inside the helicopter, the payload station it will be stored at (or retrieved from) is specified with the hoist_payload_station configuration setting. This can be changed using the SIMVAR_SLING_ACTIVE_PAYLOAD_STATION simulation variable. This variable takes an index (the sling system) and a number as a parameter (the reference number of the payload station). To add an object to a payload station independently of the hoist system (say as part of a mission where certain objects are to be delivered), use the SIMVAR_PAYLOAD_STATION_OBJECT simulation variable, which takes the payload number as an index, and the container name as a string parameter.
If there are objects stored inside the cargo area of the helicopter, and the pickup/release event is sent, then the object will appear external to the helicopter on the cable, as long as the hoist arm is extended and the cable is fully retracted. A last-in-first-out order, for each of the payload stations, is maintained for the stored objects.
All six of the sling/hoist event IDs take a 32 bit integer as a parameter value. The high 16 bits contain the sling index number (indexed from 0). The low 16 bits contain a data value, noted in the descriptions of the key events.
Refer also to the other Simulation Variables that refer to the Sling/Hoist system, and to the new missions that utilize these.
Defining and Using a Sling System
To specify that a helicopter has a sling system, a [sling] section must be present in the Aircraft Configuration File and that section must not contain hoist_extend_rate and hoist_retract_rate entries. In addition to this a flight file must contain appropriate entries for the sling systems. For a heavy lift helicopter, where sling.0 is defined as a hoist, and sling.1 defined as a sling, the entries in the flight file could be:
[sling.0.0] object= cablelength=0 [sling.1.0] object= cablelength=65
These entries will have to be added by hand to a flight file. The object can be left blank, meaning no object is attached, or can be the container name of an object if the flight is to start with an object attached. The cablelength entry of 65 specifies that the length of the sling is 65 feet. There is a cable length for a hoist, so that if a flight file is saved with an object attached, that information is recorded. To use a sling system, unlike a hoist, a flight file must be loaded, either in free flight or by a mission.
The only key event that applies to a sling is KEY_SLING_PICKUP_RELEASE. The index number sent with the key event will determine whether the event applies to the sling or the hoist.
Similar to the hoist, the sling cable will be animated appropriately.
Specifying that an Object can be Lifted
- In order for an object to be picked up, that object must be specified as a container, and have an appropriate Simulation Object Configuration File. The configuration file should contain [geometry], [mass_properties], [stability_coefficients] and [contact_points] sections. The [effects] section is optional. Refer for example to the Bucket sim.cfg, under SimObjects\Misc\Bucket, for a list of the parameters that should be included.
- The helicopter trying to pick up the object must meet the auto_pickup_range and auto_pickup_max_speed settings, set in the [sling] section of the Aircraft Configuration File.
- The sling or hoist must be in pick-up mode, set by the KEY_SLING_PICKUP_RELEASE key event.
- If both a sling and hoist are deployed, for example, simply the nearest one to the object will pick the object up, if both systems meet the necessary conditions.
Releasing an Object
- When an object is released deliberately, using the KEY_SLING_PICKUP_RELEASE key event, or accidentally when the key event is sent erroneously or when the cable breaks, it will fall to the ground (or water). When this happens the special effect ImpactLand or ImpactWater will be rendered (as long as they are defined in the [effects] section of the configuration file), unless the object is actually on the ground when it is released.
- If the speed of the impact with the ground exceeds the destroy_on_impact_threshold setting (under [contact_points] in the configuration file) then the object will obviously be destroyed, and the ImpactDestroyLand or ImpactDestroyWater special effect will be rendered in addition to the ImpactLand or ImpactWater effect. The type of terrain the object falls onto has no effect on the impact.
- If the configuration file for the object does not contain the destroy_on_impact_threshold setting, it will not be destroyed on impact, no matter how fast it is falling.
Notes on Multiplayer Racing
Multiplayer racing is a major addition to ESP, though most of the changes to the SDK affect the Object Placement Tool, described in the Mission Creation document. The Object Placement Tool is however, not capable of handling all of the XML logic used in racing missions, so the xml files need to be hand edited. This is described in the section, Manual Editing of Mission Files in the Mission Creation document.
Note that Shared Cockpit mode is disabled for MultiPlayer racing.
To support racing engines there is the addition of nitrous oxide fuel and anti-detonation tanks.
To Add Nitrous Oxide and Anti-Detonation Fuel Tanks
- To add one or more nitrous oxide systems to an aircraft, specify one [nitrous system.n] entry in the Aircraft Configuration File for each system.
- To engage or disengage nitrous oxide fuel, use the KEY_TOGGLE_NITROUS_TANK_VALVE key event. Typically this would be engaged when the engine is on or near full throttle, and a burst of speed is required. Pass a value to determine which system to use (the values are indexed from 1, so passing 1 indicates the event applies to [nitrous system.0]).
- To add one or more anti-detonation system to an aircraft, specify one [antidetonation system.n] entry in the Aircraft Configuration File for each system.
- To engage or disengage an anti-detonation system, use the KEY_TOGGLE_ANTIDETONATION_TANK_VALVE key event. Pass a value to determine which system to use (the values are indexed from 1, so passing 1 indicates the event applies to [antidetonation system.0]).
- There is no animation or other graphic associated with the application of either system, though gauges have been implemented on the aircraft that have these systems.