Microsoft Flight Simulator – How to Create Your Own Custom Checklists (Modding)

A guide on how to create your own custom in Microsoft Flight Simulator checklists (modding).

How to Create your Own Custom Checklists (Modding)

Information on how to create your own custom in-game checklists for FS2020, plus an included expanded C152 checklist (work in progress!). A more detailed guide to come soon (I just finished a long flight!).

1. Pre-flight briefing

 Custom checklist files will enable you to fill out all the aircraft in Flight Sim 2020 with all or most of the steps you want, in the order you want, accompanied by the camera focus you want (or none of it).

In this guide I’ll give a run-down of the file format and the file structure as I currently understand it. Using this knowledge you will be able to edit and extend the checklists for any aircraft.

File format

The files are in XML format, and the language Asobo have used is verbose and systematic, meaning they are easy to read, you can use english terms to search the files, and the order things appear in the file is the order you will see them in-game, from top to bottom.

Tools

The only tool you will need is a good text editor. I recommend Notepad++, but some prefer Sublime Text, VSCode or other clean editors. The main function you will need is ‘find in files’, though Windows has built in support for this in Explorer too. Syntax highlighting speeds up the editing process and helps you catch any errors.

This guide

This is the first version of this guide. I aim to expand it as my understanding improves.

My focus was on explaining the basics so that everyone can get started editing their favourite aircraft. I encourage experienced modders or programmers to skip forward as they wish or explore on their own!

In the future I will add sections covering creating entirely new list items, and explore some of the trickier stuff (custom text, co-pilot actions, context-sensitive items, and so on). But for now I hope this will be enough to let people extend or personalise the checklists for their favourite aircraft!

Pre-flight briefing complete.

2. Exterior walk-around

The checklist files are stored in folders specific to each aircraft. The containing folder is always called ‘Checklist’. In the Steam version of the game, the parent directory for all the aircraft files (and other game content) is located in:

C:\Users\[Your Username]\AppData\Roaming\Microsoft Flight Simulator\Packages\Official\Steam\

(where C is the drive you have installed Windows on).

or, we can use %APPDATA% as shorthand (you can type this path into Windows Explorer):

%APPDATA%\Microsoft Flight Simulator\Packages\Official\Steam\

This is generally where most configuration files and user-specific data for applications are stored, but naturally a lot of apps like to mix it up and also store their files in Program Files (and maybe some other places too!). All of the files we need are in the folder listed above, however.

No snakes hiding behind the flaps, check..

The full path to the main Checklist file looks like (eg for the C152):

%APPDATA%\Microsoft Flight Simulator\Packages\Official\Steam\ asobo-aircraft-c152\SimObjects\Airplanes\Asobo_C152\Checklist\Cessna152_Checklist.xml

or

C:\Users\[Username]\AppData\Roaming\Microsoft Flight Simulator\Packages\Official\Steam\ asobo-aircraft-c152\SimObjects\Airplanes\Asobo_C152\Checklist\Cessna152_Checklist.xml

~and if you have the Windows Store version, please let me know what the path looks like!~

The [AircraftName]_Checklist.xml files control what gets displayed in the checklists, in what order, and what the desired evaluation for each item is.

Also in the Checklist folder there may be a file named ‘Library.xml’. This file contains extra aircraft-specific markup for individual checklist items that are listed in the main file. An example for the C152 is that there is a custom checklist item to check if both master switches are on. This item is not used on other aircraft.

Hopefully now you have the tools you need and a basic understanding of the file structure, and maybe you’ve had a look at the files themselves already. In the following section I’ll go into some more detail about the checklist file contents.

Exterior walk-around complete.

3. Cockpit – Checklist file format

In this section I’ll give a brief run-down of the checklist xml file format. Note that this is only based on my current understanding, until I learn otherwise or the devs themselves give us full details of these type of things.

For the purposes of the guide we’ll be focusing on the C152 Checklist, since it is one I have worked on, and it is relatively complete but not complicated.

