Jump to content

DML - Mission Creation Toolbox [no Lua required]


Recommended Posts

16 hours ago, Hellfire said:

Can you not set the properties for attackingTime defendingTime etc. differently for each zone? I was thinking that the Config zone was for setting the defaults for whatever properties globally, and then you could set the property differently for each zone if you included it in the owned zone itself. No?

Indeed, ownedZones is slated for an overhaul. I'm currently thinking about giving the zones the ability to individually override the defending and attacking timers. I'm thinking about divorcing the production from owned zones, splitting them into 'production' zones and 'owned' zones, making their functionality more orthogonal.

16 hours ago, Hellfire said:

it's not going to fall because the tank can't see the extra static targets

Statics do not count as enemies. They are ornaments: they have no AI, will not fight back, and therefore are disregarded for the purpose of determining zone ownership. That's pretty much in line with DCS behavior.

16 hours ago, Hellfire said:

Hoping that the properties issue is bugged and not planned.

My apologies for being a bit dense. Which properties appear to be bugged with owned zones?

16 hours ago, Hellfire said:

Persistence is bugging for me on this mission on it's first write.

If you give me a screenshot in when something like that happens, I can react much faster. I'll have a look and come back.

 

16 hours ago, Hellfire said:

Almost forgot. There is a way to disable the GUI error popup screen so that it doesn't disrupt the running of the sim

Yes. But as developer I heavily depend on being able to suspend the mission while I note down the error and look it up in the code and other people to make a screenshoot and send it to me - so I think it's a godsend.  All other debugging options in DCS are closed off (there is no real IDE, everything is done oldschool, it makes me almost re-live my time when I was writing RPG-2 programs on an IBM /360 with punch cards). 

Link to comment
Share on other sites

17 hours ago, Hellfire said:

Persistence is bugging for me on this mission on it's first write. Curious if you get the same, if so just remove from mission.

Confirmed. It was a bug in OwnedZones (of course 🙂, that module desperately needs an overhaul), triggered under certain conditions when the conquered! attribute wasn't set. Corrected (see below), and will also be part of the next update.

 

DML-TEST6cf.miz cfxOwnedZones.lua

Link to comment
Share on other sites

On 11/11/2022 at 5:23 AM, cfrag said:

Statics do not count as enemies. They are ornaments: they have no AI, will not fight back, and therefore are disregarded for the purpose of determining zone ownership. That's pretty much in line with DCS behavior.

I meant static as in not spawned or moving, it's a real unit.

On 11/11/2022 at 5:23 AM, cfrag said:

My apologies for being a bit dense. Which properties appear to be bugged with owned zones?

The part about not being able to set the properties different for each zone.

On 11/11/2022 at 5:23 AM, cfrag said:

If you give me a screenshot in when something like that happens, I can react much faster. I'll have a look and come back.

Seeing is believing and it is in the miz file I attached. You have said that before and it was on my mind but I think (slept since then) there was a reason to send the miz file. If you ran the miz file it should have failed, if it didn't then hmm?

On 11/11/2022 at 5:23 AM, cfrag said:

Yes. But as developer I heavily depend on being able to suspend the mission while I note down the error and look it up in the code and other people to make a screenshoot and send it to me - so I think it's a godsend.  All other debugging options in DCS are closed off (there is no real IDE, everything is done oldschool, it makes me almost re-live my time when I was writing RPG-2 programs on an IBM /360 with punch cards). 

Hmm? You must be turning it on because I have been doing some MOOSE stuff today and the errors are not popping like they do in DML. I thought maybe my new setup here was causing this. I run a logger that watches the DCS.log file and monitors for ERROR SCRIPTING: . The problem with popping the errors up like that is I have had to outright kill DCS from task manager to clear an error. Recommend variar/klogg: Really fast log explorer based on glogg project (github.com)

Link to comment
Share on other sites

As I have worked with DML I have collected a potpourri of questions.

Have you established a DML best practices for color coding the zones?

