Jump to content

DML - Mission Creation Toolbox [no Lua required]


Recommended Posts

Version: 2.1.0 - 20240307

Download: Here

Documentation: Here (also part of download)

How To: Download & Unzip. RTFM. Try the demos (all demo missions have their own chapter in the Doc) Have Fun (mandatory)! 

Video Tutorials: Here

DML 

A Toolbox For Mission Designers

  

What?
DML is a mission-building toolbox. It contains many modules that all can do something for you. It’s built similar to a box of LEGO® bricks – you seldom need all, and you can start having fun building stuff knowing just the basics and using just a few.

Here are some examples:

  • Do you want to add a moving NDB to a ship? Just add the NDB module
  • Want to keep kill scores? Add the PlayerScore module.
  • How about dynamically spawn troops when you need? Look at Cloners.
  • Your mission needs random civilian traffic? Check out Civ Air.

Even better, DML does not require Lua.

How does it work?
At its heart are modules that attach themselves to Mission Editor’s (ME) Trigger Zones to provide new abilities. Mission designers control these new abilities from within ME by adding ‘Attributes’ to these Trigger Zones.

image.png

For example, when you add above attributes to a trigger zone, the “cfxNDB” module automatically activates for this zone, and starts an NDB at the zone’s center at 121.5 MHz, playing the “distressbeacon.ogg” sound file on that frequency.

Through this simple mechanism, adding complex new abilities to missions becomes a snap (or, at least, much easier). Since you control DML from inside ME, you do not have to mess around with Lua scripts – all DML modules take their run-time data from Trigger Zone attributes. You edit those in ME: Trigger Zones already have attributes, editing them is built into ME. If you have ever created a Trigger Zone, you have already seen ME’s zone attributes. You likely ignored them because they have had little practical use. Until now. We’ll use zone attributes to put DCS mission creation into super-cruise.

DML can reduce advanced tasks (such as adding CSAR missions) to placing trigger zones and adding attributes.

If that isn’t enough, DML modules can be triggered with ME flags, and can set ME Flags when they activate. For example, spawn zones can be instructed to watch flag 100, and spawn every time when that flag changes its value. Other modules can be told to increase a Flag (e.g., 110) every time they activate. This allows you to integrate the modules in your normal ME mission design workflow without having to resorting to outside means.

image.png

As a significant expansion to classic mission design, DML supports named flags, i.e. flags that have names like ‘bunker destroyed’ rather than a number (like 1234) that ME permits. This feature is only available between DML modules (and shared with all Lua scripts)

image.png

If a module requires configuration data, it starts up with default values, and then looks for a – surprise! – Trigger Zone that might contain the attributes that you want to change for this mission. You configure your modules from within ME – you never change a single line of code.

image.png

DML has something in store for every mission designer – novices and veterans alike. 

This would be the perfect moment to try the first of the many demos that come with DML – so if you want to know what this is all about, just look at the first demo mission (in the zip) and find out!

Show me!
Let us look at a real-life DML-enhanced mission:

image.png

 

Note the five Trigger Zones on the map (follow the unobtrusive red arrows). As mentioned, DML uses ME Trigger Zones and attaches its own modules to them. That way, mission designers can simply place new functionality by adding standard Trigger Zones to the map - without requiring any Lua. You then add a few attributes to the Trigger Zone, and DML’s modules home in on them automatically.

Above screenshot was taken from my “Integrated Warfare: Pushback”, a mission that uses DML to dynamically create ground forces and that require the player’s air support to win. On the map, I placed various zones to

  • Add conquerable zones (“Wolf Crossing”, “Bride’s Bridge”, “Highroad”) – these are zones that, when captured by blue or red, automatically produce ground forces that defend the zone against invaders and seek out and capture other conquerable zones
  • Control civilian air traffic (“Traffic: Civilian”)
  • Control AI’s pathing for ground forces (“pathing off”)