Whenever I mention an xml file, you can assume unless mentioned otherwise that it’s located in this folder:

%APPDATA%\Microsoft Flight Simulator\Packages\Official\Steam\asobo-aircraft-c152\SimObjects\Airplanes\Asobo_C152\Checklist\

(if you have the Windows Store version, the path may be different, and you may have to give your windows account permission to access those folders – please tell me the path so I can include it in the guide).

All the screenshots in this guide are using Notepad++. It might look slightly different to yours, but everything we do will be the same. If this is the first time using a text editor, you might want to take some time to change the colours or fonts so they are more to your liking.

Taking inventory

Go ahead and load up Cessna152_Checklist.xml in your text editor.

The top of the file should look like this:

I won’t go into too much depth on XML, suffice to say it’s very similar to HTML (being a descendant of it), it’s somewhat depreciated on the web, but is still popular in applications and games since it’s a very simple readable and flexible format for game data, and its easy for non-programmers to edit. Credit to Asobo (and to Aces before them) for opening up the files in this way. Many devs are not this welcoming to modders!

To help our understanding to begin with, let’s continue line by line… feel free to skip forward or backwards at any time!

<?xml version="1.0" encoding="Windows-1252"?>

– tells whatever apps are reading this file – like your editor! – that it’s formated XML. Goes at the top of every .xml file. We don’t need to change it.

<SimBase.Document Type="Checklist" version="1,0">

– tells Flight Sim itself that this file describes a checklist. The version might be important in the future if the devs make changes to the checklists (older custom checklists may not work properly and might require some editing), but again, we don’t need to worry about this line.

 <Checklist.Checklist>

– this tag matches a closing one at the end of the document. Everything within these tags will be interpreted by Flight Sim as part of the checklists.

<IncludeCheckpointLibrary FileName="CheckpointsLibrary\\Asobo_DefaultCheckpointLibrary.xml"/>
<IncludeCheckpointLibrary FileName="SimObjects\\Airplanes\\Asobo_C152\\Checklist\\Library.xml"/>

– this is the first part of the code that we may in future want to edit. These are ‘Includes’, which is a common feature of most coding languages. It tells whatever app or engine that is reading the file to also go and read the files referenced.

The Asobo_DefaultCheckpointLibrary.xml file contains the checklist item definitions that the aircrafts make use of in their own checklist files. Sometimes they are more like templates where custom values can be used (for example, checking for different RPMs), other times they are just used straight up – whatever the base definition says happens is what will happen in-game when a player hits that checklist item (for example, swinging the camera into the instrument panel and highlighting something).

Since they’re used by a lot of aircraft, the devs put them in a single file rather than duplicating them throughout the individual aircraft files (this also allows them to make changes in one place and have it affect all the aircraft – generally good practice when you’re coding things).

This file is located here:

%APPDATA%\Microsoft Flight Simulator\Packages\Official\Steam\fs-base-aircraft-common\CheckpointsLibrary\Asobo_DefaultCheckpointLibrary.xml

In a future version of this guide I will go over adding entirely new checklist items. But right now it is possible to expand the lists a long way just by making use of the existing definitions. It’s good to know that file exists and I encourage you to take a look if you want to see the base structure of the checklist items.

Inside the Cessna152_Checklist.xml file, all but one of the checklist items make use of the item definitions written in the Asobo_DefaultCheckpointLibrary.xml file. The other item (checking the mastery battery is on) is stored in Library.xml, inside the C152’s own folder structure. No other current aircraft make use of it, so there’s no point having them load it in addition to the other general rules.