Will you be supporting MOD type objects. Currently everything has to be an object in MrSkortch objdb but what about stuff like CivAirMod https://filehorst.de/downloadQueue.php?file=eAeaycBI&fhuid=Xj7SFrWhVuxfsWvfYknS4AZPYTa7c1N9 or other mods?

How did you discover using the trigger properties and the birth of DML?

How are the trigger zone properties accessed in the ME or from scripting? 

Have you requested for DCS to modify trigger menu? 
    Needs:
    Expandable horizontally
    Expandable property area vertically
    Tabbing between all the fields IN ORDER! 

 


Edited by Hellfire
Link to comment
Share on other sites

On 11/13/2022 at 8:17 PM, Hellfire said:

Have you established a DML best practices for color coding the zones?

Yes. I use yellow for config zones 🙂 - I'm not an advocate of strict color-coding. Use whatever feels natural for you.

On 11/13/2022 at 8:17 PM, Hellfire said:

Will you be supporting MOD type objects.

Supporting DCS is difficult enough, and I'm hesitant to introduce additional dependencies. One of the modules supports SSB, which is not canonical DCS.

On 11/13/2022 at 8:17 PM, Hellfire said:

How are the trigger zone properties accessed in the ME or from scripting? 

All trigger zones attributes are accessed with the cfxZones module that all other modules require to function.

On 11/13/2022 at 8:17 PM, Hellfire said:

How did you discover using the trigger properties and the birth of DML?

It was more or less by accident when I was using trigger zone names to pass information to my scripts. It took me a day or so, but by analyzing the .miz files I managed to decipher trigger zone attributes. A few minutes later I clued in to the fact that I had discovered something big: write modules that you can configure inside ME. This would enable Mission Designers to blindly use these modules without ever having to touch Lua, and they were able to use a GUI editor. Two major steps forward. DML emerged from there. When I engineered DML's input/output method, it transcended a support library and became viable mission design tool by itself. DML still has some vestiges of a classic Lua support engine (a la the great Mist and Moose libraries), and works very well for anyone who wants to use Lua - but DML is now focusing on being fully usable without Lua: not as broad in scope, but much better in usability.

Link to comment
Share on other sites

Version 1.1.10

Maintenance Update 

This update brings a number of small enhancements and bugfixes, most of them under the hood. The most important change is that DML now consistently supports quad-point-based zones. The biggest omission was that DML's Zone library did not fully support quad-based zones: it could not reliably generate a random point inside the polygon. As a result, cloneZones's randomized spawns did not correctly support polygonal spawn zones either.

After a particularly frustrating re-read of my Analytic Geometry books from high school I realized that I was overthinking the problem, and came up with lightning fast and reliable way to create random points inside a polygon. This I then folded back into DML's zone handling library, and now DML's handling of polygonal zones make them full citizens.

And yes, when you now randomly spawn spawn units inside a polygonal trigger zone, all units reliably distribute over the surface of the zone, and all stay inside the zone.

image.png

Currently I'm working on a possibly big new addition to DML: adding the ability to pass more than integers with flags. This work is entirely experimental, and will work on top of ME, and only in the context of DML and scripts that use DML. And it may not work at all. Currently, I'm merely exploring an extension to DCS's all too limited flags, and it'll be interesting to see if it works - and how it would integrate with DML. The enhanced flags I tentatively named 'Semaphores', for obvious (I hope) reasons.

The majority of other changes involve maintenance and bug fixes.

 

Changes

Documentation
    Main
        - Circular vs. Quad-Point zones - more elaboration

Modules
    Owned Zones 1.2.3
        - fixed a bug relating to persistence 
    
    cfxZones 1.9.2
        - quad-point zone support across the board
        - random point in zone  
    
    cloneZones 1.6.1
        - spawning in polygonal zones 
        - added support for cloned task "search and engage"
        - added support for new task 'Recovery Tanker'
        - rndLoc spawn: removed erroneous offset
        
    dcsCommon 2.7.10
        - semaphore groundwork (experimental)
    
    messenger 2.1.1
        - (cosmetic only) output suppressed if no text to avoid line in display
        
    persistence 1.0.5
        - slightly improved sanity checks in readConfig 
    
    radioMenu 2.0.1
        - corrected bug in installMenu for Groups (nod to @GumidekCZ for providing the fix)
 