All zones use simple, ME editable attributes (like “pathing”, “offroad”) to tell DML what to do. In the end, writing such a mission amounts to just a little more than placing zones and adding attributes. After all, the trick is coming up with a good mission idea – putting it together should be easy. With DML it may have become a bit easier.

image.png

Behind the scenes, DML also provides a collection of Foundation modules that lack ME integration. These modules are DML internal and provide shared functionality for all other modules. 

What's in the box?
So, what’s in DML right now? In a nutshell here’s what you get:

  • Drop-in Modules (no Lua knowledge required) that add complete functionality to a mission – for example
    • Easily enforced PvE rules with PvP Zones (multiplayer)
    • CSAR Missions
    • Limited number of pilots (ties in with CSAR Missions)
    • Civilian Air traffic
    • Automatic Recon Mode
    • Slot Blocking Client ("SSB" or "slotblock"-based) for preventing spawns on enemy airfields
    • Protection from missiles
    • Helicopter Troop Pick-up, Transport and Deployment
    • Score Keeping
       
  • Zone Enhancements that interactively attach new functionality to Zones in ME (no Lua required). They provide diverse functionality such as
    • Flag Randomizers and Flag Pulsers so you can completely randomize troop activation and spawning
    • Dynamic Ground Troop Spawning and Cloning
    • Dynamic Object/Cargo Spawning
    • Artillery Target Zones
    • Conquerable Zones and FARPS
    • (moving) NDB, land and sea
    • Map/Scenery Object destruction Detector 
       
  • Persistence – players can save a mission and then later continue it (within the confines of DCS’s limitations)
  • An interactive Debugger that allows you to examine, set and observe any flag, and allows you to place and remove units on the map while the mission is running

     
  • Multi-player supported out-of-the-box. All modules work for single- and multiplayer missions, including modules with user interaction via communications.
     
  • A collection of fully documented Tutorials / Demos that serve to illustrate how the more salient points of DML can be used to quickly create great mission. They aren’t flashy. They hopefully are helpful instead.
     
  • A hefty Manual that I can lord over you and yell “RTFM” whenever you have a question. Yup, that’s definitely why I wrote it.

Of course, this is just the beginning – DML is far from complete, and there are lots of new avenues to explore. Based on feedback, I expect DML to evolve, and to add new and exciting abilities. Until then, I hope that you enjoy the ride!

-ch

... and here's a short tutorial on how you import DML's modules into your mission

 

image.png


Edited by cfrag
  • Like 10
  • Thanks 20
Link to comment
Share on other sites

New Version 0.95 - 20220120

Stick a fork in it! A project needs proper infrastructure, and I've moved DML to a publicly accessible location so anyone can use proper CVS to synch changes. And I've added a new module (NDB - a movable NDB zone). Please see the change log below. Link in OP replaces download.

0.95 - "Helo Troops and NDB" -- 20220121

Main Features

  • doc:
    • Helo Troops module description 
    • NDB module description 
    • Helo Trooper demo description 
       
  • demos
    • "Helo Trooper" demo
    • "ADF and NDB fun" demo 
       
  • modules
    • HeloTroops: 2.1.0 (update)
      • config zone 
      • better validation for spawners with request 
      • updated types to include new infantry 
    • NDB: 1.0.0 (new)
      • initial version 

    Small Updates (modules)

  • GroundTroops 1.7.4
    • verbose flag, suppressing debug messages
  • dcsCommon 2.5.1
    • also recognizes SA-18 Igla Comm as infantry
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

This is amazing work!! 

Very nice job on making a mission development kit that works within the ME and is also able to be extended with extra scripting using the same API.

And I especially appreciate the great job on the RTFM and demo missions as both are extremely useful to quickly learn the tool.


Edited by AMBUSH
Link to comment
Share on other sites

Thanks for sharing, seems like a really useful toolset, I will study its doc and test the demos, to learn how to use it 👍

  • Like 1

 

For work: iMac mid-2010 of 27" - Core i7 870 - 6 GB DDR3 1333 MHz - ATI HD5670 - SSD 256 GB - HDD 2 TB - macOS High Sierra

