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.
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.
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 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
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.
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.
– 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.
– 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.
4. Flight plan
Let’s keep going with the Cessna152_Checklist.xml file structure – onto the more interesting and relevant parts…
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.
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:
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…
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.
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.
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!
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.
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.
- 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)
- Backup the original .xml files in that folder.
- Copy the contents of this paste and save it as Cessna152_Checklist.xml: https://pastebin.com/acqBHnLL
- Copy the contents of this paste and save it as Library.xml:
- Move both those files into the Checklist folder, replacing the original files.
- 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?
– 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!
- Microsoft Flight Simulator – How to Get (Use) ForeFlight Charts in MSFS
- Microsoft Flight Simulator – How to Configure and Connect Controller (Joystick, Yoke, Etc.)
- Microsoft Flight Simulator – How to Land and Take Off the Plane (Good Ways)
- Microsoft Flight Simulator – How to Get Past Stuck Blue Bar
- Microsoft Flight Simulator – How to Find Your House (Google Maps)
- Microsoft Flight Simulator – How to Get All Achievements
- Microsoft Flight Simulator – Guide to All Editions (Standard, Deluxe, Premium)
- Microsoft Flight Simulator – Save File Location
- Microsoft Flight Simulator – How to Fix TrackIR
- Microsoft Flight Simulator – How to Fly (Best Tutorial)
- Microsoft Flight Simulator – How to Fix Launch Game (All Issues)
- Microsoft Flight Simulator – How to Refuel Aircraft During the Bush Missions
- Microsoft Flight Simulator – How to Use Steam Controller
- Microsoft Flight Simulator – Aerodynamics Guide (Basic Principles)
- Microsoft Flight Simulator – Keyboard Controls Guide