Whilst you can add definitions to Asobo_DefaultCheckpointLibrary.xml, to begin with, when working on a single aircraft, it’s probably better to stick to working inside their Library.xml files (and if they don’t exist, you can simply copy over the C152 file, and remove the single checklist item there. Later if you know that multiple aircraft will be using the same checklist item, you can consider moving the item into the general file, and make your changes in a single place.

Documents check.

4. Flight plan

Let’s keep going with the Cessna152_Checklist.xml file structure – onto the more interesting and relevant parts…

Every journey…

The next line to note is this <Step…> tag.

From our perspective these are useful for grouping things in the file based on flight stages. For example, this step refers to ‘PREFLIGHT_GATE’. Likewise, and more importantly, these steps tell Flight Sim when to show the player each page of the checklist. If you’re beginning your descent through some ominous thunderheads, and you open the checklist to keep things calm and in order (!), it won’t tell you what to do when you’re parked at the fuel depot. (caveat: in the default file, there is no checklist for descent. Dun dun der! – maybe later you can try creating it yourself?)

These tags contain other tags – so again, owing to the XML file format, there’s a closing </Step> tag further on in the file that says ‘Everything between these tags is part of this step – and that’s the end of this step’. A closing tag is the tag name repeated (Step), within angle braces (<>), and a forward-slash in front of the tag name (/). eg:

<Step ChecklistStepId="PREFLIGHT_GATE">
....
pages and checklist items go here
....
</Step>

Hopefully when you click on the <Step..> line, you will see in the left margin that a ‘fold line’ has been highlighted, which helpfully traces the entire length of the tag through to it’s closing </Step>. In my screenshots you will see they are bright red. This will also help you spot mistakes you might make with misplacing things outside their containing tags. [Caveat: sometimes programs get confused, and the line doesn’t update 100% perfectly. With XML, however, it should mostly be okay.]

Whenever you’re creating new steps or pages, you’ll need a closing tag below. This is because they themselves contain other tags (their children!). I like to create the closing tag right after creating the opening tag, so I don’t forget later.

We’re about to get onto the checklist line items themselves! When you create these, a lot of the time they will not themselves contain any child tags, so they will not require a closing tag. You can still include one, it won’t break things. However, instead you can use a forward-slash before their closing angle bracket (/>).

This is a space/time-saving feature of XML. If you’ve never worked with it before, yes, it’s a little quirky. You’ll soon see how it works in practice…

Highest obstacles located, MSA checked.

Checklists…Check

I scrolled down to the first filled out checklist page in the default C152 file – ‘Before Starting Engine’. Hopefully the format will be quickly understandable:

Firstly, a new page on the checklist has containing Page tags:

<Page..>....</Page>

in the checklist file.

Then each page needs a subject (title). In this case it is ‘Before Starting Engine’. These created within what are called ‘attributes’ (in HTML/XML terms). eg:

SubjectTT="[subject goes here]"

The SubjectTT attribute creates a page title. These are dev-created, defined outside of this file, and have their own syntax. For now I suggest you borrow them entirely from existing files, since they include much of the page titles you will need.

A word on that text you can see in grey. That’s a comment. Those of you who do any coding should be familiar with these! (hint hint) Asobo have put in a lot of helpful comments to keep things organised and explained. This makes our life easier! If you want to make notes within the file, you can

<!-- put them within these curious looking tags -->

The game will ignore anything within them. We however can read it fine! Well, more or less (I think that says ‘place the “OPEN” clue here’ – we’ll cover Clues later).

It’s useful if you need to remember to add things later. [If you do this a lot, you might also like to use a phrase that you can search through files and easily find these points – I use ‘@TODO’]

This also allows you to temporarily disable parts of the checklist that you don’t want by making it a comment. Just put a <!– at the beginning of the line, and a –> at the end of whatever you’re changing. You’ll see this a lot in the default files. You can include multiple lines just fine – but be careful that you don’t accidentally include existing comments!. Un-comment things at your own risk! (seriously though, I haven’t yet had a crash, if the lines are incorrect they mostly do nothing). [In Notepad++ CTRL+Q toggles comments]

  • <Checkpoint …>
  • ….camera controls, instrument highlighting and other things go here…
  • </Checkpoint>

Alright, there it is, the first actual checklist item (I did tell you it was okay to skip ahead, right? 🙂 ) Here you’ll see that this checklist contains child tags, so it must have a closing tag. You can see the red line tracking which one I have focused.

ReferenceId="Fuel_Shutoff_Valve_Open"

By default, the first checklist item is to make sure the fuel shut-off value is on.

The ReferenceId refers to a checklist definition in the default general item definitions file I referred to earlier.

Here it is in full:

Explanation of every aspect of this will come in a future version of this guide. Suffice to say that this definition describes the entire checklist item – except what the camera does (because it is useful to be able to control that differently on different checklist sections). It defines what is being checked, what values are being looked for, and what the AI co-pilot does when they run down the list.

For now it’s enough to know these definitions exist. I would use this file as a reference for the items you want to include, and a guide for creating new ones, but I wouldn’t edit it directly yet.

Returning to Cessna152_Checklist.xml..

  • <ForceCamera name=”Checklist_FuelValve”/>

As you can see, the only functional text in the C152 file itself for the fuel valve checklist item is a single line:

a ForceCamera tag with the name attribute referring to a specific checklist camera position. This tells the camera to focus on the fuel valve handle. The rest of what the checklist item does is in the base file.

A simple edit you could make would be to comment out this camera focus line, if you don’t want the camera to focus there. This is useful during descent or final when you don’t need the camera to be flying around! Alternatively you could change the name to something else to point the camera differently (not too useful in this case!).

We’ll get onto editing or creating checklist items later.

Let’s take a look at the final checklist item:

<Checkpoint ReferenceId="Brakes_Test_And_Set"> <!--  / ! \        Brakes - - TEST and SET. -->
                <ForceCamera name="Instruments04"/>
                <Instrument Id="HANDLING_RudderPedals_Brake"/>
</Checkpoint>

Hopefully you can break this down yourself. The only major difference, aside from the fact that it refers to the brakes, is that it specifies an Instrument tag. I believe this creates the blue highlight effect.

The base definition for this item is more lengthy and complex. I won’t quote it here, but I encourage you to check it out if you’re interested. In it the game runs through ordered sections, defines tests for brakes reaching certain values, and tells the co-pilot what to do if they’re running the list. For now it’s enough to know it exists and we can make use of it in our custom checklists with a reference.

Checklists..check!

5. Our own itinerary

Hopefully I’ve done enough to give an overview of the checklist format. There’s a lot of complexity but it’s mostly hidden in the base definitions file.

If we want to make additions to the checklists, to begin with it’s enough to know that you can search either in the base definitions file, or in other aircraft checklists, in order to find the checklist line items you want to use, and copy and paste those into your aircraft’s Checklist.xml file.

For example, in the C152 checklist that I’ve attached to this guide, I filled out the pages starting with Approach onwards. A lot of this came from the C172, but other checklist items I had to borrow from other manufacturer’s aircraft’s files.

Adding checks to pages.

In order to do this, I found the line starting:

  • <Step ChecklistStepId=”LANDING_APPROACH”>
  • This checklist is for the landing phase of the flight, whilst on approach.
  • The next line tells us it’s the Before Landing checklist:
  • <Page SubjectTT=”TT:GAME.CHECKLIST_BEFORE_LANDING”>

Now I went away to my references, and my existing sim checklists, and built out an approach checklist for the C152.

Here’s the original:

<Step CheckfetStepId="LANDING_APPROACH”>
<!-- Before landing -->
<Page SubjectTT=”TT:GAME.CHECKLIST_BEFORE_LANDING’,>
</Page>
</Step>

And here’s what it looked like after I added my entries:

Pretty simple! Just a bit of searching the files for things like ‘carb’ and ‘mixture’ until you get what you need, then copying and pasting. I didn’t want any camera focusing during approach so I just removed most of them (except the fuel indicator because I have to lean over the yoke anyway).

Just a basic little checklist but I hope this illustrates the beginning process enough.

Adding pages to the checklist

I wasn’t happy just having a single landing checklist, and couldn’t find a way to format it that made sense. So I pasted a page for ‘short final’ (that conveniently already existed elsewhere – thanks devs!) within the ‘Landing_Touchdown’ section.

<Page SubjectTT="TT:GAME.CHECKLIST_SHORT_FINAL">
...checklist items go here...
</Page>

Within this short runway checklist I added some different things to the previous example. In-game, when on approach to a short runway, you can flick to this page instead of the ‘Normal Runway’ page. In the future, I think it may be possible for the game to automatically show the short runway checklist if we’re approaching a short runway. At this point, however, I’m not sure on the exact method!]

