
Notes on the Acceleration Expansion Pack SDK
Overview
This document describes the new SDK features of Flight Simulator X: Acceleration Expansion Pack. Refer to the Event IDs document in conjunction with these notes. The objects and properties throughout the documentation that are shown in red apply only to the Flight Simulator X: Acceleration Expansion Pack SDK.
See Also
Table of Contents
Notes on Catapult Launches
The catapult launch system is designed to simulate a modern catapult assisted take-off 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.
Catapult Assisted Takeoff
- 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
- Use one of the KEY_SET_TAIL_HOOK_HANDLE or KEY_TOGGLE_TAIL_HOOK_HANDLE key events 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 as the AgustaWestland EH101 that comes with the Flight Simulator X: Acceleration Expansion Pack. 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 Flight Simulator X 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 (refer to the Attach Point names document).
- 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. There is a 600lb limit specified for the rated_load of the EH101 hoist. 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 the EH101, 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 Flight Simulator X, 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.
Notes on Terrain and Scenery
There have been a number of updates to scenery models, and some new scenery objects added, to support the new missions. There have also been a small number of changes to land classifications, again centering around the main activity areas of the new missions.
There have been no deletions of scenery textures following the Flight Simulator X SDK SP1A update. For reference the following textures were removed prior to the SDK SP1A udpate.
- Veg_TB_Bush_Rhody_4ft
- Veg_TB_Bush_Rhody_5ft
- Veg_TB_Bush_Rhody_4_5ft
- Veg_TB_Bush_Rhody_5_5ft
- Veg_TB_Bush_Rhody_6_5ft
- Veg_TB_Bush_Rhody_6ft
- Veg_TB_Bush_Rhody_7ft
- Veg_TB_Bush_Rhody_8ft
- Veg_TC_Hemlock_Set_8m_FA
- Veg_TC_Hemlock_Set_8m_SP
- Veg_TC_Hemlock_Set_8m_WI
- Veg_TC_Hemlock_Set_14m_FA
- Veg_TC_Hemlock_Set_14m_SP
- Veg_TC_Hemlock_Set_14m_WI
- Veg_TC_Hemlock_Set_20m_FA
- Veg_TC_Hemlock_Set_20m_SP
- Veg_TC_Hemlock_Set_20m_WI
- Veg_TC_Hemlock_Set_28m_FA
- Veg_TC_Hemlock_Set_28m_SP
- Veg_TC_Hemlock_Set_28m_WI
- Veg_TC_Hemlock_Set_36m_FA
- Veg_TC_Hemlock_Set_36m_SP
- Veg_TC_Hemlock_Set_36m_WI
- Veg_TC_Hemlock1_8m_FA
- Veg_TC_Hemlock1_8m_SP
- Veg_TC_Hemlock1_8m_WI
- Veg_TC_Hemlock1_9m_FA
- Veg_TC_Hemlock1_9m_SP
- Veg_TC_Hemlock1_9m_WI
- Veg_TC_Hemlock1_12m_FA
- Veg_TC_Hemlock1_12m_SP
- Veg_TC_Hemlock1_12m_WI
- Veg_TC_Hemlock1_15m_FA
- Veg_TC_Hemlock1_15m_SP
- Veg_TC_Hemlock1_15m_WI
- Veg_TC_Hemlock1_19m_FA
- Veg_TC_Hemlock1_19m_SP
- Veg_TC_Hemlock1_19m_WI
- Veg_TC_Hemlock1_20m_FA
- Veg_TC_Hemlock1_20m_SP
- Veg_TC_Hemlock1_20m_WI
- Veg_TC_Hemlock1_23m_FA
- Veg_TC_Hemlock1_23m_SP
- Veg_TC_Hemlock1_26m_FA
- Veg_TC_Hemlock1_26m_SP
- Veg_TC_Hemlock1_26m_WI
- Veg_TC_Hemlock1_28m_FA
- Veg_TC_Hemlock1_28m_SP
- Veg_TC_Hemlock1_28m_WI
- Veg_TC_Hemlock1_30m_FA
- Veg_TC_Hemlock1_30m_SP
- Veg_TC_Hemlock1_30m_WI
- Veg_TC_Hemlock1_33m_FA
- Veg_TC_Hemlock1_33m_SP
- Veg_TC_Hemlock1_33m_WI
- Veg_TC_Hemlock1_35m_FA
- Veg_TC_Hemlock1_35m_SP
- Veg_TC_Hemlock1_35m_WI
- Veg_TC_Hemlock1_40m_FA
- Veg_TC_Hemlock1_40m_SP
- Veg_TC_Hemlock1_40m_WI
- Veg_TF_RF2_50m_Birds_Parrots
