COMMERCIAL FLIGHTS AND PASSENGERS

Your basic aircraft should be set up to permit passengers to board and to sit down. This page outlines the steps required for this to happen on the main types of aircraft, however it does not cover the part where passengers move through the airport to get to the aircraft boarding point. This is covered on the following page:

 

This page is dedicated to the setup of the aircraft to recieve passenegers, both as part of a commercial flight activity, and also when participating in other careers, or even when in free-flight. However, it should be noted that the constraints listed here only apply to commercial flight activities in career mode. For other activities, their own unique constraints will be applied (except free-flight which has no contraints) and only the passenger navigation graph information - and associated interactions and weight distribution information - are relevant. This means that you have some flexibility in setting up the navigation_graph_passenger.cfg since you can have all the navigation graph data for all applicable careers in a single file in the common folder, or you may have multiple additional navigation graph files with the same file name in dedicated presets containing the data specific to the career (since these will be merged together as part of the Auto-Merge process for modular SimObjects anyway).

Example Of Passengers Sitting In An Aircraft

 

For more information on the various career activities and how to prepare your aircraft, please see here:

 

 

Commercial Flight Constraints

When setting up your aircraft for passengers you will need to ensure that it fulfills the requirements for such an activity. In this case, both planes and rotorcraft can carry passengers and have the following shared constraints:

 

  • The plane will need to have the navigation_graph_pilot.cfg (as explained here).
  • The operating_status must be either "in_service" or "experimental".
  • The aircraft cannot be flagged as military.
  • The aircraft cannot be flagged as premium.
  • The ui_max_range must be greater than 1.
  • The aircraft cannot have floats.

 

There are also some specific constraints depending on the type of aircraft being set up for passengers.

 

  • For Planes:
    • The object_class must be "airplane".
    • The aircraft will need to have the ApronWithBatteriesWithoutCovers.flt file (as explained here).
    • The plane must have a copilot, and the sharedSeat parameter for the node must be false (as explained here).
    • The navigation graph must be set up for more than 20 passengers (ie: 20+ nodes with the SIT tag, as explained below).
    • The plane can have wheels or big wheels, for landing gear.
    • The plane cannot have skis landing gear.

 

  • For Rotorcraft:
    • The object_class must be either "helicopter" or "tiltrotor".
    • The aircraft will need to have the ApronWithoutCovers.flt file (as explained here).
    • The navigation graph must be set up for between 1 and 9 passengers (ie: between 1 and 9 nodes with the SIT tag, as explained below).
    • The navigation graph must have a RTC_ROTORCRAFT_PLANE_ENTRANCE node and a RTC_ROTORCRAFT_PASSENGER_ENTRANCE node, connected with an edge.
    • The rotorcraft can have skids or wheels for landing gear. 

 

Following these constraints will give the aircraft the COF_Cabin type. See here for more information:

 

 

For an aircraft to have passengers enter and sit in their seats, you will need to have first set up the Navigation Graph for the aircraft. This graph must be called the following:

navigation_graph_passenger.cfg

This navigation graph will need to have nodes and interactions set up to enable passengers to be added to the aircraft, sit down, and have animations. These are explained in the sections below.

 

 

Nodes

Within the passenger graph you will need to have nodes placed at the locations of each of the seats and these nodes all need to have some kind of logic to tell passengers to sit down and use any seat-belts that are available. For that the seating node should be positioned where the passenger feet would be when they are sitting (so, not on the seat itself, but on the floor in front of the seat), for example:

Visual Example Of The Node Placement For A Character 

The node for the passenger needs to have the tag Sit, and it can be set up in one of two different ways depending on how the aircraft is configured:

  • if the cabin has the seats modeled within it, then you can add the SIT nodes for each passenger directly into the navigation_graph_passenger.cfg for the cabin attachment (or in the common folder).
  • if you have a seat attachment - another SimObject with it's own model and files - then it can have it's own navigation graph with a single node with the Sit tag. In these cases the navigation graph of the attached SimObject does not have to be named navigation_graph_passenger.cfg.

 

The navigation graph will also require additional tagged nodes for the entrance, however the placement of these nodes will depend on whether you are setting up a plane or a rotorcraft:

 

  • For planes (other than airliners) you will need to have the tag PLANE_ENTRANCE in the navigation_graph_passenger.cfg. You only need one of these tags, and it should be on the left of the aircraft, which is the side that the airport services like buses will go to. It will also need to be outside the aircraft and on the ground (you can use the projectOnGround parameter to ensure this), as close to the aircraft door as possible. When correctly set up, passengers from buses will move directly towards this point to enter the aircraft. If the aircraft has access to a ramp or jetway (as defined in the [SERVICES] section of the aircraft CFG file), then this node will not be used.

 

  • For rotorcraft you will need to have the following tagged nodes in the navigation_graph_passenger.cfg:
     
    • The RTC_ROTORCRAFT_PASSENGER_ENTRANCE node is the node where the passenger will spawn into the world at the start of the activity. For commercial flights with a rotorcraft there is a short RTC animation that will play of the passengers moving from this point to the RTC_ROTORCRAFT_PLANE_ENTRANCE node, before entering the helicopter. As such there should be one of these nodes for every passenger SIT node (or one for every SIT node plus the COPILOT node), and the nodes should be placed close together but not on top of each other. These nodes can be on either side of the helicopter, approximately 4m away from the corresponding RTC_ROTORCRAFT_PLANE_ENTRANCE node, and be connected to that node with an edge.
       
    • The RTC_ROTORCRAFT_PLANE_ENTRANCE node defines the end point of the introduction walking animation before the passengers enter the helicopter. There should be one of these nodes for every RTC_ROTORCRAFT_PASSENGER_ENTRANCE node, and the nodes should be placed on the same side as the plane entrance node, close together but not on top of each other, ensuring that the edges between the nodes do not cross any other edges. It should be a straight line from the corresponding RTC_ROTORCRAFT_PASSENGER_ENTRANCE node to this one, and this node should be placed by the side of the helicopter with enough room for the model to stand beside the apparatus without clipping into it.

 

