-
Notifications
You must be signed in to change notification settings - Fork 184
Custom campaigns
For DCS Liberation 5.0 the campaign version is 9.1.
For DCS Liberation 6.0 the campaign version is 10.0.
Campaigns in DCS Liberation can be modified using the mission editor. Each campaign is defined by a JSON file to provide metadata, and a DCS mission file (.miz
file) to set up the theater.
The included campaigns can be modified, or new campaigns can be added to the resources/campaigns
directory of the Liberation install.
DCS Liberation must be restarted after campaign changes are made. Campaign changes only affect new games; ongoing campaigns will not be affected by changes to the campaign data.
If the campaign does not appear in the New Game wizard, there is likely an issue in the JSON file. Check the console window for errors.
Breaking campaign changes to do not get documented on the wiki immediately, but will always be listed in the notes next to CAMPAIGN_FORMAT_VERSION
in game/version.py.
The campaign uses a JSON file to describe some metadata. To create a new campaign, add a JSON file (such as mycampaign.json
) to resources\campaigns
.
Note: as of DCS Liberation 5 the campaign descriptor file may also be written in YAML with the same structure.
This json file should contain a json object, with the following parameters :
-
name
: The name of the campaign that will be shown in the New Game wizard. -
theater
: The map for the campaign (either:Caucasus
,Persian Gulf
,Nevada
,Normandy
,Syria
orThe Channel
). -
authors
: The authors of the campaign that will be shown in the New Game wizard. -
description
: A description of the campaign that will be shown in the New Game wizard. -
version
: The version of the campaign format this campaign was built for. This supports a UI hint in the new game wizard to warn users about campaigns that were built for an incompatible version of the game.Note that this field is not the DCS Liberation version, but the version of the campaign file format. The latest version is defined by
CAMPAIGN_FORMAT_VERSION
in game/version.py. For DCS Liberation 4.1 the campaign version is 8.0.If
version
is not set or is"0"
, the campaign is from an unknown version of the game and will be marked as incompatible in the new game wizard. -
recommended_player_faction
: (Optional) The recommended player faction (will be automatically selected by default on the faction selection page) -
recommended_enemy_faction
: (Optional) The recommended enemy faction (will be automatically selected by default on the faction selection page) -
recommended_start_date
: (Optional) The recommended start date for the campaign in YYYY-MM-DD format. New in campaign version 9.1. -
miz
: The name of the miz file (in the sameresources\campaigns
directory) that describes the campaign. -
performance
: How much performance your campaign need to run smoothly (3 for biggest scenarios that will have huge impact on game performance, 0 for the smallest, performance-friendly scenarios) -
squadrons
: Defines the default squadron configuration at the beginning of the campaign. Explained in the next section. -
advanced_iads
: (Optional, Default: false) Defines if the campaign supports the advanced iads functions using Comms, Power and CommandCenters (values:true | false
) -
iads_config
: (Optional) Defines the configuration of the IADS Network used in the campaign. Description found here: IADS Configuration
This feature is new in DCS Liberation 5 with campaign version 9.0
In DCS Liberation 5 campaigns define the starting squadron configuration for each coalition using the squadrons
field of their campaign description. This field has the following format:
"squadrons": {
BASE_NAME_OR_ID: [
{
"primary": PRIMARY_TASK,
"secondary": SECONDARY_TASKS,
"aircraft": PREFERRED_AIRCRAFT
},
...
]
}
-
BASE_NAME_OR_ID
: The name of the base (in the case of a FOB, LHA, or CV) as defined by the group in the campaign miz file, or the ID number of the airfield as defined by pydcs. For example, the ID of Anapa-Vityazevo is 12. Refer to the pydcs source for airbase ID numbers. -
PRIMARY_TASK
: Defines the primary task type for the squadron. If none of the preferred aircraft are available, a squadron will be generated using an aircraft that is capable of at least the primary task type. The allowed values here are the same as the values of the task types inFlightType
found in https://github.com/dcs-liberation/dcs_liberation/blob/develop/gen/flights/flight.py (the same as the name of the mission type shown in the Liberation UI). -
SECONDARY_TASKS
: Defines secondary tasks that the squadron will be allowed to perform if the squadron is capable of them. This can be either the literal stringsany
,air-to-air
, orair-to-ground
, or a list of specific task types. This property is optional. If not specified the auto-planner will only assign those squadrons to the primary task type. -
PREFERRED_AIRCRAFT
: A list of either aircraft type names (using the same names as custom factions), or a list of squadron names. Each name will be tried in order and the first option valid for the coalition will be selected. If no preferred aircraft are compatible with the coalition, a squadron will be automatically generated based onPRIMARY_TASK
.
For a complete example, see the Black Sea campaign description.
When choosing preferred aircraft, although the property is optional, it is best to pick at list at least one aircraft that is valid for the default faction configuration of your campaign to ensure that your campaign's out-of-the-box behavior works as you expect. You can list any aircraft here if you want to cater to non-default factions. For example, if your default faction for the player is USA 2005 but you want to provide good defaults for Russia, you can use "aircraft": ["F-15C Eagle", "Su-27 Flanker-B"]
and the squadron will fly F-15s when the US is chosen and Su-27s when Russia is chosen.
Not every airbase needs squadrons. Use the positioning, quantity, and roles of each squadron to control the size and pace of your campaign. You don't need to provide a squadron for every aircraft type, but in general you should ensure that a squadron is capable of the major task types (BARCAP, CAS, SEAD, Transport, AEW&C, and Refueling). Players can customize their squadrons at game start (note: it currently is not possible to add squadrons or change aircraft types, but squadrons can be removed at game start and task preferences may be changed at will), so it is most important that you set up your default squadrons the way that makes the most sense for your campaign.
A best practice to follow is to set up one base per side as a transit hub. This is preferably a large airfield near the rear of the conflict (not easily captured or destroyed), that has the ability to produce ground units (has a factory), has a cargo aircraft squadron, and optionally has a port. Depending on the location of this base it may also be a good home for AEW&C and refueling squadrons (and a BARCAP squadron to defend those other squadrons).
Description about the advanced IADS Configuration coming soon...
Will be available in DCS Liberation 6.0
version: "10.1" # Campaign Version 10.1 allows the advanced iads network config
advanced_iads: true # Campaign has connection_nodes / power_sources / command_centers
iads_config:
- Aircraft Carrier # A naval group participating to the IADS network without any connections
- Naval Group # Naval Group
- Golan North-100: # Group name of the SAM, EWR or Command Center used in the campaign.miz
- IADS_CN2 # All connected nodes (Comms, Power, PointDefense)
- IADS_PS4 # Exact name of the connected group used in the campaign.miz
- IADS_PS3
- Golan North-11:
- IADS_CN2
- IADS_PS3
- Golan North-139:
- IADS_PS2
- IADS_CN6
...
How the IADS Network works is described over here: IADS Network
The following tasks can only be set as secondary tasks, not primary ones:
- air-to-air
- air-to-ground
Incorrect:
- primary: air-to-ground
secondary: any
aircraft:
- VFA-113
Correct:
- primary: SEAD
secondary: air-to-ground
aircraft:
- VFA-113
The yaml file contains a dash before 'secondary' or other field which is not 'primary'.
Incorrect:
- primary: SEAD
- secondary: air-to-ground
aircraft:
- VFA-113
Incorrect:
- primary: SEAD
secondary: air-to-ground
- aircraft:
- VFA-113
Correct:
- primary: SEAD
secondary: air-to-ground
aircraft:
- VFA-113
The yaml file doesn't have squadrons defined.
The campaign yaml file contains a squadron with an 'aircraft' block, but no aircraft (or squadrons).
Incorrect:
- primary: SEAD
secondary: air-to-ground
aircraft:
- primary: BAI
secondary: any
aircraft:
- VMFA-251
Correct:
- primary: SEAD
secondary: air-to-ground
aircraft:
- VFA-113
- primary: BAI
secondary: any
aircraft:
- VMFA-251
Incorrect:
# Stennis object in the .miz file is called "Blue CV"
Carrier:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-14B Tomcat
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
Correct:
# Stennis object in the .miz file is called "Blue CV"
Blue CV:
- primary: BARCAP
secondary: air-to-air
aircraft:
- F-14B Tomcat
- primary: BARCAP
secondary: any
aircraft:
- F-14B Tomcat
When creating a campaign it may be easiest to start with an existing campaign in the same theater and modify it to suit your needs. If starting from scratch, ensure that Combined Joint Task Forces Blue and Combined Joint Task Forces Red are assigned to the blue and red coalitions respectively, as these will be used to define many of the campaigns properties.
Control points are the spawn locations and (in most cases) the capturable positions in the campaign.
To make an airbase that starts controlled by blue, assign the airbase to the blue coalition in the mission editor. To make an airbase that starts controlled by red, assign the airbase to red.
To create a carrier, place a CVN-74 where you want it to be in the campaign. The carrier will be red if it belongs to CJTF Red and blue if it belongs to CJTF Blue.
To create an LHA, follow the same process but place an LHA-1.
Note that the presence of the carrier or LHA in the game will depend on the player's options and the faction's navy.
New in DCS Liberation 5: Campaign version 9.0 uses the carrier or LHA's group name to determine which squadrons should be located at the base by default. See the earlier section about squadron presets for more information.
To create a point where aircraft from other theaters can be spawned into the mission in-air, place an F-15C. As with carriers and LHAs, use CJTF Red or Blue to assign the point to either faction.
The altitude of the unit is not currently relevant, as the spawn altitude of units in Liberation depends on the faction's doctrine and the unit type.
A FOB a a capturable point that can spawn ground units but not aircraft.
- A FOB is defined by placing a Truck SKP-11 Mobile ATC.
- A CJTF Blue group will create a FOB that begins owned by blue and a CJTF Red group will begin owned by red.
- To attach a Heliport to a FOB, the desired amount of FARP pads have to be placed in the form of a static invisible FARP close to the FOB.
- The FARP can belong to either CJTF Blue or CJTF Red to be included in the campaign.
pro tip: 300ft spacing between the invisible FARP pads recommended
The group name of the unit is used to name the FOB.
Inverting the campaign allows the player to play the campaign in reverse (starting from the North instead of the South, for example). This doesn't simply swap all of the control points, but swaps a number of control points as defined by the mission designer so that the player doesn't begin the campaign with most of the control points already captured.
To specify that an airbase should be owned by the player when the campaign is inverted, set the "unlimited aircraft" property of the warehouse. To specify the same for a FOB, carrier, LHA, or off-map spawn, set the "late activation" property of the group.
Supply routes are defined by placing a CJTF Blue M-113 at an airfield and defining a route to the connected control point. Front lines progress along supply routes, and supply routes also define road networks for ground unit transit.
The supply route will follow the waypoints of the vehicle group (not the path, so using on-road waypoints will not cause the front line to follow roads automatically), so waypoints should be placed at each location that the front line should turn to avoid terrain. The route beginning and end points will be used as the origin and destination endpoints for convoys, so each end point of the route should be placed on a road. The beginning and ending waypoints will associate with the nearest airfields when the campaign is generated.
New in DCS Liberation 3.0: The begin and end waypoints of the path defining the front line route define the origin and destination for convoy routes. Endpoints of the route should be placed on or near roads so that convoys can get moving quickly. If far from a road, units will move from their location off-road to the road one at a time until they have all reached the road.
Important: Care should be taken to route the frontline around exclusion zones. If the center of the frontline location lies in an exclusion zones, frontline units may not spawn correctly. You can view the exclusion zones in the Liberation UI by clicking on the "3 stacked sheets" icon below the ruler icon in the top left corner of the map window. Frontlines can jump smaller exclusion zones but using these can cause frontlines to render on both sides of the gap, or cause the frontline to render far from the intended line.
Work in Progress Exclusion zones are being updated to try and allow frontlines to follow or at least be in the general area of convoy routes. Frontlines need to follow the center of these Exclusion zone corridors. The frontline will shrink down to a small area, based on the size of the corridor and the frontline. (# of units) The frontline might not render correctly if the line is to large, (# of units) limiting the ammo depots (explained below) on these frontlines will help limit this issue.
New in DCS Liberation 3.0: Shipping lanes define routes for transporting units between control points via cargo ships.
To define a shipping lane, place a CJTF Blue Bulker Handy Wind. Shipping lanes should begin in port areas that are navigable by ships and have a route to another port area. DCS ships will not avoid driving into islands, so ensure that their waypoints plot a navigable route.
New in DCS Liberation 3.0: Random base defense generation is being removed. Replace the old base defense spawn locations with the desired number of fixed IADS and armor groups. These fixed groups do not follow exclusion zones, the placement of these is up to the campaign designer to insure they had enough room to spawn correctly. Testing should be done with largest possible group to ensure proper clearance with all factions.
New in DCS Liberation 3.0: Random objective locations should no longer be used. The instructions below describe how to place fixed objectives. The contents below have changed significantly since 2.5 and should be read in full when converting campaigns. These fixed groups do not follow exclusion zones, the placement of these is up to the campaign designer to insure they had enough room to spawn correctly.
Objective locations are automatically associated with their closest control point.
Strike targets are buildings that generate income for the owning coalition. These come in a variety of types depending on the faction:
Type | Income |
---|---|
Fuel depots | 2 |
Warehouses | 2 |
FARPs | 1 |
Oil derricks | 10 |
Bunkers | 2 |
Villages | 0,25 |
Army camps | 0,5 |
To define a strike target location, place a Tech Combine structure. The unit may be either red or blue (the only difference is currently readability of the mission editor, but in the future will determine which coalition owns the objective).
Offshore strike targets generate income for the owning coalition.
- To define an offshore strike target, place a CJTF Red Oil Platform.
Arbitrary map objects may be used as strike targets. These are the buildings/trees/scenery that are placed by the map developer (Eagle Dynamics, etc). Liberation uses trigger zones to define scenery as a strike target.
To define a map object strike target, right click the building in the mission editor and select "assign as...". This will create a trigger zone around the building. The name of this trigger zone will be used to identify the building in the Liberation UI. Do not modify the color (white) or the properties. This creates the individual building that will be a part of the objective group.
Create new circular trigger zone through the Mission Editor's sidebar, and give it the color of blue (0 Red
, 0 Green
, 255 Blue
; there is a shortcut button that is blue in case you do not want to type the RGB numbers in manually). Place this trigger zone such that it encloses each of the centers of the objective's white trigger zones. This defines the objective area (named, targetable group of buildings), whereas the white zones define the individual buildings of the objective location. Each group zone must have a unique name.
Create a property for the objective definition with the value field set to any of the entries listed in game/db.py : REWARDS
(listed below for convenience, but may be out of date). This must be the first property in the group zone. This field defines the category (objective type) of the group, which impacts income generation per building.
power
ware
fuel
farp
fob
comms
oil
derrick
village
allycamp
commandcenter
Each structure will generate its own income, not each group. This means that large groups of structures will generate large amounts of income.
Note that factory
and ammo
have different behavior. See the documentation on factories and ammunition depots below.
Map Object Limitations:
- Objective group definitions (blue trigger zones) cannot overlap.
- The campaign creator must define objective type.
- No images for the various buildings in the Liberation UI, briefing, or kneeboard. Target identification will be difficult.
- Every blue trigger zone must have a unique name.
Factories are ground unit producing structures. Ground units may only originate from control points that have factories, so it is essential that each coalition have access to them. Units will form convoys to move between control points, and convoys may be interdicted to interrupt reinforcements. Destroyed factories will stop producing units. When a control point loses its last factory, it will no longer be a source for ground units.
Factories also generate $10M per turn for the owner.
Define factory locations with CJTF Blue Workshop A structures.
Recommendations for factory placement:
- Prefer back-line control points or major transit hubs (especially ports and large airports capable of fielding cargo planes) for factory locations. This allows units to reach their destinations more quickly.
- Avoid placing factories at control points that begin as the front line. Factories on the front line mean that convoys will not be formed and this removes a mission type for the player.
- Defend factories with IADS and (if accessible by the front line), armor groups.
Note that map objects (defined in the previous section) may be used as factories. Use the factory
category.
Ammunition Depots provide control over how many ground units are available to be deployed to the front line from it's closest control point. This directly effects how many ground units may be deployed on a front line.
Each control point has a free 15
deploy-able ground units available to it before ammunition depot buildings are required to raise the limit of how many ground units may be deployed. Each additional ammunition depot building raises the limit by 12
units.
Ammunition Depots are placed in a campaign using the Ammunition Depot
warehouse object to spawn the default template of one Ammunition Depot
and two Hangar B
s. Each ammunition depot template will raise the front line ground unit limit by 36
units.
Alternatively, scenery objectives may be used with the ammo
category to define an ammunition depot objective.
Recommendations for Ammunition Depot placement:
- Defend your ammunition depots with IADS and ground units.
Ships can be generated at airbases, carriers, and LHAs (but not off-map spawns). Ships will not be spawned if the player has disabled either player or enemy navies in the campaign generation options, or if the faction does not have naval units defined.
- To define a ship location place a CJTF Red Arleigh Burke IIa.
Missile sites (scuds, V-2s, etc) can be generated at airbases and FOBs. Missile sites will only be spawned if the faction has them defined.
- To define a missile site place a CJTF Red SSM SS-1C Scud-B.
Coastal defenses (silkworms) can be generated at airbases and FOBs. Coastal defenses will only be spawned if the faction has them defined.
- To define a missile site place a CJTF Red AShM SS-N-2 Silkworm.
Armor groups are ground units that defend the assigned location. These groups will not move.
- To define potential locations for garrison groups, place a (red or blue) MBT M1A2 Abrams.
DCS Liberation will create Air Defence Assets like SAM Systems, Point Defense, EWRs, Power Sources, Connection Nodes and Command Centers during campaign generation and connects them with each other to build an IADS Network of participating assets. This IADS Network will be used in the generated mission by the Skynet Plugin created by Walder which improves the overall handling of the AI with the Anti Air units as well as bringing in more realistic options like Connection Nodes, Power Sources and Command Centers.
The IADS Network can be implemented and used in two different ways since Liberation 6.0:
- Basic Mode
- Advanced Mode
The Advanced Mode will be available in DCS Liberation 6.0
In Basic Mode the IADS locations are automatically associated with the control point closest to them and participate to the IADS Network without using communication nodes or power sources. Participating Assets are MERAD and LORAD SAM Sites, EWRs, Naval Units (Ships, Carriers), AWACS flights and Command Centers. This mode will automatically be used if the campaign designer has not placed the advanced units in the campaign and set the advanced_iads property in the campaign yaml to true. The basic mode is used as default mode.
If the campaign supports the advanced mode there are two possible ways to use it:
- Network by config: campaign designers can define the iads completly in the campaign yaml as described above IADS Configuration
- Network by range: campaign designers can just place the ground units without a definition in the campaign yaml. Then it will be automatically calculated based on the distance between the units.
If no iads_config is defined in the campaign.yaml the "by range" option will be used. In this mode the system will automatically connect assets like SAM Systems or EWRs to Connection Nodes or Power Sources base on the distance between these objects. Comms will be connected within a distance of 15nm and power sources will be connected within 35nm of distance.
The advanced assets like Comms, Power and C2 can be placed like any other ground object using the placeholder unit defined in this table Unit Type Quick Reference or via a Map Object.
SAM locations are split into four types: long range, medium range, short range, and AAA. Each type of position will prefer to be filled by its exact type, but if the faction has no air defenses of that type available the generator will continue to downgrade the site until it finds a match. For example, a medium range SAM may be used in place of a long range SAM. Upgrades are not allowed.
Note that the exact type of SAM or EWR that will be placed depends on the faction definition (SAM/EWR generators). However, when designing a campaign with specific factions in mind (such as Syria defending on the Syria map), this allows the designer to see the coverage of the SAMs used by the intended faction. This way the designer can be sure that sufficient coverage will be present in the campaign when a faction using a specific type of SAM is used.
To define an EWR location, place a CJTF Red EWR 1L13.
Currently the only two long range SAM systems are the Patriot and the SA-10 (S-300). If the faction does not have either of those systems, the location will be downgraded to a compatible type.
To define a long range SAM location, place a CJTF Red unit of any of the following types:
- SAM Patriot LN M901
- SAM SA-10 S-300PS LN 5P85C
- SAM SA-10 S-300PS LN 5P85D
Medium range SAMs include most radar SAMs that do not qualify as long range SAMs. If the faction has no medium range SAMs available, the location will be downgraded to a compatible type.
To define a medium range SAM location, place a CJTF Red unit of any of the following types:
- SAM Hawk LN M192
- SAM SA-2 LN SM-90
- SAM SA-3 S-125 LN 5P73
Short range SAMs include IR SAMs and shorter range radar guided systems. If the faction has no short range SAMs available, the location will be downgraded to a compatible type.
To define a short range SAM location, place a CJTF Red unit of any of the following types:
- SAM Avenger (Stinger)
- SAM Rapier LN
- SAM SA-19 Tunguska "Grison"
- SAM SA-9 Strela 1 "Gaskin" TEL
AAA sites include self-propelled and static anti-air artillery systems. If the faction has no AAA available, the location will not be generated.
To define a AAA location, place a unit (red or blue) of any of the following types:
- AAA 8,8cm Flak 18
- SPAAA Vulcan M163
- SPAAA ZSU-23-4 Shilka "Gun Dish"
Objective type | Coalition | Unit types | Clearance |
---|---|---|---|
EWR | Red | EWR 1L13 | 50ft |
Long range SAM | Red | SAM Patriot LN M901 SAM SA-10 S-300PS LN 5P85C SAM SA-10 S-300PS LN 5P85D |
1000ft |
Medium range SAM | Red | SAM Hawk LN M192 SAM SA-2 LN SM-90 SAM SA-3 S-125 LN 5P73 |
800ft |
Short range SAM | Red | SAM Avenger (Stinger) SAM Rapier LN SAM SA-19 Tunguska "Grison" SAM SA-9 Strela 1 "Gaskin" TEL |
800ft |
AAA | Either | AAA 8,8cm Flak 18 SPAAA Vulcan M163 SPAAA ZSU-23-4 Shilka "Gun Dish" |
700ft |
Factory | Blue | Workshop A | Building should fit |
Ammo Depot | Either | Ammunition depot | 350ft |
Strike target | Either | Tech combine | 350ft |
Offshore strike target | Red | Oil Platform | 1000ft |
Missile Sites | Red | SSM SS-1C Scud-B | 800ft |
Coastal defenses | Red | AShM SS-N-2 Silkworm | 800ft |
Ship | Red | Arleigh Burke IIa | 5000ft |
Armor group | Either | MBT M1A2 Abrams | 500ft |
FOB | Either | Truck SKP-11 Mobile ATC | 100ft |
Comms | Either | Comms tower M | Building should fit |
Power | Either | GeneratorF | 350ft |
Command Center | Either | Command Center | Building should fit |