Whether I actually got the checklist correct or useful, that’s upto real pilots to judge 🙂

More In-Depth Editing

If you want to get more in depth with creation, you will have to create you own new checklist items.

You’ll need to copy out the base definitions for those checklist items into the specific aircraft ‘Library.xml’ file, give them an appropriate unique name (again – check against the base Asobo file), follow the exact syntax they use without making mistakes, but change the relevant values.

This can be pretty tricky stuff, especially when it comes to testing values and controlling the copilot, and I am still exploring what is possible (and making mistakes!) so I can’t yet offer a more detailed guide on this part.

It should be possible to create entirely new co-pilot dialogue, camera positions, and tooltip text – I’m sure it’s all/mostly in the files, it just takes a bit of work to find it and test it. This is beyond scope this version of this guide, but I will cover it in future.

If you have any questions or corrections, leave a message below or message me on my profile!

Itinerary read-back complete!

6. NOTAMs

Find in files…

I want to throw out a heads up about the ‘Find in Files’ dialog in programs that use them, like Notepad++ (CTRL+F).

This is a very useful and powerful tool. However, when using it purely for the purpose of finding things within the files, please make sure that you set the exact same phrase for ‘Replace With…’ as you do ‘Find’. Maybe your app has a nice little box you can check so that you’re not replacing when you don’t mean to, but Notepad++ (or the version I am using) does not.

