[GUIDE] Aircraft Checklists

Hi All

Below is some information for how to add a checklist to an aircraft based on my work with the G36 Bonanza Improvement Project here > G36 Improvement Project - #1006 by StevoSim

This is for the G36 but the file locations can be amended

Main checklist file stored in:

  • \Community\Aircraft_2B_bonanza-g36-improvement-project\SimObjects\Airplanes\Aircraft\Asobo_Bonanza_G36\Checklist\Bonanza_G36_Checklist.xml

Document references the following files:

  • \Official\OneStore\fs-base-aircraft-common\CheckpointsLibrary\Asobo_DefaultCheckpointLibrary.xml
  • \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\Checklist\Library.xml

Original Document found at:

  • \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\Checklist\Bonanza_G36_Checklist.xml

The file is split into sections - which are fixed by Asobo (I think) these are listed as steps. So for the G36 we have:

  1. <Step ChecklistStepId="PREFLIGHT_GATE">
  2. <Step ChecklistStepId="PREFLIGHT_TAXI_OUT">
  3. <Step ChecklistStepId="FLIGHT_RUNWAY">
  4. <Step ChecklistStepId="FLIGHT_TAKEOFF">
  5. <Step ChecklistStepId="FLIGHT_CRUISE">
  6. <Step ChecklistStepId="FLIGHT_DESCENT">
  7. <Step ChecklistStepId="LANDING_APPROACH">
  8. <Step ChecklistStepId="LANDING_TOUCHDOWN">
  9. <Step ChecklistStepId="LANDING_TAXI_IN">
  10. <Step ChecklistStepId="LANDING_GATE">

Within these steps you can create the individual pages we see in the checklist with: <Page SubjectTT="PAGE NAME"> e.g. Pre-Start, Engine Start etc.

Each checklist item is opened with <Checkpoint Id="Name of Item">

You can force the camera system to move the view with <ForceCamera name="Switches" /> As much as I can tell the camera name is using the tag Title ="Pilot" found in the cameras.cfg in \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\cameras.cfg

You can set the text found at the bottom of the checklist window with a hint with <Clue name="The parking break should be set" />.

The text in the checklist is set with: <CheckpointDesc SubjectTT="Parking Brake" ExpectationTT="Set" />

The checklist system uses test’s to check each option.

Each <Test> must have a <TestValue> and a series of <Operator OpType=""> for the system to check against. You can sequence test’s in a checklist action using <Sequence SeqType="">; SeqTypes can be 'Ordered', 'Unordered' or in 'Parallel'.

The <Operator OpType=""> can be:

  • GREATER
  • LESS
  • BETWEEN
  • EQUAL
  • LESS_OR_EQUAL
  • OR (You can nest <Operator OpType=""> together in a chain)
  • GREATER_OR_EQUAL
  • NOT
  • AND
    You can also use Tolerance="1500" within the tag to set a tollerance level - e.g. when setting the throttle.

Once you set the test variables you then put the SimVar you want to check against with a <Val SimVarName=""></>

  • <Val SimVarName="ELECTRICAL MASTER BATTERY:2" Units="Bool" />
  • <Val Value="1" />

You can also use some logical operators to check the SimVars and also check XMLVARs for example the BUS 1 voltages @Frett created.

  • <Val Code="(L:XMLVAR_BUS1_VOLT_INDICATED, volts) (A:ELECTRICAL BATTERY BUS VOLTAGE:2, volts) 21.0 &gt; and" />
  • So this is XMLVAR_BUS1_VOLT_INDICATED >= (Greaterthan and equal to) ELECTRICAL BATTERY BUS VOLTAGE:2

You can get the system to check or automatically complete the item with

  • <Action Copilot="True" Condition="TestValueFalse" SpecialAction="WaitUntilTestValueValidated" />

The condition can be either TestValueFalse or TestValueTrue.

The SpecialAction is set as:

  • WaitUntilTestValueValidated
  • WaitForUserToDoIt
  • WaitForDuration with value=“x”

There is also Once="true", and EventID="SET_STARTER1_HELD" EventParam="1" & Code="1 (&gt;L:XMLVAR_Starter_State_IsDown)"

The EventID="SET_STARTER1_HELD" I believe is linked to a animation??? The code= is a logical test.

I am still a little unsure and need to get my head around this…

Finally to highlight an instrument you use

  • <Instrument Id="HTML:AS1000_PFD:Display" />

A full example is:

`<Checkpoint Id="PREFLIGHT_ELEVATOR_TRIM">`
  `<ForceCamera name="Pedestal" />`
  `<Clue name="Trim tabs should be set to 0 or Neutral" />`
  `<CheckpointDesc SubjectTT="Trim Tabs" ExpectationTT="Neutral" />`
  `<Test>`
    `<TestValue>`
      `<Operator OpType="EQUAL" Tolerance="500">`
        `<Val SimVarName="ELEVATOR TRIM INDICATOR" Units="Position 16k" />`
        `<Val Value="0" />`
      `</Operator>`
    `</TestValue>`
    `<Instrument Id="HANDLING_Wheel_ElevatorTrim" />`
    `<Instrument Id="HANDLING_Indicator_ElevatorTrim" />`
    `<Action Copilot="True" Condition="TestValueFalse" Once="true" EventID="ELEVATOR_TRIM_SET" EventParam="0" />`
  `</Test>`