Enjoy,

-ch

  • Like 2
  • Thanks 5
Link to comment
Share on other sites

  • 2 weeks later...

First of all I must say that I'm really impressed with DML, the documentation is well done and even funny to read. Great work!!!

Background: I'm trying to set up a busy airfield to start from. So I use clone zones to create a random number of random types of AI aircraft that gets spawned by clone zones . However I wan't to delay the AI aircraft from taking off at the same time. Sort of combining the Clone Zone with the Impostor or using the "UNCONTROLLED" option in the ME and later randomly activate each group again. Is this possible?

If I just use the "spawn?" of Clone Zone at different times, I would get the effect of empty parking slots suddenly become populated. This would really look strange if you're sitting in the cockpit.

I guess that the Impostor looks for units at mission start and not later when "impostor?" fires and thus cannot be used together with Clone Zone?

Link to comment
Share on other sites

46 minutes ago, jonfog said:

I'm trying to set up a busy airfield to start from. So I use clone zones to create a random number of random types of AI aircraft that gets spawned by clone zones . However I wan't to delay the AI aircraft from taking off at the same time. Sort of combining the Clone Zone with the Impostor or using the "UNCONTROLLED" option in the ME

That could work. For simplicity, I‘d use the impostors for a select few controlled aircraft in fixed locations (just like you suggested) and then use a sequencer to start one aircraft after another, and use a cloner to only randomly spawn ‚filler‘ static aircraft all over the airfield. That way, the airfield always looks slightly different, while the traffic is done by the same aircraft.

On 12/2/2022 at 3:45 PM, Badass1982 said:

 

Is there any way to make DML persist groups/statics that are created by CTLD/CSAR

 

CTLD currently has no interface with DML, so DML doesn’t know about anything that CTLD spawns. I was thinking about some CTLD persistence glue for DML, but those ideas haven’t even reached concept stage yet.

Link to comment
Share on other sites

6 hours ago, cfrag said:

That could work. For simplicity, I‘d use the impostors for a select few controlled aircraft in fixed locations (just like you suggested) and then use a sequencer to start one aircraft after another, and use a cloner to only randomly spawn ‚filler‘ static aircraft all over the airfield. That way, the airfield always looks slightly different, while the traffic is done by the same aircraft.

CTLD currently has no interface with DML, so DML doesn’t know about anything that CTLD spawns. I was thinking about some CTLD persistence glue for DML, but those ideas haven’t even reached concept stage yet.

Please let me know if you figure it out because that is the last thing missing from my missions (being able to have both CTLD and CSAR Units and Statics persist across server restarts).

Link to comment
Share on other sites

  • 3 weeks later...

Is it possible to get more than 4 items out of the radiomenu? And it is it possible to make a radio tree?

I.e. 

itemA: A-A
itemB: A-G

When is A is pressed to present another radio menu with:

itemA: DCA (perhaps call it itemAA)
itemB: OCA
itemC: BFM

 


Edited by Sinclair_76
Link to comment
Share on other sites

The design of radio menus currently installs one top-level menu, with up to four items max. The limit to 4 items was an arbitrary decision, made from pure lazinesson my part 🙂 -- raising the limit to more is possible code-wise but tedious to implement for me (hence the lazy part). I experimented with a more flexible structure (assembling menus from other radio menu zones and referencing zone names) but that got very, very un-intuitive and user hostile, so I abandoned that design. Radio Menu's design goal was ease of use for quick and easy access to user control for flags. 

And if you have suggestions on how to improve radio menus, I'll gladly give it a shot 🙂

 


Edited by cfrag
  • Like 1
Link to comment
Share on other sites

3 hours ago, MK84 said:

is there a way to set it to ignore certain units?