For Gaming: 34" Monitor - Ryzen 3600X - 32 GB DDR4 2400 - nVidia GTX1070ti - SSD 1.25 TB - HDD 10 TB - Win10 Pro - TM HOTAS Cougar - Oculus Rift CV1

Mobile: iPad Pro 12.9" of 256 GB

Link to comment
Share on other sites

New Version: 0.96 - 20220127

Feature Update

Yes, Virginia, there is a Santa Claus... Flag Randomizer and Flag Pulsers are here, driving ME integration to new heights! So if you are looking for an easy way to randomize your missions, check out the "Random Glory" and "Random Death" demo missions, then inspect them from within ME and try not to smile. Both missions more than make up in design power for what they lack in panache. Please remember to read the accompanying documentation for the miz in the big bad doc. Oh, and then have a look at the "Pulsing Fun" demo miz. 

image.png

Soooo ... allow me to introduce your new best friend: Flag Randomizer. You give it a bunch of flags (here flags 1-10 and 30-32), and a poll size (here 1-3), and when you say so, it will first randomly choose poll size, and then pick that many flags from your set and change them. This thing has more random options that you can shake a bucket of dice at, with ME integration to boot. 

image.png

And now meet Randomizer's strange cousin, Pulser. They like each other a lot, even though Pulser's main job seems to be to kick randomizer into doing something. Repeatedly. Use it to stagger your mission deployments in unpredictable ways.

image.png

And of course there have been other changes and additions. For many modules, ME integration has been significantly beefed up, adding flag detection and flag setting abilities.

Release Main Features 

  • Documentation 
    • rndFlags documentation 
    • rndPulse documentation 
    • Random Glory demo documentation
    • Random Death demo documentation 
    • ADF and NDB fun mission description
    • FARP documentation completed 
       
  • Demos
    • "FARP and away" demo
    • RND Glory demo
    • RND Death demo 
    • Pulsing Fun demo 
       
  • Modules    
    • RNDFlag: 1.0.0
      • initial version 
    • pulseFlag : 1.0.0
      • initial version
    • FARPZones: 1.1.0
      • Config Zone 
      • rFormation Attribute 
    • NDB: 1.1.0
      • on?, off?, paused attributes
      • API for Lua 

Other

  • cfxZones 2.5.2
    • getPoint() write-though of point (performance)
    • new getPositiveRangeFromZoneProperty()
  • dcsCommon 2.5.2
    • new copyArray method
    • corrected heading bug in createStaticObjectData
  • cfxSpawnZones 1.5.2
    • activate?, pause? attributes
  • cfxObjectSpawnZones 1.1.4
    • activate?, pause? attributes
  • smokeZones: 1.0.5
    • paused attribute 
    • f? attribute to start smoke 
  • cargoSuper 1.1.1
    • corrected index in deleteMassObject
    •  

Enjoy,
-ch

 


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

Version 0.97 - 20220203

Feature Update: Send in the CloneZ!

DML just took another big step: clone zones are here! They can massively cut down both mission design time and in-game performance demands. Clone zones "simply" copy groups - DML style: all over the map, with built-in randomization support, and support for ME flags to the hilt. 

image.png

If you team clone zones with DML's randomizers and the new delayFlag module, setting up heavily randomized missions becomes, well, much less annoying. Be sure to read the 'Attack of the CloneZ' demo mission discussion, as it will give you a notion of just how much easier your design task has just become. Then read the module description for more insight. 

But beware: cloners are simple to use, fun, and so powerful that they will tempt you to do truly horrible things - try to resist... No, cloning the Roosevelt into a lake or onto a mountain top is neither original nor a good idea.

image.png

And yes, clone zones will do that for you in a heartbeat. 

So here's a brief summary how clone zones work:

  • place a cloner over any group, and the module marks the group as a 'template'
  • then place cloners anywhere, and tell them which template to spawn 

image.png

And run the mission.

image.png