`</Checkpoint>`

To Do

  • Understand what a L: and A: and K: mean

SOLVED!

  • Find a list of instrument ID’s or where these are referenced
  • Instrument ID’s are referenced in the SimObjects/Airplanes/Asobo_Bonanza_G36/model/Bonanza_g36_interior.xml. Each switch/instrument/guage needs to have the line <PART_ID>NAMEOFPART</PART_ID> added into the <useTemplate> section.

Thanks to @TK421i for the following with regard XMLVars:

Unlike SimVars, XMLVars are specific to the aircraft model so, depending on the developer, will change from aircraft to aircraft. You can dig these out of the model browser using developer mode in MSFS.

Using the model browser you can also traverse the interior.xml file to establish the Part_ID. In many cases this has not been set by the developers. To get around this you can extend the interior.xml file with you own and add the Part_ID in the relevant Node.

Hope that helps everyone!

Matt

17 Likes

thanks a lot! :slight_smile:

1 Like

Unlike SimVars, XMLVars are specific to the aircraft model so, depending on the developer, will change from aircraft to aircraft. You can dig these out of the model browser using developer mode in MSFS.

Using the model browser you can also traverse the interior.xml file to establish the Part_ID. In many cases this has not been set by the developers. To get around this you can extend the interior.xml file with you own and add the Part_ID in the relevant Node.

You can check the lists I have created at https://flightsimhangar.co.uk

2 Likes

@TK421i thanks! That clears up one of my final questions. :slight_smile: I’ll update my original post with that info.

THANK YOU! Just starting to work on a new checklist for the 208 and this clears up a number of questions I have. Appreciate the concise tutorial!

1 Like

Downloading your 208 checklist right now. You probably just saved me a ton of work! Thanks!

1 Like

Glad I could help!

How do you create one from scratch? I’ve tried to work it out but can’t. For example the mooney m20 has no checklist

The SDK does cover the checklist commands quite well, this you can download in Developer Mode. I’d recommend you have a look at an existing checklist as an example.

Once created you place the new checklist in the community folder using the same path format (and file name) as the corresponding aircraft in the official folder. You could download one I have created and use this as an example:
https://www.flightsimhangar.co.uk/

@ScorpionFilm422 has created one for the Mooney:

Here’s a mooney checklist

1 Like

Hi all,
And thank you for this guide.

In the SDK documentation, on the “Content Configuration” > “SimObjects” > “Checklists” page, we can see on the first illustration photo of the checklist, there are several tabs, “Normal”, “Abnormal” and "Emergency ".
Do you know how to create them?

Hi All,

I’ve tried to modified the checklist for C208. It worked for most of the changes I’ve made but at some point in the file it seems that any changes I made after this point is not reflected in the sim. I’ve tried to check everything like typo errors, missing closing brackets or something like that but can’t find why it doesn’t work after a certain point. Do you guys have any clue?

EDIT : Found my mistake, it was just a “/” after at the end of a checkpoint line but I had also a closing Checkpoint tag. :stuck_out_tongue:

1 Like

Hi Everyone,

quick question : I have added a Library.xml file in the folder that contains the Checklist.xml file as well. In this Library I added a few checkpoints. When I try to use these checkpoints in the Checklist file using ReferenceId they are not taken into account in the game, do you know why?

I did a quick test by adding one of the checkpoint in the Asobo_DefaultCheckpointLibrary.xml file and there it works if I refer it in the Checklist.xml file. Although I did include the Library file in the Checklist file ()

for some planes only PARTID is working to make highlight.

(raises hand sheepishly)

So, I’m trying to follow the SDK and guides to make my first checklist. The XML I can sort out, but for the life of me I can’t get the checklist to show up even though it’s named “checklist.xml” and it’s in C:\Gaming\MSFS2020 Addons\Aircraft\Aircraft_Props<Some Company’s Aircraft> \SimObjects\Airplanes<Some Aircraft>\Checklist

The aircraft I’m working on didn’t come with a checklist to begin with. I couldn’t find if I need to reference the checklist.xml in any other files within the aircraft package?

(edit) AHA! It’s in layout.json

I’m glad to say that I’m in the same boat as some of You’s. I’m working on a checklist add-on for a plane that I really like. At the moment I’m not getting errors when I build, but the checklist isn’t showing up. Do I need to associate it somehow to the aircraft or the ICAO?

This is where I’m keeping the files. I’m using the sample DA62 as an example. fergatron/ov10-bronco-checklist (github.com)

When you say that you can extend the interior.xml file with your own, and add the Part_ID in the relevant node. How exactly would I achieve this, and where would I place my custom interior.xml file?