This is a replacement for the existing "zone geometry" classes that are currently used for choosing locations for IP, hold, and join points. The older approach required the author to define the methods for choosing locations at a rather low level using shapely APIs to merge or mask geometries. Debug UIs had to be defined manually which was a great deal of work. Worse, those debug UIs were only useable for *successful* waypoint placement. If there was a bug in the solver (which was pretty much unavoidable during development or tuning), it wasn't possible to use the debug UI. This new system adds a (very simple) geometric constraint solver to allow the author to describe the requirements for a waypoint at a high level. Each waypoint type will define a waypoint solver that defines one or more waypoint strategies which will be tried in order. For example, the IP solver might have the following strategies: 1. Safe IP 2. Threat tolerant IP 3. Unsafe IP 4. Safe backtracking IP 5. Unsafe backtracking IP We prefer those in the order defined, but the preferred strategies won't always have a valid solution. When that happens, the next one is tried. The strategies define the constraints for the waypoint location. For example, the safe IP strategy could be defined as (in pseudo code): * At least 5 NM away from the departure airfield * Not farther from the departure airfield than the target is * Within 10 NM and 45 NM of the target (doctrine dependent) * Safe * Within the permissible region, select the point nearest the departure airfield When a solver fails to find a solution using any strategy, debug information is automatically written in a GeoJSON format which can be viewed on geojson.io. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3085.
(Github Readme Banner and Splash screen Artwork by Andriy Dankovych, CC BY-SA 4.0)
About DCS Liberation
DCS Liberation is a DCS World turn based single-player or co-op dynamic campaign. It is an external program that generates full and complex DCS missions and manage a persistent combat environment.
Note that DCS Liberation does not support the stable release of DCS. We can only guarantee compatibility with either the open beta or the stable release, and more people play the open beta. DCS stable might work sometimes, but it's untested, and we will be unable to fix any bugs unique to stable DCS.
Downloads
Latest release is available here : https://github.com/dcs-liberation/dcs_liberation/releases
To download preview builds of the next version of DCS Liberation, see https://github.com/dcs-liberation/dcs_liberation/wiki/Preview-builds.
DCS bugs
These DCS bugs prevent us from improving AI behavior. Please upvote them! (But please don't spam them with comments):
Bugs and feature requests
If you need to report a bug or want to suggest a new feature, you can do this on our bug tracker. In either case, please use the search bar at the top of the page to see if it has already been reported. Note that you may need to remove the filter for open bugs if it's something we've recently fixed.
Roadmap
Our plans for future releases can be found on our Projects page. Each planned release has a Project, and the page for that project has columns for to do, in progress, and done. Items in the Done column are in the preview build for that release. Items in the To do column are planned to be added to that release.
Resources
Tutorials, contributors and developer's guides are available in the project's Wiki
Special Thanks
First, a big thanks to shdwp, for starting the original DCS Liberation project.
Then, DCS Liberation uses pydcs for mission generation, and nothing would be possible without this. It also uses the popular Mist lua framework for mission scripting.
Excellent lua scripts DCS Liberation uses as plugins:
- For the JTAC feature, DCS Liberation embeds Ciribob's JTAC Autolase script.
- Walder's Skynet-IADS is used for Integrated Air Defense System.
Please also show some support to these projects !

