Jump to content

MOOSE - Mission Object Oriented Scripting Framework


Recommended Posts

Fork or watch the MOOSE project?

 

You can sign-up to GITHUB yourself and watch or follow the additions and changes or the MOOSE framework on the spot. Any new release or version update will be notified to you. You can also collaborate with the development, providing suggestions or request fixes.

 

https://github.com/FlightControl-Master/MOOSE

 

After you've signed-up at GITHUB:

 

1. You can "watch" the framework development. You will receive notifications.

 

2. You can "fork" the framework, so that new versions will be automatically also published within your GITHUB work area.

 

kind regards,

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Added a bugfix release. Forgot to add Moose.lua in the Moose_Embedded.lua file and the Moose_Create_Embedded.bat file...

 

v0.2.1-alpha

 

FC

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Hello all,

 

Just added a new youtube video where the APIs of the SPAWN class are explained in more detail.

 

[ame]

[/ame]

 

greetz,

FC

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

New pre-release ... v0.2.2-alpha

 

 

Additional bugfixes after publish of SPAWN tutorial part 2

 

13690775?v=3&s=40 FlightControl-Master released this an hour ago

 

  • Fixed respawn after engine shutdown for a spawn object (did not work anymore due to event logic rework. fixed now.)
  • Modified the test missions to make everything work okay.

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

I'm still learning to properly write code (java) in university and just recently started to teach myself lua. But i will try!

 

 

Hi IronJockel,

 

I have published your requirement on the issues list at GITHUB.

If you can join GITHUB, so that we can track this requirement together from there.

 

https://github.com/FlightControl-Master/MOOSE/issues/34

 

kind regards,

FC

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Just release v0.2.3-alpha, available for download.

 

This bugfix release fixes the MOOSE Mission Creation (Loader) Template, which got corrupted during development. Clean now and properly documented.

 

FC

  • Like 1

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

  • 4 weeks later...

I've completely reworked the directory structure of MOOSE, as well how to load it and use it with the goal to make it more accessible to end-users and mission designers.

 

Using MOOSE has now become really simple.

 

You can find the explanation below:

 

Context

 

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 is currently still in alpha version, but will evolve over time. Right now, it has been updated to work with DCS world 1.5. and 2.0.

 

You can find the source of MOOSE here on GITHUB. It is free for download: https://github.com/FlightControl-Master/MOOSE/

 

Note: MOOSE is complementary to MIST, so if you use MIST in parallel with MOOSE objects, this should work.

 

Goals

 

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. We can expect that MOOSE will evolve over time, as more missions will be designed within the framework.

 

MOOSE Directory Structure

 

 

  • Moose Development: Contains the collection of lua files that define the MOOSE classes. You can use this directory to build the dynamic luadoc documentation intellisense in your eclipse development environment.
  • 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, are also to be found here.

Mission Design with Moose

 

In order to create a mission using MOOSE, you'll have to include a file named Moose.lua:

 

  1. Create a new mission in the DCS World Mission Editor.
  2. In the mission editor, create a new trigger.
  3. Name the trigger Moose Load and let it execute only at MISSION START.
  4. Add an action DO SCRIPT FILE (without a condition, so the middle column must be empty).
  5. In the action, browse to the Moose.lua file in the Moose Mission Setup directory, and include this file within your mission.
  6. Make sure that the "Moose Load" trigger is completely at the top of your mission.

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.

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. Refer to the tool at Moose Mission Setup\Moose Mission Update directory for further information included in the READ.ME file.

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Am creating new Moose classes that will create a SETS of units, groups, clients, players during mission execution, dynamically and not impacting the performance of your missions.

 

A new SET base class has been created, that implements the baseline functionality for further derived SET classes.

For the administration of units and groups, 2 new SET classes have been added:

- UNITSET: Administer a set of units based on defined filter criteria.

- GROUPSET: Administer a set of groups based on defined filter criteria.

 

Find below the short explanations... and a code example ...

 

#UNITSET class

 

Mission designers can use the UNITSET class to build sets of units belonging to certain:

 

  • Coalitions
  • Categories
  • Countries
  • Unit types
  • Starting with certain prefix strings.

UNITSET construction methods:

 

Create a new UNITSET object with the UNITSET.New method:

 

UNITSET filter criteria:

 

You can set filter criteria to define the set of units within the UNITSET. Filter criteria are defined by:

 

Once the filter criteria have been set for the UNITSET, you can start filtering using:

 

Planned filter criteria within development are (so these are not yet available):

 

UNITSET iterators:

 