This is to protect you against the unfortunate slip of the mouse where you hit the ‘..and Replace’ button instead of ‘Find’. It will happen! Not today, not tomorrow, but when you least expect it! You might think that reverting this would be a simple case of swapping the phrases around and replacing, but no – because sometimes you will not be able to find the exact instances of where you replaced things!

Here are some general tips and gotchas:

  • Before you begin, make a backup of both the base definition .xml, and the checklist files for your aircraft. [I used Winrar to archive every single Library.xml and Checklist.xml within the aircraft folders (keeping the paths so I can restore later if needed). You can search for these files in Windows, and then select them within the search results in order to do this.] This is especially important with Flight Sim because unlike Steam, it’s probably not possible for us to easily repair individual files!
  • Don’t work on the original files directly. Create your edited copy elsewhere that you work on, then copy those over after you’re done editing.
  • Make sure to pay close attention to where you’re pasting things, and that you’re not accidentally overwriting tag closing or opening markup.
  • If you open a new tag, close that tag.
  • If you add child tags within a single-line ‘checkpoint’ tag (eg, camera directions) then make sure to add a closing tag for it underneath them, and edit it’s <Checkpoint…/> line, removing the forward-slash (/) at the end.
  • Some of the checklist items you’ll find are hardcoded such that they look for specific values, like airspeeds or RPMs, and those might not apply to your aircraft. Just keep looking until you find a useable item. Some of them will specify values and ranges that you can change.

NOTAMs checked!.

Custom C152 Checklist

Hotel Alpha Romeo Mike, transmit your custom checklist..

Alright, we’re about wrapping up our pre-flight, so here’s the link to the current version (and first version) of the expanded C152 checklist.

