The documentation repository of the MOOSE framework. Note that the contents of this repo get generated from the MOOSE lua code, which is contained within the MOOSE main repository.

View the Project on GitHub FlightControl-Master/MOOSE_DOCS

You are interrested in testing the bleeding edge functionalities 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 :

  1. Installation: How to set up your development environment
  2. Repository: How is the Moose repository organized
  3. Loading: 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 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 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 desktop. 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.

Link the MOOSE repository on GITHUB to your freshly installed GITHUB desktop. This is done by browing to the MOOSE repository at GITHUB, and selecting the green button Clone or Download -> Open in Desktop.

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.

1.2) Install 7-Zip

Install 7-Zip 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 !

2) Repository

The MOOSE repository has a couple of folders, but the most important one is the Moose Development folder.
This directory contains an other folder called Moose. This is the most important folder, as this contains all the MOOSE source code!

The other directories contained within the repository are for administration and automation of the deployment process.

3) Loading the repository within your missions.

3.1) Static Loading

Moose Static Loading is what the “normal” mission designer uses.
Simply put, you would include all the code of MOOSE by including just one Moose.lua file.
So by executing a DO SCRIPT FILE within your mission, you would load the complete MOOSE code within your mission. 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 within the MOOSE framework and you would need to replace 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

So, beyond the Static Loading, there is the Dynamic Loading, which allows a much more smooth proces while testing your missions.

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 the MOOSE .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 .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!
Simply put, it makes sure that the folder DCSWorld\Scripts\Moose is always in sync with your local MOOSE repository on your disk.
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.

If you are not familiar with Git, this might be a bit criptic, but the idea behind it is simple :

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. Here is the process to create a new issue :

Informations we need to solve the issue

Example of a great bug report

6.2) How to add a feature request ?

6.3) The life and death of an issue

What is going to happen next to my issue?

Wait, my issue was closed, and it never got fixed ! / Nobody is paying attention to it !

This can happen for multiple reasons :