Once the filters have been defined and the UNITSET has been built, you can iterate the UNITSET with the available iterator methods. The iterator methods will walk the UNITSET set, and call for each element within the set a function that you provide. The following iterator methods are currently available within the UNITSET:

 

Planned iterators methods in development are (so these are not yet available):

 

#GROUPSET class

 

Mission designers can use the GROUPSET class to build sets of groups belonging to certain:

 

  • Coalitions
  • Categories
  • Countries
  • Starting with certain prefix strings.

GROUPSET construction methods:

 

Create a new GROUPSET object with the GROUPSET.New method:

 

GROUPSET filter criteria:

 

You can set filter criteria to define the set of groups within the GROUPSET. Filter criteria are defined by:

 

Once the filter criteria have been set for the GROUPSET, you can start filtering using:

 

Planned filter criteria within development are (so these are not yet available):

 

GROUPSET iterators:

 

Once the filters have been defined and the GROUPSET has been built, you can iterate the GROUPSET with the available iterator methods. The iterator methods will walk the GROUPSET set, and call for each element within the set a function that you provide. The following iterator methods are currently available within the GROUPSET:

 

 

=====================

 

The functionality is not yet released, but is already included in the master version on GITHUB.

 

 

Find below an example how these SET classes are used, including the _DATABASE class, which also contains iterators:

 

 

Include.File( 'UnitSet' )
Include.File( 'GroupSet' )
Include.File( 'Spawn' )

DBBluePlanes = UNITSET:New()
 :FilterCoalitions( "blue" )
 :FilterCategories( "plane" )
 :FilterStart()

DBRedVehicles = UNITSET:New()
 :FilterCoalitions( "red" )
 :FilterCategories( "ground" )
 :FilterStart()

DBShips = UNITSET:New()
 :FilterCategories( "ship" )
 :FilterStart()
 
DBBelgium = UNITSET:New()
 :FilterCategories( "helicopter" )
 :FilterCountries( "BELGIUM" )
 :FilterStart()
 
DBNorthKorea = UNITSET:New()
 :FilterCountries( "NORTH_KOREA" )
 :FilterStart()
 
DBKA50Vinson = UNITSET:New()
 :FilterTypes( { "Ka-50", "VINSON" } )
 :FilterStart()
 
DBBluePlanesGroup = GROUPSET:New()
 :FilterCoalitions( "blue" )
 :FilterCategories( "plane" )
 :FilterStart()
 
DBNorthKoreaGroup = GROUPSET:New()
 :FilterCountries( "NORTH_KOREA" )
 :FilterStart()

DBBluePlanes:Flush()
DBRedVehicles:Flush()
DBShips:Flush()
DBBelgium:Flush()
DBNorthKorea:Flush()
DBKA50Vinson:Flush()
DBBluePlanesGroup:Flush()
DBNorthKoreaGroup:Flush()


SpawnUS_Plane = SPAWN:New( 'Database Spawn Test USA Plane')
GroupUS_Plane = SpawnUS_Plane:Spawn()

SpawnUS_Vehicle = SPAWN:New( 'Database Spawn Test USA Vehicle')
GroupUS_Vehicle = SpawnUS_Vehicle:Spawn()

SpawnUS_Ship = SPAWN:New( 'Database Spawn Test USA Ship')
GroupUS_Ship = SpawnUS_Ship:Spawn()

SpawnRU_Vehicle = SPAWN:New( 'Database Spawn Test RUSSIA Vehicle')
GroupRU_Vehicle = SpawnRU_Vehicle:Spawn()

SpawnRU_Ship = SPAWN:New( 'Database Spawn Test RUSSIA Ship')
GroupRU_Ship = SpawnRU_Ship:Spawn()

SpawnUS_AttackVehicle = SPAWN:New( 'Database Spawn Test USA Attack Vehicle' )
SpawnRU_AttackVehicle = SPAWN:New( 'Database Spawn Test RUSSIA Attack Vehicle' )

for i = 1, 2 do
 GroupRU_AttackVehicle = SpawnRU_AttackVehicle:SpawnInZone( ZONE:New("Spawn Zone RU"), true)
 GroupUS_AttackVehicle = SpawnUS_AttackVehicle:SpawnInZone( ZONE:New("Spawn Zone US"), true)
end


--DBBlue:TraceDatabase()
SCHEDULER:New( DBBluePlanes, DBBluePlanes.Flush, {  }, 1 )
SCHEDULER:New( DBRedVehicles, DBRedVehicles.Flush, {  }, 1 )
SCHEDULER:New( DBShips, DBShips.Flush, {  }, 1 )
SCHEDULER:New( DBBelgium, DBBelgium.Flush, {  }, 1 )
SCHEDULER:New( DBNorthKorea, DBNorthKorea.Flush, {  }, 1 )
SCHEDULER:New( DBKA50Vinson, DBKA50Vinson.Flush, {  }, 1 )