Setup instructions

  1. Navigate to the C152 checklist folder – %APPDATA%\Microsoft Flight Simulator\Packages\Official\Steam\asobo-aircraft-c152\SimObjects\Airplanes\Asobo_C152\Checklist\
    (as mentioned, if you have the Windows Store version of the game, the path might be different)
  2. Backup the original .xml files in that folder.
  3. Copy the contents of this paste and save it as Cessna152_Checklist.xmlhttps://pastebin.com/acqBHnLL
  4. Copy the contents of this paste and save it as Library.xml:
    https://pastebin.com/1FkvVyTG
  5. Move both those files into the Checklist folder, replacing the original files.
  6. Load into a flight with the C152 and you should see the expanded checklist.

You probably know the routine by now… Copy the contents of that paste and save it as Cessna152_Checklist.xml. Backup the original file, and copy this file in its place. You should know the path by now! (but the full instructions are in the file).

O checklist, my checklist!

I have filled out the C152’s checklist a little, starting with approach which isn’t present by default (mostly because this is the part of my flights that I most wanted to refer to).

I have added checklists to approach, landing, taxiing, parking and securing.

These are based on real world sources such as the Cessna official and club handbooks, pilot videos, and where those leave off, Asobo’s relatively exhaustive C172 checklist.

Callsign omega megladon gorilla is entering the LZ.

I also added an alternative ‘short field landing’ checklist page (just to test it was possible, but also because, yay, exciting reading.. I mean, totally calm and measured reading). Now the next time you put down into the cow pasture it can be totally intentional!

But who checkeths the checklists?

I’m not a real life pilot so I welcome any corrections or discussion (since it seems like everyone has some personal preference with ordering and what is or isn’t on the list). Seriously, I tried to stick to references, but if stuff is in the wrong place or shouldn’t be there at all, please say so!

I still need to go through and add/tweak the pre-flight checklists, though those were more complete and accurate already. In the mean time, maybe that’s a project for you to get started on?

Known Issues:

– custom Mastery Battery Off check does not complete (needed to get flying so didn’t have time to complete it, will try and fix it later) (however it is read back correctly)

– Securing: fuel selector L or R is not actionable and may not exist (it was on some checklists)

– some other things I probably forgot

7. Transponder to ON

That just about covers everything I know, or feel confident explaining right now.

As I said earlier, there’s some powerful functions hidden in the checklist file format (try searching the files for ‘Action Copilot’), though this comes at the minor cost of having to decipher how it works, and probably breaking things a few times (ie, crashing the game – but not the plane. That is not on any checklist). It also gets a little bit difficult to read, but if you’re experienced with code that will help out a lot, and if not, feel free to ask about it and we’ll try to figure it out together!

I probably won’t be submitting checklists for other aircraft for some time – and never the airliners, since I don’t really have enough experience with them, and I’d much rather check out other people’s work. However, if anyone needs any help getting stuff working with their lists, leave a comment here or on my profile!

By Harmonica


Similar Posts:


Share your love

7 Comments

  1. The path for the checklist in the store version is very similar. Instead of “steam” set “OneStore”

    Hano

  2. This is amazing, thank you so much for getting me started!
    I’ve been playing around with the checklist for the 172, and have things in a more realistic order. My biggest annoyance right now is actually just renaming items, so they display with correct names on the checklist. If you happen to come across anything like that, I’d love to hear it!

  3. Hi everyone

    I wanted to modifiy the checklist of ASOBO_DV20 but this is the only plane I can’t find the folder checklist.

    All other planes I could found the folder.
    But when I’m playing the game there is a checklist for DV20 but unfortunately a very bad one.

    Couuld anyone help me? Thanks a lot and stay healthy 🙂

  4. It’s very tacky to make an unselectable page with file paths in them. It’s obnoxious to make unselectable pages in the first place really.

  5. Hello and thanks for the guide, it was very helpful. I’m just wondering how to make the hint things that appear on the bottom of the checklist when an item is selected. I haven’t been able to find any information on this and I know it’s possible to make custom ones, I just don’t know how.

  6. Hi,

    great job.
    As the Aerosoft CRJ has no ingame checklist….any idea, how I can implement one or hass someone already done this job?

    Thx and regards from EDNY.

    Patrick

Leave a Reply