Merge remote-tracking branch 'refs/remotes/origin/master' into master-release-prep

This commit is contained in:
FlightControl 2017-03-31 10:34:32 +02:00
commit d3d113e2ba
23 changed files with 337 additions and 56 deletions

View File

@ -1,29 +1,67 @@
*** UNDER CONSTRUCTION ***
## 2.2) Get your MOOSE repository installed on your PC and linked with GITHUB
You are interrested in **testing the bleeding edge functionnalities** and features added by contributors every day, and you are **not afraid of bugs** that will inevitably crop up from time to time ? Then this page is for you ! You are going to learn :
### 2.2.1) Install GITHUB desktop
1. How to set up your development environment
2. How is the Moose repository organized
3. How Moose is loaded in the missions and how this can make your workflow more efficient
4. How to use tools to process your .miz files efficiently
5. How Moose's release cycle work
6. How the Issue Tracker is managed
This might be a bit daunting at first, but the rewards in term of simplified workflow and direct access to new features is well worth the effort! If you have any problem during the setup or at any other point, don't hesitate to ask the [community](Communities) for help!
This guide assumes that **you already setup your development environment**, like a "normal" mission designer. Which means Lua Development Tools (LDT) is installed on your computer, and you already know how to create a mission using MOOSE. If it is not the case, please follow the instructions [here](http://flightcontrol-master.github.io/MOOSE/Usage_Guide.html) before proceeding.
# 1) Installation
## 1.1) Get your MOOSE repository installed on your PC and linked with GITHUB
### 1.1.1) Install GITHUB desktop
Install [GITHUB](https://desktop.github.com) desktop.
We use GITHUB desktop to sync the moose repository to your system.
Since the MOOSE code is evolving very rapidely between Releases, we store the MOOSE code on GitHub, and we use the GitHUb to sync it between the remote repository (the "origin") and your local MOOSE repository. That way, only one click is needed to update to the latest version of GitHub.
### 2.1.1) Link the MOOSE repository
### 1.1.2) Link the MOOSE repository
Link the MOOSE repository on GITHUB to your freshly installed GITHUB desktop.
Do this by browing to the MOOSE repository at GITHUB, and select the green button **Clone or Download** -> **Open in Desktop**.
This is done by browing to the [MOOSE repository at GITHUB](https://github.com/FlightControl-Master/MOOSE), and selecting the green button **Clone or Download** -> **Open in Desktop**.
![](Installation/GitHub_Clone.jpg)
Specify a local directory on your PC where you want to store the MOOSE repository contents.
Sync the MOOSE repository to a defined local MOOSE directory on your PC using GITHUB desktop (press the sync button).
You now have a copy of the code on computer, which you can update at any time by simply pressing the sync button.
### 2.1.1) Sync the Dcs folder in the MOOSE repository
### 1.2) Install 7-Zip
On your local MOOSE directory, execute the batch file [DCS_Folder_Sync.bat](https://github.com/FlightControl-Master/MOOSE/blob/master/DCS_Folder_Sync.bat).
This will sync the dcs folder in the MOOSE repository from the submodule DCS API.
The Dcs folder is what we call a GITHUB submodule, which needs to be synced separately.
You will be notified when you need to re-sync the Dcs folder through GITHUB channels.
Install [7-Zip](http://www.7-zip.org/) if you don't already have it. It is a free and open source file archiver program. Since DCS' .miz files are simply renamed .zip files, 7-Zip is very usefull to manimulate them. We are providing the MOOSE testers and contributors with tools to batch process their .miz files, and they rely on 7-Zip. Keep the path to your 7-Zip installation handy, it will be use in the next step !
# 5) MOOSE Directory Structure
### 1.3) Run the Install script
Because DCS is going to load Moose dynamically (more on that later), we need to do some (slightly) advanced stuff to finish the setup of your own development enviroment. Thankfully we wrote a program to do it automatically for you !
![](Installation/MDES_Splash_Screen.JPG)
Browse to your local MOOSE repository and run `Moose Development Environment Setup\MooseDevelopmentEnvironmentSetup.exe` **as an administrator** (Select the file > Right Click > Run as administrator).
* The splash screen opens, click ok
* Enter (or browse for) the 3 paths asked and click ok. Don't worry about trailing backslashs.
* Let the program do its magic !
* When the program finishes, it will inform you that you need to restart your computer to use the .miz files management tools.
If you encounter a problem during this installation, please contact the [community](Communities), with the mdes.log file which was generated next to the executable file. We'll try our best to help you!
_Wait, I'm not running a program randomly found on the internet like that. I don't even know what it does, and why does it have to be run as an administartor anyway?!_
And you shouldn't. Here is the explanation of what this tool does (but the explanation is a bit technical, your are warned!):
* Create a hard link between your local repository and `DCSWorld/Scripts/`
* Add 7-Zip to your PATH environment variable (this explains the restart requirement)
* Copy a precompiled version of Lua 5.1 to your `Program Files` (this explains the administrator priviledge requirement)
The executable is made with AutoIt, its script is available near the executable. Open it as a text file if you want to know what it does. If you are still reluctant to do this, the whole process can be done manually by experienced users, get in touch with the [community](Communities)!
# 2) MOOSE Directory Structure
***TDOD : Update this section because of the repo changes***
The MOOSE framework is devided into a couple of directories:
@ -31,3 +69,81 @@ The MOOSE framework is devided into a couple of directories:
* Moose Mission Setup: Contains the Moose.lua file to be included in your scripts when using MOOSE classes (see below the point Mission Design with Moose).
* Moose Test Missions: Contains a directory structure with Moose Test Missions and examples. In each directory, you will find a miz file and a lua file containing the main mission script.
* Moose Training: Contains the documentation of Moose generated with luadoc from the Moose source code. The presentations used during the videos in my [youtube channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg), are also to be found here.
# 3) Static Loading vs Dynamic Loading
## 3.1) Static Loading
**Moose static loading** is what the "normal" mission designer uses. Simply put, there **is a tool which concatenates every .lua file** which constitutes Moose **into just one: Moose.lua**. This is the file which is loaded in Mission Editorr by the mission designer.
This process is very useful **when you are using a stable Release** of Moose which don't change often, because it is really easy to set up for the mission designer. It also allows him to **release missions** which are contained in their entirety in the .miz file.
But in a context in wich Moose changes often, static loading would require the generation of a new Moose.lua for every change and the replacement the old Moose.lua in the .miz file you are using to test the changes. Add to this cumbersome process the fact that the Mission Editor doesn't like changes to the .miz file while it is open, which means you would need to close and reopen the Mission Editor for every change, and this process becomes unworkable for both the tester and the contributor.
## 3.2) Dynamic Loading
Enter **Moose Dynamic loading**. In this process, the **Moose.lua** you insert in your .miz file **looks for every .lua** which constitute Moose in `DCSWorld\Scripts`, **and asks DCS to load them** during the mission startup. This way, the latest changes to Moose's .lua files in `DCSWorld\Scripts` are automatically taken into account when you restart the mission, no need to fiddle around with the .miz file or to close the mission editor!
Now, there is still a problem left : you wouldn't want to have to copy the Moose's .lua files from your local repository to `DCSWorld\Scripts` everytime you retrieve a new version of Moose. The solution to this problem is a dynamic link! It is created by the Install Scipt (see above), and, simply put, makes sure that the folder `DCSWorld\Scripts\Moose` is always in sync with your local repository. That way, **everytime you want to update to the next Moose, you simply sync your local repository** with the remote with GitHub, **and restart your mission** !
Note that if you want to **release your missions to end users**, you will need to make it **use the static loading process**. There is a tool to automate this task, read below.
# 4) Tools to help you manage your .miz files
***TODO : Add a list of the .miz files tools a briefly explain their usages***
# 5) The release cycle
To ensure that the next Release of Moose is as bug-free and feature rich as possible, every Moose contributor respects a release cycle.
![](Installation/MOOSE_Release_Cycle.JPG)
If you are not familiar with Git, this might be a bit criptic, but the idea behind it is simple :
* Most of the time, contributors write code, be it features or bug fixes, and the testers report bugs.
* When a good amount of features are added to the last release, FlightControl decides to enter in a "Feature Freeze" period. **No new features are added** during this period (but they can still be worked on), and **every bug must be eliminated**. That is the period during which bug reports are paramount!
* Now that this version of **Moose is stable**, we can release it for every mission designer, and go back to the start for the next cycle.
# 6) The Issue Tracker
## 6.1) How to report a bug ?
If you **encounter** what seem to be a **bug**, which is bound to happen sooner or later since you are testing the brand new untested features of Moose, you will want to **report it** so that it can be solved by the contributors. We use the standard GitHub [Issue Tracker](https://github.com/FlightControl-Master/MOOSE/issues). Here is the process to create a new issue :
* First, do a quick **search on the issue tracker** to see if someone hasn't already reported your issue. If it is the case, comment on this issue that you are able to reproduce it, and add the informations listed below.
* **Create a new issue**.
* **Add the information** listed below
* Add the **lablel possible bug**
* Thank you for helping us make Moose better!
**_Informations we need to solve the issue_**
* **A descriptive title**, not too long if possible. For exemple, `CTD when calling SPAWN:New()` is a good title. `I found a bug in MOOSE` is not.
* Explain **what you are trying to do**, as well as **how you expect Moose to be behave**.
* Which **version of Moose** and DCS World you are using. This can be found in `dcs.log`
* Did the code you are using worked in previous version of either DCS World or Moose? Which one?
* The **code** or portion of code **that triggered the problem**. Please put **_\`\`\`lua_** one line before your code, and **_\`\`\`_** at the end, to make your code readable.
* The relevant part of **`dcs.log`**. Please put **_\`\`\`_** before and after your copy-pasted log to make it readable.
![Example of a great bug report](Installation/GitHub_Issue_example.JPG)
## 6.2) How to add a feature request ?
* **A descriptive title**, not too long if possible.
* Explain in detail **what you want Moose to do** in which circonstance.
* If possible, add some pseudocode or a high level design implementation to better explain how your feature would work.
* Add the **lablel enhancment**
## 6.3) The life and death of an issue
**_What is going to happen next to my issue?_**
* A contributor will set some labels and a milestone to your issue, in order to classify it.
* You might be asked to clarify some part of your issue, please answer as swiftly as possible.
* You might be asked to sync your local repository and try again, if we think we fixed your issue. If we can confirm it to be fixed the issue is closed.
**_Wait, my issue was closed, and it never got fixed ! / Nobody is paying attention to it !_**
This can happen for multiple reasons :
* Your issue is a duplicate. (There is alredy a issue in our issue tracker for this)
* Nobody was able to reproduce your bug, so we think it's a problem on your end
* Your feature request asks for a feature that already exists
* We think your feature request is a really good idea, but it's a huge time commitment. We therefore postponed it to the Realease after the next one, or to a later Release.
* We are working hard and simply don't have the time. We will get around to check your issue, please be patient!

View File

@ -1,8 +1,8 @@
# 3) MOOSE framework support channels
# 1) MOOSE framework support channels
MOOSE is broadcasted, documented and supported through various social media channels.
## 3.1) MOOSE broadcast channels on YouTube
## 1.1) MOOSE broadcast channels on YouTube
MOOSE has a [broadcast channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg/playlists) on youtube.
These videos are grouped into playlists, which explain specific MOOSE capabilities,
@ -18,19 +18,19 @@ Some mandatory videos to watch are:
* [MOOSE Tasking](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl3CgxN2iAViiGLTPpQ-Ajdg)
* [MOOSE Task Dispatching](https://www.youtube.com/playlist?list=PL7ZUrU4zZUl3I6ieFM-cjey-rncF1ktNI)
## 3.2) MOOSE on Eagle Dynamics forums
## 1.2) MOOSE on Eagle Dynamics forums
This is a default thread at the Eagle Dynamics forums where the MOOSE framework can be discussed and supported.
The thread is called [MOOSE - Mission Object Oriented Scripting Framework](https://forums.eagle.ru/showthread.php?t=138043).
## 3.3) MOOSE on GITHUB.
## 1.3) MOOSE on GITHUB.
I encourage that you create also a user at GITHUB.
On the MOOSE framework GITHUB site, you can register issues, feedback and comments in the issues section of the site.
This allows to track this feedback and issues, in order to provide a structured support and create a milestone plan.
In other words, treat this development as a project.
## 3.4) MOOSE on slack.com
## 1.4) MOOSE on slack.com
Slack is a team community site. It is a great environment to discuss online the framework.
Various channels are allocated in the environment to discuss specific topics.

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@ -6,7 +6,7 @@ MOOSE works with DCS world 1.5. and 2.0.
![MOOSE Banner](Presentations\MOOSE\Dia1.JPG)
## 1.1) MOOSE framework goal
## MOOSE framework goal
The goal of MOOSE is to allow mission designers to enhance their scripting with mission orchestration objects, which can be instantiated from defined classes within the framework. This will allow to write mission scripts with minimal code embedded. Of course, the richness of the framework will determine the richness of the misson scenarios.
The MOOSE is a service that is produced while being consumed ... , it will evolve further as more classes are developed for the framework, and as more users are using it.
@ -17,6 +17,8 @@ Within the community, key users will start supporting, documenting, explaining a
It is the ambition to grow this framework as a de-facto standard for mission designers to use.
# 2) MOOSE usage
The delivery of MOOSE follows a structured release process. Over time, new features are added that can be used in your mission.
@ -25,9 +27,13 @@ The delivery of MOOSE follows a structured release process. Over time, new featu
There are 3 different ways how you can use MOOSE, each with a different engagement and complexity level:
## 2.1) Use MOOSE as a normal user
### Refer to the detailed [Usage Guide](Usage_Guide.html) for more information.
Refer to the detailed **[Usage Guide](Usage_Guide.html)** for more information.
## 2.2) Beta test MOOSE
@ -39,15 +45,27 @@ As a return or as a reward, missions designers get:
* You can evaluate and contribute on the stability of the next release.
* Your mission design becomes very flexible. New features are dynamically added once delivered into your missions.
### Please read the detailed [Beta Test Guide](Beta_Test_Guide.html) for more information.
Please read the detailed **[Beta Test Guide](Beta_Test_Guide.html)** for more information.
## 2.3) Contribute on the MOOSE development
Those people who have experience in lua development or are excited to contribute to the MOOSE project are welcome.
### Please consult the [Contribution Guide](Contribution_Guide.html) for more information.
Please consult the **[Contribution Guide](Contribution_Guide.html)** for more information.
# 3) MOOSE Support Channels
# 3) MOOSE Framework
MOOSE is broadcasted, documented and supported through various social media channels.
Click here for the **[communities guide](Communities.html)** of the MOOSE framework.
# 4) MOOSE Framework
The following classes are currently embedded within MOOSE framework and can be included within your mission scripts:
@ -72,7 +90,23 @@ You'll need to browse to the right MOOSE Class within the inheritance tree struc
![MOOSE framework](Presentations\MOOSE\Dia2.JPG)
## 3.1) MOOSE Core Classes
## 4.1) MOOSE Demonstration Missions
The framework comes with [demonstration missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS),
that you can try out and helps you to code.
These missions provide examples of defined use cases how the MOOSE framework can be utilized. Each test mission is located in a separate directory, which contains at least one .lua file and .miz file.
The .lua file contains the mission script file that shows how the use case was implemented.
You can copy/paste code the code snippets from this .lua file into your missions, as it will accellerate your mission developments.
You will learn, see, and understand how the different MOOSE classes need to be applied, and how you can create
more complex mission scenarios by combining these MOOSE classes into a complex but powerful mission engine.
These exact test missions are also demonstrated at the demo videos in the YouTube channel.
## 4.2) MOOSE Core Classes
These classes define the base building blocks of the MOOSE framework. These classes are heavily used within the MOOSE framework.
@ -100,7 +134,8 @@ The POINT_VEC3 class manages the 3D simulation space, while the POINT_VEC2 class
* [ZONES](Documentation/Zone.html): A set of zone classes that provide the functionality to validate the presence of GROUPS, UNITS, CLIENTS, STATICS within a certain ZONE. The zones can take various forms and can be movable.
## 3.2) MOOSE Wrapper Classes
## 4.3) MOOSE Wrapper Classes
MOOSE Wrapper Classes provide an object oriented hierarchical mechanism to manage the DCS objects within the simulator.
Wrapper classes provide another easier mechanism to control Groups, Units, Statics, Airbases and other objects.
@ -132,7 +167,8 @@ The CLIENT class derives from the UNIT class, thus contains the complete UNIT AP
The STATIC class derives from the POSITIONABLE class, thus contains also the position API set.
## 3.3) MOOSE Functional Classes
## 4.4) MOOSE Functional Classes
MOOSE Functional Classes provide various functions that are useful in mission design.
@ -146,7 +182,9 @@ MOOSE Functional Classes provide various functions that are useful in mission de
* [SCORING](Documentation/Scoring.html): Administer the scoring of player achievements, and create a CSV file logging the scoring events for use at team or squadron websites.
## 3.4) MOOSE AI Controlling Classes
## 4.5) MOOSE AI Controlling Classes
MOOSE AI Controlling Classes provide mechanisms to control AI over long lasting processes.
These AI Controlling Classes are based on FSM (Finite State Machine) Classes, and provided an encapsulated way to make AI behave or execute an activity.
@ -161,7 +199,9 @@ These AI Controlling Classes are based on FSM (Finite State Machine) Classes, an
* [AI_CARGO](Documentation/AI_Cargo.html): Make AI behave as cargo. Various CARGO types exist.
## 3.5) MOOSE Human Tasking Classes
## 4.6) MOOSE Human Tasking Classes
MOOSE Tasking Classes provide a comprehensive Mission Orchestration System.
Through COMMANDCENTERs, multiple logical MISSIONs can be orchestrated for coalitions.
@ -180,7 +220,9 @@ Each TASK has a TASK ACTION flow, which is the flow that a player (hosted by a U
* [TASK_CAS](Documentation/Task_A2G.html): Models a CAS Task, where a Player is routed towards an attack zone with enemies nearby, and various ground targets need to be eliminated.
## 3.6) MOOSE Action Classes
## 4.7) MOOSE Action Classes
MOOSE Action Classes are task action sub-flows, that can be used and combined, to quickly define a comprehensive end-to-end task action flow.
For example, for the SEAD Task, the task action flow combines the actions ASSIGN, ROUTE, ACCOUNT and ASSIST task action sub-flows.
@ -194,7 +236,10 @@ For example, for the SEAD Task, the task action flow combines the actions ASSIGN
* [ACT_ASSIST](Documentation/Assist.html): Mechanisms to assist players executing a task. For example, acquire targets through smoking them.
# 4) Credits
# 5) Credits
Note that most of the framework is based on code i've written myself,
but some code of it is also based on code that i've seen as great scripting code and ideas,

View File

@ -1,9 +1,9 @@
# 2.1) MOOSE Usage Guide
# 1) MOOSE Usage Guide
Using the MOOSE framework is very easy, and this document provides you with a detailed explanation how to install
and use MOOSE within your missions.
## 2.1.1) MOOSE framework at GitHub
## 1.1) MOOSE framework at GitHub
You can find the source of [MOOSE framework on GITHUB](https://github.com/FlightControl-Master/MOOSE/).
It is free for download and usage, but it is under license of the GNU 3.0 open source license policy.
@ -12,7 +12,7 @@ GITHUB enforces a structured approval process, release and change management, an
The MOOSE framework development is considered an open source project, where contributors are welcome to contribute on the development.
Some key users have already started with this process. Contact me if you're interested to contribute.
## 2.1.2) Eclipse LDT
## 1.2) Eclipse LDT
MOOSE utilizes the Eclipse Lua Development Tools. As a result, the MOOSE framework is documented using the luadocumentor standard.
Every class, method and variable is documented within the source, and mission designers can write mission script lua code that is **intellisense**(-ed) ...
@ -20,7 +20,7 @@ What that means is that while you are coding your mission, your object and varia
![Intellisense](Usage/Intellisense.JPG)
## 2.1.3) LUA training
## 1.3) LUA training
In order to efficiently use the MOOSE framework, it is highly recommended that you learn a couple of basic principles of lua.
I recommend you learn the basic lua principles following this [lua tutorial](https://www.tutorialspoint.com/lua).
@ -30,9 +30,9 @@ knowledge to "understand" the code, and also, to understand the syntax.
**Therefore, I suggest you walk through this [lua quick guide](https://www.tutorialspoint.com/lua/lua_quick_guide.htm)**.
Ignore the lua environment setup. DCS comes with a pre-defined lua environment.
# 2.2) MOOSE Installation Guide
# 2) MOOSE Installation Guide
## 2.2.1) Download the latest release of MOOSE
## 2.1) Download the latest release of MOOSE
The delivery of MOOSE follows a structured release process. Over time, new features are added that can be used in your mission.
@ -41,21 +41,21 @@ The delivery of MOOSE follows a structured release process. Over time, new featu
**Unzip the files into a directory of your choice, but keep the folder structure intact**.
## 2.2.2) Download and install the Eclipse Lua Development Tools (LDT), which is an advanced lua editor.
## 2.2) Download and install the Eclipse Lua Development Tools (LDT), which is an advanced lua editor.
1. If you don't have JAVA yet, you may have to install [java](https://www.java.com/en/download) first.
2. Download and Install [Eclipse LDT](https://eclipse.org/ldt) on your Windows 64 bit system.
Now you should have a working LDT on your system.
## 2.2.3) Configure your LDT for the usage of MOOSE.
## 2.3) Configure your LDT for the usage of MOOSE.
You need to configure your Eclipse LDT environment and link it with the MOOSE respository.
This will enable you to **start developing mission scripts** in lua, which will be **fully intellisense enabled**!!!
Please follow the steps outlined!
### 2.2.3.1) Create a new **Workspace** in LDT.
### 2.3.1) Create a new **Workspace** in LDT.
The LDT editor has a concept of **Workspaces**, which contains all your settings of your editing environment,
like views, menu options etc, and your code... Nothing to pay attention to really, but you need to set it up!
@ -64,7 +64,7 @@ When you open EclipseLDT for the first time, it will ask you where to put your *
1. Open Eclipse LDT.
2. Select the default workspace that LDT suggests.
### 2.2.3.2) Create a new **Project** in LDT.
### 2.3.2) Create a new **Project** in LDT.
Here we will create a **New Project** called **Moose_Framework** in your LDT environment.
The project details are already defined within the MOOSE framework repository,
@ -99,9 +99,9 @@ As a result, when you browse to the Script Explorer, you'll see the following:
**Congratulations! You have now setup your Moose_Framework project LDT environment!**
# 2.3) Your first mission
# 2.4) Your first mission
## 2.3.1) Setup your **Mission Project** in LDT
## 2.4.1) Setup your **Mission Project** in LDT
In order to design your own missions, it is recommended you create a separate directory on your PC
which contains your mission files. Your mission will be designed consisting possibly
@ -120,18 +120,69 @@ Therefore, **the recommendation is that your create for each mission a separate
The MOOSE test mission folder structure is a good example how this could be organized.
The LDT has been customized and provides a tool to **automatically** maintain your existing .miz files.
1. Select from the Menu: **File** -> **New** -> **Lua Project**.
### 2.4.1.1. Select from the Menu: **File** -> **New** -> **Lua Project**.
![LDT_New_Project](Installation/LDT_New_Project.JPG)
2. A **New Project** dialog box is shown.
### 2.4.1.2. A **New Project** dialog box is shown.
![LDT_Project](Installation/LDT_Project.JPG)
3. Type the Project Name: **My Missions**.
### 2.4.1.3. Type your Project Name: (In my example it is **DCS_Caucasus_Missions**.
## 2.3.2) Create your first Mission file
Note the indicated options in yellow:
* Note that you can select the option **No execution environment**.
* Deselect the option **Create default project template ready to run**.
![LDT_Project](Installation/LDT_Project_My_Missions.JPG)
### 2.4.1.4. Press **Next >**
### 2.4.1.5. Click the **Projects** tab at the top of the window.
![LDT_Project](Installation/LDT_New_Project_Projects.JPG)
### 2.4.1.6. Press the **Add...** button.
### 2.4.1.7. A new windows will be displayed: **Required Project Selection**.
This is an important step. This will _link_ your project to the Moose_Framework project and will activate **intellisense**.
![LDT_Project](Installation/LDT_Select_Moose_Framework.JPG)
### 2.4.1.8. After the selection, press the **OK** button.
### 2.4.1.9. Watch your newly created project in the Script Explorer of LDT.
You can delete the possibly created SRC directory. You won't need it at all.
![LDT_Project](Installation/LDT_Delete_Src.JPG)
### 2.4.1.10. Within your newly created Missions Project, right click and select **New -> Folder**.
As explained above, each of your missions will be stored in a separate folder. Please follow the explanation how to do that.
![LDT_Project](Installation/LDT_Add_Folder.JPG)
### 2.4.1.11. Type the **Folder Name**.
This can be any descriptive text explaining the title of your mission.
![LDT_Project](Installation/LDT_Mission_Folder_Name.JPG)
### 2.4.1.12. In your newly created **Mission Folder**, right click and select **New -> Lua File**.
This will create your **mission script file**,
the file that contains all the lua code using the Moose framework using your mission.
### 2.4.1.13. Type the **Lua Mission Script Name**.
![LDT_Project](Installation/LDT_Mission_Lua_File_Name.JPG)
## 2.4.2) Create your first Mission file
In the MOOSE package, a file named **Moose.lua** can be found.
In order to create or design a mission using the MOOSE framework,
@ -146,26 +197,95 @@ you'll have to include this **Moose.lua** file into your missions:
Voila, MOOSE is now included in your mission. During the execution of this mission, all MOOSE classes will be loaded, and all MOOSE initializations will be exectuted before any other mission action is executed.
## 2.3.3) Maintain your .miz files
Find below a detailed explanation of the actions to follow:
### 2.4.2.1. Open the Mission Editor in DCS, select an empty mission, and click the triggers button.
![LDT_Project](Installation/DCS_Triggers_Empty.JPG)
### 2.4.2.2. Add a new trigger, that will load the Moose.lua file.
Check the cyan colored circles:
* This trigger is loaded at MISSION START.
* It is the first trigger in your mission.
* It contains a DO SCRIPT FILE action.
* No additional conditions!
![LDT_Project](Installation/DCS_Triggers_Load_Moose_Add.JPG)
### 2.4.2.3. Select the Moose.lua loader from the **Moose Mission Setup** folder in the Moose_Framework pack.
Additional notes:
* If you've setup a folder link into Saved Games/DCS/Missions/Moose Mission Setup, then you can directly select this folder from **My Missions**.
* See point ...
Press the **OK** button.
![LDT_Project](Installation/DCS_Triggers_Load_Moose_Select_File.JPG)
### 2.4.2.4. Check that the Moose.lua file has been correctly added to your Mission.
![LDT_Project](Installation/DCS_Triggers_Load_Moose_File_Added.JPG)
### 2.4.2.5. Add a new trigger, that will load your mission .lua file.
Check the cyan colored circles:
* This trigger is loaded at MISSION START.
* It is the second trigger in your mission.
* It contains a DO SCRIPT FILE action.
* No additional conditions!
![LDT_Project](Installation/DCS_Triggers_Load_Mission_Add.JPG)
### 2.4.2.6. Select the mission .lua file from your **missions** folder you just created or already have.
Additional notes:
* If you've setup a folder link into Saved Games/DCS/Missions/Moose Mission Setup, then you can directly select this folder from **My Missions**.
* See point ...
Press the **OK** button.
![LDT_Project](Installation/DCS_Triggers_Load_Mission_File_Select.JPG)
### 2.4.2.7. Check that your mission .lua script file has been correctly added to your mission.
![LDT_Project](Installation/DCS_Triggers_Load_Mission_File_Added.JPG)
## 2.4.3) Maintain your .miz files
IMPORTANT NOTE: When a new version of MOOSE is released, you'll have to UPDATE the Moose.lua file in EACH OF YOUR MISSION.
This can be a tedious task, and for this purpose, a tool has been developed that will update the Moose.lua files automatically within your missions.
# 2.4) Support Channels
### 2.4.3.1. Select the **Update SELECTED Mission** from the External Tools in LDT.
MOOSE is broadcasted, documented and supported through various social media channels.
This will activate a script that will automatically re-insert your mission .lua file into your mission.
[Click here for the communities guide of the MOOSE framework](Communities.html).
![LDT_Project](Installation/DCS_Triggers_Load_Mission_File_Added.JPG)
# 2.5) Demonstration Missions
## 2.4.4) Create folder links into your "My Missions" folder in Saved Games/DCS/Missions.
The framework comes with [Test Missions](https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Test%20Missions),
that you can try out and helps you to code. These test missions provide examples of defined use cases how the MOOSE
framework can be utilized. Each test mission is located in a separate directory, which contains at least one .lua file and .miz file.
This trick will save you a lot of time. You need to install the tool ... to create easily new links.
Select from the following possible links that can be created to save you time while browing through the different folders to include script files:
### 2.4.4.1. Create a link to your **Moose Mission Setup** folder ...
### 2.4.4.2. Create a link to your **missions** folder ...
# 4) Demonstration Missions
The framework comes with [demonstration missions](https://github.com/FlightControl-Master/MOOSE_MISSIONS),
that you can try out and helps you to code.
These missions provide examples of defined use cases how the MOOSE framework can be utilized. Each test mission is located in a separate directory, which contains at least one .lua file and .miz file.
The .lua file contains the mission script file that shows how the use case was implemented.
You can copy/paste code the code snippets from this .lua file into your missions, as it will accellerate your mission developments.
You will learn, see, and understand how the different MOOSE classes need to be applied, and how you can create
more complex mission scenarios by combining these MOOSE classes into a complex but powerful mission engine.
These exact test missions are also demonstrated at the demo videos in the YouTube channel.
These exact demonstration missions are also explained at the demo videos in the YouTube channel.