SCHEDULER:New( DBBluePlanesGroup, DBBluePlanesGroup.Flush, { }, 1 )
SCHEDULER:New( DBNorthKoreaGroup, DBNorthKoreaGroup.Flush, { }, 1 )

DBRedVehicles
 :ForEachUnit( function( MooseUnit ) 
   DBRedVehicles:T( MooseUnit:GetName() )
 end )

local function FlushPlayers()

 _DATABASE:E( "FlushPlayers" )
 _DATABASE
   :ForEachPlayerAlive( function( Player )
     _DATABASE:E( Player )
     MESSAGE:New( Player, "Test", 5, "Player Test" ):ToAll()
     return true
   end )
 return true
end

_DATABASE:E( "Schedule" )
local PlayerShow = SCHEDULER:New( nil, FlushPlayers, {}, 1, 10 )

 

You can find the code reflected in a test mission for these new SET classes here:

 

https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Test%20Missions/Moose_Test_DATABASE

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Added lots of new functions to GROUP, basically all of the GROUP tasks and en-route tasks are now supported, as well the commands and options ...

 

- GROUP:TaskAttackGroup(AttackGroup, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit)

 

- GROUP:TaskAttackMapObject(PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack)

 

- GROUP:TaskAttackUnit(AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack)

 

- GROUP:TaskBombing(PointVec2, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack)

 

- GROUP:TaskBombingRunway(Airbase, WeaponType, WeaponExpend, AttackQty, Direction, GroupAttack)

 

- GROUP:TaskEmbarkToTransportAtVec2(Point, Radius)

 

- GROUP:TaskEmbarkingAtVec2(Point, Duration, EmbarkingGroup)

 

- GROUP:TaskEscort(EscortGroup, PointVec3, LastWaypointIndex, EngagementDistanceMax, <, FollowGroup, EngagementDistance, TargetTypes)

 

- GROUP:TaskFAC_AttackGroup(AttackGroup, WeaponType, Designation, Datalink)

 

- GROUP:TaskFireAtPoint(The, Radius, PointVec2)

 

- GROUP:TaskFollow(FollowGroup, PointVec3, LastWaypointIndex)

 

- GROUP:TaskHold()

 

- GROUP:TaskHoldPosition(Duration)

 

- GROUP:TaskLandAtVec2(Point, Duration)

 

- GROUP:TaskLandAtZone(Zone, Duration, RandomPoint)

 

- GROUP:TaskMission(TaskMission)

 

- GROUP:TaskOrbitCircle(Altitude, Speed)

 

- GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed)

 

- GROUP:TaskRefueling()

 

- GROUP:EnRouteTaskAWACS()

 

- GROUP:EnRouteTaskEWR()

 

- GROUP:EnRouteTaskEngageGroup(AttackGroup, Priority, WeaponType, WeaponExpend, AttackQty, Direction, Altitude, AttackQtyLimit)

 

- GROUP:EnRouteTaskEngageTargets(Distance, <, Priority, TargetTypes)

 

- GROUP:EnRouteTaskEngageUnit(AttackUnit, Priority, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, GroupAttack)

 

- GROUP:EnRouteTaskFAC(Radius, Priority)

 

- GROUP:EnRouteTaskFAC_EngageGroup(AttackGroup, Priority, WeaponType, Designation, Datalink)

 

- GROUP:EnRouteTaskTanker()

 

...

 

Not all of these functions have been tested yet, so if you find a bug, send me a ping on skype or slack.

Thanks

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Can some of these or any be applied to ground units like armour.

 

 

 

Yes. In the descriptions of the functions, there is an indication whether the task is for AIR, GROUND or both. Do you think it would be better if I name the functions having an indication for what category the task is?

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

This is great! Thanks!

 

Is there a way to unload troops?

 

When doing the embarking of troops, will the AI fly directly to the disembark location as given by the troops next waypoint, or is it possible to have them fly a different route. That is, is the loading/unloading done using the native DCS engine functions (which do not allow route customization: the AI flies directly to the disembark location) or some other?

 

Either way, your work is appreciated!

Link to comment
Share on other sites

This is great! Thanks!

 

Is there a way to unload troops?

 

When doing the embarking of troops, will the AI fly directly to the disembark location as given by the troops next waypoint, or is it possible to have them fly a different route. That is, is the loading/unloading done using the native DCS engine functions (which do not allow route customization: the AI flies directly to the disembark location) or some other?

 

