Mission Creation for MSFS: Difference between revisions

From FSDeveloper Wiki
Jump to navigationJump to search
(Added references to the SimpleMission sample project. Expanded explanation for mission coding and compiling.)
(Added/expanded chapter on mission coding)
Line 35: Line 35:
Lastly, your mission will need sound files for the mission speech and some text and images for the briefing, loading, and ending screens.
Lastly, your mission will need sound files for the mission speech and some text and images for the briefing, loading, and ending screens.


== Process ==
== Before coding ==
=== Come up with a basic storyline ===
=== Come up with a basic storyline ===
The first step of creating a mission is coming up with a scenario and story. You can make a tutorial, emergency scenario, even a treasure hunt, but you will need to think of a mission progression. What is the start of the mission? What will you need to tell the player and what will they have to find out on their own? What are the possible ways to complete the mission? Are there branching paths? And of course, how will the mission end? Will the player receive a grade or reward?
The first step of creating a mission is coming up with a scenario and story. You can make a tutorial, emergency scenario, even a treasure hunt, but you will need to think of a mission progression. What is the start of the mission? What will you need to tell the player and what will they have to find out on their own? What are the possible ways to complete the mission? Are there branching paths? And of course, how will the mission end? Will the player receive a grade or reward?
Line 68: Line 68:
=== Create a mission project ===
=== Create a mission project ===
==== Using the SimpleMission sample project ====
==== Using the SimpleMission sample project ====
You can als use the SimpleMission sample project. [https://flightsim.to/file/23934/mission-creation-resources Download it] and complete [[SimpleMission_(MSFS)#Step_1:_Download_the_SimpleMission_project|step 1 and 2 of the guide]].
You can use the SimpleMission sample project. [https://flightsim.to/file/23934/mission-creation-resources Download it] and complete [[SimpleMission_(MSFS)#Step_1:_Download_the_SimpleMission_project|step 1 and 2 of the guide]].
 
==== Manual ====
You can create a mission project with the MSFS devmode. You can enable the devmode in <code>General Settings>Developers</code>.
 
To create a new mission project, click <code>[DevMode] > New project > Select location and name > select custom > Add a display title, package name, and select content type MISSION > Set the asset type to Mission and name it MissionName-Mission > create</code>.




Line 94: Line 89:


=== Set up a [[:Category:MSFS Mission Script|mission script]] ===
=== Set up a [[:Category:MSFS Mission Script|mission script]] ===
==== Using the SimpleMission sample project ====
You can set up a [[Category:MSFS_Mission_Script|mission script]] with the SimpleMission sample project. The project contains an .xml you can use as a starting point. [https://flightsim.to/file/23934/mission-creation-resources Download it] and complete [[SimpleMission_(MSFS)#Step_3:_Open_the_project_folder|step 3 of the guide]].
The SimpleMission sample project contains an .xml you can use as a starting point. [https://flightsim.to/file/23934/mission-creation-resources Download it] and complete [[SimpleMission_(MSFS)#Step_3:_Open_the_project_folder|step 3 of the guide]].
 
 
 
== Coding your mission ==
Now you will turn your mission diagram from [[#Turn_your_story_into_a_mission|Chapter 2.2]] into a mission script. For this you can use the script editor.
 
 
=== Script editor ===
With the project open, select your mission asset group and click load in editor:


==== Manual ====
[[File:OpenScriptEditor.png|500px|thumb|left|How to open the script editor]]<br clear=all>
The [[:Category:MSFS Mission Script|mission script]] defines everything that happens after spawn.


There are some basic parts to each mission that you will have to define first.
With the built-in script editor you can create the mission with a visual representation of the script. All building blocks of the mission – such as triggers and actions – are represented by nodes (also called '''''mission objects'''''). Each node contains some settings specific to the building block and can be connected to other nodes.


===== [[MSFS_Mission_Script_-_Mission_objects#Defining_the_mission_type|Mission type]] =====
[[File:BasicMissionNodes.png|700px|thumb|left|Some of the nodes of a basic mission]]<br clear=all>
There are [[MSFS_Mission_Script_-_Mission_objects#List_of_Mission_Types|different mission types]] to choose from. You need to add one of them to your script, to enable the mission ending. The mission will end when all active objectives have been completed. Each objective in the mission is connected with a corresponding goal, the state of which can be <code>Pending, Completed, Failed,</code> and <code>Aborted</code>. If all active objectives are marked as completed, the mission will end in success.


===== [[MSFS_Mission_Script_-_Flow_states|Flowstates]] =====
Nodes have two types of connections. Connections on the right size are references to other nodes and connections on the left size means the node is referenced by other nodes.
MSFS introduced [[MSFS_Mission_Script_-_Flow_states#Flow_states|flowstates]], which determine the flight state, and [[MSFS_Mission_Script_-_Flow_states#Flow_events|flowevents]], which control sim-level actions (e.g., pausing the sim, show startup info, disabling the ATC panel).


You should add an intro with a [[MSFS_Mission_Script_-_Flow_states#FlowStateAction|FlowStateAction]].
You can use special comment nodes to clarify the working of complex missions:


[[File:CommentNodes.png|500px|thumb|left|Comment nodes used to show the working of a block of nodes]]<br clear=all>


=== Coding your mission ===
Now you will turn your mission diagram from step 3 into a mission script. For this you can use the Devmode and the script editor.


==== [[:Category:MSFS_Mission_Script#Building_blocks|Script Building Blocks]] ====
=== [[:Category:MSFS_Mission_Script#Building_blocks|Script Building Blocks]] ===
The script is mostly made up of a few building blocks:
There are different [[Category:MSFS_Mission_Script#Building_blocks|types of nodes]] that you can use to make your mission.


===== [[MSFS Mission Script - Triggers|Triggers]] & [[MSFS Mission Script - Actions|Actions]] =====
==== [[MSFS Mission Script - Triggers|Triggers]] & [[MSFS Mission Script - Actions|Actions]] ====
The basic parts of a mission script are triggers and actions. When a trigger ‘fires’, it can start different actions and activate other triggers. A bunch of these together makes up a basic mission.  
The basic parts of a mission script are triggers and actions. When a trigger ‘fires’, it can start different actions and activate other triggers. A bunch of these together makes up a basic mission.  


===== [[MSFS Mission Script - Mission objects|Mission objects]] =====
==== [[MSFS Mission Script - Mission objects|Mission objects]] ====
Mission elements define a range of things like mission type, goals, world traffic, camera, and thermals.
Mission objecs define a range of things like mission type, goals, world traffic, camera, and thermals.


===== [[MSFS Mission Script - Calculator|Calculators]] =====
==== [[MSFS Mission Script - Calculator|Calculators]] ====
You can use calculators for more advanced logic in your mission. It can take in multiple variables and trigger different actions based on a logic. You can also use this to calculate a mission score and probably many more applications which you can explore.
You can use calculators for more advanced logic in your mission. It can take in multiple variables and trigger different actions based on a logic. You can also use this to calculate a mission score and probably many more applications which you can explore.


{{blockquote|1='''[[:Category:MSFS_Mission_Script#Building_blocks|Look here for a complete overview of objects.]]'''}}
=== Creating your mission script ===
You need to turn your mission diagram into a mission script with the script editor. For everything that happens in your mission, you need to choose and add the correct triggers and link them to actions. For each trigger you have to think: maybe you want something to happen after 10 seconds, or when the plane is at a particular location? There are many triggers too choose from, so you will need to familiarize yourself with [[MSFS_Mission_Script_-_Triggers|all the triggers available to you]], so you can choose the one you need.
==== Placing objects in the world ====
Before you can place objects in the world you have to start a flight and load the mission. The process for loading the mission is described in [[#Testing_the_mission|Chapter 4]].
==== The main mission object ====
You use the mission object to add objectives and an ending to your mission. You can [[MSFS_Mission_Script_-_Mission_objects#List_of_Mission_Types|choose from different types]], according to the type of mission you're creating.
===== Objectives and goal nodes =====
You can add objectives to your mission that determine the mission ending. Each objective has a state that can determine the mission ending. If any objective is set to ''Failed'' or ''Aborted'', the mission ends with pupup and a short message. If all objectives are set to ''Completed'', the mission ends with a debriefing / rewardscreen.
Objectives can be ''Optional'', which means they don't lead to a mission ending at failure and aren't needed to complete the mission, but they still shop up in the ''objectives panel''.
To set and change the states of objectives, you have to link each objective with a [[MSFS_Mission_Script_-_Mission_objects#Goals|Goal or SubGoal node]]. This node has the same states as objectives. You can set the starting state in the node. You have to use a [[(Sub)Goal_Resolution_Action|(Sub)GoalResolutionAction]] to change the state throughout the mission.


<u>'''For a complete overview of elements, see [[:Category:MSFS_Mission_Script#Building_blocks|MSFS Script]]'''</u>
'''Steps'''
Objectives can have steps that show up in the objectives panel:


==== Testing and editing mission ====
[[File:ObjectivesPanel.jpg|500px|thumb|left|View of objectives and steps in the objectives panel]]<br clear=all>
To test the mission, build the project and copy the contents of the <code>ProjectFolder\Packages\</code> folder to the <code>Community</code> folder.


Keep DevMode enabled and make sure <code>Options > World Objects</code> is enabled, to see the areas.
==== Managing triggers ====
To prevent triggers from firing at unintended moments, you need to make sure triggers are only active when they are needed. Most triggers should start out deactivated and be activated with an [[Object_Activation_Action|ObjectActivationAction]] when the previous trigger in the mission's flow has fired.


You can start the mission by going to the home screen, then select <code>Activities > Custom Content > Your mission</code>.
[[File:MissionFlowchartTrigger.png|600px|thumb|left|A trigger to warn the player of a low altitude has to be active at the appropriate time]]<br clear=all>


With the script editor open you can see if the objects are loaded in the mission. If the names are white, they are loaded, but if they are red it means they are not loaded. While working on your mission, you can update the objects by clicking <code>Script Editor > Game > Update</code>.
Triggers have a property called ''OneShot''. If it is enabled, the trigger will deactivate itself after it has fired. But some triggers won't fire in every playthrough, such as the llow altitude warning of the example above. If you aren't sure the trigger will deactivate itself, you should deactivate it manually with an ''ObjectActivationAction'' when the trigger isn't needed anymore.
 
==== Unconnected nodes ====
You can use the script editor to look for breaks in your mission logic. All nodes that aren't referenced by another node are marked with a white dot:
 
[[File:Script editor example.jpg|300px|thumb|left|Script object overview]]<br clear=all>
 
This may be a sign of trouble. For actions this means they aren't executed. For triggers this means they will either be active from the beginning or they will always be disabled. For some nodes such as the main [[MSFS_Mission_Script_-_Mission_objects#Defining_the_mission_type|mission object]] this isn't an issue.
 
 
=== Testing the mission ===
 
To quickly test your mission, you can load a flight and then load your mission from a project, as described in [[#Quickly_load_flight_and_mission|Paragraph 4.1]]. However, this won't work for all triggers (such as the intro TimerTrigger). To test your mission more reliably, you first have to build your project and then load the mission flight, as described in [[#Build_project_and_load_the_mission|Paragraph 4.2]].
 
==== Quickly load flight and mission ====
You can quickly start a flight without building your project:
 
#Start a flight in the right area or load your mission .FLT.
#Load the mission in the script editor.
#In the script editor, click <code>Game > Update</code>.
 
==== Build project and load the mission ====
To test your mission more reliably, you first have to build your project and then load the mission flight:
 
#Build the project.
#Go to custom activities and select your mission.
 
==== How to edit the mission while it's loaded in ====
When the mission is loaded in, make sure <code>Options > World Objects</code> is enabled.
 
Now you will see your areas overlayed in the world. With the script editor open you can see if the objects are loaded in the mission. If the names are white, they are loaded, but if they are red it means they are not loaded. While working on your mission, you can update the objects by clicking <code>Script Editor > Game > Update</code>.
 
[[File:ScriptEditorOverview.png|400px|thumb|left|Script object overview]]<br clear=all>
 
To add objects, click the plus in the overview window and select the object you want to add. If the object has a [[World_position_(MSFS)|world position]], it will spawn in the middle of your view. To change the location, you can move the object with the Gizmo. For gizmo options, in the script editor click <code>View > Gizmo</code>.  


With the Developer Camera enabled you can double click on the objects in the script editor and the camera will go to their location.
With the Developer Camera enabled you can double click on the objects in the script editor and the camera will go to their location.


Go to <code>Script Editor > View > Gizmo</code> to get a gizmo with which you can move objects that have a [[World_position_(MSFS)|world position]].
[[File:MissionGizmo.jpg|700px|thumb|left|Area with gizmo and gizmo options]]<br clear=all>


==== Debugging mission ====
The MSFS script editor isn't good at debugging your mission, so you will have to test the mission and try to create it in a standardized way.


It is good practice to have all triggers except the first disabled, so they can't be triggered before they're supposed to. You should use [[Object Activation Action|ObjectActivationActions]] to enable triggers at the appropriate time. You can use the script editor to look for breaks in your mission logic. All objects that aren't referenced by another object are marked with a white dot:
=== Debugging mission ===
You can't really use the script editor to view the state of the mission during testing, so your options for debugging are limited. You can debug [[MSFS_Mission_Script_-_Calculator|calculators]] by enabling *DisplayAllowed* and using &lt;code>Options > Flight Object Debug</code>.


[[File:Script_editor_example.png|300px]]


For actions this means they will never execute. For triggers this means they will either be active from the beginning or they will always be disabled.
=== Exporting the mission ===
To compile the mission for export, click <code>Clean All</code>, then <code>Build All</code>, Make sure there are no errors in the console from the building process. Then click <code>Build & Export</code>, ensure the mission package is checkmarked, choose <code>Community Publishing</code>, and select the Export Directory.


==== Compiling the mission ====
To compile the mission for export, click <code>Clean All</code>, then <code>Build All</code>, Make sure there are no errors in the console from the building process. Then click <code>Build & Export</code>, ensure the mission package is checkmarked, choose <code>Community Publishing</code>, and select the Export Directory.




{{Template:Navbox-Mission-Creation-MSFS}}
{{Template:Navbox-Mission-Creation-MSFS}}

Revision as of 06:43, 3 March 2022


Overview

Creating a mission is a complex task involving a diverse use of tools & skills. Getting your first mission going is likely to cause you some headaches.

Still here? Good. Once you do have that first one running, the sky's your limit. That basic set of rules and files that make up a mission are always the same so once you've got those sorted, it's just a case of coming up with an idea and writing it.

At it's simplest, a mission is just a scripted set of events that tell some kind of story. It may be dramatic - mountain rescue, failing aircraft, poor weather. It could just as easily be a simple flight from A to B with you pointing out areas of interest along the way, or a completely abstract challenge like finding out how many times you can touch-and-go in a 747 in five minutes.

Technically speaking, there are two main classes of 'things' in a mission; Actions and Triggers. An Action makes something happen, and a Trigger checks to see if something's happened and calls an Action if it has. By stringing together Actions and Triggers, you tell your story.

You'll also need to prepare the conditions of your flight; what will be the plane, time, location, route, and weather of your mission? Are there other planes flying around or parked on the airport? And how much assistance will you give the player?

Lastly, your mission will need sound files for the mission speech and some text and images for the briefing, loading, and ending screens.

Before coding

Come up with a basic storyline

The first step of creating a mission is coming up with a scenario and story. You can make a tutorial, emergency scenario, even a treasure hunt, but you will need to think of a mission progression. What is the start of the mission? What will you need to tell the player and what will they have to find out on their own? What are the possible ways to complete the mission? Are there branching paths? And of course, how will the mission end? Will the player receive a grade or reward?

It can help to have a written structure. Think of it as a screenplay, and follow the same three-stage layout.

The first section is your introduction. You need to get the player's interest, explain who they are and why they're there. You use the first bit to get everything set up so that when The Exciting Thing happens, they know why and what to do about it.

In part two, The Exciting Thing happens. It doesn't matter what it is, but assuming you have some kind of event to which the player is supposed to react, this part details what happens. Once they've managed to cope with the situation and get it under control, they move on to...

Part three, the conclusion. Having successfully dealt with the engine fire/squalling brats in the back seats/condor-strike, the player gets to reflect on what they've done and enjoy the feeling of success for a little while. You could always throw in a last-minute plot twist of course.

Structuring like this gives you a tidy way of making your mission appear much more complex. You can easily provide different threads, or ways of achieving something, without too much extra effort. Let's say your Introduction sees the player getting from a bush strip to the head of a particular valley. You start with them following the river, simple enough. Later on, you could add the option to fly across the peaks and save time; as long as they reach the same head of the same valley, the rest of the mission isn't affected. If they've tried the mission before and failed, chances are they'll decide to try shortcuts anyway. Wouldn't it feel better if, having decided to cross the ridge instead of fly round, the mission reacts to that by saying "Hey, you're going over the ridge! A bit risky in this weather but the views will be stunning"? You can issue different Rewards, or maybe even alter how the next section plays out, depending on the path they took.

In short, you can see your mission sections as leading up to choke-points, such as the head of the valley. If you have three sections, each with three different ways of achieving it, that's nine different ways of flying a single mission.


Turn your story into a mission

Now comes the longest, and hopefully the most fun part; turning your idea into an immersive mission.

First, you have to clearly define the flow of the mission. You may find it easier to have a big sheet of paper and draw the mission out in pencil before you start coding. That lets you work out how it fits together logically without having to worry about whether or not you've got the spelling right.

For example, you know that after you take off you want to have some speech, and then there are three ways of getting from A to B, where the next section starts. OK, so that's three boxes to draw; 'Takeoff', 'Speech' and 'At point B'. The speech should happen 30 seconds after takeoff, so note that down next to the Speech box. Then you can draw three lines between 'Speech' and 'At Point B' to show the three paths, and the first thing to do on each path is disable the other two paths.

Already you've got a decent map of what happens in what order, and translating from these into actual mission-system code will be easier.

Read the list of possible Actions and Triggers, to find out what kinds of things you can check for and do. Try and spot a likely match for each of the boxes on your sheet of paper.

To keep the example going, you might have a Property Trigger checking "Altitude AGL > 10" to test for takeoff. That would start a 30-second Timer Trigger using an [[Object Activation Action] which, in turn, would call a Dialog Action for your "Speech" box. You would need one Trigger per potential path; they might be set to detect altitude, or heading, or more likely that the player has entered an area. Each of those would need another Dialog Action (just to keep the player informed), an Object Activation Action to enable the Trigger that checks "At Point B" and another Object Activation Action to disable the other two paths.


Create a mission project

Using the SimpleMission sample project

You can use the SimpleMission sample project. Download it and complete step 1 and 2 of the guide.


Decide on flight conditions

Next, you will have to configure the flight conditions. To start, you can create a flight plan in the worldmap or with Little Navmap. This flight plan will be shown to the player when the mission starts, so it shouldn't spoil the unexpected parts of the flight (e.g., an emergency).

Then you decide on the starting point of the mission (e.g., at the beginning of the flight or in the air somewhere along the route).

Create the flight file

Load the flightplan and select the desired starting location in the worldmap. Now choose the aircraft, livery, fuel, payload, and atc options. Then choose the time, weather preset, and the multiplayer and traffic settings. Load the flight. Set up the aircraft how you want it (lights, switches, autopilot, etc.). You can customize the weather and save it as a preset. Lastly, locate the plane exactly where you want it, with the correct speed and trim settings. Then click ESC to pause the game and then SPACE to save the flight as a .FLT. Move the flight file and flightplan to the mission project.

You will need to manually edit the .FLT to choose the assistance preset, mission category, traffic, briefing and loading screen. You can use the .FLT in the SimpleMission project as a reference.

Add pictures

Lastly, you will have to add pictures for the mission thumbnail, and the loading, briefing, and ending screens. The names for the loading an briefing pictures are defined in the .FLT file. The thumbnail will need to be named: Activity_Widget.jpg and the endscreen picture will need to be named: rewardscreen.jpg. You can use the pictures in the SimpleMission project as a reference.

Define custom weather

You can customize the weather with the weather panel during flight. Save it as a new preset. You can find the .WPR file in \AppData\Roaming\Microsoft Flight Simulator\Weather\Presets\. Move it next to the .flt file and rename it to Weather.WPR. You can fine-tune the weather by editing the .WPR file in Notepad++. You can use the .WPR in the SimpleMission project as a reference.


Set up a mission script

You can set up a with the SimpleMission sample project. The project contains an .xml you can use as a starting point. Download it and complete step 3 of the guide.


Coding your mission

Now you will turn your mission diagram from Chapter 2.2 into a mission script. For this you can use the script editor.


Script editor

With the project open, select your mission asset group and click load in editor:

How to open the script editor


With the built-in script editor you can create the mission with a visual representation of the script. All building blocks of the mission – such as triggers and actions – are represented by nodes (also called mission objects). Each node contains some settings specific to the building block and can be connected to other nodes.

Some of the nodes of a basic mission


Nodes have two types of connections. Connections on the right size are references to other nodes and connections on the left size means the node is referenced by other nodes.

You can use special comment nodes to clarify the working of complex missions:

Comment nodes used to show the working of a block of nodes



Script Building Blocks

There are different that you can use to make your mission.

Triggers & Actions

The basic parts of a mission script are triggers and actions. When a trigger ‘fires’, it can start different actions and activate other triggers. A bunch of these together makes up a basic mission.

Mission objects

Mission objecs define a range of things like mission type, goals, world traffic, camera, and thermals.

Calculators

You can use calculators for more advanced logic in your mission. It can take in multiple variables and trigger different actions based on a logic. You can also use this to calculate a mission score and probably many more applications which you can explore.


Creating your mission script

You need to turn your mission diagram into a mission script with the script editor. For everything that happens in your mission, you need to choose and add the correct triggers and link them to actions. For each trigger you have to think: maybe you want something to happen after 10 seconds, or when the plane is at a particular location? There are many triggers too choose from, so you will need to familiarize yourself with all the triggers available to you, so you can choose the one you need.

Placing objects in the world

Before you can place objects in the world you have to start a flight and load the mission. The process for loading the mission is described in Chapter 4.

The main mission object

You use the mission object to add objectives and an ending to your mission. You can choose from different types, according to the type of mission you're creating.

Objectives and goal nodes

You can add objectives to your mission that determine the mission ending. Each objective has a state that can determine the mission ending. If any objective is set to Failed or Aborted, the mission ends with pupup and a short message. If all objectives are set to Completed, the mission ends with a debriefing / rewardscreen.

Objectives can be Optional, which means they don't lead to a mission ending at failure and aren't needed to complete the mission, but they still shop up in the objectives panel.

To set and change the states of objectives, you have to link each objective with a Goal or SubGoal node. This node has the same states as objectives. You can set the starting state in the node. You have to use a (Sub)GoalResolutionAction to change the state throughout the mission.

Steps Objectives can have steps that show up in the objectives panel:

View of objectives and steps in the objectives panel


Managing triggers

To prevent triggers from firing at unintended moments, you need to make sure triggers are only active when they are needed. Most triggers should start out deactivated and be activated with an ObjectActivationAction when the previous trigger in the mission's flow has fired.

A trigger to warn the player of a low altitude has to be active at the appropriate time


Triggers have a property called OneShot. If it is enabled, the trigger will deactivate itself after it has fired. But some triggers won't fire in every playthrough, such as the llow altitude warning of the example above. If you aren't sure the trigger will deactivate itself, you should deactivate it manually with an ObjectActivationAction when the trigger isn't needed anymore.

Unconnected nodes

You can use the script editor to look for breaks in your mission logic. All nodes that aren't referenced by another node are marked with a white dot:

Script object overview


This may be a sign of trouble. For actions this means they aren't executed. For triggers this means they will either be active from the beginning or they will always be disabled. For some nodes such as the main mission object this isn't an issue.


Testing the mission

To quickly test your mission, you can load a flight and then load your mission from a project, as described in Paragraph 4.1. However, this won't work for all triggers (such as the intro TimerTrigger). To test your mission more reliably, you first have to build your project and then load the mission flight, as described in Paragraph 4.2.

Quickly load flight and mission

You can quickly start a flight without building your project:

  1. Start a flight in the right area or load your mission .FLT.
  2. Load the mission in the script editor.
  3. In the script editor, click Game > Update.

Build project and load the mission

To test your mission more reliably, you first have to build your project and then load the mission flight:

  1. Build the project.
  2. Go to custom activities and select your mission.

How to edit the mission while it's loaded in

When the mission is loaded in, make sure Options > World Objects is enabled.

Now you will see your areas overlayed in the world. With the script editor open you can see if the objects are loaded in the mission. If the names are white, they are loaded, but if they are red it means they are not loaded. While working on your mission, you can update the objects by clicking Script Editor > Game > Update.

Script object overview


To add objects, click the plus in the overview window and select the object you want to add. If the object has a world position, it will spawn in the middle of your view. To change the location, you can move the object with the Gizmo. For gizmo options, in the script editor click View > Gizmo.

With the Developer Camera enabled you can double click on the objects in the script editor and the camera will go to their location.

Area with gizmo and gizmo options



Debugging mission

You can't really use the script editor to view the state of the mission during testing, so your options for debugging are limited. You can debug calculators by enabling *DisplayAllowed* and using <code>Options > Flight Object Debug.


Exporting the mission

To compile the mission for export, click Clean All, then Build All, Make sure there are no errors in the console from the building process. Then click Build & Export, ensure the mission package is checkmarked, choose Community Publishing, and select the Export Directory.


Pages relevant to mission creation for MSFS.

Mission structure

Flightplan
Weather definitions
Flight file
Mission script
Triggers
AirportLandingTrigger & AreaLandingTrigger · CounterTrigger · PropertyTrigger · ProximityTrigger · TimerTrigger
Actions
ObjectActivationAction · DialogAction · AdjustPayloadAction · ChangeAssistanceItemAction · FadeToColorAction · RandomAction · RequestTeleportAction · CountAction · ResetTimerAction · TimerAdjustAction · GoalResolutionAction & SubGoalResolutionAction · GrantRewardAction · PointOfInterestActivationAction · ActivateWaypointsAction · AITakeControlsAction · SendMessageToAIAction
Mission objects
Mission definition · Goal · LivingWorldExclusion · Camera
Calculator
Flow states
Events
Areas
Rectangle Area · Cylinder Area · Polygon Area · Corridor Area · InGameMarker
Library objects
Sim objects
RTC

Mission tools

MSFS Script Editor · BushTripInjector · BushMissionGen · MSFSLocalizer · SPB2XML · Little Navmap

Other

Example mission files
Porting FSX Missions to MSFS
Localisation
Click the links to access the topic pages (Default - Opens in same window).