... yup, that's it. Yeah, any group: ground, aircraft, helicopter, ship. Heck, even multiple groups. Including their routes. "Cloner don't care". Cloners are that easy to use. 

For a really good time, wire cloners up to randomizers, pulsers, timers, or any flag in ME to control how, when, and why cloners activate. Sit back, and enjoy the fireworks.

"With great power comes..."
Because cloners are easy to use and spawn on-demand, they allow you to do away with most deactivated units all over the map - simply activate a cloner when they are needed. This dramatically cuts down unit proliferation and mission planning during your ME phase.
Unfortunately, because using cloners is so easy, you will constantly have to resist the urge to spawn forces willy-nilly, simply because you can. Be especially careful if you wire a cloner into a feedback loop (as is carefully demonstrated in the "Attack of the CloneZ" demo). Be advised: DCS is fast. Try not to find out what "exponential growth" means when you are populating your map with clones.

image.png

Changes in this version:

Documentation
    - cloneZones module documentation  
    - Attack of the CloneZ.miz documentation 
    
Demos 
    - Attack Of the CloneZ.miz 

Modules
    - cloneZones 1.0.0
    - cfxMX 1.0.0
    - delayFlag 1.0.0
    - cfxOwnedZones 1.1.1
        - conq+1 flag 

Other 
    - dcsCommon: 2.5.3
        - rotateGroupData corrected (cy vs cz)
    
    - cfxZones: 2.5.4
        - getZonePorperty cosmetic clean-up 

 

Enjoy,

-ch


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

Version 0.975 - 20220210

Feature Update: Count me in!

Counters... incredibly unspectacular, incredibly useful. You need them in your daily mission designs (well, only if you design missions daily, but you know what I mean), but you probably just don't know it yet. DML's newest addition is a counter (or rather, a count-down module) that comes with lots of options, all geared towards mission design (flag handling): want something to happen after a plane was shot down 3 times? Count down is your friend. Want a cloner to spawn exactly 6 times, but no more? Count down is your friend. Want something to happen every fifth time something other happens? Who you gonna call? Right.

 

image.png

 

Walk through the demo "Once, twice, three times maybe.miz", and read the demo's docs. Then use it in your own mission. 

image.png

Then Smile (capital "S").


Oh yeah, some other modules also received some touch-ups, some by request. Nothing major. Please see below.


CHANGES

Documentation

  • countDown documentation 
  • Once, Twice, three times maybe (count down) demo doc 
  • updated CloneZone documentation
  • various clarifications, updates for changes
  • updates Attack of the CloneZ demo doc

Demos 

  • Once, twice three times maybe 

Modules

  •     - countDown 1.0.0
  •     - cloneZone 1.1.0 
    • support for static objects
    • deSpawn? flag 

Other 

  • dcsCommon: 
    • new rotateUnitData()
    • new randomBetween() 
  • cfxZones: 2.5.5
    • new pollFlag()
    • new allStaticsInZone() 
  • delayFlag 1.0.2
    • pollFlag, spelling corrections
  • pulseFlag 1.0.1
    • fixed pause mode - removed scheduled function 
  • cfxMX: 1.0.1
    • new getStaticFromDCSbyName()

Enjoy,

-ch

 

image.png


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

Version 0.98 - 20220217

Feature Update: Messenger & delayFlag

This week's highlight is the messenger module, which is a much more convenient way of putting text and sound into a mission than triggers or Lua's trigger.action.outText(). 

image.png

 

Another highlight is a fully-fledged training mission "Frog Men Training" that not only restores much-needed love to our neglected Su-25T, but also serves as a good use case for a DML-enriched mission that mixes old-style ME triggers with DML modules. 

image.png

CHANGES

Documentation
    - messenger documentation
    - frog men trainming mission 
    - bottled messages 

Demos
    - bottled messages 
    - frog men training mission
    
Modules
    - messenger 1.0.0
    