Either way, your work is appreciated!

 

Hi, as we discussed on slack, there is a class hierarchy made in MOOSE that handles cargo and handles pickup-deployment of different cargo types (infantry, packages, sling-load, ...). Although things are working, i am not satisfied with what i've designed till now (it is a learning curve). For this reason, i have not publically released that code yet to the community to avoid people starting to use those classes and embedd them in their missions. Because i see a lot of rework coming up in the cargo area. Things can be better designed internally. For the moment, my development priorities are that i'm making core MOOSE classes that define the building blocks for the framework. These core classes will be used in MOOSE extensively later when the more complex classes will be designed, like handling cargo.

 

If you're interested, the classes that handle cargo are the PICKUPTASK and DEPLOYTASK classes, and have an internal workflow handler that orchestrate clients flying into pickup zones, picking up cargo and deploying it at deployment zones. But again, not satisfied with the design yet...

 

So, reading your text, what you want to happen is actually a complete workflow, with cargo handling and steering AI based on conditions.

 

A little patience, these things will come, but for now i am working on some nice internal design stuff, that is essential for good coding. These classes form the foundation for later more complex designs. A good foundation, and later things will become much more easy to make.

 

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Hi, as we discussed on slack, there is a class hierarchy made in MOOSE that handles cargo and handles pickup-deployment of different cargo types (infantry, packages, sling-load, ...). Although things are working, i am not satisfied with what i've designed till now (it is a learning curve). For this reason, i have not publically released that code yet to the community to avoid people starting to use those classes and embedd them in their missions. Because i see a lot of rework coming up in the cargo area. Things can be better designed internally. For the moment, my development priorities are that i'm making core MOOSE classes that define the building blocks for the framework. These core classes will be used in MOOSE extensively later when the more complex classes will be designed, like handling cargo.

 

If you're interested, the classes that handle cargo are the PICKUPTASK and DEPLOYTASK classes, and have an internal workflow handler that orchestrate clients flying into pickup zones, picking up cargo and deploying it at deployment zones. But again, not satisfied with the design yet...

 

So, reading your text, what you want to happen is actually a complete workflow, with cargo handling and steering AI based on conditions.

 

A little patience, these things will come, but for now i am working on some nice internal design stuff, that is essential for good coding. These classes form the foundation for later more complex designs. A good foundation, and later things will become much more easy to make.

 

Sven

 

+1 :)

 

Looking forward to it!

Link to comment
Share on other sites

Hi Im trying to give this a shot, but Im totally new to scripting.

 

Ive watched your video to set up eclipse, and I think I have it right, but I always get this error whenever I try to run or debug any script (even your example scripts)

 

Exception in thread "main" com.naef.jnlua.LuaRuntimeException: ... Test Missions\Moose_Test_CLEANUP\Moose_Test_CLEANUP.lua:1: attempt to index global 'Include' (a nil value)

at com.naef.jnlua.LuaState.lua_pcall(Native Method)

at com.naef.jnlua.LuaState.call(LuaState.java:585)

at org.eclipse.ldt.support.lua52.internal.interpreter.JNLua52Launcher.run(JNLua52Launcher.java:128)

at org.eclipse.ldt.support.lua52.internal.interpreter.JNLua52Launcher.main(JNLua52Launcher.java:148)

 

 

I tried to google it but I dont find anything useful

Link to comment
Share on other sites

Hi Im trying to give this a shot, but Im totally new to scripting.

 

 

 

Ive watched your video to set up eclipse, and I think I have it right, but I always get this error whenever I try to run or debug any script (even your example scripts)

 

 

 

Exception in thread "main" com.naef.jnlua.LuaRuntimeException: ... Test Missions\Moose_Test_CLEANUP\Moose_Test_CLEANUP.lua:1: attempt to index global 'Include' (a nil value)

 

at com.naef.jnlua.LuaState.lua_pcall(Native Method)

 

at com.naef.jnlua.LuaState.call(LuaState.java:585)

 

at org.eclipse.ldt.support.lua52.internal.interpreter.JNLua52Launcher.run(JNLua52Launcher.java:128)

 

at org.eclipse.ldt.support.lua52.internal.interpreter.JNLua52Launcher.main(JNLua52Launcher.java:148)

 

 

 

 

 

I tried to google it but I dont find anything useful

 

 

 

 

 

Ping me on skype and I'll help you.

 

FlightControl_Skype

 

 

 

 

 