The image below illustrates an "ideal" placement for the nodes mentioned above:

Node And Edge Placement For Commercial And Passenger Flights

 

 

Interactions

The SIT node needs to deal with having passenger sit at its position. It can also optionally deal with the seatbelts if the aircraft has been setup with any. The simulation has several Interaction Presets that can be used in the interactionFile.n parameter of the passenger navigation graph and we recommend that you use these presets to set up your own aircraft unless you require something particularly specialised.

 

If the SIT node does not require seatbelts then the only interaction file you need to add is the Seat_without_seatbelt.xml interaction file. The setup for the navigation graph SIT node to use this interaction would be something like this:

[Node.1]
pos = 0,0,0
tag = SIT
massSection = SEATING_PASSENGERS
interactionFile.0 = FilePath: InteractionsPreset\Asobo\Seat\Seat_without_seatbelt #Param: ANIMATION_SIT:IDLES_Leaned 

 

If the seats of the aircraft have seatbelts, then the SIT node will need to have additional interactions defined in the interactionFile.n parameter for their node. We strongly recommend that you use the following included Interaction Presets to set up the seatbelt interactions:

  • Seat_with_seatbelt.xml - This preset is used to set the animation to use while the character is on the seat. You can find a list of available poses in the Avatar / NPC Animation Presets section of the documentation.
  • Seatbelt.xml - This preset is used to spawn the seatbelt SimObjects that contain the seatbelt models along with the fasten/unfasten animations.

IMPORTANT! For seatbelts to work, they must have been setup as outlined on the Seats And Seatbelts page, and both the above interaction presets need to be included on each of the nodes that require seatbelts.

 

Here is an example of a SIT node which has been correctly setup to use seatbelts:

[Node.0]
pos = 0,0,0
tag = SIT
massSection = SEATING_PASSENGERS
interactionFile.0 = FilePath: InteractionsPreset\Asobo\Seat\Seat_with_seatbelt #Param: ANIMATION_SIT:IDLES_Leaned
interactionFile.1 = FilePath: InteractionsPreset\Asobo\Seat\Seatbelt #Param: SEATBELT_FASTEN:SEATBELT_H125_Pax_R1_1_Fasten , SEATBELT_UNFASTEN:SEATBELT_H125_Pax_R1_1_Unfasten

 

 

Weight Distribution

For the passenger weight to be included in the simulation and contribute to the overall weight of the aircraft, you will need to configure one or more station_load.N sections (found in the flight_model.cfg). In general you would not create a single station load per-passenger seat, but instead assign a single station load to an area of the aircraft. For example, for a small aircraft like a helicopter, you may only have a single station load that is used to contain 4 seats, while on a larger aircraft like an airliner, you may have 6 station loads representing front, middle and back sections for either side of the plane and each station may represent around 130 seats each. When creating these stations, the weight input for the station load should be set to 0, as it will be modified by the passengers themselves in the simulation to reflect the actual weight being distributed in the area. The X/Y/Z position should be in the approximate center of the area that the station represents.

 

Having created the station loads, these need to be assigned to Mass Sections, which are created in the Navigation Graph. Each of these mass sections should have a name that represents the station it is assigned to, and their fill proportion should be set to 1 initially (and can be tweaked later if required). When it comes to the maximum mass, you can calculate this based on the number of seats in the section and the total permitted cargo weight for the aircraft. A good general "rule of thumb" however, is that the average weight per-person would be approximately 85kg, so setting the max weight using this value (or a little more) per seat should give a decent starting point for the weight calculations. Below is a typical mass section setup for a zone with 4 seats:

[MassSection.0]
name = SEATING_PASSENGERS
stationLoadName = TT:MENU.PAYLOAD.PASSENGER
maxMass = 340
fillPriority = 1

 

Once the mass sections have been set up, they will need to be added into the Main Graph section of the navigation graph, and they will also need to be listed in the Mass Section parameter for each of the nodes that are placed within the section.

 

It should be noted that once a flight is started, the default number of passengers that are spawned is deduced automatically by the mass defined in the station loads of the flight model. The simulation will look for the mass sections of all the nodes with the appropriate tags (like SIT), get the associated station_load, add all their masses together, and then deduce the number of passengers from the average mass of a passenger. The simulation will finally force the passenger's mass to exactly match the station load's requested mass.

 

 

Testing

To test the boarding of passengers you will need to start a freeflight from an airport parking spot. This should be a spot that has access to a jetway or a ramp, but if you want to just test the passenger distribution inside the aircraft then it can be a spot with neither service.

 

The testing is done by starting the flight and opening the ATC communications window. There you will need to select Ground Services, tune the ATC comms channel to a ground frequency, and then finally request passenger boarding.

Using ATC To Call Passengers

 

If you just want to see the passengers already in the aircraft, then you can spawn at a parking spot with no ramp/jetway, or simply start the flight directly on the runway, or even in the air. By default, if everything is configured correctly, all the passengers will already be sitting in your aircraft.