Interesting idea. Currently not, but certainly doable. Do you have a use case where this would be desirable? Where a restored (loaded) game differs from the saved game by a number of specific units/groups? This could be a nice addition, but I don't understand it's use (yet) 🙂 


Edited by cfrag
  • Like 2
Link to comment
Share on other sites

9 hours ago, cfrag said:

Interesting idea. Currently not, but certainly doable. Do you have a use case where this would be desirable? Where a restored (loaded) game differs from the saved game by a number of specific units/groups? This could be a nice addition, but I don't understand it's use (yet) 🙂 

 

Currently I use it together with MOOSE and it could be useful for the persistence module to ignore units dynamically spawned by MOOSE and other units that doesn't require persistence. Perhaps it can ignore units with certain prefix?


Edited by MK84
Link to comment
Share on other sites

14 hours ago, MK84 said:

it could be useful for the persistence module to ignore units dynamically spawned by MOOSE

In that case, you are already home 🙂 DML doesn't know about units spawned by MOOSE and therefore does not persist them. If you want DML not manage any units that you placed with ME (and have MOOSE handle that instead), simply omit the unitPersistence module.

 

Link to comment
Share on other sites

17 hours ago, cfrag said:

In that case, you are already home 🙂 DML doesn't know about units spawned by MOOSE and therefore does not persist them. If you want DML not manage any units that you placed with ME (and have MOOSE handle that instead), simply omit the unitPersistence module.

 

I have some units managed by MOOSE and some managed by another script (using late activation). Running into issues with the latter where some of the waypoint actions went a bit haywire where units returned to waypoint 0/1 and sometimes previous waypoint actions was not inherited.

Link to comment
Share on other sites

16 hours ago, Hairdo1-1 said:

recon mode, it will show me the target info once but I can’t find a way to recall it.

There currently are two ways to recall that information:

- when a group is detected, Recon mode places a small circle on the F10 map at the location that the recon pilot reported.

image.png

If you click that circle, the entire message (minus co-ordinates) is displayed:

image.png

And of course, you can always access the entire Message History, where you'll also find the full text of the report:

stupid null 

image.png


Edited by cfrag
Link to comment
Share on other sites

On 12/20/2022 at 3:18 PM, cfrag said:

And if you have suggestions on how to improve radio menus, I'll gladly give it a shot 🙂

I will think about it. But I am not a programmer so any ideas on my side will probably create tons of work for you.

I have another request. Currently I have a system in place to create semi random targets for CAS missions supported by in game AI JTAC's. For now this works but the thing that bugs me is that I have to pre create every possible clone in size and formation. I was wondering if it was possible to add a poll size to clonezone attributes? Or maybe just a RND/POLL string as the source attribute (RND is already there in comma separated multiple sources but the POLL isn't)

If that were the case I could spawn a single vehicle with a limited size moving zone within a large area clone zone. Via sequencer I could then clone a random size group (depending on poll amount) in random spots within the limited clone zone as to not have them scatter the units all over the large zone.

image.png

Link to comment
Share on other sites

8 minutes ago, Sinclair_76 said:

I have another request. Currently I have a system in place to create semi random targets for CAS missions supported by in game AI JTAC's. For now this works but the thing that bugs me is that I have to pre create every possible clone in size and formation. I was wondering if it was possible to add a poll size to clonezone attributes? Or maybe just a RND/POLL string as the source attribute (RND is already there in comma separated multiple sources but the POLL isn't)