Other
    - ownedZones 1.1.1
        - corrected bug in zoneConquered 
    - SSBClient 2.0.1
        - stricter verbosity
    - countdown 1.1.0
        - API
        - trigger flag unique name
    - delayFlag 1.0.2
        - fixed config zone bug
        - trigger flag unique naming 
        - removed message attribute 
    - cloneZones 1.1.1
        - isExist guard on despawnAll 
        

Enjoy,

-ch

 


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

These are an amazing set of tools! Thanks for the tutorial missions they really helped. I have two questions regarding the Scoring module. 1. Where would I find a list of default unit names? I’m trying to get an MRLS on the list but can’t work out it’s ‘real’ name. 2. Is there a way to add other things like structures and statics to the scoring list? The mission I’m working on needs scoring for infantry tents. 

Link to comment
Share on other sites

1 hour ago, Chattytumbler said:

1. Where would I find a list of default unit names? I’m trying to get an MRLS on the list but can’t work out it’s ‘real’ name

Finding these is a bit arduous. Luckily we have this great resource that allows you to inspect all current vehicles. I'm afraid your job is now to 

  • try to match the vehicle in the game to one in the list (look in Ground Vehicles for MLRS first).
  • Maybe you think this is the MRLS you are looking for. So you open it up, and look for this line
["typeName"] = "Smerch_HE",

There should also be a line "displayName" which shows what it should be called in ME. If they match, you have found your type name.

In that case, "Smerch_HE" is the Type name needed so that if the player kills that generic unit, the correct score is awarded. Add it to player score's config.

It's a bit tedious to find, but usually worth the effort 🙂 

 

1 hour ago, Chattytumbler said:

2. Is there a way to add other things like structures and statics to the scoring list?

Currently, that isn't supported [not entirely sure wrt the statics, have to check]. I'll see if I can add it. Thanks for the idea!


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

I found the MRLS, thanks! - that link you shared is very useful!  
 

For the second question about scoring. If using scenery can’t be done would it be possible to add a score that pops up when a flag is activated? That way when I use object destruct (for example) I can get a “Chattytumbler has destroyed strategic target Prison for 50 points” type message and it add to the score. 


Edited by Chattytumbler
Link to comment
Share on other sites

43 minutes ago, Chattytumbler said:

If using scenery can’t be done would it be possible to add a score that pops up when a flag is activated?

I'll check if I can integrate the scenery objects (probably by ID) into the score table. In the meantime, it should be possible to use the object destruct detector, and have it bang! on a messenger module's in flag to output a message (but not increase the score just yet, sorry).

 

Link to comment
Share on other sites

Version 0.985 - 20220224

Feature Update: Flags, Quick Reference, Cloner Reference Resolve

Another big step forward in ME integration: more modules have received the bang!/method ability, and I've expanded the input synonyms for a large set of zones, and updated the documentation 

DML is gearing up for the final big leap to 1.0 - The biggest missing change are "DML flags", a superset of ME flags to allow modules to communicate locally and with each other, bypassing ME flags to not litter ME's flag space. Of course ME flags are also natively supported. DML's flags are easier to use and more versatile. This is a massive change, and may take some time to complete; you can get an inkling of the upcoming possibilities if you look into the (as of yet undocumented) 'Flag Fun' demo and inspect the strange flags there. Yeah, dynamic, local flags that integrate with copy/paste! Powerful stuff!  

And then there was this PM:
"Hey, cfrag, I really hate ME's trigger editor, and using Zones is so much easier. Isn't there a more convenient way to set flags, you know, directly, from within a Zone?" 

There is now. Although the "more convenient" bit may be debatable 🙂 - it's certainly easier to edit. 

So, what else is new? Oh, yes, I got around to creating the much-clamored-for QuickRef. Also, the clone zones have received a rather significant bump in clone intelligence: when your units reference other cloned groups or units (for example to follow, escort, or attack), the cloner resolves these references automatically. 

image.png

CHANGES:
Documentation
    - *new* ME Integration Quick Reference Manual
    - clone zones API documentation 
    - clone relations demo 
    
