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

1. MOOSE framework

MOOSE is a Mission Object Oriented Scripting Environment, and is meant for mission designers and mission hosters. It allows to quickly setup complex missions using pre-scripted scenarios using the available classes within the MOOSE Framework. MOOSE works with DCS world 2.5 and earlier versions.

MOOSE Banner

MOOSE framework goal

The goal of MOOSE is to allow mission designers to enhance the mission designs by using mission orchestration objects, which can be instantiated from defined classes within the framework. This will allow to write exciting missions and multi player cooperative operation scenarios.

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.

MOOSE is NOT meant to be a one-man show, it is meant to evolve within a growing community around the framework.

Within the community, key users will support, document, explain and even create new classes for the framework. It is the ambition to grow this framework as a de-facto standard for mission designers to use within the DCS World community.

Please Donate …

If you appreciate this development, please support to extend the framework. The development of this framework takes a lot of time. A small gift would help me to buy a new small laptop that I can use to extend this framework while commuting to and from work … Also, your donations will be saved and spent wisely to the advantage of the community!

If everyone helps with a small amount, it would be really great!


kind regards, FC

2. MOOSE Framework

You need to write lua code (scripts) to apply the MOOSE framework. But it is not really that hard, if you understand a couple of principles.

MOOSE is an Object Oriented framework and defines Classes, which are components that combine Methods and Variables/Properties as one encapsulated structure (table). Mission Designers can what we call Instantiate Objects from these MOOSE classes.

An example of what this means is shortly explained using the SPAWN class of MOOSE, which you can use to spawn new groups into your running mission. The SPAWN class simplifies the process of spawning, and it has many methods that you can use to create variations how you want your spawn object to spawn new groups.

local SpawnObject = SPAWN:New( "GroupName" ) -- This creates a new SpawnObject from the SPAWN class, using the :New method constructor to instantiate a new SPAWN object searching for the GroupName as the late activated group defined within your Mission Editor.  
-- Nothing is spawned yet..., so let's use now the SpawnObject to spawn a new GROUP.

local SpawnGroup = SpawnObject:Spawn() -- Here we use the :Spawn() method of the SPAWN class. This method creates a new group from the GroupName template as defined within the Mission Editor.

MOOSE Classes derive or inherit from each other, that means, within MOOSE there is an Inheritance structure where inherited MOOSE Classes are re-using properties and methods from the Parent MOOSE Class. This powerful concept is used everywhere within the MOOSE framework. The main (Parent) Class in the MOOSE framework is the BASE class. Every MOOSE Class is derived from this top BASE Class. So is also the SPAWN class derived from the BASE class. The BASE class provides powerful methods for debugging, event handling and implements the class handling logic. As a normal MOOSE user, you won’t implement any code using inheritance but just know that the inheritance structure is omni present in the intellisense and documentation. You’ll need to browse to the right MOOSE Class within the inheritance tree structure to identify which methods are properties are defined for which class.

MOOSE framework

MOOSE Demonstration Missions

The framework comes with demonstration missions which can be downloaded here, 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.

Some of these exact test missions are also demonstrated in a video format on the YouTube channel.

2.1. MOOSE Human Tasking Classes

MOOSE Tasking Classes provide a comprehensive Mission Orchestration System. Through COMMANDCENTERs, multiple logical MISSIONs can be orchestrated for coalitions. Within each MISSION, various TASKs can be defined. Each TASK has a TASK ACTION flow, which is the flow that a player (hosted by a UNIT) within the simulator needs to follow and accomplish.

2.2. 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.

2.3. MOOSE Functional Classes

MOOSE Functional Classes provide various functions that are useful in mission design.

2.4. 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.

2.5. MOOSE Core Classes

These classes define the base building blocks of the MOOSE framework. These classes are heavily used within the MOOSE framework.

3. MOOSE usage

The delivery of MOOSE follows a structured release process. Over time, new features are added that can be used in your mission.

The latest release of MOOSE can be downloaded here.

There are 3 different ways how you can use MOOSE, each with a different engagement and complexity level:

3.1. Use MOOSE as a Mission Designer

Refer to the detailed Usage Guide for more information.

3.2. Beta test MOOSE

Beta testers of MOOSE are requested to install additional software.

As a return or as a reward, testers get:

Please read the detailed Beta Test Guide for more information.

3.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 for more information.

3.4. Debug your code interactively using LDT

Have a look at the Interactive Debug Guide to setup your system so you can debug your mission code.

4. MOOSE Support Channels

MOOSE is broadcasted, documented and supported through various social media channels.

Click here for the communities guide of the MOOSE framework.

Thank you! FC