An interesting idea! At first blush (since officially I don't want to replicate existing functionality, and inofficially because I'm lazy 🙂 ) I'd try a slightly different approach that should work with DML right now:

  • Set up multiple cloner templates consisting of single-or multiple vehicles somewhere out of place. These will be the various targets that the main CAS cloner puts on the map. The templates themselves are removed when the mission starts, so they won't bother you or clutter the map. 
  • The main CAS cloner uses the templates in its "source" attribute. It automatically chooses one by random each time it receives a signal on the clone? input
  • Set the rndLoc attribute of the CAS cloner so the template is placed somewhere inside the CAS zone. Set 'wholeGroups' to true, so if your templates contain more than one unit they remain in their relative positions. Having the CAS cloner move by following a unit is a nice idea that should work if you use DML's linkedUnit attribute (DML currently done not yet support the new 'LINK UNIT' field that was introduced but not documented in the last patch, and that I'm researching right now.
  • And now to randomize the number of spawns: Add a pulseFlag module, set the pulse! to the CAS cloner's input, and the number of pulses to a range (e.g. 1-5). This will cause the pulser to generate 1 to 5 pulses that all go to the CAS cloner - causing it to run through a clone cycle each time it receives an input. Additionally, you can tell the pulser to randomize the time between pulses with the 'time' attribute (give it a range like "3-10") if you want to keep to the follow a unit idea. Personally, I'd try this as a second stage if the results aren't quite what you wanted before you do this. It adds another (third) level of indirection/randomization that can make it difficult to debug.

That way you can not only randomize the number of spawns, but also (by using different templates) randomize the targets, and their locations.

Does that work for you?

Cheers,

-ch

Link to comment
Share on other sites

5 hours ago, cfrag said:

An interesting idea! At first blush (since officially I don't want to replicate existing functionality, and inofficially because I'm lazy 🙂 ) I'd try a slightly different approach that should work with DML right now:

The pulseFlag mod works as you described. The extra clones in type and amount is completely random.

 

5 hours ago, cfrag said:

Having the CAS cloner move by following a unit is a nice idea that should work if you use DML's linkedUnit attribute (DML currently done not yet support the new 'LINK UNIT' field that was introduced but not documented in the last patch, and that I'm researching right now.

Just to confirm. The linkedunit attribute does not yet work? When I clone a unit with a linkedunit attribute in the zone, the unit clones however the zone stays in it's original position and does not clone with the cloned unit.


Edited by Sinclair_76
Link to comment
Share on other sites

2 hours ago, Sinclair_76 said:

Just to confirm. The linkedunit attribute does not yet work?

Just to make sure we don't misunderstand each other. Every DML zone (and therefore every module, including cloners) understands the 'linkedUnit' attribute that makes the zone follow in many cool ways a unit, as described in section 4.4.1.3 of the DML manual. For this you use an attribute and the unit's name. cloners should support that right now.

The most recent version of DCS has a new, currently unsupported "LINK UNIT" feature with a drop-down menu that may in the future allow you to link a unit to a zone. It looks like this

stupid null

image.png

DML will support this soon, probably before DCS itself officially supports it. But not now.

So if you are seeing something else, I screwed up and will have to investigate.


Edited by cfrag
Link to comment
Share on other sites

1 hour ago, cfrag said:

Just to make sure we don't misunderstand each other. Every DML zone (and therefore every module, including cloners) understands the 'linkedUnit' attribute that makes the zone follow in many cool ways a unit, as described in section 4.4.1.3 of the DML manual. For this you use an attribute and the unit's name. cloners should support that right now.

The most recent version of DCS has a new, currently unsupported "LINK UNIT" feature with a drop-down menu that may in the future allow you to link a unit to a zone. It looks like this

stupid null

image.png

DML will support this soon, probably before DCS itself officially supports it. But not now.

So if you are seeing something else, I screwed up and will have to investigate.

 

Hence the confirmation 😉

 

When I link a zone to a to be cloned unit, the source, and I clone it somewhere on the map. The linked zone does not move, it stays in the original position.

I've uploaded a mission to demonstrate. Observer is in a F-16 at Tbilisi-Lochini airport. Pushing flag 1 via radio /other will clone a T-55 (from Crimea) to the airport. Pushing flag 2 (as well via radio) should clone a ZBD-04A to within 100' of the T-55. But actually the linked zone (L1) stays in its original position and the ZBD clones in the center of the L1 zone. 

Hope you can help!

edit made some mistakes in test.miz, test2.miz should be correct

 

 

test2.miz


Edited by Sinclair_76
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...