Videos
    - DML Intro video (link in OP)
    - Adding DML to a mission video (link in OP) 
    
Demos
    - flag fun 
    - clone relations 
    
Modules
    - raise flag 1.0.0
    
Other
    - clone zones 1.2.0
        - Lua API: callbacks 
        - groupXlate, unitXlate lookup tables 
        - resolve references for groups 
        - resolve references for units 
        - resolve references for statics 
        
    - count down 1.1.1
        - corrected bug in invokeCallbacks
        
    - cfxMX 1.1.0
        - getStaticFromDCSbyName also copies groupID
        - group name cross reference table on start 
        - getStaticFromDCSbyName also copies link unit data 
        
    - delayFlag 1.0.4
        - added startDelay? 
        
    - spawn zones 1.5.3
        - added spawn? and spawnUnits? synonyms
    
    - ObjectDestructDetector 1.1.0 
        - deprecating f+1, f-1, f=0, f=1
        - support for method 
        - added f! and destroyed! 
        
    - spawn objects 1.1.5
        - added spawn? and spawnObjects? synonyms 
        
    - cargo receiver 1.2.0
        - deprecated f+1, f-1, f=0, f=1
        - support for method
        - added f! and cargoReceived!
        
    - artillery zones 2.0.2
        - artillery synonym 
        - renamed internal trigger 
    
    - smoke zones 1.0.4 
        - startSmoke? synonym 
        - alphaNum flag upgrade 
        - supports "random" color 
        
    - pulseFlags 1.0.3
        - uses cfxZones pollFlag instead of own 
        
    - cfxZones 2.5.6
        - new randomDelayFromPositiveRange
        - new setFlagValue 
        - new getFlagValue 
        - pollFlag supports theZone as new third param
        - new isMEFlag 
    
    - dcsCommon 2.5.5
        - new stringStartsWithDigit
        - new stringStartsWithLetter
        - new stringIsPositiveNumber
 

Enjoy,

-ch

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

On 2/23/2022 at 2:52 PM, Chattytumbler said:

If using scenery can’t be done would it be possible to add a score that pops up when a flag is activated?

OK, of *course* it's possible to use scenery objects and static objects with PlayerScore. Well, at least now that silly me got my act together and added the code 🙂. It'll be part of the next code drop (scheduled for Thursday, March 3rd). PlayerScore has received the following updates (will also be reflected in the manual, and perhaps have a dedicated demo)

  • for static objects, use the name on top of the unit info (where normally the GROUP name is assigned for AI units) in the score table as reference for the score.
  • for scenery objects, use the OBJECT ID that ME reveals when you right-click "assign as.." in the object (same that would be used with an object destruct detector) for score reference
  • Player Score now also supports score on group level in addition to unit and type. Assign a score to a group name, and that score is used (unless the unit killed also has an individual unit score, in which case that score is used). 

Since scenery objects do not identify themselves properly, if you want to pop up a good score message, add an object destruct detector, add a messenger, and have the messenger announce the kill when the destruct detector bangs the outflag.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Could you add a module that helps with displaying countdowns? I would quite like to be able to put a small digital count-down timer (or count-up timer) in the top corner of the players screens once a flag is triggered - can they destroy the bridge in 5 minutes before the enemy does X thing? etc

Link to comment
Share on other sites

1 hour ago, Chattytumbler said:

I would quite like to be able to put a small digital count-down timer (or count-up timer) in the top corner of the players screens once a flag is triggered

That is not really difficult to implement. It does have a knock-on problem, though, due to the way messages are displayed in DCS. If we have a counter in the upper right corner, in order to display it there, the mission first has to erase all other messages that are on-screen. So, if the count down module refreshes the screen every 10 seconds or so (to update the timer), that is the maximum time any message can be displayed. If an important message comes up 1 second before the refresh hits, that message is gone after 1 second. I'll experiment with it, wouldn't be too difficult, but it would not be a module that would make you mission look polished - unless you suppress all other messages during that time.

Link to comment
Share on other sites