Sent from mTalk on Windows 10 mobile

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Updated and released now also the MESSAGE class, allowing to send messages to Players part of a coalition, client or All players.

 

Module Message

 

This module contains the MESSAGE class.

1) Message#MESSAGE class, extends Base#BASE

 

Message System to display Messages to Clients, Coalitions or All. Messages are shown on the display panel for an amount of seconds, and will then disappear. Messages can contain a category which is indicating the category of the message.

1.1) MESSAGE construction methods

 

Messages are created with Message#MESSAGE.New. Note that when the MESSAGE object is created, no message is sent yet. To send messages, you need to use the To functions.

1.2) Send messages with MESSAGE To methods

 

Messages are sent to:

 

Global(s)

 

MESSAGE

Type MESSAGE

 

MESSAGE.ClassName

MESSAGE.MessageCategory

MESSAGE.MessageID

MESSAGE:New(MessageText, MessageDuration, MessageCategory) Creates a new MESSAGE object.

MESSAGE:ToAll() Sends a MESSAGE to all players.

MESSAGE:ToBlue() Sends a MESSAGE to the Blue coalition.

MESSAGE:ToClient(Client) Sends a MESSAGE to a Client Group.

MESSAGE:ToCoalition(CoalitionSide) Sends a MESSAGE to a Coalition.

MESSAGE:ToRed() Sends a MESSAGE to the Red Coalition.


Edited by FlightControl

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

I would love to incorporate your work on <51>SERVER but I feel very intimidated where to begin...

So far only following your YT video tutorials just to get accustomed a bit. I feel this is the future, keep doing your excellent work.

51PVO Founding member (DEC2007-)

100KIAP Founding member (DEC2018-)

 

:: Shaman aka [100☭] Shamansky

tail# 44 or 444

[sIGPIC][/sIGPIC] 100KIAP Regiment Early Warning & Control officer

Link to comment
Share on other sites

I would love to incorporate your work on <51>SERVER but I feel very intimidated where to begin...

 

So far only following your YT video tutorials just to get accustomed a bit. I feel this is the future, keep doing your excellent work.

 

 

 

 

 

Don't feel intimidated. It is a normal feeling when you start with a new language or a new class system.

 

To be honest, it has taken me years to get where the system is now. So the key is step by step.

 

 

 

I suggest you do the following (like the others do):

 

 

 

1. Watch carefully the videos on how to setup you system. The last video in this thread is the one to watch. Take your time to install java, install eclipse, setup GitHub desktop, sync'ing the moose repository to your machine.

 

 

 

2. Start with a small mission. There are test missions that you can study. Suggest you have a look at SPAWN. It is fun and you'll learn the object oriented way.

 

 

 

3. Read carefully how to start a first mission. Learn how to include Moose.lua. It is in the video.

 

 

 

4. Ping me on skype: My id is: FlightControl_Skype

 

 

 

5. Send me you email, so that I can invite you at slack.com, a developer chat and communications area, to discuss code etc. Our MOOSE channel is getting popular, meaning, others will be able to assist you also with questions.

 

 

 

6. I plan to arrange also integrated training using TeamViewer from time to time... So people joining van do a Q&A.

 

 

 

7. I am also learning Russian, so you can help me ☺

 

 

 

hope this helps,

 

Sven

 

Sent from mTalk on Windows 10 mobile

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

For all clarity, this is the video to watch:

 

 

 

[ame]https://m.youtube.com/watch?v=-Hxae3mTCE8[/ame]

 

 

 

Sent from mTalk on Windows 10 mobile

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

That's amazing!

 

Why is MOOSE not included in the DCS Scripting engine documentation? It's a lot better then some of the other frameworks out there.

 

 

 

http://wiki.hoggit.us/view/Simulator_Scripting_Engine_Documentation

 

 

 

Hi xcom, thanks for your message.

 

 

 

Time will learn. For the moment I suggest a couple more months fine tuning it, so that it is ready for a larger release. The framework is growing not only in functionality, but also in its users.

 

 

 

We're getting experience together with the early adopters. The challenge is not the framework (functionality and development) itself, because that is okay. Having a nice framework is one, being another is make it understandable by the users and getting it to be used properly is another. But we're getting there...

 

 

 

As more people start using it, more info on insights can and will be shared.

 

 

 

I leave it up to hoggit, the moderators or ed to evaluate of this framework makes sense enough to promote it...

 

 

 

I am just a guy finding dcs world being a fantastic simulator that deserves a good framework... Of course, such does not get built in a few days... Time is our friend.

 

 

 

Sven

 

Sent from mTalk on Windows 10 mobile

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...