So next challenge 🙂 is it possible to create a module that lets a JTAC or FAC designate a structure (or just the centre of a trigger point would work). Doesn’t necessarily need to have all the 9-line stuff. Currently in missions if I want my players to hit ‘scenery’ buildings that are supposed to be getting laser designated by special forces I have to put a vehicle or unit at the target and designate that. It works but it sometimes looks a bit clumsy. 

Link to comment
Share on other sites

2 hours ago, Chattytumbler said:

is it possible to create a module that lets a JTAC or FAC designate a structure (or just the centre of a trigger point would work)

I'll have to check, but if DCS does the ray calculations correctly, that would be rather short work. The only caveat here is to get the unit that does the lasing (a ray has to emanate from somewhere) and that units needs unobstructed LOS. I'll see what I can come up with, ideas are always welcome 🙂 

  • Like 1
Link to comment
Share on other sites

Version 0.99 - 20220303

Feature Update: DML FLAGS

image.png

DML Flags. A significant uptick in functionality, and something you always wish you had - now available when using DML: named flags, and zone-local flags (in case you couldn't read above modest headline). When you use DML, you now can use any name for your flags to communicate between modules, not just numbers. This alone greatly simplifies mission design ('Tanker on-station' is so much easier to remember than '438'). 
But DML has another Ace up its sleeve, one that turns a dinky zone-based gadget into a mission design powerhouse: local flags. You see, DML now possesses the ability to use zone-local flags. When you need a flag for one module (e.g., a count-down) to communicate with another module stacked on the same zone, use a local flag. Local flags are invisible outside the zone, and thus do not contaminate your flag name space. More importantly, though, they allow true copy/paste zone automation, so you design a zone stack once, and can deploy it anywhere without worrying about flag conflicts! 

image.png

DML is approaching 1.0 readiness - most core modules are done, and DML flag integration is progressing nicely. Also to be finished are some flag manipulation modules (the 'flagParade' module will be another big hit, I'm sure), and of course the big bad block of doc needs more work. We've crossed the 300 pages threshold on that one with this 0.99 release -- another milestone to celebrate! Since DML is permanently evolving, "1.0" will be but one milestone among many. I'm excited to see where DML's journey will lead us to. Let's see how quickly we can reach 1.0

So, besides DML flags, what else is new in 0.99? Well, with DML Flags, module stacking becomes a lot more attractive, and with growing attractivity some inter-module attribute naming conflicts arise. This release addresses many of those with attribute synonyms. Also, the raiseFlag module makes the implicit onStart attribute obsolete for some, so the process of deprecations has begun - just like it has for the 'formulaic' names like "f=1" that are to be replaced with flag-bang! and  method attribute.

Oh, and there are a couple of additions by request: 

  • the message module can be used to implement regularly updating information (see 'The Zonal Countdown' demo)
  • a Griefer-repellant module for multi-player missions (unGrief) is also now part of the pack.
  • PlayerScore now supports static objects and map object kills (see more score demo)

 

CHANGES:
Documentation
    - delayFlag documentation 
    - raiseFlag documentation
    - updates to modules 
    - FlagFun documentation 
    - The Zonal Countdown documentation 

Demos
    - Good Grief 
    - More Score 
    - The Zonal Countdown 
    
Modules
    - unGrief 1.0.0 
    - messenger 1.1.0 
        - wildcard support for *value and *name
        - clearscreen option for updates 


DML Flag Updates 
    - cfxZones 2.5.7
    - smokeZones 1.0.4
    - rndFlags 1.1.0
    - objectSpawnZones 1.2.0
    - pulseFlags 1.1.0
    - delayFlag 1.1.0
    - cloneZones 1.3.0
    - raiseFlag 1.0.1
    - messenger 1.1.0
    
Other
    - playerScore 1.3.0 
        - support for static objects and scenery objects
        - support for group-level naming 

 

Enjoy

-ch

 


Edited by cfrag
  • Like 2
  • Thanks 4
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...