mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Merge remote-tracking branch 'remotes/dcs-liberation/dcs_liberation.wiki/master'
commit
8090a19c69
1
2.3-Campaign-Design.md
Normal file
1
2.3-Campaign-Design.md
Normal file
@ -0,0 +1 @@
|
||||
Moved to [Custom Campaigns](https://github.com/Khopa/dcs_liberation/wiki/Custom-campaigns).
|
||||
700
Air-Wing-Configuration.md
Normal file
700
Air-Wing-Configuration.md
Normal file
@ -0,0 +1,700 @@
|
||||
Now that we have a good basic understanding of what DCS Liberation is, thanks to the [Getting started guide](Getting-started) and we covered the basic [UI elements](Tutorial-UI), let's start a campaign.
|
||||
|
||||
An important, if not the most important aspect of a campaign, is the _air wing configuration_
|
||||
|
||||
For the example of this tutorial, a custom campaign has been picked by the author to illustrate the different building blocks and how they depend on each other.
|
||||
|
||||
|
||||
Select a campaign / theater
|
||||
|
||||

|
||||
|
||||
As shown on the screenshot, the campaign author set a few defaults:
|
||||
|
||||
- _default factions_
|
||||
- Player: [US Navy 1985](#US-Navy-1985)
|
||||
- Enemy: [Syria 1982](#Syria-1982)
|
||||
- _recommended start date_ - in this case it's May 12th 1986
|
||||
|
||||
For better illustration, the corresponding files will be shown as well
|
||||
- [Campaign configuration](#Campaign-configuration)
|
||||
- [Faction configuration](#Faction-configuration)
|
||||
- [Squadron example](#Squadron-example)
|
||||
|
||||
#
|
||||
As shown in the campaign example below, the author designed it around a specific map/region/timeline and factions, to create the desired scenario.
|
||||
|
||||
Players have full freedom, changing those, but will have to handle the consequences of their choices.
|
||||
|
||||
Default factions define the general availability of **aircraft** for a campaign. However, the final list of aircraft shown in the _Air Wing Configuration_ dialogue depends on a few things.
|
||||
|
||||
1. Is the aircraft part of the faction?
|
||||
2. Is the aircraft capable of doing the required tasks/mission types?
|
||||
3. Does a preset squadron exist? if not, one will be auto-generated
|
||||
4. How does the campaign setup look like, in terms of starting squadron slots and their defined tasks/mission types?
|
||||
|
||||
|
||||

|
||||
|
||||
As you will see on the screenshot above, the faction "US Navy 1985" has more aircraft _available_ in the [faction](#Faction-configuration), than shown in the _Air Wing Configuration_ dialogue.
|
||||
|
||||
Why is that so???
|
||||
|
||||
Well - let's look at it step by step:
|
||||
|
||||
First of all, let's look at the [campaign configuration](Turn-Zero#Campaign-configuration)
|
||||
|
||||

|
||||
|
||||
|
||||
The players owned control points, at the start of the campaign are:
|
||||
|
||||
- the carrier group defined as **Naval-1**
|
||||
- the airfield **Gazipasa**
|
||||
- the FOB **Bozdogan**
|
||||
- the FOB **Latchi**
|
||||
|
||||
Every of those control points consists of mission profiles aka _squadron slots_ that need to be filled by the best suited air frame for that task.
|
||||
|
||||
So at **Naval-1** we would like to cover the following mission types:
|
||||
|
||||
- 2x BARCAP
|
||||
- 1x SEAD
|
||||
- 1x Strike
|
||||
- 1x AEW&C
|
||||
- 1x Refueling
|
||||
- 1x Anti-ship
|
||||
|
||||
As you can see below, the campaign author, had a very specific set of _aircraft_ & _squadrons_ in mind.
|
||||
|
||||
If you look closely at the _Air Wing Configuration_ screenshot above, you will notice that two aircraft that are technically available to the chosen player faction, are missing:
|
||||
|
||||
- F-14A Tomcat (Block 135-GR Late)
|
||||
- F-4E Phantom II
|
||||
#
|
||||
Why, you keep asking?
|
||||
|
||||
Well for **Naval-1** ...
|
||||
|
||||
the BARCAP slots already have preferred aircraft defined, either via:
|
||||
- the aircraft name itself, or
|
||||
- the squadron name, implicitly matching the aircraft
|
||||
|
||||
[VF-101](#VF-101) and [VF-102](#VF-102) are both F-14B squadron, so the planer already got enough input to make a choice -> F-14B
|
||||
|
||||
See [squadron example](#Squadron-example) for more details.
|
||||
|
||||
That rules out the F14-A and since the F-4E Phantom II is not CVN compatible, it's out as well.
|
||||
|
||||
All other mission types have specific _aircraft_ or _squadrons_ defined, like
|
||||
|
||||
- SEAD -> A-4E Skyhawk
|
||||
- STRIKE -> A-4E Skyhawk
|
||||
|
||||
As you can see below, if an aircraft, but no squadron is defined, the planer will look for a suitable preset squadron and use that. If none can be found, it will create a generic one.
|
||||
|
||||
Example for a generic squadron can be seen later in the article, for the E-2D doing AEW&C. The naming will look something like this _Squadron 001_ and a random nickname.
|
||||
|
||||

|
||||
|
||||
|
||||
#### Naval-1
|
||||
```
|
||||
Naval-1:
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- VF-101
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- VF-102
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- A-4E Skyhawk
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- A-4E Skyhawk
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- VAW-125
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- VS-35 (Tanker)
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- VS-35
|
||||
```
|
||||

|
||||
|
||||
|
||||
Let's have a look now on an airfield like Gazipasa, which is also part of the players starting control points.
|
||||
|
||||
Same pattern as above with the carrier group.
|
||||
|
||||
At **Gazipasa** we would like to cover the following mission types:
|
||||
|
||||
- 1x AEW&C
|
||||
- 1x Refueling
|
||||
- 1x Transport
|
||||
|
||||
That automatically rules out the placement of any combat focused aircraft/squadron.
|
||||
|
||||
The example below also shows, that even if an aircraft is defined, that is not available to the chosen faction, the planer will look for the best suiting air frame and place it.
|
||||
|
||||
#
|
||||
#### Gazipasa
|
||||
```
|
||||
# Gazipasa
|
||||
41:
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- E-3A
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- KC-135 Stratotanker
|
||||
- primary: Transport
|
||||
aircraft:
|
||||
- C-130
|
||||
```
|
||||
|
||||
US Navy 1985 does not have an E-3A available, but it got another aircraft that can do AEW&C - so that's why the E-2D will be picked.
|
||||
|
||||

|
||||
|
||||
|
||||
Same for Refueling - KC-135 is not available, but the S-3B Viking (Tanker) can fill that role.
|
||||
|
||||

|
||||
|
||||
|
||||
And for the transport task, no C-130 is available, but the HSM-40
|
||||
|
||||

|
||||
|
||||
|
||||
The same patterns apply to the last two player owned control points, **FOB Bozdogan** & **FOB Latchi**
|
||||
|
||||
#### FOB Bozdogan
|
||||
```
|
||||
# FOB Bozdogan
|
||||
FOB Bozdogan:
|
||||
- primary: Transport
|
||||
aircraft:
|
||||
- HSM-40
|
||||
- UH-1H Iroquois
|
||||
```
|
||||
|
||||
#### FOB Latchi
|
||||
```
|
||||
# FOB Latchi
|
||||
FOB Latchi:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- AH-1W SuperCobra
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- UH-1H Iroquois
|
||||
```
|
||||
|
||||
Since both FOBs have Heliports, even w/o the definition of a specific aircraft, the planer would only have rotor-wing aircraft available to fill the set mission types.
|
||||
|
||||
UH-1H Iroquois
|
||||

|
||||
|
||||
|
||||
AH-1W SuperCobra
|
||||

|
||||
|
||||
#
|
||||
## Faction configuration
|
||||
|
||||
### US Navy 1985
|
||||
```
|
||||
{
|
||||
"country": "USA",
|
||||
"name": "US Navy 1985",
|
||||
"authors": "HerrTom",
|
||||
"description": "<p>Highway to the Danger Zone! For Tomcat lovers.</p>",
|
||||
"locales": [
|
||||
"en_US"
|
||||
],
|
||||
"aircrafts": [
|
||||
"AH-1W SuperCobra",
|
||||
"A-4E Skyhawk",
|
||||
"F-14A Tomcat (Block 135-GR Late)",
|
||||
"F-14B Tomcat",
|
||||
"F-4E Phantom II",
|
||||
"S-3B Viking",
|
||||
"SH-60B Seahawk",
|
||||
"UH-1H Iroquois"
|
||||
],
|
||||
"awacs": [
|
||||
"E-2C Hawkeye"
|
||||
],
|
||||
"tankers": [
|
||||
"S-3B Tanker"
|
||||
],
|
||||
"frontline_units": [
|
||||
"M1043 HMMWV (M2 HMG)",
|
||||
"M113",
|
||||
"M163 Vulcan Air Defense System",
|
||||
"M60A3 \"Patton\""
|
||||
],
|
||||
"artillery_units": [
|
||||
"M109A6 Paladin",
|
||||
"M270 Multiple Launch Rocket System"
|
||||
],
|
||||
"logistics_units": [
|
||||
"Truck M818 6x6"
|
||||
],
|
||||
"infantry_units": [
|
||||
"Infantry M249",
|
||||
"Infantry M4",
|
||||
"MANPADS Stinger",
|
||||
"Mortar 2B11 120mm"
|
||||
],
|
||||
"air_defenses": [
|
||||
"ChaparralGenerator",
|
||||
"HawkGenerator",
|
||||
"VulcanGenerator"
|
||||
],
|
||||
"aircraft_carrier": [
|
||||
"Stennis"
|
||||
],
|
||||
"helicopter_carrier": [
|
||||
"LHA_Tarawa"
|
||||
],
|
||||
"destroyers": [
|
||||
"PERRY"
|
||||
],
|
||||
"cruisers": [
|
||||
"TICONDEROG"
|
||||
],
|
||||
"carrier_names": [
|
||||
"CVN-71 Theodore Roosevelt",
|
||||
"CVN-72 Abraham Lincoln",
|
||||
"CVN-73 George Washington",
|
||||
"CVN-74 John C. Stennis",
|
||||
"CVN-75 Harry S. Truman"
|
||||
],
|
||||
"helicopter_carrier_names": [
|
||||
"LHA-1 Tarawa",
|
||||
"LHA-2 Saipan",
|
||||
"LHA-3 Belleau Wood",
|
||||
"LHA-4 Nassau",
|
||||
"LHA-5 Peleliu"
|
||||
],
|
||||
"navy_generators": [
|
||||
"OliverHazardPerryGroupGenerator"
|
||||
],
|
||||
"requirements": {},
|
||||
"doctrine": "coldwar",
|
||||
"liveries_overrides": {
|
||||
"F/A-18C Hornet (Lot 20)": [
|
||||
"VFA-106",
|
||||
"VFA-113",
|
||||
"VFA-122",
|
||||
"VFA-131",
|
||||
"VFA-192",
|
||||
"VFA-34",
|
||||
"VFA-37",
|
||||
"VFA-83",
|
||||
"VFA-87",
|
||||
"VFA-97"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Syria 1982
|
||||
|
||||
```
|
||||
{
|
||||
"country": "Syria",
|
||||
"name": "Syria 1982",
|
||||
"authors": "Khopa",
|
||||
"description": "<p>Syria and Arab armies in the 1982 invasion of Lebanon</p>",
|
||||
"aircrafts": [
|
||||
"Mi-8MTV2 Hip",
|
||||
"MiG-19P Farmer-B",
|
||||
"MiG-21bis Fishbed-N",
|
||||
"MiG-23MLD Flogger-K",
|
||||
"MiG-25PD Foxbat-E",
|
||||
"Su-17M4 Fitter-K"
|
||||
],
|
||||
"awacs": [
|
||||
"A-50"
|
||||
],
|
||||
"tankers": [
|
||||
"IL-78M"
|
||||
],
|
||||
"frontline_units": [
|
||||
"BMP-1",
|
||||
"MT-LB",
|
||||
"PT-76",
|
||||
"S-60 57mm",
|
||||
"T-55A",
|
||||
"T-72B with Kontakt-1 ERA",
|
||||
"ZSU-57-2 'Sparka'",
|
||||
"ZU-23 on Ural-375"
|
||||
],
|
||||
"artillery_units": [
|
||||
"BM-21 Grad"
|
||||
],
|
||||
"logistics_units": [
|
||||
"LUV UAZ-469 Jeep",
|
||||
"Truck Ural-375"
|
||||
],
|
||||
"infantry_units": [
|
||||
"Infantry AK-74 Rus",
|
||||
"Paratrooper AKS",
|
||||
"Paratrooper RPG-16"
|
||||
],
|
||||
"air_defenses": [
|
||||
"ColdWarFlakGenerator",
|
||||
"EarlyColdWarFlakGenerator",
|
||||
"SA2Generator",
|
||||
"SA3Generator",
|
||||
"SA6Generator",
|
||||
"SA8Generator",
|
||||
"SA9Generator",
|
||||
"SA13Generator",
|
||||
"ZSU23Generator",
|
||||
"ZU23Generator",
|
||||
"ZU23UralGenerator",
|
||||
"ZSU57Generator"
|
||||
],
|
||||
"ewrs": [
|
||||
"BoxSpringGenerator",
|
||||
"TinShieldGenerator"
|
||||
],
|
||||
"missiles": [
|
||||
"ScudGenerator"
|
||||
],
|
||||
"missiles_group_count": 1,
|
||||
"aircraft_carrier": [],
|
||||
"helicopter_carrier": [],
|
||||
"helicopter_carrier_names": [],
|
||||
"destroyers": [],
|
||||
"cruisers": [],
|
||||
"requirements": {},
|
||||
"carrier_names": [],
|
||||
"navy_generators": [
|
||||
"GrishaGroupGenerator"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#
|
||||
## Squadron example
|
||||
### VF-101
|
||||
```
|
||||
---
|
||||
name: VF-101
|
||||
nickname: Grim Reapers
|
||||
country: USA
|
||||
role: Strike Fighter
|
||||
aircraft: F-14B Tomcat
|
||||
livery: VF-101 Dark
|
||||
mission_types:
|
||||
- BAI
|
||||
- BARCAP
|
||||
- CAS
|
||||
- DEAD
|
||||
- Escort
|
||||
- Intercept
|
||||
- OCA/Aircraft
|
||||
- OCA/Runway
|
||||
- SEAD
|
||||
- Strike
|
||||
- Fighter sweep
|
||||
- TARCAP
|
||||
```
|
||||
### VF-102
|
||||
```
|
||||
---
|
||||
name: VF-102
|
||||
nickname: Diamond Backs
|
||||
country: USA
|
||||
role: Strike Fighter
|
||||
aircraft: F-14B Tomcat
|
||||
livery: VF-102 Diamondbacks 102 (2000)
|
||||
mission_types:
|
||||
- BAI
|
||||
- BARCAP
|
||||
- CAS
|
||||
- DEAD
|
||||
- Escort
|
||||
- Intercept
|
||||
- OCA/Aircraft
|
||||
- OCA/Runway
|
||||
- SEAD
|
||||
- Strike
|
||||
- Fighter sweep
|
||||
- TARCAP
|
||||
```
|
||||
|
||||
#
|
||||
## Campaign configuration
|
||||
|
||||
Clash_over_Cyprus.yaml:
|
||||
```
|
||||
---
|
||||
name: Syria - Clash over Cyprus
|
||||
theater: Syria
|
||||
authors: Maxl
|
||||
description: <p>Syria invades Cyprus, forcing NATO to act. The United States 6th fleet is the first to respond in the Mediterranean sea.</p>
|
||||
version: "9.1"
|
||||
recommended_player_faction: US Navy 1985
|
||||
recommended_enemy_faction: Syria 1982
|
||||
miz: Clash_over_Cyprus.miz
|
||||
performance: 1
|
||||
recommended_start_date: 1986-05-12
|
||||
squadrons:
|
||||
#BLUFOR CVN
|
||||
Naval-1:
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- VF-101
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- VF-102
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- A-4E Skyhawk
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- A-4E Skyhawk
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- VAW-125
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- VS-35 (Tanker)
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- VS-35
|
||||
# Gazipasa
|
||||
41:
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- E-3A
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- KC-135 Stratotanker
|
||||
- primary: Transport
|
||||
aircraft:
|
||||
- C-130
|
||||
# FOB Bozdogan
|
||||
FOB Bozdogan:
|
||||
- primary: Transport
|
||||
aircraft:
|
||||
- HSM-40
|
||||
- UH-1H Iroquois
|
||||
# FOB Latchi
|
||||
FOB Latchi:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- AH-1W SuperCobra
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- UH-1H Iroquois
|
||||
# Paphos
|
||||
46:
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-21bis Fishbed-N
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-23MLD Flogger-K
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
# Akrotiri
|
||||
44:
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- A-50
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- IL-78M
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-21bis Fishbed-N
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-23MLD Flogger-K
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
# FOB Morphou
|
||||
FOB Morphou:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: CAS
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
# FOB Mari
|
||||
FOB Mari:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: CAS
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
# Pinarbashi
|
||||
51:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
# Ercan
|
||||
49:
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-29S Fulcrum-C
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-21bis Fishbed-N
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-24M Fencer-D
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
# Larnaca
|
||||
47:
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-21bis Fishbed-N
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-23MLD Flogger-K
|
||||
- primary: SEAD
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Strike
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
# Bassel Al-Assad
|
||||
21:
|
||||
- primary: AEW&C
|
||||
aircraft:
|
||||
- A-50
|
||||
- primary: Refueling
|
||||
aircraft:
|
||||
- IL-78M
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-21bis Fishbed-N
|
||||
- primary: BARCAP
|
||||
secondary: air-to-air
|
||||
aircraft:
|
||||
- MiG-23MLD Flogger-K
|
||||
- primary: Anti-ship
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Su-17M4 Fitter-K
|
||||
- primary: Transport
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
# FOB Latakia
|
||||
FOB Latakia:
|
||||
- primary: CAS
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: CAS
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
- Mi-24P Hind-F
|
||||
- primary: Transport
|
||||
secondary: air-to-ground
|
||||
aircraft:
|
||||
- Mi-8MTV2 Hip
|
||||
```
|
||||
|
||||
|
||||
_Pro tip: for more information on the structure and format of the shown examples, go to:_
|
||||
- [custom campaigns](Custom-campaigns)
|
||||
- [custom factions](Custom-Factions)
|
||||
- [custom squadrons & pilots](Squadrons-and-pilots)
|
||||
33
Auto-purchase-options.md
Normal file
33
Auto-purchase-options.md
Normal file
@ -0,0 +1,33 @@
|
||||
Auto-purchase options are available for players. There are three aspects which can each be enabled individually:
|
||||
|
||||
* Runway repair
|
||||
* Front line reinforcement
|
||||
* Aircraft reinforcement
|
||||
|
||||
Each of these can be enabled during campaign creation and toggled later in the setting menu.
|
||||
|
||||
Each of these behaviors are the same as opfor uses.
|
||||
|
||||
## Automatic runway repair
|
||||
|
||||
If enabled, damaged runways will automatically begin repairs if they are affordable.
|
||||
|
||||
Runway repairs will take precedence over front line and air unit reinforcement.
|
||||
|
||||
## Front line reinforcement
|
||||
|
||||
Up to half of the budget remaining after repairing runways will be spent on units to reinforce front lines.
|
||||
|
||||
Reinforcements will first be purchased at control points with active front lines that have fewer than 30 units. Once all active front lines have at least 30 units, additional units will be assigned to all control points at random.
|
||||
|
||||
## Aircraft reinforcement
|
||||
|
||||
Any remaining budget will be used to purchase aircraft.
|
||||
|
||||
Aircraft will be purchased to fulfill any missions that could not be planned due to lack of aircraft. This occurs in the order specified by the mission planner. The best aircraft for the job will be purchased. The preferences for each task type are defined in https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/ato/ai_flight_planner_db.py.
|
||||
|
||||
When attempting to fulfill an order for a mission, the purchase will be attempted at the airfield in range of the target, with parking available, closest to the mission target. Airbases outside the enemy's threat zone will be preferred. This will result in more regular, safer, albeit longer flight plans.
|
||||
|
||||
Aircraft are selected to fit the unfulfilled missions. Liberation maintains a preferred list of aircraft for each mission type as well as a list of all capable aircraft. A random selection will be made from the preferred list first, but if empty or too expensive the capable list will be used.
|
||||
|
||||
If no capable aircraft in range can be purchased, the remaining budget will roll over to the next turn.
|
||||
17
Base-Capture.md
Normal file
17
Base-Capture.md
Normal file
@ -0,0 +1,17 @@
|
||||
# Base Capture
|
||||
|
||||
Liberation follows standard DCS base capture mechanics. It requires:
|
||||
1. A friendly ground unit within the base radius
|
||||
2. No enemy ground units within the base radius.
|
||||
|
||||
You can check the status of the base by looking at the F10 map and clicking on that air base.
|
||||
|
||||
## Unit retreat behavior
|
||||
|
||||
When a base is captured any units deployed there will attempt to retreat to a friendly base rather than be captured.
|
||||
|
||||
Aircraft will retreat to a friendly control point capable of operating that aircraft (in other words, only carrier capable aircraft may retreat to a carrier), with available parking spaces, within 200nm.
|
||||
|
||||
Ground units will retreat to a connected friendly control point.
|
||||
|
||||
For both air and ground units, any unit that is not able to retreat will be captured and sold.
|
||||
398
Campaign-Battle-of-Abu-Dhabi-Play-Through.md
Normal file
398
Campaign-Battle-of-Abu-Dhabi-Play-Through.md
Normal file
@ -0,0 +1,398 @@
|
||||
<!-- Multi Image Sources -->
|
||||
<!-- https://imgur.com/a/aXIQk0z -->
|
||||
<!-- https://imgur.com/a/kfTmkzp -->
|
||||
<!-- https://imgur.com/a/J1f8wXU -->
|
||||
|
||||
## Setting Up a New Campaign
|
||||
|
||||
1. Click on the "New Game" icon on the toolbar.
|
||||
|
||||

|
||||
|
||||
This will start the new game wizard.
|
||||
|
||||

|
||||
|
||||
Click on "Next >" to continue.
|
||||
|
||||
2. The next page of the wizard will allow us to select a campaign as well as configure some context for the campaign.
|
||||
|
||||

|
||||
|
||||
- **Item 1**
|
||||
|
||||
This is a list of campaigns available in Liberation.
|
||||
Each campaign listing begins with the name of the map or terrain it is set in, follwed by the name of the campaign itself.
|
||||
We click on each campaign to select it, as well as to get some more details about setting it up or running it.
|
||||
(If we are interested in developing our own custom campaign, have a look [here](https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-campaigns)).
|
||||
|
||||
- **Item 2**
|
||||
|
||||
As we click on each campaign from the list on the left, in the top box on the right we will see a brief description of the campaign, including the default factions that the campaign designer has selected for the campaign.
|
||||
|
||||
In terms of game mechanics, a "faction" essentially determines the types of hardware that each side will have access to during the campaign (i.e., what aircraft, ground vehicles, ships, air defenses, etc.).
|
||||
The default factions may reflect historical or pseudo-historical units for a particular conflict a campaign is replicating, if any, or otherwise something that the campaign designer selected for balance or whimsy.
|
||||
We will have the option to customize the factions on the next page, so don't worry if we do not like the default factions, or even if we do not really understand what hardware is associated with each faction as this will be listed later.
|
||||
|
||||
- **Item 3**
|
||||
|
||||
Take note of the performance impact rating.
|
||||
We have some *limited* ability to [tweak this](https://github.com/dcs-liberation/dcs_liberation/wiki/Performance-Options) later on in the game, but we really should take into consideration the power of our machine or server when selecting a campaign.
|
||||
|
||||
- **Item 4**
|
||||
|
||||
Clicking on "Invert Map" under "Map Settings" will reverse the starting positions of the sides of the campaign, essentially letting us play the campaign from the other side (with appropriate faction selection later on). We will ignore this for now.
|
||||
|
||||
- **Item 5**
|
||||
|
||||
Under "Time Period" we can select the time period we want to set the campaign in.
|
||||
The time period that we choose has TWO effects on gameplay:
|
||||
- The season (Spring, Summer, Fall, Winter) determines the season textures on the campaign map.
|
||||
- The year will *ONLY* make a difference if we later on choose to have era-dependent weapons restrictions in our campaign setup. Selecting this option (which will be available under the game settings once we start the campaign) will result in Liberation restricting all flights to only load up on ordnance that was in service by the year we set here. So, for example, if we set the campaign to play out in the "Cold War -- Fall [1970]", then our flights will not have access to AIM-120's, JDAMs/JSOWs, etc.
|
||||
|
||||
Next to the campaign itself, the time period is probably the most important option we will want to consider on this page.
|
||||
For now, let us select "**Persian Gulf - Battle of Abu Dhabi**" as the campaign, and leave all the settings at their defaults, including the default time period (Summer 1995).
|
||||
Click on "``Next >``" to proceed to the next page.
|
||||
|
||||
3. The next page of the wizard allows us to select both ours as well as the opposing forces: "Player faction" and "Enemy faction", respectively.
|
||||
|
||||

|
||||
|
||||
As noted above, a "faction" in game terms essentially determines the types of aircraft, ground vehicles, air defenses, etc. that each side will have available.
|
||||
Changing the faction using the dropdown boxes next to "Player faction" and "Enemy faction" will change the listing of types available under each.
|
||||
Obviously, this will have *massive* difference in the campaign play, and we can set up anything we like, realistic or not, balanced or not.
|
||||
In actual play, should spend some time stepping through different factions and reviewing their hardware/equipment to see what suits our whims, interests, etc.
|
||||
For the same campaign, we can set up factions so that we play out everything from a peer-to-peer symmetrical conflict to a COIN conflict, or anything in between.
|
||||
Moreover, we can select factions with hardware from different periods to capture WW2-ish, Cold War, or post-Cold War technologies and dynamics.
|
||||
|
||||
Note that this page only selects hardware *availability* (the types of equipment available), not capacity (the numbers of each).
|
||||
We will later have the ability to select this for each side as we desire.
|
||||
|
||||
For the campaign we have selected, the campaign designer has set "Iran 2015" as the player faction and "United Arab Emirates (2015)" as the opposing faction.
|
||||
This makes perfect sense for the geography and politics of the region, as well as the game balance.
|
||||
|
||||
However, just to explore the possibilities, we are going to change the factions around.
|
||||
We are going to select "USA 1990" as the player faction and "Iraq 1991" as the enemy or opposing faction.
|
||||
We can "lore up" this conflict any way we please (maybe Iraq has invaded and occupied UAE very rapidly, and now the US has stepped in to push them back?), or just accept that this makes for a nice scenario to be explored.
|
||||
|
||||
After selecting "USA 1990" and "Iraq 1991" for player and enemy factions, respectively, we click on "Next >" to proceed to the next page of the wizard.
|
||||
|
||||
4. In this page of the wizard, we set the availability of some specialized hardware.
|
||||
|
||||

|
||||
|
||||
So, for example, in the top box we can decide whether or not we want to allow aircraft carriers (and, if so, the supercarrier), helicopter carriers, or even any form of navy at all.
|
||||
We can also set the desired mission duration.
|
||||
Note that the only thing this effects is the AI mission planning -- the AI (our, side if we do not opt out later on for the AI to plan our missions, as well as the opposing side either way) will not plan any missions past this time.
|
||||
We will still be able to play the mission for longer than this, but we will find things strange as the enemy may not have any CAPs on station or indeed much activity at all.
|
||||
(Also note that we can always end the mission anytime, with the caveat that some of the AI may not have completed their assigned tasks).
|
||||
|
||||
The second box lets Liberation know what game modification we want to use in the mission generation.
|
||||
Two very important things to note here!
|
||||
|
||||
- First, we need to have independently downloaded and installed the mods for the missions to work! Liberation does not bundle these mods, nor will it download them for us.
|
||||
- Second, even if we have the mods installed, if the factions that we have selected do not explicitly include the various types offered, Liberation will not generate missions that include them!
|
||||
|
||||
For now, the only option on this page that we are going to select will be "Use Supercarrier module" (assuming we have it).
|
||||
After that, we click on "Next >" to proceed to the final set of options in the wizard.
|
||||
|
||||
5. This page allows us to configure the parameters of the notional "economy" of the game.
|
||||
|
||||

|
||||
|
||||
The "economy" is a game mechanic to manage the balance and difficulty of the campaign.
|
||||
It essentially determines how *much* of each side will able to buy out of the various types each faction makes available.
|
||||
There are two things to consider here:
|
||||
|
||||
- Next to equipment types (SA-10's vs SA-2's? Su-35s vs MiG-19's?), this is probably the single most important way to dial in the game balance.
|
||||
If we find ourselves going up against an anemic opposition that can barely put together a noticable CAP to provide a nice challenge to our strikes, or find ourselves rolling into victory without much satisfaction, increase the opposing faction budget.
|
||||
Alternatively, if we find ourselves facing hordes of aircraft and SAMs and tanks and are overwhelmed, do the opposite: decrease the opposing faction budget.
|
||||
We can also, of course, decrease our budgets to make our life more challenging, or increase our budget to allow us to generate extra sorties to deal with the hordes.
|
||||
The approach we take should probably be driven by the second consideration below: performance.
|
||||
|
||||
- The single biggest crunch to our game performance is the number of units in play in a particular mission: more units, less performance.
|
||||
The single biggest way we can influence the number of units in play in a particular mission is by changing the budget.
|
||||
If we find our games are a stutter fest or unplayable on our computers, then we can dial down the budgets for *both* sides here (e.g., dropping both sides down to 1000 or less).
|
||||
|
||||
This page also allows us to decide whether or not the Liberation AI will automatically use some of our funding to repair damage, or purchase ground troops and aircraft.
|
||||
|
||||

|
||||
|
||||
For this example, we are going to ask Liberation to manage all our resources for us by checking all the following boxes:
|
||||
|
||||
- Automate runway repairs
|
||||
- Automate front-line purchases
|
||||
- Automate aircraft purchases
|
||||
|
||||
6. Clicking on "next" will take us to last page of the wizard.
|
||||
|
||||

|
||||
|
||||
Here all we have to do is click on "finish", and Liberation will do its thing to generate the campaign based on our options.
|
||||
Then, the next screen we will be presented with will be the main Liberation interface, ready for us to dive into Turn 0 of our brand new campaign!
|
||||
|
||||
|
||||
## The Interface and Its Elements
|
||||
|
||||
Looking at the main interface of Liberation, we see a number of elements and panels.
|
||||
|
||||

|
||||
|
||||
1. This is the toolbar. From here we can create new campaigns, load saved ones, change the campaign and mission generation settings, etc.
|
||||
2. This is our package window. Once we have planned some missions, we will see each package listed here.
|
||||
3. This is our package flights window. Each package consists of one or more flights. For each package currently selected in the previous panel, the flights that make it up will be listed here.
|
||||
4. This is our information window, where a log of various activities carried out by Liberation gets reported.
|
||||
5. This is our main map view window, and is discussed in dtail below.
|
||||
6. This is our "budget" in the abstract notional economy that Liberation uses to manage the game balance in terms of units and equipment fielded.
|
||||
7. This is where we will go to generate a mission.
|
||||
|
||||
### The Map Window in Detail
|
||||
|
||||
The main map window is what we will use primarily to visualize and plan our campaign.
|
||||
|
||||

|
||||
|
||||
- We can zoom in and out of the map by hovering over it and using our mouse scroll wheel.
|
||||
We can actually get some really nice terrain detail at the maximum zoom, allowing for some pretty fine-scale mission planning that exploits terrain.
|
||||
- Our forces are represented by blue icons, while the enemy is represented by red icons.
|
||||
- The darker shaded icons represent *Control Points* --- important strategic objectives that structure the battlespace, as well as places in which we will base our aircraft, vehicles, and troops.
|
||||
Most of these Control Points lie along the campaign axis (discussed below), but note that our carrier and helicopter carrier are also Control Points, given their capacity to base aircraft.
|
||||
- Hovering our mouse over each icon shows we some information about the forces represented by each icon.
|
||||
- Right-clicking on a non-Control Point icon brings up some details about the group's composition.
|
||||
- Right-clicking on a friendly (blue) Control Point icon brings up a dialog which allows we to manage assets and resources related to this group, including "purchase" (under Liberation's notional econonmy) of aircraft, ground units, etc.
|
||||
- For special naval Control Points, such as aircraft and helicopter carriers, right-clicking and dragging on its icon allows we to relocate the ships. The (future) new station will be indicated by a semi-transparent icon connected to the current location by a line, and it will only take effect the next turn. During the mission, carriers will always steam into the wind and relocate to the designated position between missions.
|
||||
- Left-clicking on any icon brings up a package scheduling dialog which allows we to frag missions relating to this group. For friendly groups, we can, for e.g., plan BARCAPs. For enemy groups we can plan various strikes, CAS, BAI, DEAD, SEAD, etc. missions.
|
||||
- A thick line, running shows the principle axis of the compaign, which connects all the Control Points of the campaign, both ours and the enemy. This is discussed in detail below.
|
||||
- This is the primary axis along which the campaign will be fought, and on which we will advance or retreat as we capture or lose Control Points arranged upon it.
|
||||
- The dark red section of the axis, which runs from FOB Ras Al Khaminah to Liwa in the southeast, represents the part of the axis under enemy control.
|
||||
- The salmon-colored section of the axis, running between FOB Ras Al Khaminah and Khasab, represent the current segment of the campaign axis that is being fought over.
|
||||
- The orange line across the axis represents the front line, the current FEBA.
|
||||
- As our missions prove successful, this front line will advance down the axis, toward the next enemy Control Point on the axis (FOB Ras Al Khaminah).
|
||||
- If our forces advance far enough to capture this Control Point, then the this segment of the campaign axis will turn blue and the next one down (between Al Khaminah and Al Minhad) will turn salmon, and this continues to the next Control Point.
|
||||
- Conversely, if the enemy proves more successful, the front line marker will retreat up the campaign axis until the enemy captures Khasab.
|
||||
|
||||
|
||||
## Turn 0
|
||||
|
||||
Turn 0 is actually a "pre-game" turn, where we will do two things:
|
||||
|
||||
- We will use this turn to set some options and other settings to adjust how the campaign and the missions it generates plays out.
|
||||
- We (and the enemy) will make initial purchases, populating our bases and filling out our orders of battle table (i.e., determine our force dispositions).
|
||||
|
||||
### Settings
|
||||
|
||||
1. Let's begin by selecting our mission generation options/settings as well as some other options for the campaign.
|
||||
Click on the "Settings" icon in the toolbar.
|
||||
|
||||

|
||||
|
||||
2. The first page that shows up is the "Difficulty" page.
|
||||
|
||||

|
||||
|
||||
- We can set the skill levels of various elements in the missions with the first three options.
|
||||
- The income multipliers are another way of setting a game balance. Whereas the budgets we set in the campaign generation dialog affect the *initial* capacity of each side, here we can influence how subsequent turns go.
|
||||
- At the bottom, we can also set whether or not we will allow external views or how much players can see in the F10 map.
|
||||
|
||||
We can leave all of these at their defaults, though we may want to select the "No night missions" options if our preferred aircraft does not do well in those conditions.
|
||||
|
||||
3. We then move on to the "Campaign Management" page from the list on the left.
|
||||
|
||||

|
||||
|
||||
In the top box (1) we can decide whether or not we want to allow full unrestricted access to all weapons available in DCS for each platform, or restrict them in some to enhance (or at least modify) gameplay.
|
||||
For example, if we chose 1990 as the period of interest, checking the "Restrict weapons by date" box will only allow AIM-7's but not AIM-120's for all our Hornets and Vipers.
|
||||
Similarly for air-to-ground weapons: no GPS weapons will be available.
|
||||
Of course, *both* sides will be affected by the same weapons restriction.
|
||||
Obviously, this will have a major impact on the dynamics of the game, potentially make it a lot more interesting and challenging.
|
||||
|
||||
In the bottom box (2), we can decide how much of our strategic and tactical planning is done for us by Liberation.
|
||||
We have already asked Liberation to manage our assets and resources in the campaign setup, and this is indicated by the checked boxes: "Automate runway repairs", "Automate front-line purchases", and "Automate aircraft purchases".
|
||||
|
||||
But here we can also fine tune Liberation's mission planning with respect to how players are assigned missions by selecting one of the options from the "Automatic package planning behavior" drop down box.
|
||||
|
||||

|
||||
|
||||
You can read about the various options available [here](https://github.com/dcs-liberation/dcs_liberation/wiki/Squadrons-and-pilots).
|
||||
For now, we are going to ask Liberation to run the mission planning for us, and set this to "Prefer player pilots", to make sure that sorties get assigned to human pilots first, and flights will only be assigned to AI after all human pilot slots are filled.
|
||||
|
||||
We also go ahead and ask Liberation to start human-piloted flights as soon as possible, to allow for the fact that humans are, after all, humans, and lack the infinite patience of AI:
|
||||
|
||||

|
||||
|
||||
4. Now we select the "Mission Generator" page from the list on the left.
|
||||
|
||||

|
||||
|
||||
- The top box has the following options:
|
||||
|
||||
- "Use Supercarrier Module": check this box if we have this module.
|
||||
- "Put Objective Markers on the Map": selecting this option will create a separate waypoint for each strike target.
|
||||
- "Player flights ignore TOT and spawn immediately": checking this box will allow we to spawn in anytime, as opposed to waiting for our flight's fragged start time.
|
||||
Our published route and waypoint timing will still reflect the mission plan, though, of course, it will be up to we to fly it accordingly.
|
||||
- "Default start type for AI aircraft": We can adjust the start type for each flight individually when we frag them, but this sets the defaults for our side as well as the enemy.
|
||||
- "Desired mission duration": As noted above, we are free to spawn in anything and quit the mission anytime. What this option determines is mission planning time frame that Liberation does for the enemy faction as well as our side (if we allow Liberation to plan our missions).
|
||||
|
||||
- The bottom box has some important ways for we to manage performance.
|
||||
In particular, we probably want to *UNCHECK* "Smoke visual effect on frontline" and "Generate infantry squades along vehicles".
|
||||
As noted in [the optimization tips](https://github.com/dcs-liberation/dcs_liberation/wiki/Performance-Options), culling of distant units will help by preventing aircraft spawning more than a certain distance from the frontlines.
|
||||
|
||||
5. After this, we select the "Lua Plugins" page, and select some extra mods, plugins, or scripting goodies we want Liberation to implement in our missions.
|
||||
|
||||

|
||||
|
||||
- "JTAC Autolase": we want this checked if we want integrated lasing of targets by an AI pseudo-JTAC (visualized as a invulnerable and invisible-to-the-enemy Predator drone currently).
|
||||
- "SkynetIADS": we want this checked! The default SAM behavior in DCS is very dumb -- their radars are active all the time, and they instantly launch as soon as the tip of our aircraft pokes into their wildest maximum range.
|
||||
This makes them easy to detect and defeat by "cheesing" (just poke in and out of their maximum range until they run out of ammo).
|
||||
Skynet *greatly* improves their behavior in a range of ways, including: simulating an IADS (Integrated Air Defense System, by linking together information from multiple sensor platforms including EW radars); the radars being dark until something is in range; the missiles not firing until something has a decent probability of not escaping; radars going dark when they detect anti-radiation missiles heading their way, etc. etc.
|
||||
It changes the gameplayer entirely and for the better.
|
||||
SAM sites can actually be suppressed for example, by HARMs.
|
||||
Furthermore, it also improves performance as radars are a major resource hog.
|
||||
- "EWRS": if we select this, we will be provided a sort of "super-AWACS-on-steroids" feed during the DCS mission.
|
||||
- "Splash Damage": we almost certainly want this option. By default DCS does not model fragmentation or "near-impact" damage from explosives. This mod fixes is this.
|
||||
|
||||
After we have selected all the settings and options we want, close the dialog box.
|
||||
|
||||
6. The final step here is to let Liberation know who are human pilots are.
|
||||
More specifically, we are going to tell Liberation which of the pilot "roles" are going to be filled out by humans and which will be filled out by AI.
|
||||
Click on the "AIR WING" button on the tool bar to call up the Air Wing dialog:
|
||||
|
||||

|
||||
|
||||
Here, we see a list of squadrons available to us, and the type of aircraft that they fly.
|
||||
We choose pilot slots to be assigned to humans, as opposed to the default AI, based on the aircraft.
|
||||
So, for example, if we want to fly the F/A-18C in the missions generated by DCS, we would need to let Liberation know to assign a pilot slot from an F/A-18C squadron to a human player.
|
||||
We select an F/A18C squadron from the list and double-click it to call up the pilot assignment dialog:
|
||||
|
||||

|
||||
|
||||
Selecting a pilot name from the list that shows up and clicking on "CONVERT TO PLAYER" assigns that slot to a player.
|
||||
|
||||

|
||||
|
||||
In this example, two pilot slots have been assigned to players.
|
||||
We can assign as many pilot slots as we need to provide client slots for human players in the game.
|
||||
And, of course, they can be for different types of aircraft.
|
||||
We can further fine tune the sortie types generated for human players by selectively checking or unchecking the mission types that the named pilot can fly.
|
||||
So, for example, if we only wanted to fly A2A missions, we would uncheck all boxes except "Escort", "BARCAP", "TARCAP", and "Fighter Sweep".
|
||||
(If we only wanted to flying *exciting* A2A missions, we would probably stick to just "Escort" or "Fighter Sweep" :) ).
|
||||
|
||||
Once we have set up the human pilot assignments, we close the Air Wing dialog.
|
||||
|
||||
7. We are now done with the Turn 0 and *almost* ready to begin the campaign!
|
||||
First, though, let us save the game in its current state, so that all our campaign setup does not get lost should something go wrong.
|
||||
|
||||
|
||||

|
||||
|
||||
8. *Now* we click on "Begin Campaign" on the upper right hand corner of the Liberation window to proceed to Turn 1.
|
||||
|
||||
|
||||

|
||||
|
||||
## Turn 1: Mission Planning
|
||||
|
||||
Liberation works in the background for a while, crunches the numbers, and then shows us all the sorties, flights, and packages planned for the next turn.
|
||||
|
||||

|
||||
|
||||
As noted above, the packages are listed in the Package window, with each package consisting of one or more flights with a particular objective.
|
||||
All the routes for all the flights are shown with blue lines in the map window.
|
||||
For each selected package, the flights that compose it show up in the Flights window below, and as we select the flight, its route gets highlighted in yellow.
|
||||
|
||||
We can scroll down the package list till we find the packages that have human players assigned.
|
||||
|
||||

|
||||
|
||||
We see the number of Player Slots per package in the Packages window (1): "DEAD PELICAN" and "DEAD PENGUIN".
|
||||
So, in this case, two DEAD packages (Destruction of Enemy Air Defenses -- strike against SAM targets) have been planned, each with one player slot assigned.
|
||||
|
||||
Selecting a particular package shows the flights that make up the package listed in the Flights window, as well as the number of player slots in that flight (2).
|
||||
Here we see that the strike against PENGUIN has 2 Harriers fragged for the strike itself, 2 more Harriers to carry out SEAD (Suppression of Enemy Air Defenses, i.e. sending anti-radiation missiles toward the SAM controllers), while 2 Hornets have been fragged as fighter escort to protect the strike, with one player has assigned to the escort flight.
|
||||
|
||||
The main map viewer now highlights the route of the selected flight in yellow (3).
|
||||
Note the map pins that show for each waypoint on the route of the selected flight (indicated by red arrows), along with the altitude and timings the flight is expected to hit each waypoint.
|
||||
This route with its waypoints will be available inside the DCS cockpit on the kneeboard.
|
||||
|
||||
All missions will have at least the following waypoints:
|
||||
|
||||
- **HOLD**: this will be the waypoint at which the flight will orbit or loiter with all the other flights of the package until the entire package is assembled. In the DCS game itself, The kneeboard flight plan publishes the departure time, i.e. the time we leave the HOLD waypoint and start heading toward the JOIN waypoint.
|
||||
- **JOIN**: this is the waypoint where the entire package coalesces into a formation and pushes toward the INGRESS point.
|
||||
- **INGRESS**: this is the final point from which we push off into chute toward the target.
|
||||
- **TARGET**: this is the package objective
|
||||
- **EGRESS**
|
||||
- **SPLIT**
|
||||
|
||||
|
||||
We can adjust the route to our liking by clicking and dragging the pins.
|
||||
We can adjust the route of *any* flight, not just the player-assigned ones.
|
||||
Liberation will automatically calculate the timings of each waypoint to meet the fragged TOT (Time on Target) for each flight.
|
||||
|
||||
Note that we are able to zoom into the Liberation map quite a bit, giving us a nice idea of the terrain features.
|
||||
We can edit the routes of the flights, ours or AI, to exploit terrain features to provide concealment from SAMs, enemy radars, AAA, etc.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Setting the Front Line Stance
|
||||
|
||||
Ultimately, success or failure in Liberation, as in the real world, comes from success or failure of the ground war.
|
||||
We can use our airpower to shape the battlespace in favor of the ground way in many ways, to a greater or lesser extent.
|
||||
But we can also change the style of ground war fought by setting the [front line stance](https://github.com/dcs-liberation/dcs_liberation/wiki/Frontline-Strategies-Stances).
|
||||
|
||||
We left-click on the Blue Control Point (base) next to the front line to call up the asset manager, click on the Ground Forces HQ tab, and the use the drop box to select a [front line stance](https://github.com/dcs-liberation/dcs_liberation/wiki/Frontline-Strategies-Stances).
|
||||
|
||||

|
||||
|
||||
## Generating the Mission to Fly in DCS
|
||||
|
||||
Before anything else, let us save the game in its current state so that we can always return to it if needed.
|
||||
|
||||

|
||||
|
||||
Then w click on the "Take Off" button in the toolbar on the upper right, and Liberation will generate a mission for us.
|
||||
|
||||

|
||||
|
||||
Liberation will now create a file called "``liberation_nextturn.miz``" in our DCS saved missions directory (typically "``C:/Users/<Name>/Saved Games/DCS/Missions``").
|
||||
Liberation then shows us a window, indicating that it is now waiting for use to run and complete the mission in DCS.
|
||||
|
||||

|
||||
|
||||
## Flying the Mission in DCS
|
||||
|
||||
Now, let us launch DCS so that we can actually fly the mission!
|
||||
Upon starting DCS, we will find the mission file located in the default Mission folder.
|
||||
When we load up the mission we will be offered all the client slots that we allocated during the Liberation planning phase.
|
||||
If we made sure to select "Player flights ignore TOT and spawn immediately" or our fragged start time is T+00:00:00, we will spawn in to our cockpit right away.
|
||||
|
||||
In the cockpit, calling up the kneeboard and jumping back a few pages will give us:
|
||||
|
||||
|
||||
- Our flight plan, including our waypoint times, as well as ATC comms, TACANs, etc.
|
||||
- Our support plan -- tanker and AWACS comms and TACANs
|
||||
|
||||
Regardless of our spawn time, it will be up to use to keep (or not keep!) the mission plan.
|
||||
If we spawn early, we can take the extra time to set up, look around, etc., before rolling up to take off.
|
||||
If we take off early, we may need to spend a longer time orbiting the HOLD point to meet the correct departure time and keep the mission timing.
|
||||
If we take off too late or are otherwise delayed, we may need to speed up, skip the hold, etc. to keep our mission timings.
|
||||
Timings are everything.
|
||||
|
||||
We can quit and exit the mission at any time.
|
||||
So it's up to us whether we want to fly the whole 9 yards from start to finish.
|
||||
But note this: the state of the "world" at the time we exit the mission (that is, actually quit the game, not just slot into another client) is, as far as Liberation is concerned, the absolute final outcome of the turn.
|
||||
Any missions, AI or player, that have not completed will not have their tasks magically completed.
|
||||
So if we exit the mission before other flights have started or completed their missions, whether or not we have completed ours (or if we have crashed), then we will not have progressed as far as we have planned and probably have to frag those missions again in the next turn.
|
||||
|
||||
If we are unsatisfied with the outcome of the mission, ours or any other flights, we can also simply restart the mission and play it again.
|
||||
|
||||
## Completing the Mission and the Next Turn
|
||||
|
||||
Once we have exited the mission, Liberation will automatically detect its completion, and it's dialog box will change to offer us chance to accept the results.
|
||||
(Note that we will have to Alt-Tab to switch focus to the Liberation window to see this dialog, especially if DCS is still running.)
|
||||
Here we can click on "Accept" if we are happy and want to proceed to the next turn, or just "Abort" if we want to try the same mission again (remembering that we need to click "TAKE OFF" to generate the mission and get Liberation prepared to read the results).
|
||||
|
||||
If we accept the results of the mission by clicking on the appropriate button in the , then Liberation will present a summary of all the losses during the missions, including base capture events.
|
||||
Then these changes will be applied to the Liberation's version of the "world", new income generated is added to the budgets, and we are ready for the next turn!
|
||||
|
||||
60
Campaign-maintenance.md
Normal file
60
Campaign-maintenance.md
Normal file
@ -0,0 +1,60 @@
|
||||
## Campaigns
|
||||
|
||||
### Supported campaigns
|
||||
|
||||
These campaigns have owners that will to keep them up to date for each release of Liberation. They might still be (frequently) incompatible on the preview branch, but they should be fixed before release.
|
||||
|
||||
Map | Name | Owner (GitHub user name)
|
||||
--- | --- | ---
|
||||
Caucasus | Black Sea | @DanAlbert
|
||||
Caucasus | Northern Russia | @RoleplayingPleb
|
||||
Caucasus | Operation Vectron's Claw | @Starfire13
|
||||
Caucasus | Up the Coast | @holyorangejuice
|
||||
Falklands | Operation Grabthar's Hammer | @Starfire13
|
||||
Normandy | From Caen to Evreux | @MetalStormGhost
|
||||
NTTR | Exercise Vegas Nerve | @Starfire13
|
||||
Persian Gulf | Battle of Abu Dhabi | @DanAlbert
|
||||
Syria | Battle for Golan Heights | @Khopa
|
||||
Syria | Full Map | @RoleplayingPleb
|
||||
Syria | Operation Allied Sword | @sgtfuzzle17
|
||||
Syria | Operation Black Ball | @sgtfuzzle17
|
||||
Syria | Operation Peace Spring | @Starfire13
|
||||
The Channel | Operation Dynamo | @Khopa
|
||||
|
||||
### Unsupported campaigns
|
||||
|
||||
Every other campaign has no owner. **When they break they will be removed from Liberation**. If you don't want to see those campaigns disappear from Liberation, you can volunteer to maintain them.
|
||||
|
||||
### Retired campaigns
|
||||
|
||||
These campaigns are broken and have no owner to fix them, so they have been removed. If you want to revive them, you can volunteer to maintain them.
|
||||
|
||||
Map | Name | Last included in
|
||||
--- | --- | ---
|
||||
Caucasus | Full | 5.2.1
|
||||
Caucasus | Multi-Part Georgia | 5.2.1
|
||||
Caucasus | Multi-Part Russia | 5.2.1
|
||||
Caucasus | From Mozdok to Maykop | 5.2.1
|
||||
NTTR | Nevada Limited Air | 4.1.1
|
||||
Persian Gulf | Road to Dubai | 4.1.1
|
||||
Persian Gulf | Battle for the UAE | 4.1.1
|
||||
Syria | Humble Helper | 4.1.1
|
||||
Syria | Inherent Resolve | 3.0.0
|
||||
Syria | Operation Atilla | 4.0.0
|
||||
Syria | Russian Intervention | 4.0.0
|
||||
Syria | Operation Mole Cricket 2010 | 4.1.1
|
||||
|
||||
## Becoming a campaign maintainer
|
||||
|
||||
If there is a campaign with no owner that you want to volunteer to own, join our Discord (link on the project's main page) and let us know in the #campaign-maintenance channel (you don't need approval, we just want to know). Edit this page and add the campaign to the Supported Campaigns section.
|
||||
|
||||
If there's an _owned_ campaign that you just wish was more frequently updated in the preview build, reach out to the owner in the #campaign-maintenance channel on Discord. The owner may want to keep their role in that campaign, but they might also be glad to hand off the burden :)
|
||||
|
||||
To send us campaign updates, send us a Pull Request with your updates . If you don't know how to do so but want to learn, the [GitHub docs](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/working-with-your-remote-repository-on-github-or-github-enterprise/creating-an-issue-or-pull-request) can help. If you don't know how to use GitHub and _don't_ want to learn, that's okay too :) Just file a bug using the [Campaign Update template](https://github.com/dcs-liberation/dcs_liberation/issues/new?assignees=&labels=campaign-update-submission&template=campaign_update.md&title=Update+for+%3Ccampaign+name%3E) with the updated files attached. We won't be able to respond as quickly as we can to a PR, but we'll get to it.
|
||||
|
||||
We don't recommend anyone take on more than one or two campaigns, perhaps more if they're small. Spreading yourself too thin means you have less time to focus on each campaign, and we'd rather have a few great campaigns than many that work.
|
||||
|
||||
## Resources
|
||||
|
||||
* [Campaign design guide](Custom-Campaigns)
|
||||
* [Campaign format version details](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/version.py)
|
||||
68
Code-of-Conduct.md
Normal file
68
Code-of-Conduct.md
Normal file
@ -0,0 +1,68 @@
|
||||
## Code of Conduct
|
||||
|
||||
### Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone.
|
||||
|
||||
### Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
### Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
### Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
### Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team on Discord. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
### Attribution
|
||||
This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq
|
||||
28
Community-campaigns.md
Normal file
28
Community-campaigns.md
Normal file
@ -0,0 +1,28 @@
|
||||
This is a list of campaigns created by the community. Feel free to edit this page! If you want to add a campaign, copy a row of the table below and fill it out with your campaign.
|
||||
|
||||
Map | Campaign name | Liberation version | Author | Description | Download link
|
||||
--- | --- | --- | --- | --- | ---
|
||||
--- | --- | --- | --- | --- | ---
|
||||
Caucasus | Some campaign | 2.5 | Someone | Describe your campaign. Include a screenshot if you want. Is it large or small? What part of the map does it take place on? | Upload your mission to a file sharing service and share the link here
|
||||
Syria | Cyprus - Alice Goes to Vacation | 6.0 | E. Erturk | Greeks take over the Turkish Republic of Northern Cyprus. Turks are to respond. | [Alice Goes On A Vacation](https://drive.google.com/file/d/1NRq_89jzOZETo033QodNOGaxfMarxwGq/view?usp=sharing)
|
||||
Syria | Invasion of Israel | 5.1 | Dank Williams | Syrian invasion of Israel during the Yom Kippur War. Inversion not supported. | [invasion_of_israel_5.1.zip](https://github.com/dcs-liberation/dcs_liberation/files/7852621/invasion_of_israel_5.1.zip)
|
||||
Syria | Golan Invasion | 5.0 | Kea | THIS CAMPAIGN IS DESIGNED FOR THE IDF PROJECT F-16I SUFA MOD!!! Israeli forces scramble to respond when a joint Syrian-Iranian exercise doesn't end and instead culminates in a full invasion of the Golan Heights. | https://drive.google.com/drive/folders/14eoM_mQhZsRjMMMxK_mQ89nHM4_-8j6m?usp=sharing
|
||||
Marianas | Pacific Dragon | 5.0 | Kea | THIS CAMPAIGN IS DESIGNED FOR THE CJS SUPERHORNET MOD!!! Following a lightning defeat of Taiwan, Chinese naval forces sweep across the Pacific, bombing Guam and seizing the northern Mariana Islands. The USS Abraham Lincoln arrives to help what USAF and Australian forces survived the initial attack. | https://drive.google.com/drive/folders/18SPCco87Ym5Co4LlWsZBisXUQq619BD4?usp=sharing
|
||||
Syria | Operation Syrian Salvation | 4.0 | CptBean | Protect the border crossing of Bab-Al Hawa from the Syrian Government, and relieve the country from their oppression by taking the fight all the way to Damascus, with the support of members from CJTF - Operation Inherent Resolve!| [Operation_Syrian_Salvation.zip](https://github.com/dcs-liberation/dcs_liberation/files/6824917/Operation_Syrian_Salvation.zip)
|
||||
Syria | All Along the Orontes | 4.1 | Sith1144 | Fictional campaign. Drive from Lebanon towards Homs, then follow the Orontes river north, then turn south at its mouth and besiege Latakia. Made to be helicopter-friendly.| [All_Along_the_Orontes.zip](https://github.com/dcs-liberation/dcs_liberation/files/6961403/All_Along_the_Orontes.zip)
|
||||
Nevada | Irregular Warfare Exercise | 5.0 | Nosaj stole this from Doc | USMC COIN training exercise using the small airports on the Nevada map. Ripped off of a campaign that Doc put together with all SAMs reduced to mobile units that could be airdropped in. BLUFOR squadrons represent USMC airpower ( F/A-18, AV-8B, and AH-1W plus some Navy assets), please change the YAML to match your tastes. OPFOR squadrons represent USSR in the late 70's / early 80's to match what's highly available to your friendly local warlord on the black market. Using the PMC or insurgent factions will reduce aerial resistance. Great CAS / BAI / Strike training opportunity. | [Nevada_Irregular_Warfare_Exercise.zip](https://github.com/dcs-liberation/dcs_liberation/files/7533409/Nevada_Irregular_Warfare_Exercise.zip)
|
||||
Caucasus | The Tblisi Gap | 5.0 | Sith1144 | Helicopter focused campaign about breaking through the 'Tblisi gap' between the mountains, pushing from Tblisi to Senaki. Made for 1980s cold war gone hot with the hind and hip; but also comes with baked in support for blufor, both cold war and modern. | [The Tblisi Gap](https://github.com/dcs-liberation/dcs_liberation/files/7605260/Tblisi.Gap.zip)
|
||||
Syria | Task Force Thunder | 5.0 | Sith1144 | US Invasion of Syria from Iraq and the Mediterranean. Based on Combat Mission: Shock Force. | [Task Force Thunder](https://github.com/dcs-liberation/dcs_liberation/files/7605273/Task.Force.Thunder.zip)
|
||||
Caucasus | Operation Lighthouse | 5.0 | Sith1144 | Large Caucasus campaign attacking it from the northwest. the autopurchaser logic is flawed and will presently not buy as many planes as it could, especially at the airfields in the starting area. | [Operation Lighthouse](https://github.com/dcs-liberation/dcs_liberation/files/7605278/Operation.Lighthouse.zip)
|
||||
Syria | Cyprus East | 5.0 | Bat1 | Syrian forces supported by Russian Federation have taken eastern Cyprus and a US and Uk force retain land to the west. Re-enforce Cyprus. Suits both fast jet and helicopter Ops. | [Cyprus East](https://github.com/dcs-liberation/dcs_liberation/files/7613716/CyprusEast.zip)
|
||||
Syria | The Falcon went over the mountain | 5.0 | Sith1144 | "Limited scope" (I am bad at this) Syria campaign. Invade syria from incirlik, with a large wall of SAMs across the Taurus mountains and the Iskanderun bay. As the name suggests I made it for the F-16, but theres carriers and stuff too. | [The Falcon Went Over The Mountain](https://github.com/dcs-liberation/dcs_liberation/files/7676503/TheFalconWentOverTheMountain.zip)
|
||||
Persian Gulf | The Valley of Rotary | 5.0 | Sith1144 | Helicopter counterinsurgency ops in Southern Iran. | [The Valley Of Rotary](https://github.com/dcs-liberation/dcs_liberation/files/7676516/TheValleyOfRotary.zip)
|
||||
|
||||
You can (with some effort) use GitHub for file uploads:
|
||||
|
||||
1. Zip the json and miz file together
|
||||
2. Begin filing a bug (do not actually submit the bug!)
|
||||
3. Drag and drop the zip into the bug text box
|
||||
4. Copy the URL that the upload created in the bug and paste it here
|
||||
|
||||
Other options like Dropbox and Google Drive may be easier, just make sure the files are accessible to anyone.
|
||||
15
Contributing-to-DCS-Liberation.md
Normal file
15
Contributing-to-DCS-Liberation.md
Normal file
@ -0,0 +1,15 @@
|
||||
Hello, and thanks for your interests in contributing to DCS Liberation.
|
||||
|
||||
There are multiple simple ways to contribute to the project indirectly.
|
||||
* Open an issue on the Github repo when you find one
|
||||
* You can also report bugs on the DCS Liberation Discord server (on the bug-report channel)
|
||||
* Help new users on Discord
|
||||
* Answer questions on the "help wanted" channel on discord.
|
||||
* Raise awareness about the project, by making a video and/or a tutorial
|
||||
|
||||
You can join the discord here : [](https://discord.gg/bKrtrkJ)
|
||||
|
||||
And last but not least, you could also help developing new features. For this please refer to the developer's guide.
|
||||
|
||||
Please also note that we have a [Code of Conduct](Code-of-Conduct), please follow it in all your interactions with the project.
|
||||
|
||||
135
Creating-shape-files-in-QGIS-for-map-data.md
Normal file
135
Creating-shape-files-in-QGIS-for-map-data.md
Normal file
@ -0,0 +1,135 @@
|
||||
# Not finished, to be continued
|
||||
This guide will enable you to create data that the developers can use to enable support for a new map. We will use QGIS, an open-source GIS program to generate this data from various open sources. You need to have QGIS installed, preferably a 3.x+ version with GRASS processing toolbox.
|
||||
https://www.qgis.org/en/site/forusers/download.html
|
||||
|
||||
Here is some basic information about what a .SHP shapefile is:
|
||||
https://en.wikipedia.org/wiki/Shapefile
|
||||
|
||||
**The support of shapefiles is new for version 6.0 and enables you to use a dedicated GIS program to create data where the game should and should not allow frontline units and ships to be. QGIS is a very powerful program and you can arrive at the end product in a near infinite number of ways. In this guide one possible workflow is outlined that tries to take as many factors into account for problem free spawning. It will still be up to the campaign designer to use judgement where to place the frontlines to avoid troublesome behaviour.**
|
||||
|
||||
Here are the basic steps you need to take
|
||||
|
||||
## 1) Map projection
|
||||
|
||||
Some basic concepts about map projections can be learned here:
|
||||
https://en.wikipedia.org/wiki/Map_projection
|
||||
|
||||
For DCS you need to know that the DCS maps use a UTM projection (meaning coordinates is measured in meters as opposed to degrees, basically), and we need to find out the UTM tile for the map we are working on.
|
||||
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system
|
||||
|
||||
### 1.1 Find the correct projection for the map
|
||||
Through PyDCS we already have the center meridian of the map, meaning we can figure out the proper UTM projection (https://github.com/pydcs/dcs/blob/master/tools/export_map_projection.py).
|
||||
|
||||
`CENTRAL_MERIDIANS = {
|
||||
"caucasus": 33,
|
||||
"falklands": -57,
|
||||
"nevada": -117,
|
||||
"normandy": -3,
|
||||
"persiangulf": 57,
|
||||
"thechannel": 3,
|
||||
"syria": 39,
|
||||
"marianaislands": 147,
|
||||
}`
|
||||
|
||||
We can use this [map](https://www.arcgis.com/apps/View/index.html?appid=7fa64a25efd0420896c3336dc2238475) to check out different UTM zones. By clicking on the UTM tile you see the central projection. The map central projection is not necessarily in the center of the map. In the case of South Atlantic it begun as only the Falklands islands so the projection for the whole map is UTM 21S (S for South hemisphere)
|
||||

|
||||
|
||||
### 1.2 Set up your QGIS project
|
||||
Then it is a matter of making a new project in QGIS and setting the project CRS to be this.
|
||||

|
||||
|
||||
### 1.3 Visualizing your map by using tiles for satmaps or OpenStreetMaps live view
|
||||
You can add XYZ tiles from this python script to add in a bunch of online satmap tile layers you can use: https://raw.githubusercontent.com/klakar/QGIS_resources/master/collections/Geosupportsystem/python/qgis_basemaps.py
|
||||
|
||||
## 2) Outlining the game area
|
||||
|
||||
In the correct projection you can now create a new vector polygon layer and add the game area as an overlay. Preferably by gettting actual coordinates from the ME as opposed to freehand editing like i did. Layer-> Create Later -> New shapefile layer
|
||||

|
||||
|
||||
Make sure you use the project CRS (projection) and that it is a polygon. Also make sure you save it to a location so you can retrieve it the next time you open the project. You can save the temporary layer by right clicking the feature in the layer view and select Save Feature As. This also handy to check during the save that the projection is what you expect it to be.
|
||||
|
||||

|
||||
|
||||
|
||||
## 3) Oceans
|
||||
|
||||
### 3.1 Getting the source data and processing it
|
||||
For the ocean I downloaded the OSM Ocean Polygon files (source https://osmdata.openstreetmap.de/data/water-polygons.html). These are WGS84-projected chunks of ocean. Select all the vector objects that are relevant to the map, and use the Vector->Geoprocessing->Dissolve command to merge the cells into one object. This will output a new temporary layer (can be slow to do). This layer we can now save and reproject it to the relevant UTM projection, like UTM 21S for the Falklands map. Right click on the temporary output layer and select Export -> Save Feature As... Be sure to reproject only after dissolve or you will potentially get gaps in the ocean file.
|
||||

|
||||
|
||||
|
||||
Once you have the ocean file dissolved and projected to the correct UTM projection you can clip it to the game area overlay (Vector -> Geoprocessing -> Clip).
|
||||
|
||||

|
||||
|
||||
Once again this is saved as a temporary file which you now can save to disk.
|
||||
|
||||
### 3.2 Generating Liberation-usable land and sea data.
|
||||
The final step is now to generate the land mass for Liberation as well as the actual ocean. Remember, we want to keep this data as lightweight as possible so we will first simplify the data. Use Vector->Geometry tools->Simplify and try different values
|
||||
|
||||

|
||||
|
||||
A tolerance value of 250 is probably fine at this stage but you can go more aggressive if you want to.
|
||||
After we simplified the data now is the time to generate land data and ocean data. We will use the basic, simplified ocean to generate both the land and sea area. To make sure we get some margins so you cant accidentally move the carrier right to the beach or spawn units in the sea I want to use a buffer zone from the shore inland for the land map and a buffer zone from the shore out towards the sea. In the South Atlantic map I elected for a 750m buffer inland and a 1500m buffer out to sea. The 1500m buffer out to sea means a lot of the smaller sounds and bays will be eliminated, further simplifying our data.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Here we can see our ocean that is buffered outwards from the shore 1500m
|
||||
|
||||
To actually get land area as opposed to a sea that reaches inland 750m we need to use the difference command (Vector -> Geoprocessing -> Difference)
|
||||

|
||||
|
||||
Make sure you have the Game area as input layer and the buffered sea as overlay.
|
||||
|
||||
You should now have something like this:
|
||||
|
||||

|
||||
|
||||
**Congratulations, you now have the land and sea data!**
|
||||
|
||||
## 4. Exclusion data
|
||||
Naturally, not all of the landmass is suitable to have warring armies on them. We should at least make lakes and rivers off-limits, and big cities too. We need to get source data to work with, process this data to make it as light-weight as possible.
|
||||
|
||||
### 4.1 Downloading OSM vector source data
|
||||
From the link below you can find collections of OSM source data that you can download and add to your QGIS project.
|
||||
https://download.geofabrik.de/index.html
|
||||
|
||||
The easiest way is to download the SHP files for individual countries. In this case I downloaded Argentina and Chile and added the layers I thought necessary to the map: water, waterways and landuse.
|
||||
|
||||
### 4.1.1 Processing the data
|
||||
|
||||
Once we have all the files, we need to do the following:
|
||||
* Resave the files in proper projection
|
||||
* Clip the files to only encompass the game area
|
||||
* Simplify the data
|
||||
* Buffer lakes and rivers slightly
|
||||
|
||||
This can be done using the same techniques we learned in section 3.
|
||||
|
||||
### 4.2 Downloading DEM data for slope analysis.
|
||||
This step is potentially optional, but if the map contains many mountains and steep terrain like the South Atlantic map does it can be worthwhile to do.
|
||||
|
||||
https://search.earthdata.nasa.gov/search/granules?p=C1546314043-LPDAAC_ECS&pg[0][v]=f&pg[0][gsk]=-start_date&q=nasadem&sb[0]=-71.22656%2C-51.47764%2C-68.23828%2C-49.30728&tl=1662388101!3!!&lat=-50.901136037047934&long=-73.1337890625&zoom=6
|
||||
|
||||
We will NASAs EarthDataSearch portal to find DEM data. I have used the NASADEM Merged DEM Global 1 arc second V001 dataset since it is reasonably high-resolution and free to use. You will need to register for the service, log-in, search the site for the correct dataset, and then draw an outline of the area you want to create a download link.
|
||||
|
||||

|
||||
|
||||
### 4.2.1 Processing the DEM files.
|
||||
To make editing easier, you will want to merge all your cells into one file using Raster->Miscellaneous->Merge. It can still be useful to retain one or two cells for testing commands on a smaller dataset so you are sure you get what you want.
|
||||
|
||||
Now that we have the DEM file, we need to visualize the data. At this point, you should probably have an instance of DCS open so you can cross-reference the ingame view to better judge what slopes are fine and what are excessive.
|
||||
|
||||
We will use the Raster -> Analysis -> Slope tool to make a slope map
|
||||
|
||||

|
||||
|
||||
The slope mape can be visualized by right clicking on the layer and selecting properties, and selecting the Symbology tab. Here we will select "Singleband Pseudocolor" and play around with the values to find what slope value should be the cutoff, values above which are considered impassable.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
By zooming out and changing color palettes and values of various colors you can probably find a value that seems reasonable. In the image above the red-value areas are probably bad for ground units while the other colors are passable.
|
||||
330
Custom-Factions.md
Normal file
330
Custom-Factions.md
Normal file
@ -0,0 +1,330 @@
|
||||
# Principle
|
||||
|
||||
Frustrated that your home country is not a possible choice in DCS Liberation, or annoyed that an aircraft is missing in your favorite faction?
|
||||
Good news, you can now mod factions in liberation!
|
||||
|
||||
And these custom factions can be created easily with a text editor as a yaml or json file (prefer yaml for new factions).
|
||||
|
||||
You can find the default factions included in Liberation in the **\resources\factions\\** folder within the Liberation install directory. If you have created your own custom faction files and wish to place them in a more permanent location, you have the option of placing them instead in the DCS folder itself, by creating a folder call "Factions" (Liberation will read faction files from either location). This would be the same location that is listed as your "DCS Saved Game Directory" under File > Preferences in Liberation. As an example, if you are running Openbeta, it would likely be **C:\users\\\<your username\>\\Saved Games\DCS.openbeta\Liberation\Factions\\**.
|
||||
|
||||
|
||||

|
||||
|
||||
Note that until DCS Liberation 7, you will need to restart Liberation for new or updated factions to be detected.
|
||||
|
||||
If there is no error, your custom faction will appear in the New Game Wizard. Please note that factions saved in your DCS saved games folder will appear at the bottom of the list and not in alphabetical order.
|
||||
|
||||
If there is an error with the file it will not appear, please check the content of the console output, it might contain hints about the error. First, please verify the yanl/json syntax is valid.
|
||||
|
||||
# File format
|
||||
|
||||
This yaml or json file should contain the following fields:
|
||||
|
||||
* **country** : The country to be used in DCS. Careful, if it is not a valid country name in DCS, the mission generation will not work.
|
||||
* **name** : Name of the faction in DCS Liberation UI
|
||||
* **aircrafts** : List of Aircrafts available to this faction
|
||||
* **awacs** : List of AWACS planes available to this faction
|
||||
* **tankers** : List of Tankers planes available to this faction
|
||||
* **frontline_units** : List of units that will fight on the frontline
|
||||
* **artillery_units** : List of artillery that will fight on the frontline
|
||||
* **infantry_units** : List of infantry units that will fight on the frontline
|
||||
* **logistics_units** : List of units used for logistics
|
||||
* **air_defense_units** : List of anti air units and ewrs
|
||||
* **missiles** : List of missile units (not used yet)
|
||||
* **requirements** : List of required mods for this faction to work
|
||||
* **preset_groups** : List of preset ForceGroups which can be used to add multiple related units at once (will be used for complex groups like SAM Systems)
|
||||
* **naval_units** : List of naval units like Carriers, Destroyers or Cruisers
|
||||
* **carrier_names** : List of possible name for carriers (will be picked randomly if there is more than one)
|
||||
* **helicopter_carrier_names** : List of possible name for helicopter carriers (will be picked randomly if there is more than one)
|
||||
* **has_jtac** : Whether this faction has access to jtac
|
||||
* **jtac_unit** : Type of unit to use as JTAC.
|
||||
* **doctrine** : Either "modern" for modern doctrine, "coldwar" for coldwar doctrine, or "ww2" for WW2 doctrine. Doctrine controls the altitude of flights and other flight planner AI parameters.
|
||||
* **building_set** : Either "default" for default set, "ww2ally" for WW2 ally buildings, "ww2germany" for WW2 german building or "ww2free" for a ww2 building set that does not require the WW2 asset pack.
|
||||
* **liveries_overrides** : List of aircraft and liveries to set. It is possible to have multiple liveries for aircraft, and Liberation will pick one out of the list randomly. The livery must be available to the country set in order to appear. If the livery doesn't show up in Mission Editor for that country, it won't show up in your Liberation mission either. The name of the livery can be found in its description.lua (if it's not there, then use the exact name of the livery's folder).
|
||||
* **unrestricted_satnav** : Enable this option to allow unrestricted SATNAV in the mission. This will allow the use of GPS by non-US countries, e.g. non-US F/A-18s will be able to use GPS for alignment. This value is optional and may be either `true` or `false`. If not set this defaults to `false`.
|
||||
|
||||
**Note:**
|
||||
|
||||
*I highly recommend you look at the default files provided in DCS Liberation for examples.*
|
||||
All parameters have default values, so you do not have to set them all up necessarily.
|
||||
|
||||
When changing a livery, if an aircraft is a Core DCS aircraft or module such as the MiG-19P, the livery must be in the Modules Liveries section and not your Saved Games folder.
|
||||
|
||||
It is recommended, that your faction has access to all unit types, e.g. at least one tank, one IFV, one APC and so on in order for the auto purchase option for the player and the AI to work.
|
||||
|
||||
## Aircraft, ground unit und naval names
|
||||
|
||||
Ground, naval, and air units in the faction file use the name of the unit in Liberation rather than the name in DCS.
|
||||
|
||||
The names used are taken from the `variants` section of the unit info files in the `resources/units` directory. For example, `units/aircraft/FA-18C_hornet.yaml` contains the following:
|
||||
|
||||
```yaml
|
||||
variants:
|
||||
CF-188 Hornet: {}
|
||||
EF-18A+ Hornet: {}
|
||||
F/A-18C Hornet (Lot 20): {}
|
||||
```
|
||||
|
||||
In this example, there are three variants of the DCS F/A-18C Hornet unit. These "variants" are **name only**. The DCS unit type will be the F/A-18C module, but the name in the Liberation UI will be whichever variant is named in the faction file. This allows a Spain faction to pretend that an EF-18A+ is available in DCS.
|
||||
|
||||
Ground units use the same format, but are located in `resources/units/ground_units`. The same applies to naval units which are defined in `resources/units/ships`
|
||||
|
||||
## Preset Groups
|
||||
|
||||
Ground and naval objectives (as opposed to front-line units) are defined using preset groups.. All available preset groups are located in `resources/groups`. They can be added to the faction by adding the name from the preset group in the list `preset_groups`. All units from the preset group will then be available to the faction. A more detailed description of the preset groups and the new layout system can be found in the corresponding wiki page.
|
||||
|
||||
```yaml
|
||||
name: Patriot # This name will be placed in the faction json
|
||||
tasks:
|
||||
- LORAD
|
||||
units:
|
||||
- SAM Patriot STR
|
||||
- SAM Patriot CR (AMG AN/MRC-137)
|
||||
- SAM Patriot ECS
|
||||
- SAM Patriot C2 ICC
|
||||
- SAM Patriot EPP-III
|
||||
- SAM Patriot LN
|
||||
layouts:
|
||||
- Patriot Battery
|
||||
```
|
||||
|
||||
# Example file
|
||||
|
||||
Below is an example of a factions file :
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"country": "USA",
|
||||
"name": "US Navy 2005",
|
||||
"authors": "Fuzzle",
|
||||
"description": "<p>A modern representation of the US Navy/Marine Corps.</p>",
|
||||
"locales": [
|
||||
"en_US"
|
||||
],
|
||||
"aircrafts": [
|
||||
"F-14B Tomcat",
|
||||
"F/A-18C Hornet (Lot 20)",
|
||||
"AV-8B Harrier II Night Attack",
|
||||
"AH-1W SuperCobra",
|
||||
"S-3B Viking",
|
||||
"SH-60B Seahawk",
|
||||
"UH-1H Iroquois"
|
||||
],
|
||||
"awacs": [
|
||||
"E-2C Hawkeye"
|
||||
],
|
||||
"tankers": [
|
||||
"S-3B Tanker"
|
||||
],
|
||||
"frontline_units": [
|
||||
"M113",
|
||||
"M1043 HMMWV (M2 HMG)",
|
||||
"M1045 HMMWV (BGM-71 TOW)",
|
||||
"M1A2 Abrams",
|
||||
"LAV-25",
|
||||
"M163 Vulcan Air Defense System"
|
||||
],
|
||||
"artillery_units": [
|
||||
"M270 Multiple Launch Rocket System"
|
||||
],
|
||||
"logistics_units": [
|
||||
"Truck M818 6x6"
|
||||
],
|
||||
"infantry_units": [
|
||||
"Infantry M4",
|
||||
"Infantry M249",
|
||||
"MANPADS Stinger"
|
||||
],
|
||||
"preset_groups": [
|
||||
"Hawk",
|
||||
"Patriot"
|
||||
],
|
||||
"naval_units": [
|
||||
"FFG Oliver Hazard Perry",
|
||||
"DDG Arleigh Burke IIa",
|
||||
"CG Ticonderoga",
|
||||
"LHA-1 Tarawa",
|
||||
"CVN-74 John C. Stennis"
|
||||
],
|
||||
"missiles": [],
|
||||
"air_defense_units": [
|
||||
"SAM Hawk SR (AN/MPQ-50)",
|
||||
"M163 Vulcan Air Defense System",
|
||||
"M48 Chaparral"
|
||||
],
|
||||
"requirements": {},
|
||||
"carrier_names": [
|
||||
"CVN-71 Theodore Roosevelt",
|
||||
"CVN-72 Abraham Lincoln",
|
||||
"CVN-73 George Washington",
|
||||
"CVN-74 John C. Stennis",
|
||||
"CVN-75 Harry S. Truman"
|
||||
],
|
||||
"helicopter_carrier_names": [
|
||||
"LHA-1 Tarawa",
|
||||
"LHA-2 Saipan",
|
||||
"LHA-3 Belleau Wood",
|
||||
"LHA-4 Nassau",
|
||||
"LHA-5 Peleliu"
|
||||
],
|
||||
"has_jtac": true,
|
||||
"jtac_unit": "MQ-9 Reaper",
|
||||
"doctrine": "modern",
|
||||
"liveries_overrides": {
|
||||
"F-14B Tomcat": [
|
||||
"VF-142 Ghostriders"
|
||||
],
|
||||
"F/A-18C Hornet (Lot 20)": [
|
||||
"VMFA-251 high visibility"
|
||||
],
|
||||
"AV-8B Harrier II Night Attack": [
|
||||
"VMAT-542"
|
||||
],
|
||||
"AH-1W SuperCobra": [
|
||||
"Marines"
|
||||
],
|
||||
"UH-1H Iroquois": [
|
||||
"US NAVY"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Annex - Possible Aircraft
|
||||
|
||||
Warning: this list is probably incomplete and wrong. It is not kept up to date when Liberation changes. If you want the truth you have to look at the YAML files shipped with the version of Liberation you're using.
|
||||
|
||||
* *A-4E Skyhawk*
|
||||
* *A-10A Thunderbolt II*
|
||||
* *A-10C Thunderbolt II (Suite 7)*
|
||||
* *A-10C Thunderbolt II (Suite 3)*
|
||||
* *A-20G Havoc*
|
||||
* *Boston Mk.III*
|
||||
* *A-50*
|
||||
* *AH-1J SeaCobra*
|
||||
* *AH-1W SuperCobra*
|
||||
* *AH-64A Apache*
|
||||
* *AH-64D Apache Longbow*
|
||||
* *AJS-37 Viggen*
|
||||
* *An-26B*
|
||||
* *An-30M*
|
||||
* *AV-8B Harrier II Night Attack*
|
||||
* *B-1B Lancer*
|
||||
* *B-17G Flying Fortress*
|
||||
* *Fortress Mk.III*
|
||||
* *B-52H Stratofortress*
|
||||
* *Bf 109 K-4 Kurf\xFCrst*
|
||||
* *C-17A*
|
||||
* *C-101CC Aviojet*
|
||||
* *C-130*
|
||||
* *CH-47D*
|
||||
* *CH-53E*
|
||||
* *E-2C Hawkeye*
|
||||
* *E-3A*
|
||||
* *F-4E Phantom II*
|
||||
* *F-4EJ Kai Phantom II*
|
||||
* *F-4F Phantom II*
|
||||
* *Phantom F.3*
|
||||
* *F-5E Tiger II*
|
||||
* *F-14A Tomcat (Block 135-GR Late)*
|
||||
* *F-14B Tomcat*
|
||||
* *F-15C Eagle*
|
||||
* *F-15J Eagle*
|
||||
* *F-15E Strike Eagle*
|
||||
* *F-16A*
|
||||
* *F-16CM Fighting Falcon (Block 50)*
|
||||
* *F-2A*
|
||||
* *F-22A Raptor
|
||||
* *F-86F Sabre*
|
||||
* *F-117A Nighthawk*
|
||||
* *F/A-18C Hornet (Lot 20)*
|
||||
* *EF-18A+ Hornet*
|
||||
* *CF-188 Hornet*
|
||||
* *Fw 190 A-8 Anton*
|
||||
* *Fw 190 D-9 Dora*
|
||||
* *C-130J-30 Super Hercules*
|
||||
* *I-16 Ishak*
|
||||
* *IL-76MD*
|
||||
* *IL-78M*
|
||||
* *J-11A Flanker-L*
|
||||
* *JAS 39 Gripen A/G*
|
||||
* *JAS 39 Gripen*
|
||||
* *FC-1 Fierce Dragon*
|
||||
* *JF-17 Thunder*
|
||||
* *Ju 88 A-4*
|
||||
* *Ka-50 Hokum*
|
||||
* *KC-135 Stratotanker*
|
||||
* *KC-130*
|
||||
* *KC-135 Stratotanker MPRS*
|
||||
* *KJ-2000*
|
||||
* *L-39ZA Albatros*
|
||||
* *Mirage 2000C*
|
||||
* *Mi-8MTV2 Hip*
|
||||
* *Mi-24P Hind-F*
|
||||
* *Mi-24V Hind-EMi-24V Hind-E*
|
||||
* *Mi-26*
|
||||
* *Mi-28N Havoc*
|
||||
* *MiG-15bis Fagot*
|
||||
* *J-6A*
|
||||
* *MiG-19P Farmer-B*
|
||||
* *J-7B*
|
||||
* *MiG-21bis Fishbed-N*
|
||||
* *MiG-23ML Flogger-G*
|
||||
* *MiG-23MLD Flogger-K*
|
||||
* *MiG-25PD Foxbat-E*
|
||||
* *MiG-25RBT Foxbat-B*
|
||||
* *MiG-27K Flogger-J2*
|
||||
* *MiG-29A Fulcrum-A*
|
||||
* *MiG-29G Fulcrum-A*
|
||||
* *MiG-29S Fulcrum-C*
|
||||
* *MiG-31 Foxhound*
|
||||
* *Mirage 2000-5*
|
||||
* *MQ-9 Reaper*
|
||||
* *OH-58D Kiowa Warrior*
|
||||
* *P-47D-30 Thunderbolt (Late)*
|
||||
* *Thunderbolt Mk.II (Mid)*
|
||||
* *P-47D-30 Thunderbolt (Early)*
|
||||
* *Thunderbolt Mk.II (Early)*
|
||||
* *P-47D-40 Thunderbolt*
|
||||
* *Thunderbolt Mk.II (Late)*
|
||||
* *Mustang Mk.IV (Late)*
|
||||
* *P-51D-30-NA Mustang*
|
||||
* *Mustang Mk.IV (Early)*
|
||||
* *P-51D-25-NA Mustang*
|
||||
* *RQ-1A Predator*
|
||||
* *S-3B Tanker*
|
||||
* *S-3B Viking*
|
||||
* *SA 342L Gazelle*
|
||||
* *Gazelle AH.1*
|
||||
* *SA 342M Gazelle*
|
||||
* *SA342Minigun*
|
||||
* *SA 342M Gazelle Mistral*
|
||||
* *SH-60B Seahawk*
|
||||
* *Spitfire LF Mk IX*
|
||||
* *Spitfire LF Mk IX (Clipped Wings)*
|
||||
* *Su-17M4 Fitter-K*
|
||||
* *Su-22M4 Fitter-K
|
||||
* *Su-24M Fencer-D*
|
||||
* *Su-24MK Fencer-D*
|
||||
* *Su-24MR*
|
||||
* *Su-25 Frogfoot*
|
||||
* *Su-25T Frogfoot*
|
||||
* *Su-27 Flanker-B*
|
||||
* *Su-30 Flanker-C*
|
||||
* *Su-30MKK Flanker-G*
|
||||
* *J-15 Flanker X-2*
|
||||
* *Su-33 Flanker-D*
|
||||
* *Su-34 Fullback*
|
||||
* *Su-57 Felon*
|
||||
* *Tornado GR4*
|
||||
* *Tornado IDS*
|
||||
* *Tu-22M3 Backfire-C*
|
||||
* *Tu-95MS Bear-H*
|
||||
* *Tu-142 Bear-F*
|
||||
* *Tu-160 Blackjack*
|
||||
* *UH-1D Iroquois*
|
||||
* *UH-1H Iroquois*
|
||||
* *UH-60A*
|
||||
* *WingLoong-I*
|
||||
* *Yak-40*
|
||||
7
Custom-Loadouts.md
Normal file
7
Custom-Loadouts.md
Normal file
@ -0,0 +1,7 @@
|
||||
### Custom loadouts
|
||||
|
||||
**Note:** If you do not create a loadout for a specific mission type, that is fine. Liberation will simply revert to using the included defaults.
|
||||
|
||||
All DCS loadouts are selectable from the flight edit UI.
|
||||
|
||||
To create custom default loadouts, create a loadout for the aircraft in the DCS mission editor. Name the loadout `Liberation <mission type>`, where `<mission type>` is the exact name of the mission type shown in the UI. For example, "Liberation OCA/Aircraft".
|
||||
1
Custom-campaigns-(3.0).md
Normal file
1
Custom-campaigns-(3.0).md
Normal file
@ -0,0 +1 @@
|
||||
Moved to https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-campaigns.
|
||||
560
Custom-campaigns.md
Normal file
560
Custom-campaigns.md
Normal file
@ -0,0 +1,560 @@
|
||||
**Please see [version.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/version.py) for the correct campaign version number when creating/updating campaigns.**
|
||||
|
||||
Campaigns in DCS Liberation can be modified using the mission editor. Each campaign is defined by a YAML 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 YAML file. Check the console window or log file for errors.
|
||||
|
||||
### Campaign changes in the dev branch
|
||||
|
||||
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](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/version.py).
|
||||
|
||||
## Descriptor file
|
||||
|
||||
The campaign uses a YAML file to describe some metadata. To create a new campaign, add a YAML file (such as `mycampaign.yaml`) to `resources\campaigns`.
|
||||
|
||||
This YAML file defines the following fields (unless otherwise stated, fields are required):
|
||||
|
||||
* `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` or `The 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](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/version.py). See the top of this guide for the format version appropriate for current releases of Liberation.
|
||||
|
||||
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). As of campaign version 10.6 this can also include an in-line definition of a campaign-specific faction. See [Operation Allied Sword](https://github.com/dcs-liberation/dcs_liberation/blob/dca256364aa677cdea2e73bf0701acbb6bf6f17e/resources/campaigns/operation_allied_sword.yaml#L5) for an example.
|
||||
* `recommended_enemy_faction`: (Optional) The recommended enemy faction (will be automatically selected by default on the faction selection page). As with the player faction, this can also be an in-line definition of a campaign-specific faction.
|
||||
* `recommended_start_date`: (Optional) The recommended start date for the campaign in YYYY-MM-DD format. This field can optionally include a start time to set the time for turn 1. E.g. `2004-01-07 06:00:00`. If the time is omitted, the campaign will start at a random hour in the middle of the day.
|
||||
* `recommended_player_money`: (Optional) The recommended player budget as integer. Default=2000.
|
||||
* `recommended_enemy_money`: (Optional) The recommended enemy budget as integer. Default=2000.
|
||||
* `recommended_player_income_multiplier`: (Optional) The recommended player income multiplier as float. Default=1.0.
|
||||
* `recommended_enemy_income_multiplier`: (Optional) The recommended enemy income multiplier as float. Default=1.0.
|
||||
* `miz`: The name of the miz file (in the same `resources\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](#iads-configuration)
|
||||
|
||||
### Squadron configuration
|
||||
|
||||
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:
|
||||
|
||||
```yaml
|
||||
squadrons:
|
||||
BASE_NAME_OR_ID:
|
||||
- primary: PRIMARY_TASK
|
||||
secondary: SECONDARY_TASKS
|
||||
aircraft:
|
||||
- PREFERRED_AIRCRAFT_1
|
||||
- PREFERRED_AIRCRAFT_2
|
||||
...
|
||||
...
|
||||
...
|
||||
```
|
||||
|
||||
* `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](https://github.com/pydcs/dcs/blob/master/dcs/terrain/caucasus/airports.py). 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 in `FlightType` found in https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/ato/flighttype.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 strings `any`, `air-to-air`, or `air-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](https://github.com/dcs-liberation/dcs_liberation/wiki/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 on `PRIMARY_TASK`.
|
||||
|
||||
For a complete example, see the [Black Sea campaign description](https://github.com/dcs-liberation/dcs_liberation/blob/develop/resources/campaigns/black_sea.yaml).
|
||||
|
||||
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, format the squadron info in the following format. You can see in the picture how the two squadrons both have an alternate aircraft defined. The first aircraft on the list is always tried first, followed by the rest in order. You can define more than 2 if you wish to.
|
||||
|
||||

|
||||
|
||||
**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, 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).
|
||||
|
||||
### IADS configuration
|
||||
|
||||
Liberation can automatically generate the IADS network for you but if you want to have more control about the network and which assets are connected with each other it is possible to define the whole IADS network in the campaign.yaml. The iads configuration will only be used when the campaign supports the advanced iads (set `advanced_iads` to true) and the checkbox to use the Advanced mode is checked during campaign generation.
|
||||
|
||||
To define the iads network in the campaign.yaml one has to add all connections to the `iads_config` property. Every primary node which should participate to the network has to be added to the list with the exact Group Name used in the campaign.miz.
|
||||
|
||||
Primary nodes are:
|
||||
* SAM
|
||||
* EWR
|
||||
* Command Center
|
||||
* Naval Unit (Carrier)
|
||||
|
||||
AWACs are not required to be defined. They are added automatically.
|
||||
|
||||
Secondary nodes which should **not** be added to that list as primary node:
|
||||
* Connection Nodes
|
||||
* Power Sources
|
||||
|
||||
These secondary nodes will be added as a list to the primary node which they are connected to. Example of such a connection where the primary node `SAM1` has a connection to the secondary nodes `ConnectionNode1` and `PowerSource1`:
|
||||
```yaml
|
||||
iads_config:
|
||||
- SAM1: # Group name of the primary Node (SAM, EWR or Command Center) used in the campaign.miz
|
||||
- ConnectionNode1 # All connected secondary nodes (Comms, Power) as list
|
||||
- PowerSource1 # Exact name of the group used in the campaign.miz otherwise it will not be recognized
|
||||
```
|
||||
|
||||
Every primary node can have 0..N connections (Comms, Power Source, Point Defense) which have to be added as a list to the primary node with the exact group name used in the campaign.miz. If no connections are added to a primary node it will participate to the IADS Network without requiring Comms or Power (equal to the functionality of the Basic mode). It is not possible to connect two Connection Nodes with each other. Every connection has to be between one Primary Node (see above) and a non-Primary Node.
|
||||
|
||||
Example of the IADS Configuration used in the Golan Heights campaign:
|
||||
```yaml
|
||||
version: "10.2" # Campaign Version 10.2 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](#iads---integrated-air-defence-system)
|
||||
|
||||
### Common issues with a custom campaign yaml file and their solutions
|
||||
|
||||
#### 'air-to-ground' is not a valid FlightType
|
||||
|
||||

|
||||
|
||||
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
|
||||
```
|
||||
|
||||
#### 'primary'
|
||||
|
||||

|
||||
|
||||
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
|
||||
```
|
||||
|
||||
#### <<class 'game.theater.controlpoint.Carrier'>: Naval-1>
|
||||
|
||||

|
||||
|
||||
The yaml file doesn't have squadrons defined.
|
||||
|
||||
#### 'NoneType' object is not iterable
|
||||
|
||||

|
||||
|
||||
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
|
||||
```
|
||||
|
||||
#### 'Cannot find ControlPoint named Carrier'
|
||||
|
||||

|
||||
|
||||
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
|
||||
```
|
||||
#
|
||||
## Designing campaigns in the mission editor
|
||||
|
||||
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.
|
||||
#### [Unit Type Quick Reference](#unit-type-quick-reference-1)
|
||||
|
||||
#
|
||||
### Control points
|
||||
|
||||
Control points are the spawn locations and (in most cases) the capturable positions in the campaign.
|
||||
|
||||
#### Airbase control
|
||||
|
||||
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.
|
||||
|
||||
#
|
||||
#### Carriers and LHAs
|
||||
|
||||
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.
|
||||
|
||||
The carrier or LHA's group name is used to determine which squadrons should be located at the base. See the earlier section about squadron presets for more information.
|
||||
|
||||
#
|
||||
#### Off-map spawns
|
||||
|
||||
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.
|
||||
|
||||
#
|
||||
#### Forward Operating Bases
|
||||
|
||||
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.
|
||||
|
||||
#
|
||||
#### Campaign inversion
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
### Shipping lanes
|
||||
|
||||
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.
|
||||
|
||||
### Objective locations
|
||||
|
||||
Objective locations define the various locations for ground objectives in the campaign. Objective locations are automatically associated with their closest control point.
|
||||
|
||||
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.
|
||||
|
||||
The heading of the unit placed as spawn location will be maintained in the generated mission if the heading is not 0. In case the heading is 0 then Liberation will calculate the final heading during campaign generation so that the group will head directly to the center of the conflict. This new feature allows the campaign designer to fine tune the orientation of all the objectives to the campaign needs. Automatic orientation will only be used for Anti Air, Missile, Coastal and Vehicle Groups.
|
||||
|
||||
#### Strike targets
|
||||
|
||||
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
|
||||
|
||||
Note: The values above are subject to change. The `REWARDS` defined in https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/config.py are the source of truth.
|
||||
|
||||
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
|
||||
|
||||
Offshore strike targets generate income for the owning coalition.
|
||||
|
||||
- To define an offshore strike target, place a CJTF Red Oil Platform.
|
||||
|
||||
#### Map objects
|
||||
|
||||
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 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 the `REWARDS` defined in https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/config.py. **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
|
||||
|
||||
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
|
||||
|
||||
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` deployable 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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
### IADS - Integrated Air Defence System
|
||||
|
||||
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](https://github.com/walder/Skynet-IADS) 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.
|
||||
|
||||
#### IADS Network
|
||||
|
||||
The IADS Network can be implemented and used in two different ways:
|
||||
|
||||
- Basic Mode
|
||||
- Advanced Mode
|
||||
|
||||
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](#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](#unit-type-quick-reference-1) or via a [Map Object](#map-objects). When Map objects are used the system will generate a static dummy M4 Soldier next to the object. This is required so that skynet has a unit to control and track the alive/death state of it. This unit does not serve any purpose beside this. The kill of a map object is strill tracked by destroying the object and not the soldier.
|
||||
|
||||
#### Skynet Plugin
|
||||
|
||||
Liberation adds the [Skynet Plugin](https://github.com/walder/Skynet-IADS) to the created dcs mission if the user enables the plugin in the campaign settings. This plugin is enabled by default in Liberation V6.0 as it is heavily integrated into the Liberation system which created the IADS Network. Skynet allows to set specific options for SAM Systems which can be overwritten in the unit.yaml for the Search Radar of the SAM Systems. Which SAM Systems are supported by Skynet and which Search Radar is used for wich SAM system can be found in this file: [skynet-iads-supported-types.lua](https://github.com/walder/Skynet-IADS/blob/develop/skynet-iads-source/skynet-iads-supported-types.lua)
|
||||
|
||||
To overwrite specific skynet properties the following options can be set in the unit.yaml of the Search Radar (Patriot SR as example):
|
||||
|
||||
```yaml
|
||||
class: SearchRadar
|
||||
price: 22
|
||||
variants:
|
||||
SAM Patriot STR: null
|
||||
skynet_properties: # Override skynet default properties
|
||||
can_engage_harm: true
|
||||
can_engage_air_weapon: true # https://github.com/walder/Skynet-IADS/tree/develop#engage-air-weapons
|
||||
go_live_range_in_percent: 100
|
||||
harm_detection_chance: 90
|
||||
engagement_zone: SkynetIADSAbstractRadarElement.GO_LIVE_WHEN_IN_KILL_ZONE # https://github.com/walder/Skynet-IADS/tree/develop#engagement-zone
|
||||
autonomous_behaviour: SkynetIADSAbstractRadarElement.AUTONOMOUS_STATE_DCS_AI # https://github.com/walder/Skynet-IADS/tree/develop#autonomous-mode-behaviour
|
||||
```
|
||||
|
||||
Documentation about each setting can be found at the Skynet GitHub page which is linked above.
|
||||
|
||||
#### Anti Air GroundObjects
|
||||
|
||||
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.
|
||||
|
||||
The heading set for the unit placed in the mission will be maintained in the generated mission if the heading is not 0. If the heading is 0 then Liberation will calculate the heading during campaign generation so that the group will head directly to the center of the conflict. This allows the campaign designer to fine tune the orientation of the SAM System or EWR to the campaign needs.
|
||||
|
||||
#### Early Warning Radars
|
||||
|
||||
To define an EWR location, place a CJTF Red EWR 1L13.
|
||||
|
||||
#### Long range SAMs
|
||||
|
||||
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
|
||||
* SAM SA-10 S-300PS LN 5P85C
|
||||
* SAM SA-10 S-300PS LN 5P85D
|
||||
|
||||
#### Medium range SAMs
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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"
|
||||
|
||||
#
|
||||
## Unit Type Quick Reference:
|
||||
|
||||
Objective type | Coalition | Unit types | Clearance
|
||||
-|-|-|-
|
||||
EWR | Red | EWR 1L13 | 50ft
|
||||
Long range SAM | Red | SAM Patriot LN M901<br />SAM SA-10 S-300PS LN 5P85C<br />SAM SA-10 S-300PS LN 5P85D | 1000ft
|
||||
Medium range SAM | Red | SAM Hawk LN M192<br />SAM SA-2 LN SM-90<br />SAM SA-3 S-125 LN 5P73 | 800ft
|
||||
Short range SAM | Red | SAM Avenger (Stinger)<br />SAM Rapier LN<br />SAM SA-19 Tunguska "Grison"<br />SAM SA-9 Strela 1 "Gaskin" TEL | 800ft
|
||||
AAA | Either | AAA 8,8cm Flak 18<br />SPAAA Vulcan M163<br />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
|
||||
121
Dedicated-Server-Guide.md
Normal file
121
Dedicated-Server-Guide.md
Normal file
@ -0,0 +1,121 @@
|
||||
There are a few additional steps and caveat to running a dcs-liberation mission on a dedicated DCS server.
|
||||
|
||||
I'll try and explain them, as the server manager of my squadron, and dcs-liberation contributor.
|
||||
|
||||
If you have any questions, comments, or think this document is incomplete or wrong, please contact me on dcs-liberation's Discord.
|
||||
|
||||
[VEAF]Zip.
|
||||
|
||||
|
||||
## Preparing the server
|
||||
|
||||
### Modding `MissionScripting.lua`
|
||||
|
||||
Any DCS instance running dcs-liberation, be it a standalone installation or a dedicated server, must have a modified `MissionScripting.lua` in order for the LUA script to have access to the `os`, `io` and `lfs` packages.
|
||||
|
||||
When running on a standalone installation, usually (that is, if everything works as planned) the dcs-liberation program itself will replace the original `MissionScripting.lua` file with an edited version.
|
||||
|
||||
Of course, this is not possible when DCS run on a different machine, as a dedicated server.
|
||||
|
||||
|
||||
In this case, you need to edit the file yourself.
|
||||
The easiest way to do it is to replace the original file (`<dcs installation>\Scripts\MissionScripting.lua`) with the file in dcs-liberation distribution (`<dcs-liberation installation>\resources\scripts\MissionScripting.lua`).
|
||||
|
||||
|
||||
Sometimes, you'll have an already modded file because you're using scripts that need access to specific packages.
|
||||
That's alright, as long as the `os`, `io` and `lfs` packages are accessible.
|
||||
|
||||
To ensure this, simply be certain that these particular lines are commented out :
|
||||
|
||||
__Original:__
|
||||
|
||||
```lua
|
||||
sanitizeModule('os')
|
||||
sanitizeModule('io')
|
||||
sanitizeModule('lfs')
|
||||
```
|
||||
|
||||
__Commented out:__
|
||||
|
||||
```lua
|
||||
--sanitizeModule('os')
|
||||
--sanitizeModule('io')
|
||||
--sanitizeModule('lfs')
|
||||
```
|
||||
|
||||
*Be advised, as soon as you use the dcs-updater to install a new version of DCS, this file will be restored and you'll have to mod it again !*
|
||||
|
||||
### The specific case of *slmod*
|
||||
|
||||
If you're using [slmod](https://github.com/mrSkortch/DCS-SLmod), you have to be extra careful.
|
||||
|
||||
It also has [a specific version](https://github.com/mrSkortch/DCS-SLmod/blob/master/Scripts/net/Slmodv7_5/SlmodMissionScripting.lua) of the `MissionScripting.lua` file which is used to replace DCS', and if you want the dcs-liberation script to work properly you have to edit it, too.
|
||||
Go and edit this file : `<saved games>\dcs\Scripts\net\Slmodv7_5\SlmodMissionScripting.lua`.
|
||||
|
||||
|
||||
Make sure to comment the lines mentionned in the previous section.
|
||||
|
||||
|
||||
You should also make the modification to the original file in DCS folder (see previous section), and the caveat about updating applies to *slmod* too.
|
||||
|
||||
### Environment variables
|
||||
|
||||
The dcs-liberation script will try and write the `state.json` file at the following locations :
|
||||
|
||||
- `%LIBERATION_EXPORT_DIR%` (an environment variable)
|
||||
- the dcs-liberation install folder, stored in the mission (probably not the same on the server and on the computer that generated the mission)
|
||||
- the system's temporary folder (as defined in the `%TEMP%` environment variable)
|
||||
- DCS' install directory
|
||||
|
||||
This will be stated in the DCS log file (accessible in `<saved games>\dcs\logs\dcs.log`) like this :
|
||||
```
|
||||
2020-10-20 20:44:52.652 INFO SCRIPTING: DCSLiberation|discoverDebriefingFilePath|75: Using DCS Liberation install folder for state.json
|
||||
2020-10-20 20:44:52.652 INFO SCRIPTING: DCSLiberation|87: DCS Liberation state will be written as json to [[D:\dev\_VEAF\dcs_liberation\state.json]]
|
||||
```
|
||||
|
||||
You can (and should) set the `%LIBERATION_EXPORT_DIR%` environment variable on your server. Please note that you'll have to restart DCS, and maybe even your server, depending on your configuration, before it's taken into account.
|
||||
|
||||
## Preparing the mission
|
||||
|
||||
After installing dcs-liberation on a computer (let's call it the mission computer), configure it the way you like (including plugins, if you want), and start a new campaign.
|
||||
|
||||
At one point, you'll want to *fly* a mission. When you press the *Take off* button in dcs-liberation, it'll generate a mission : `<saved games>\dcs\missions\liberation_nextturn.miz`.
|
||||
|
||||
Now, you can simply copy the mission file to your server and run it.
|
||||
|
||||
**Note: It was previously the case that multiplayer .miz turns had to be opened and saved in the mission editor prior to use. This is NO longer required.**
|
||||
|
||||
## Getting the result of the mission
|
||||
|
||||
During the mission (at runtime, as we developers like to say), the state of the mission (destroyed units, captured bases) is written in the `state.json` file.
|
||||
|
||||
It should be updated whenever a destruction or capture event occurs. But sometimes this doesn't work, so you have to be careful.
|
||||
|
||||
When the mission is over, double-check that the `state.json` file is updated : check the file date, and if you dare, check its content.
|
||||
|
||||
If in doubt, end the mission on the server (running another mission is enough ; I keep one "empty" mission on each theater, it's very quick to run).
|
||||
|
||||
Then download the `state.json` file on the mission computer, and enter it in dcs-liberation, using the "Manually submit" button :
|
||||
|
||||

|
||||
|
||||
If the "Waiting for mission completion" window is not visible anymore (you may have closed it, or the program), simply click the "Take off" button again.
|
||||
|
||||
|
||||
## Dedicated Server set up without DCS server files
|
||||
|
||||
First download a premade .bat file and move it to "X:\DCS World OpenBeta\bin"
|
||||
https://www.mediafire.com/file/pfjh1gfsnisvi1u/dcs-server.bat/file
|
||||
|
||||
Don't wish to download? no problem!
|
||||
1. create a text file name it something on the lines of "DCS server start.bat" or which ever you prefer but make sure you edit the type of file by
|
||||
inserting .bat instead of "x.txt" should look on the lines of "x.bat"
|
||||
2. open text file and copy and paste this code (no quotes) "DCS.exe --server --norender -w DCS.server1" and hit save.
|
||||
3. drag the just now created file in the same directory stated above "X:\DCS World OpenBeta\bin" and follow instructions below.
|
||||
|
||||
|
||||
|
||||
To Start the server simply double click the .bat file provided, which will now open an instance of dcs and it will stay on the "DCS" splash screen which is normal.
|
||||
|
||||
to manage your server simply go to "X:\DCS World OpenBeta\WebGUI" and open "index.html" which now will open the WebUI server manager on your default internet browser.
|
||||
|
||||
133
Developer's-Guide.md
Normal file
133
Developer's-Guide.md
Normal file
@ -0,0 +1,133 @@
|
||||
Welcome to the dev guide !
|
||||
|
||||
## Technical sum up
|
||||
|
||||
DCS Liberation is coded in Python, with QT6 as UI framework.
|
||||
It uses pyDCS to generate DCS World missions.
|
||||
|
||||
Before contributing to DCS Liberation, you should also maybe consider contributing to [PyDCS](https://github.com/pydcs/dcs), this is a great way to contribute indirectly to the project.
|
||||
|
||||
## Project history
|
||||
|
||||
DCS Liberation was a project started in 2018 by shdwp, original repo is still available here : https://github.com/shdwp/dcs_liberation
|
||||
|
||||
The original UI was different, and the mission generation process was different as well from version 2.0+
|
||||
|
||||
## Required tools
|
||||
|
||||
* [Python 3.10+](https://www.python.org/downloads/)
|
||||
* A code Editor for Python. I recommend [PyCharm Community Edition](https://www.jetbrains.com/pycharm/download/#section=windows), you can add plugin for Lua.
|
||||
|
||||
When you install Python, make sure to install pip for dependencies management. This should come preinstalled.
|
||||
|
||||
## Checkout the repository code with git
|
||||
|
||||
**Branches**
|
||||
|
||||
* **master** : Should be even with current release version
|
||||
* **develop** : Current version being worked on, might be unstable
|
||||
|
||||
The following instructions work for the git command line. If using the GitHub Desktop or `gh` tools, the steps will be the same but the exact commands will differ.
|
||||
|
||||
To get started with development, run:
|
||||
|
||||
```
|
||||
git clone https://github.com/dcs-liberation/dcs_liberation.git
|
||||
```
|
||||
|
||||
This will automatically check out the develop branch.
|
||||
|
||||
Please see [Pull requests](#Pull-requests) for instructions on which branch should be targeted with PRs.
|
||||
|
||||
## Creating a Python virtual environment
|
||||
|
||||
A Python virtual environment (virtualenv) is a local copy of the Python distribution for a specific project. This allows you to install the project dependencies local to the environment rather than globally on your system, which makes it easier to reset your environment if something goes wrong.
|
||||
|
||||
To create and use a virtualenv, run:
|
||||
|
||||
```
|
||||
cd dcs_liberation
|
||||
python -m venv env
|
||||
.\env\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
The first line creates the virtualenv to the directory `env`. The second line replaces the `python` for the current shell with the one in the virtualenv. The third line installs the project's dependencies. The final line installs the pre-commit hooks to run the auto-formatter on commit.
|
||||
|
||||
Whenever you open a new terminal, you'll need to re-run `.\env\Scripts\activate`.
|
||||
|
||||
If you're using PyCharm, you can configure the project to use your virtualenv in the project settings: 
|
||||
|
||||
## Running from sources
|
||||
|
||||
### Windows terminal (using git-bash)
|
||||
If you run from sources for the first time, you need to build the frontend, otherwise you won't be able to see the map. For the frontend to build, you need npm installed, which you can get on the [Node.js webpage](https://nodejs.org/en/download/). After installing node.js and npm, do the following for the first build:
|
||||
```
|
||||
cd client
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
Every time you update the repo you should rebuild the front-end:
|
||||
|
||||
```
|
||||
cd client
|
||||
npm run build
|
||||
```
|
||||
|
||||
If you're not developing the front-end (or the API boundary) that's enough. Otherwise, see `client/README.md`.
|
||||
|
||||
Set up your virtual env (described above), activate your env, then:
|
||||
|
||||
```
|
||||
PYTHONPATH=. python ./qt_ui/main.py
|
||||
```
|
||||
|
||||
### OS X terminal
|
||||
|
||||
Set up your virtual env (described above), activate your env, then:
|
||||
|
||||
```
|
||||
PYTHONPATH=. LOCALAPPDATA=. python ./qt_ui/main.py
|
||||
```
|
||||
|
||||
The LOCALAPPDATA=. environment variable will result in settings files being put in a sub folder in your local dev directory.
|
||||
|
||||
### Running from PyCharm
|
||||
|
||||
You can run DCS Liberation from source with this configuration: (Adapt it to your env)
|
||||
|
||||

|
||||
|
||||
## Type checkers and linters
|
||||
|
||||
We use [black](https://github.com/psf/black) for auto-formatting. The pre-commit hook will automatically run the formatter when you make a commit. See their docs for instructions on configuring black to run in your editor.
|
||||
|
||||
We use [mypy](https://mypy.readthedocs.io/en/stable/) for type checking. Python has built-in support for type annotations but does not perform any checking; that work is delegated to tools like mypy. All new code should include type annotations, and it's generally a good idea to add type annotations to any function you touch.
|
||||
|
||||
To check for type errors, run:
|
||||
|
||||
```
|
||||
mypy game
|
||||
```
|
||||
|
||||
This only checks the `game` package. `qt_ui` will probably never be checkable because `PySide2` (the Python Qt API) contains many patterns that do not play well with the type checker, but it's good to add the annotations anyway as they help the reader.
|
||||
|
||||
The type checker is **not** run as part of pre-commit, since that makes it harder to create WIP commits, but is run as a part of the PR and build checks, so it's best to run before uploading a PR, and definitely should be run before a push to develop.
|
||||
|
||||
## Making a release
|
||||
|
||||
[Release Process](Release-process)
|
||||
|
||||
## Pull requests
|
||||
|
||||
Please make a new branch from either develop or master, and make your pull requests to dcs-liberation/develop.
|
||||
|
||||
We can only merge/revert whole PRs, which means you should try and keep the size of each individual PR as small as possible. Ideally, one PR for one feature/bugfix/change. Also, review latency doesn't scale linearly with review time, and review time doesn't scale linearly with PR complexity. **Smaller PRs will likely get reviewed sooner and faster.** In addition, it's not possible for the testers to isolate bugs on a sub-build level.
|
||||
|
||||
New features and bug fixes in pull requests are usually worth mentioning in the changelog. Exceptions are fixes for bugs that never shipped (were only present in a canary build), and changes with no intended user observable behavior, such as a refactor. If you're comfortable writing the note yourself, add it to `changelog.md` in the root of the project in the section for the upcoming release.
|
||||
|
||||
If you're new to GitHub, https://guides.github.com/introduction/flow/ and the other tutorials on that site may be helpful.
|
||||
|
||||
|
||||
25
Fast-forward.md
Normal file
25
Fast-forward.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Using Fast Forward
|
||||
|
||||
Fast forward is a useful feature that moves clock ahead so players don't have to wait until take-off time. Fast forward continues until it hits a defined end condition. These can be:
|
||||
|
||||
* first contact
|
||||
* startup
|
||||
* taxi time
|
||||
* takeoff
|
||||
|
||||
Fast forward (FF) happens when you push take-off button. You can see effects of FF when you look at mission time in `Turn` section of main GUI. Map view will also show friendly flights. You cannot change any settings after `Take off` has been pushed. If you want to make changes, you must reload game state.
|
||||
|
||||
## Turning Fast forward on
|
||||
|
||||
Fast forward can be found in Settings / Mission Generator menu. To turn on FF, select `Fast forward mission to first contact`.
|
||||
|
||||
## Player interruptions
|
||||
|
||||
It is possible that player startup time happens before first contact. If you want to startup, taxi or take-off your plane, you must select corresponding option in `Player missions interrupt fast forward`
|
||||
|
||||
## Auto-resolve combat
|
||||
|
||||
If your take-off time is later than first contact, FF stops before your take-off time. If you start mission, you must wait until your take-off time. When you select `Auto-resolve combat during fast-forward (WIP)`, Liberation simulates combat and mission starts at your take-off time.
|
||||
|
||||
**Warning** If you have checked this option and set `Never` to `Player missions interrupt fast forward`, FF never stops.
|
||||
|
||||
100
First-operation.md
Normal file
100
First-operation.md
Normal file
@ -0,0 +1,100 @@
|
||||
**The tutorial is out of date for DCS Liberation 3.0.** See the other sections of [the manual](https://github.com/dcs-liberation/dcs_liberation/wiki) for help. If you want to help us update the tutorial, [join the #doc-maintenance channel in our discord](https://discord.gg/fpJRYBV9).
|
||||
|
||||
Now that you're on turn 1, you should see some messages about reinforcements and mission planning in the info panel at the bottom of the screen:
|
||||
|
||||

|
||||
|
||||
## War on the ground
|
||||
|
||||
The goal of the campaign is to capture all the enemy control points. To do so, you will need to:
|
||||
|
||||
* Help your ground units progress to the enemy bases.
|
||||
* Destroy enemy aircraft.
|
||||
* Destroy enemy buildings (they provide the enemy with income).
|
||||
* Destroy enemy air defenses.
|
||||
|
||||
On the map, you can see that the frontline between Gudauta and Sochi Adler is active.
|
||||
|
||||

|
||||
|
||||
Ground units purchased at Gudauta will be positioned along this front line. By default your ground units will adopt a defensive stance and wait for the enemy. To push toward Sochi, set their stance in the Ground Forces HQ (discussed in the previous tutorial)
|
||||
|
||||

|
||||
|
||||
See the [Front line stances guide](Frontline-Strategies-Stances) for a description of each stance.
|
||||
|
||||
# Adding player slots
|
||||
|
||||
Planning your own missions is covered in the next tutorial, but you still need to choose a flight to play as. This is done by adding "client slots" to a flight.
|
||||
|
||||
To add a client slot, choose a package in the Air Tasking Order (ATO) panel on the left, and then double click the group you want to fly. In this example I've selected a BARCAP flight protecting Gudauta.
|
||||
|
||||

|
||||
|
||||
Click the up arrow next to the client slot count to add a slot for a player.
|
||||
|
||||

|
||||
|
||||
After closing this window, the UI will update to account for the player slot. Because players cannot start most aircraft in under a minute like the AI does, adding cold start client slots may cause the flight's mission start time to change, possibly to a time before the start of the game, as seen below.
|
||||
|
||||

|
||||
|
||||
You can either automatically resolve this when launching the mission, or double click the package in the panel above the flight and adjust the package's time-over-target (TOT). This is discussed further in the next tutorial. For now, just click the "ASAP" button so we can take off as soon as possible.
|
||||
|
||||

|
||||
|
||||
## Generating the mission
|
||||
|
||||
Click on take off to start the mission:
|
||||
|
||||

|
||||
|
||||
It may take some time to generate the mission. When complete, a window will appear with more instructions:
|
||||
|
||||

|
||||
|
||||
**Do not close this Window until your mission is complete. Generated missions are only valid for as long as this window is open.** If you need to make changes to your plan, close the window, make your changes, and then press take off again. **You will need to load the newly generated mission.**
|
||||
|
||||
If the window does not appear, check the command prompt window that opened with Liberation and look for error messages in the log. You will likely need to [file a bug](https://github.com/dcs-liberation/dcs_liberation/issues).
|
||||
|
||||
## Launching the mission
|
||||
|
||||
Launch DCS World, open the mission editor, and open the mission `liberation_nextturn` that should have been generated in the default mission folder.
|
||||
|
||||

|
||||
|
||||
Start the mission.
|
||||
|
||||

|
||||
|
||||
The mission briefing will contain information about your flight.
|
||||
|
||||

|
||||
|
||||
If you are prompted to choose a slot, pick the one you setup for you. If there is only one slot available (and no Combined Arms mission commander) it will be chosen automatically.
|
||||
|
||||

|
||||
|
||||
Play the mission. Most of the information you will need to complete your mission is present in the kneeboard (right shift K by default, use `[`] and `]` to change pages).
|
||||
|
||||

|
||||
|
||||
This was a BARCAP mission, so follow your flight plan to the mission location and then orbit between the two race track points (waypoints 1 and 2 in this case) until the departure time (17:51:53 local). Once complete, RTB and close the mission.
|
||||
|
||||
## Submitting mission results
|
||||
|
||||
**Note:** This section was written for an older version of DCS Liberation. The text is accurate, but the screenshots are out of date.
|
||||
|
||||
Once you exit the mission in DCS World, in DCS Liberation a mission result window will appear, click on Accept results and then OK to proceed to next turn. If Liberation hasn't detected that the mission has ended, click on the Manually Submit button, then select the state.json file (it should be within the Liberation folder by default).
|
||||
|
||||

|
||||
|
||||
Then click on Okay
|
||||
|
||||

|
||||
|
||||
Depending on your results, the frontline will progress in your favor or not. Here since we destroyed way more units than the enemy while on the offensive, we made progress toward Sochi!
|
||||
|
||||

|
||||
|
||||
Now repeat until the end of the war! Have fun playing DCS Liberation!
|
||||
68
Frontline-Movement.md
Normal file
68
Frontline-Movement.md
Normal file
@ -0,0 +1,68 @@
|
||||
# Overview
|
||||
Frontline movement in DCS: Liberation is based on the results of the running battle between ground units deployed out of the frontline's connected Control Points. The frontline can come no closer than 5km to an uncaptured Control Point at the start of a mission. The location of the frontline is based upon the relative Strength Ratings of the connected Control Points.
|
||||
|
||||
# Base Strength
|
||||
## Maximum and Minimum
|
||||
The Strength Rating for a Control Point has a maximum value of 1.0 and a minimum value of 0.0.
|
||||
|
||||
## Campaign Events
|
||||
At the start of a campaign, each Control Point starts with Strength Rating of 1.0. After being captured, a Control Point's Strength Rating is set to 0.0.
|
||||
|
||||
## Natural Regeneration/Decay for Player Control Points
|
||||
Each turn that the user performs a "Take Off" and "Accept Results," all the player's Control Points increase their Strength Ratings by 0.2. Each turn after Turn 0 that the user performs a "Skip Turn," all the player's Control Points decrease their Strength Ratings by 0.2.
|
||||
|
||||
# Frontline Location
|
||||
The frontline location is determined by calculating the fraction of the total Control Point Strength Ratings of the frontline's connected Control Points belonging to the player. So if the player's Control Point has a Strength Rating of 0.6 and the enemy's Control Point has a Strength Rating of 0.4, the player's fraction of the total Strength Rating is `0.6 / (0.4 + 0.6) = 60%`. This fraction is then applied to the total distance between the player's Control Point and the enemy's Control Point. If the Control Points are 100 miles apart, the frontline will be 60 miles along the route between the player's Control Point and the enemy's Control Point. This distance is applied along the waypoint route set up in the Campaign's Mission file between the two Control Points. More or fewer waypoints in the route do not make the frontline move more quickly or more slowly given the same mission results, but it more waypoints do make the movement somewhat smoother in terms of orientation of the frontline. Note that the limits described above still apply, so if the distance applied would cause the frontline location to be closer than 5km to one of the connected Control Points, the frontline location is instead moved to 5km from that Control Point.
|
||||
|
||||
## First Turn
|
||||
Because both connected Control Points would have a strength of 1.0 at game start (and after using "Skip Turn" to advance from Turn 0 to Turn 1), the player's fraction of the total Strength Rating would be 50%, so the frontline starts exactly between the two Control Points.
|
||||
|
||||
# Mission Result Impacts on Control Point Strength Rating
|
||||
Based on the results of a given "Take Off" mission, the Strength Rating of the Control Points connected to a frontline are adjusted. It is this change in Strength Ratings that causes the location of the frontline to change from mission to mission.
|
||||
|
||||
## Quantities Involved
|
||||
The relevant quantities involved in the calculation of the Strength Rating adjustment are: enemy casualties, allied casualties, enemy remaining units, and allied remaining units. Additionally the [Frontline Stance](Frontline-Strategies-Stances) of the _player's_ Control Point at at frontline plays an important part.
|
||||
|
||||
## Aggressive Stances
|
||||
The player Control Point's Frontline Stance is considered to be an "Aggressive" Stance if it was one of `AGGRESSIVE`, `ELIMINATION`, or `BREAKTHROUGH`.
|
||||
|
||||
## Winners and Losers
|
||||
After a mission, for each frontline, a winner and loser is calculated. This is done as follows, with results being taken in the order listed:
|
||||
* If the player has no surviving units at the frontline, the player loses the battle.
|
||||
* If the enemy has no surviving units at the frontline, the enemy loses the battle.
|
||||
* If the player's Control Point Frontline Stance is `RETREAT`, the player loses the battle.
|
||||
* If the enemy takes more casualties than the player, the enemy loses the battle.
|
||||
* If the player takes more casualties than the enemy, more analysis is required:
|
||||
* If the player has 2x or more remaining units than the enemy _and_ the player's Control Point Frontline Stance was an "Aggressive" Stance, the enemy loses the battle.
|
||||
* If the player has less than 2x more remaining units than the enemy, the player loses the battle.
|
||||
|
||||
## Victory/Defeat Influence
|
||||
Depending on the four quantities listed above and the player's Control Point Frontline Stance, a Victory/Defeat Influence is determined. The Victory/Defeat Influence is applied as an increase to the winning side's Control Point Strength Rating and as a decrease to the losing side's Control Point Strength Rating.
|
||||
|
||||
### Victory/Defeat Influence Values
|
||||
The Victory/Defeat Influence at a Frontline can have one of three values:
|
||||
* STRONG = 0.5 Strength Rating increase/decrease
|
||||
* Normal = 0.3 Strength Rating increase/decrease
|
||||
* MINOR = 0.1 Strength Rating increase/decrease
|
||||
|
||||
### Casualty Ratio
|
||||
The casualty ratio at a frontline is calculated as `ratio = (1 + enemy_casualties) / (1 + allied_casualties)`. This ratio is used to determined Victory/Defeat Influence in some circumstances.
|
||||
|
||||
### Victory/Defeat Influence Determination
|
||||
The Victory/Defeat Influence is determined as follows:
|
||||
* If the player has no remaining units, the Victory/Defeat Influence is STRONG.
|
||||
* If the enemy has no remaining units, the Victory/Defeat Influence is STRONG.
|
||||
* If the player's Control Point Frontline Stance is `RETREAT`, the Victory/Defeat Influence is STRONG.
|
||||
* If the enemy takes more casualties than the player:
|
||||
* If the player's Control Point Frontline Stance is `BREAKTHROUGH`, the Victory/Defeat Influence is STRONG.
|
||||
* If the player's Control Point Frontline Stance is `DEFENSIVE` or `AMBUSH`, the Victory/Defeat Influence is MINOR.
|
||||
* If the casualty ratio is greater than 3, the Victory/Defeat Influence is STRONG.
|
||||
* If the casualty ratio is between 1.5 and 3, the Victory/Defeat Influence is Normal.
|
||||
* If the casualty ratio is less than 1.5, the Victory/Defeat Influence is MINOR.
|
||||
* If the player takes more casualties than the enemy:
|
||||
* If the player has less than 2x as many remaining units as the enemy, the Victory/Defeat Influence is STRONG.
|
||||
* If the player has between 2x and 3x as many remaining units as the enemy _and_ the player's Control Point Frontline Stance is an "Aggressive" Stance, the Victory/Defeat Influence is MINOR.
|
||||
* If the player has 3x or more remaining units as the enemy _and_ the player's Control Point Frontline Stance is an "Aggressive" Stance, the Victory/Defeat Influence is STRONG.
|
||||
|
||||
### Final Adjustment
|
||||
As the turn is processed after "Accept Results" the winning side's Control Point's Strength Rating is adjusted upward by the Victory/Defeat Influence. The losing side's Control Point's Strength Rating is adjusted downward by the Victory/Defeat Influence. Then the Frontline Location is calculated for the next turn.
|
||||
57
Frontline-Strategies-Stances.md
Normal file
57
Frontline-Strategies-Stances.md
Normal file
@ -0,0 +1,57 @@
|
||||
# Stances
|
||||
|
||||
## DEFENSIVE
|
||||
* Units will adopt defensive stance with medium group of units
|
||||
* ### All units:
|
||||
* Hold position and defend
|
||||
|
||||
## AMBUSH
|
||||
* Units will adopt a defensive stance a bit different from 'DEFENSIVE', ATGM & INFANTRY with RPG will be located on frontline with the armored units. (The groups of units will be smaller)
|
||||
* ### All units:
|
||||
* Hold position and defend
|
||||
|
||||
## AGGRESSIVE
|
||||
* Units will attempt to make progress with medium sized group of units
|
||||
* ### Tanks and IFVs:
|
||||
* Close distance to nearest group and attack.
|
||||
* Attempt to move forward up to 16 KM
|
||||
* If Enemy Base is less than 16 KM, tanks and IFVs will attack the base.
|
||||
|
||||
## RETREAT
|
||||
* Units will retreat
|
||||
* ### All units:
|
||||
* Immediately retreat up to 20 KM
|
||||
* If friendly base is within 20 KM, regroup there and defend.
|
||||
|
||||
## BREAKTHROUGH
|
||||
* Units will attempt a breakthrough, rushing forward very aggressively with big group of armored units, and even less armored units will move aggressively
|
||||
* ### Tanks and IFVs
|
||||
* Move forward up to 35 KM
|
||||
* If Base is close enough, tanks and IFVs will attack the base.
|
||||
* Focuses on advancement over kills
|
||||
## ELIMINATION
|
||||
* Units will progress aggresively toward enemy units, attempting to eliminate the enemy force
|
||||
* ### Tanks and IFVs
|
||||
* Close distance and attack the three nearest enemy groups
|
||||
* Attempt to move forward up to 16 KM after killing their targets.
|
||||
* Focuses on kills before advancement.
|
||||
|
||||
## Units with behavior altered only by Retreat:
|
||||
* ### APCs and ATGM:
|
||||
* Will never move too much forward, but will follow along any offensive
|
||||
|
||||
* ### Artillery
|
||||
* Will always fire at a group within range, and fallback when damaged except when retreating.
|
||||
|
||||
## Enemy stance selection:
|
||||
* If enemy has more units available than player:
|
||||
* Aggressive 60% chance
|
||||
* Elimination 20% chance
|
||||
* Breakthrough 20% chance
|
||||
* If player has more units available than enemy:
|
||||
* Defensive 60% chance
|
||||
* Ambush 20% chance
|
||||
* Aggressive 20% chance
|
||||
* If enemy and player have same number of units:
|
||||
* Random chance of any stance.
|
||||
|
||||
133
Getting-started.md
Normal file
133
Getting-started.md
Normal file
@ -0,0 +1,133 @@
|
||||
# How to get DCS Liberation?
|
||||
## Download:
|
||||
You have two choices, either download a stable or a preview release:
|
||||
|
||||
1. [Stable release](https://github.com/dcs-liberation/dcs_liberation/releases)
|
||||
2. [Preview builds](Preview-builds)
|
||||
|
||||
#
|
||||
## Installation:
|
||||
|
||||
1. Extract the zip file to any directory other than Program Files and Program Files (x86). C:\Users\<Username>\Saved Games\ is a recommended location (it would look like C:\Users\<Username>\Saved Games\dcs_liberation\ when you're done). This _will be_ the install directory. It should preferably be a directory that's accessible without requiring Administrator privileges. Otherwise, in the shortcut's compatibility tab, select "Run this program as an administrator".
|
||||
2. Then launch `liberation_main.exe` to launch DCS Liberation.
|
||||
|
||||
First launch splash screen
|
||||
|
||||

|
||||
|
||||
**Important Note before you launch DCS Liberation :**
|
||||
|
||||
DCS Liberation will modify the following file in your DCS installation: `<DCS Installation Directory>/Scripts/MissionScripting.lua`. This allows Liberation to record information about mission events. This will **not** prevent you from passing the integrity check to join multiplayer servers.
|
||||
|
||||
This file will be modified whenever DCS Liberation is opened and the original will be replaced when DCS Liberation is closed.
|
||||
|
||||
**You must always launch DCS Liberation before you launch DCS.**
|
||||
|
||||
If you don't, DCS will load the file before it is changed and DCS Liberation will not be able to retrieve mission progress.
|
||||
|
||||
Experienced users can also disable the automatic modification of the `MissionScripting.lua`. This can be achieved by leaving the `DCS Installation Directory` preference empty.
|
||||
|
||||
**Warning**: If you leave the `DCS Installation Directory` empty, you have to manually edit the `MissionScripting.lua`. Otherwise DCS Liberation can not work properly. This is only recommended for expert users. A description on how to manually edit the file can be found in the [Dedicated-Server-Guide](https://github.com/dcs-liberation/dcs_liberation/wiki/Dedicated-Server-Guide#modding-missionscriptinglua).
|
||||
|
||||
#
|
||||
# Start your first campaign
|
||||
|
||||
### New Game
|
||||
|
||||
In the top left corner, click on **File** --> **New Game** to start the new campaign wizard.
|
||||
|
||||

|
||||
|
||||
#
|
||||
### Introduction
|
||||
|
||||
Click on next to start campaign configuration
|
||||
|
||||

|
||||
|
||||
#
|
||||
### Theater configuration
|
||||
|
||||
Choose your campaign/map and start date
|
||||
|
||||

|
||||
|
||||
1. Choose your campaign (implies the DCS map)
|
||||
2. Campaign author & remarks
|
||||
3. Performance impact
|
||||
4. Invert Map - Inverts the factions starting positions
|
||||
5. Time period / starting date (start date will affect weapon availability if turned on via options at a later stage)
|
||||
|
||||
#
|
||||
### Faction selection
|
||||
|
||||
You can use the default factions shown (what the author intended) or choose your Player Faction and Enemy Faction. Note that the list of available aircraft is what's available for the campaign designer and not necessarily what will be available in the campaign.
|
||||
|
||||

|
||||
|
||||
#
|
||||
### Generator options
|
||||
|
||||
Select any additional generation options you'd like to use. Note that the supercarrier option can be enabled or disabled later in the game settings.
|
||||
|
||||

|
||||
|
||||
Generator settings:
|
||||
- *No Aircraft carriers* - select if you don't want any CVNs in your campaign, even if the faction you selected has them available
|
||||
- *No LHA* - select if you don't want any LHAs in your campaign, even if the faction you selected has them available
|
||||
- *Use Supercarrier module* - if you own the DCS Supercarrier module, you can select which CVN type will generated in your campaign
|
||||
- *No Player Navy* - select whether you want combat ships in your campaign being generated or not
|
||||
- *No Enemy Navy* - select whether you want enemy combat ships in your campaign being generated or not
|
||||
|
||||
Mod settings:
|
||||
* If you want any of these mods considered during your campaign generators, please select accordingly
|
||||
* You are required to have the selected mods already installed and operational prior to DCS Liberation campaign generation
|
||||
|
||||
#
|
||||
### Difficulty and automation options
|
||||
|
||||

|
||||
|
||||
Economy options:
|
||||
- *Player income multiplier* - defines the multiplier of the player per-round income which depends on the type and number of [objectives](Custom-Campaigns#objective-locations) held
|
||||
- *Enemy income multiplier* - defines the multiplier of the enemies per-round income which depends on the type and number of [objectives](Custom-Campaigns#objective-locations) held
|
||||
- *Player starting budget* - amount of available money at the beginning of the campaign, to procure aircraft / ground units
|
||||
- *Enemy starting budget* - amount of available money at the beginning of the campaign, to procure aircraft / ground units
|
||||
|
||||
|
||||
Player assists:
|
||||
- *Automate runway repairs* - system will automatically repair player owned, destroyed runways if enough budget is available
|
||||
- *Automate front-line purchases* - system will automatically buy front-line ground units
|
||||
- *Automate aircraft purchases* - system will automatically buy aircraft
|
||||
|
||||
*The system currently will spend 50% on aircraft and 50% on ground unit purchases*
|
||||
|
||||
|
||||
Adjust difficulty and economy options as desired. A greater budget and income multiplier for the enemy will increase campaign difficulty. Note that more purchasing power can result in the campaign becoming busier as more units such as aircraft and vehicles appear during play. If this affects FPS, try reducing the income multipliers.
|
||||
|
||||
The player assists section enables automatic management of repairs and purchases so the player can focus on other aspects of the campaign. These options can be toggled later in the game settings. These options are described in detail in [the manual](Auto-purchase-options).
|
||||
|
||||
#
|
||||
### Conclusion
|
||||
|
||||

|
||||
|
||||
#
|
||||
### Air Wing Configuration aka Squadrons
|
||||
|
||||

|
||||
|
||||
The list of available squadrons is affected by the following factors:
|
||||
* Campaign configuration, done by the campaign author
|
||||
* Chosen faction
|
||||
* Available squadrons (custom & auto generated)
|
||||
|
||||
See [Air wing configuration](Air-Wing-Configuration) for more details.
|
||||
|
||||
#
|
||||
|
||||
If you are happy with your choices, close the squadrons window and trigger the campaign generation.
|
||||
|
||||

|
||||
|
||||
Voila! Your campaign has been generated! We recommend you save your game at this point.
|
||||
31
Home.md
31
Home.md
@ -1 +1,30 @@
|
||||
Welcome to the dcs-retribution wiki!
|
||||

|
||||
|
||||
# What is DCS: Liberation Dynamic Campaign?
|
||||
|
||||
In it's essence, it's a DCS mission generator, consisting of the following building blocks:
|
||||
|
||||
- [Campaigns](Custom-campaigns)
|
||||
- [Factions](Custom-Factions)
|
||||
- [Squadrons](Squadrons-and-pilots)
|
||||
|
||||
The campaign acts as a template, populated by units available, based on the factions and timeline chosen and generates a new mission (`liberation_nextturn.miz`) every time you hit the *launch* button in the UI.
|
||||
|
||||
Once a mission has ended, DCS Liberation captures the events (state) that happend in DCS and processes them, so that the player can make adjustments and hit *launch* again.
|
||||
|
||||
This pattern provides a custom, dynamic and persistent campaign.
|
||||
|
||||
|
||||
For more information, it's recommended to read the [Getting Started](Getting-started) guide first.
|
||||
|
||||
#
|
||||
For other tutorials and information, see the navigation bar at the right side of the wiki or use the search function by colapsing the _Pages_ tab on the top right of the navigation pane.
|
||||
|
||||
If you want to help us update the wiki, join the [#doc-maintenance](https://discord.gg/XXTng58cm7) discord channel.
|
||||
|
||||
**Disclaimer: as part of the DCS Liberation 5.x release, most wiki pages are under heavy construction**
|
||||
|
||||
#
|
||||
Join us on Discord: https://discord.gg/XXTng58cm7
|
||||
|
||||
Important: [Code of Conduct](Code-of-Conduct)
|
||||
1
Layouts-(WIP).md
Normal file
1
Layouts-(WIP).md
Normal file
@ -0,0 +1 @@
|
||||
Moved to https://dcs-liberation.readthedocs.io/en/latest/modding/layouts.html
|
||||
131
Lua-Plugins.md
Normal file
131
Lua-Plugins.md
Normal file
@ -0,0 +1,131 @@
|
||||
# LUA Plugin system
|
||||
|
||||
**Note**: Plugins are a Liberation 2.2 feature, which is currently in preview. The features described on this page will not work with Liberation 2.1 or earlier.
|
||||
|
||||
This plugin system was made for injecting LUA scripts in dcs-liberation missions.
|
||||
|
||||
The resources for the plugins are stored in the `resources/plugins` folder ; each plugin has its own folder.
|
||||
|
||||
## How does the system work ?
|
||||
|
||||
The application first reads the `resources/plugins/plugins.json` file to get a list of plugins to load, in order.
|
||||
Each entry in this list should correspond to a subfolder of the `resources/plugins` directory, where a `plugin.json` file exists.
|
||||
This file is the description of the plugin.
|
||||
|
||||
### plugin.json
|
||||
|
||||
The *base* and *jtacautolase* plugins both are included in the standard dcs-liberation distribution.
|
||||
You can check their respective `plugin.json` files to understand how they work.
|
||||
Here's a quick rundown of the file's components :
|
||||
|
||||
- `mnemonic` : the short, technical name of the plugin. It's the name of the folder, and the name of the plugin in the application's settings
|
||||
- `skipUI` : if *true*, this plugin will not appear in the plugins selection user interface. Useful to force a plugin ON or OFF (see the *base* plugin)
|
||||
- `nameInUI` : the title of the plugin as it will appear in the plugins selection user interface.
|
||||
- `defaultValue` : the selection value of the plugin, when first installed ; if true, plugin is selected.
|
||||
- `specificOptions` : a list of specific plugin options
|
||||
- `nameInUI` : the title of the option as it will appear in the plugins specific options user interface.
|
||||
- `mnemonic` : the short, technical name of the option. It's the name of the LUA variable passed to the configuration script, and the name of the option in the application's settings
|
||||
- `defaultValue` : the selection value of the option, when first installed ; if true, option is selected.
|
||||
- `scriptsWorkOrders` : a list of work orders that can be used to load or disable loading a specific LUA script
|
||||
- `file` : the name of the LUA file in the plugin folder.
|
||||
- `mnemonic` : the technical name of the LUA component. The filename may be more precise than needed (e.g. include a version number) ; this is used to load each file only once, and also to disable loading a file
|
||||
- `disable` : if true, the script will be disabled instead of loaded
|
||||
- `configurationWorkOrders` : a list of work orders that can be used to load a configuration LUA script (same description as above)
|
||||
|
||||
## Standard plugins
|
||||
|
||||
### The *base* plugin
|
||||
|
||||
The *base* plugin contains the scripts that are going to be injected in every dcs-liberation missions.
|
||||
It is mandatory.
|
||||
|
||||
### CTLD plugin
|
||||
Complete Troops and Logistics Deployment for DCS World written by ciribob (https://github.com/ciribob/DCS-CTLD)
|
||||
|
||||
The CTLD plugin allows special options to pickup and deploy troops as well as spawn and sling load cargo crates. The CTLD plugin also provides the JTAC Autolase function which allows a JTAC Drone to be used to lase enemy targets at the front line.
|
||||
|
||||
Special options in the LUA Options dialog allow to customize this plugin to the personal needs. This plugin is tailored to the special needs of DCS Liberation using a lua script. It is possible to disable the liberation specific adoptions which allows all default functionialities of the CTLD plugin like spawning any type of crate or adding custom units or zones within the Mission Editor which will be used by CTLD. Please read the [GitHub Documentation](https://github.com/ciribob/DCS-CTLD) of CTLD if you want to use these special options.
|
||||
|
||||
_This plugin will be introduced with Liberation 6.0.0_
|
||||
|
||||
### Skynet plugin
|
||||
An IADS (Integrated Air Defence System) script for DCS (Digital Combat Simulator) written by walder (https://github.com/walder/Skynet-IADS)
|
||||
|
||||
### The *JTACAutolase* plugin
|
||||
|
||||
This plugin replaces the vanilla JTAC functionality in dcs-liberation.
|
||||
|
||||
### The *VEAF framework* plugin
|
||||
|
||||
When enabled, this plugin will inject and configure the VEAF Framework scripts in the mission.
|
||||
|
||||
These scripts add a lot of runtime functionalities :
|
||||
|
||||
- spawning of units and groups (and portable TACANs)
|
||||
- air-to-ground missions
|
||||
- air-to-air missions
|
||||
- transport missions
|
||||
- carrier operations (not Moose)
|
||||
- tanker move
|
||||
- weather and ATC
|
||||
- shelling a zone, lighting it up
|
||||
- managing assets (tankers, awacs, aircraft carriers) : getting info, state, respawning them if needed
|
||||
- managing named points (position, info, ATC)
|
||||
- managing a dynamic radio menu
|
||||
- managing remote calls to the mission through NIOD (RPC) and SLMOD (LUA sockets)
|
||||
- managing security (not allowing everyone to do every action)
|
||||
- define groups templates
|
||||
|
||||
You can find the *VEAF Framework* plugin [on GitHub](https://github.com/VEAF/dcs-liberation-veaf-framework/releases)
|
||||
For more information, please visit the [VEAF Framework documentation site](https://veaf.github.io/VEAF-Mission-Creation-Tools/) (work in progress)
|
||||
|
||||
### The *LotATC export* plugin
|
||||
|
||||
This plugin can export [LotATC](https://www.lotatc.com/) compatible drawings of threat circles of SAMS and AAA for Blue and Red coalition. These threat circles reflect the campaign state and are generated once during mission start. Once a GCI connects with the LotATC client to the server that hosts the mission, these drawings are auto loaded in the LotATC client and displayed.
|
||||
|
||||
To make auto loading work correctly, the computer that hosts the DCS server needs some small setup.
|
||||
|
||||
#### DCS server setup
|
||||
|
||||
The lua script as plugin that generates the drawings runs exactly once during mission startup. This script generates the JSON for the selected faction, RED or BLUE or both, to the output folder specified by the environment variable `LOTATC_DRAWINGS_DIR`.
|
||||
|
||||
On the server machine the `LOTATC_DRAWINGS_DIR` should be set to:
|
||||
|
||||
* LotATC 2.2+: `C:\users\<you>\LotAtc Data\Server\drawings\`
|
||||
* LotATC <2.2: `C:\users\<you>\Saved Games\DCS(instance)\Mods\services\LotAtc\userdb\drawings\`
|
||||
|
||||
For LotATC 2.2+ both are accepted but the first is recommended.
|
||||
|
||||
#### Local generation
|
||||
|
||||
For local generation of the drawings it is enough to generate the "next turn" by pressing "Take Off", start the mission in DCS and quit again. The drawings are generated either to the path of `LOTATC_DRAWINGS_DIR` or as fallback to `Saved Games\DCS(instance)\Mods\services\LotAtc\userdb\drawings\`. These drawings can then be manually loaded in the LotATC client.
|
||||
|
||||
#### NATO names
|
||||
|
||||
The names generated for a SAM site always includes the group name from the campaign. E.g. for the SA-10 site "LYNX" the generated LotATC label will contain `LYNX|SAM`. By default it is not possible to generate the threat type because a SAM group consist of many different units and there is no one that is called "SA-10". But the exporter can infer the NATO name of the threat site with `SKYNET` plugin. So if `SKYNET` is active in the settings, it is very likely that the LotATC label will be `LYNX|SAM|SA-10`.
|
||||
|
||||
#### Plugin options
|
||||
|
||||
The plugin can be configured to control the exported drawings.
|
||||
|
||||
* Export RED AA - will export threat circles for the RED faction. These are loaded if a BLUE GCI connects to LotATC.
|
||||
* Export BLUE AA - will export threat circles for the BLUE faction. These are loaded if a RED GCI connects to LotATC.
|
||||
* Export AA Symbols - will additional export a classification symbol for every AA threat that marks the center of the site.
|
||||
|
||||
## Custom plugins
|
||||
|
||||
The easiest way to create a custom plugin is to copy an existing plugin, and modify the files.
|
||||
|
||||
## New settings pages
|
||||
|
||||

|
||||
|
||||
Custom plugins can be enabled or disabled in the new *LUA Plugins* settings page.
|
||||
|
||||

|
||||
|
||||
For plugins which expose specific options (such as "use smoke" for the *JTACAutoLase* plugin), the *LUA Plugins Options* settings page lists these options.
|
||||
|
||||

|
||||
|
||||
|
||||
107
Mission-Data-Files.md
Normal file
107
Mission-Data-Files.md
Normal file
@ -0,0 +1,107 @@
|
||||
# What are mission data (mizdata) files ?
|
||||
|
||||
## Note : [MIZDATA files are already done for Caucasus and The Channel map.]
|
||||
|
||||
|
||||
These are DCS Mission Editor files in which a set of preset location have been defined. Anybody can create these, the only skill needed is the ability to place object in the mission editor.
|
||||
|
||||
A mizdata file is associated to a DCS Liberation control point, which is usually an airbase.
|
||||
|
||||
Mizdata files are located in directory ./resources/mizdata/[map name]/[control_point_name].miz
|
||||
|
||||
These files contains :
|
||||
- Preset location for SAMs/strike targets
|
||||
- Preset offshore locations
|
||||
- Preset location for coastal/defense (Silkworm missiles sites for modern scenario, or Artilery Bunker for WW2)
|
||||
- Preset location for Factory/Power Plant (for future use)
|
||||
- Maybe more stuff later
|
||||
|
||||
**Example file for Manston (The Channel map) :**
|
||||
|
||||

|
||||
|
||||
# About locations to pick :
|
||||
|
||||
Try to spread them out around the control point area, but do not put them too close together. Otherwise we might end up with overlapping icons in the DCS Liberation software if two locations are too close from each other have been picked.
|
||||
|
||||
Also make sure the picked locations do not overlap with locations from another Control Point !
|
||||
|
||||
Here is an example for Mozdok :
|
||||
|
||||

|
||||
|
||||
# Preset SAM / Strike target locations
|
||||
|
||||
These locations are represented in the mission editor by a single APC-AAV-7, with USA as country.
|
||||
|
||||
To maintain randomness of the scenario generated by liberation, the more you can place the better (but remember, do not put them too close from each other), place at least 10 of them if you can.
|
||||
|
||||
DCS Liberation will pick a few of these locations to generate SAM sites and/or Strike targets.
|
||||
|
||||
Here is an example of location :
|
||||
|
||||

|
||||
|
||||
You should pick flat land, with at least 1500ft of free field around, so there is enough free space to generate a full SAM site. (600ft is ok for WW2 map)
|
||||
|
||||
When possible, or a strategic location that will cover either a frontline to another airbase.
|
||||
|
||||
**Good location example :**
|
||||
|
||||

|
||||
|
||||
**Good !** There is plenty of free space around !
|
||||
|
||||
**Bad location example :**
|
||||
|
||||

|
||||
|
||||
**BAD !** No that's bad ! There will not be enough space to generate most SAM sites, some units might end up in the trees !
|
||||
|
||||

|
||||
|
||||
**BAD !** This is not flat and, there are trees around, literally one of the worst possible location !
|
||||
|
||||
# Offshore locations
|
||||
|
||||
These are represented by Oliver Hazard Perry class ships, USA country.
|
||||
|
||||
These are used to generate starting locations for ship group or oil platform sites.
|
||||
|
||||
Spread them in the sea, near the control point (if the control point is a coastal one) :
|
||||
|
||||

|
||||
|
||||
# Coastal defenses site
|
||||
|
||||
These are represented by Iranian Silkworm Missiles launcher, on the coast, with their heading in the direction of the sea (this is important, so we'd be able get the generation of these site right). You don't need them on non-coastal control points.
|
||||
|
||||

|
||||
|
||||
**Good location example :**
|
||||
|
||||

|
||||
|
||||
**Good !** There is plenty of free space around, and the site is on the coast !
|
||||
|
||||
# Factory / Power Plant Location
|
||||
|
||||
These are represented by a single "Workshop A" static structure, country USA in the mission editor.
|
||||
|
||||

|
||||
|
||||
Please try to give them a name if you can, we might use these later as well to name objective realistically :
|
||||
|
||||

|
||||
|
||||
**Good location example:**
|
||||
|
||||

|
||||
|
||||
**Good !** This doesn't look out of place, and is located in an industrial area.
|
||||
|
||||
**Bad location example:**
|
||||
|
||||

|
||||
|
||||
**Bad!** This is in the middle of nowhere, this doesn't make sense !
|
||||
129
Mission-planning.md
Normal file
129
Mission-planning.md
Normal file
@ -0,0 +1,129 @@
|
||||
**Note**: The [Tips for AI Handling page](Tips-for-AI-Handling) contains advice on which AI aircraft are best for each task. The auto-planner follows priorities for the best aircraft for the job when it can, but that guide may be useful to players planning their own AI missions.
|
||||
|
||||
Each air mission is defined by a "package". A package is a group of one or more flights all working toward the same goal. The flights of the package can perform different tasks, at different times, and depart from different airports. For example, a strike mission attacking a factory will include a strike flight whose task is to attack the factory, but it can also include a SEAD flight to suppress any SAMs the package encounters, and an escort flight to protect the package from enemy aircraft.
|
||||
|
||||
All of the planned ("fragged") packages of a coalition for the turn comprise the coalition's Air Tasking Order (ATO).
|
||||
|
||||
## Mission timing
|
||||
|
||||
Each package has an assigned time-over-target (TOT). The even corresponding to the TOT varies based on the flight. For strike and DEAD flights it represents the desired time for the weapon to hit the target (the AI cannot be given such precise attack commands, however), whereas for CAP it defines the start time of their patrol.
|
||||
|
||||
Other mission waypoints, takeoff times, and mission start times will be planned based on the mission's TOT. Travel times to the target will be estimated, as will startup times and taxi times.
|
||||
|
||||
Flights will have their takeoff delayed long enough that all flights can arrive at their target at the assigned time. Behavior for delayed flights varies based on the number of players in the flight, the origin point, and the player's settings:
|
||||
|
||||
* AI flights from the shore will be spawned uncontrolled (the plane will be parked, but no pilot will be in it) until their mission start time. This is to provide targets for airfield strikes and for ambience.
|
||||
* AI flights from the boat will be activated late (the plane will not be spawned) until their mission start time. This is to decrease congestion on the flight deck.
|
||||
* Cold start player flights from the shore will be spawned uncontrolled. The player will not be able to enter the cockpit until the mission start time. This is to prevent AI wingmen from starting their engines prematurely and wasting too much fuel before a long delayed flight.
|
||||
* All other shore player flight start types will spawn immediately. Use delayed runway and air starts with caution, as there is no way to prevent the player from being spawned into the path of another flight.
|
||||
* Player flights from the boat will spawn immediately (https://github.com/dcs-liberation/dcs_liberation/issues/375).
|
||||
|
||||
To prevent player flights from being delayed, use the "Never delay player flights" option in the campaign settings. **This does not alter your mission time. It only lets you sit in a cockpit while you wait.**
|
||||
|
||||
When planning a mission, if you do not care specifically when the package reaches the target but instead want to plan the mission to begin as soon as possible, use the "ASAP" button next to the TOT in the package UI.
|
||||
|
||||
## Rendezvous planning
|
||||
|
||||
Some task types will rendezvous with the rest of the package before proceeding to the mission area. This is typically the case for strike/DEAD flights and their escorts. For these task types, additional waypoints will be added to the flight plan:
|
||||
|
||||
A hold point will be added after the ascent point. Climb to altitude and orbit until the assigned departure time. Flights are planned with an assumed five minutes of hold time to allow for last minute preparations and to accommodate unexpected delays before takeoff.
|
||||
|
||||
A join point is added after the hold point. At this point the flights will rendezvous with the rest of the package and head toward their target. The TOT of this waypoint is set the same for each flight.
|
||||
|
||||
A split point is added after the egress point. This is where flights will split off from each other to head to RTB.
|
||||
|
||||
## Task types
|
||||
|
||||
Below is a list of all the currently available task types for flights. More will be added in future updates. Subscribe to [Issue 277](https://github.com/dcs-liberation/dcs_liberation/issues/277) for updates.
|
||||
|
||||
### Air Assault
|
||||
An Air Assault mission is a special helo mission which can be planned against enemy control points to insert troops and capture the point. The flights will fly to the pickup point to load troops and continue to the drop off location where they will insert the units. The units will then head to the center of the Zone created by the Assault Waypoint. It is important that the drop off waypoint is within the boundary of this assault waypoint zone. Otherwise the troops will not head to the target zone. When this mission is tasked from a carrier then there will be no pick up needed as the troops can be loaded directly from the deck of the carrier.
|
||||
|
||||
This mission type is only available when the CTLD plugin is enabled as it is required for the troop loading and extracting.
|
||||
|
||||
### Airlift (Transport)
|
||||
An Airlift is a transport mission for a unit transfer and can be created from the Unit transfer dialog. It will also be automatically created for transfers if there is no other transport route (convoy, ship) available. To enforce an airlift the user has to choose Airlift as the requested transport type within the unit transfer dialog.
|
||||
|
||||
When the CTLD plugin is enabled liberation will automatically create the necessary pickup and drop off zones as well as a special logisitc unit which allows to spawn crates which can then be sling loaded. It is important to check the actual position of the Pickup and Drop off Waypoint as the CTLD zones will be placed at these locations. These zones will only be generated for player flights. The AI will not use the CTLD specific logic.
|
||||
|
||||
### Anti-ship
|
||||
|
||||
An anti-ship mission can be planned against enemy ships. The flight will rendezvous with the rest of its package and proceed to its ingress point, where it will fire its weapons at the enemy naval group. AI flights targeting a group of ships may split their weapons across multiple ships. After firing, the flight will RTB.
|
||||
|
||||
Many ships have significant point defenses. Large numbers of anti-ship weapons are usually needed to overwhelm the defenses.
|
||||
|
||||
### BAI
|
||||
|
||||
A Battlefield Air Interdiction (BAI) mission can be planned at enemy objective areas with ground vehicles. Its purpose is similar to CAS, but instead of supporting friendly troops it eliminates enemy forces before they can reach the front line. The flight will rendezvous with the rest of its package and proceed to its ingress point, where it will begin to search for its assigned targets.
|
||||
|
||||
**Convoy Interdiction:** Convoy interdiction is a subset of BAI. An interdiction tasking can be created by selecting the CP that a convoy originates from, looking at the Departing Convoys tab, and clicking on the Attack button. From there, create a flight package as you would normally.
|
||||
|
||||
### BARCAP
|
||||
|
||||
A BARCAP mission can be planned at any friendly objective area. Its purpose is to prevent enemy aircraft from entering the area. The flight will arrive at the target area at the package's TOT and begin a race-track pattern patrol and remain for a predefined amount of time (currently 30 minutes). The race-track will be oriented toward the nearest enemy airbase.
|
||||
|
||||
**NOTE:** You might see some BARCAP flights that look like their waypoints are too far away from their objective but they will still be covered within their engagement zone. You can verify that they are still in range by selecting the "Display Selected BARCAP Commit Range" in the Display dropdown menu.
|
||||
|
||||
### CAS
|
||||
|
||||
A CAS mission can be planned at a front line by right clicking on it on the map. Its purpose is to provide support to ground forces. The flight will arrive at the target area at the package's TOT and begin searching for targets within a predefined range of the center of the front line. The flight will search for targets until it is either bingo or winchester.
|
||||
|
||||
### DEAD
|
||||
|
||||
A DEAD mission can be planned against enemy air defenses. Its purpose is to destroy enemy air defenses. The flight will rendezvous with the rest of its package and aim to have weapons on the target at the package's TOT. After releasing its weapons, the flight will RTB.
|
||||
|
||||
DEAD missions are typically planned in coordination with a SEAD flight when then the target is a radar SAM. The SEAD flight will suppress the target with decoys or ARMs while the DEAD flight ensures the kill with bombs and ATGMs.
|
||||
|
||||
### Escort
|
||||
|
||||
An escort mission protects any other flights that are requesting an escort. Most mission types (CAP types are the exception) will request escorts for their mission. An escort will fly a flight plan similar to the rest of the package and RTB.
|
||||
|
||||
Note that the escort flight will not remain in the target area even if the rest of the package does not complete its mission quickly. To assign long-term air-to-air defense, use a CAP flight.
|
||||
|
||||
### Fighter sweep
|
||||
|
||||
A fighter sweep mission can be planned against an enemy objective. Its purpose is to clear the target area of enemy fighters five minutes before the rest of the package arrives. The flight will move to a point near the package's join point and then proceed to engage enemy fighters on its way to the target area. The flight will RTB when it is bingo, winchester, or reaches the target area without encountering any fighters.
|
||||
|
||||
### OCA/Aircraft
|
||||
|
||||
An OCA/Aircraft mission can be planned against an enemy airfield. Its purpose is to destroy aircraft on the ground. The flight will rendezvous with the rest of its package and proceed to its ingress point, where it will begin to search for and attack grounded aircraft at the target airfield.
|
||||
|
||||
### OCA/Runway
|
||||
|
||||
An OCA/Runway mission can be planned against an enemy airfield. Its purpose is to damage the runway to prevent the enemy from using the airbase to launch future missions. The flight will rendezvous with the rest of its package and proceed to its ingress point before lining up with and bombing the runway. If the runway is sufficiently damaged in a single turn it will be destroyed.
|
||||
|
||||
The amount of damage required to destroy a runway is defined by DCS. Currently it takes a total of 6000 lbs of general-purpose high-explosive to destroy a runway: e.g., 12x 500lb MK-82/MK-82Y, 6x 1000lb MK-83, or 3x 2000lb MK-84 (or their LGB equivalents). On the other hand, with "bunker-busting" or penetrator warheads only 2000 lbs is required: e.g., a *single* GBU31v3 (or GBU31v4) is sufficient to kill a runway. (The GBU-24 in DCS is graphically shown with a BLU-109 warhead, but is modeled in the game as having a BLU-117 non-penetrating GP warhead, so until this is fixed it still takes 3 of these to kill a runway rather than 1). A successfully destroyed runway will show up in the DCS debrief as a "dead" event with initiator "0".
|
||||
|
||||
An airfield with a destroyed runway will not be usable for missions and aircraft cannot be purchased or sold until the runway is repaired. If an airfield has multiple runways, it is only necessary to destroy one of them. Repairing the runway takes four turns and costs $100M. The AI will attempt to repair the runway whenever they can afford to do so. If the runway is damaged again before repair is complete the repair progress will stop and need to be purchased again.
|
||||
|
||||
### SEAD
|
||||
|
||||
A SEAD mission suppresses the package target. This can be accomplished with decoys or ARMs.
|
||||
|
||||
In contrast to DEAD, its goal is not to score a kill. SEAD flights employing HARMs might kill a radar, but that isn't required for mission success. The objective for the SEAD flight is to keep the target's radar off (or occupied, as is the case with decoys) so the DEAD flight can score the kill.
|
||||
|
||||
The flight will rendezvous with the rest of its package and fire its weapons (or decoys) at the package target once it reaches its IP. After releasing its weapons the flight will RTB.
|
||||
|
||||
SEAD flights will be planned to accompany DEAD packages. When the SEAD flight uses HARMs it is quite likely that they will destroy the emitters (when not using Skynet), but they will never kill launchers/TELs without their own radar. DEAD will often carry bombs rather than ARMs or decoys so they can destroy the non-emitting parts of the SAM as well.
|
||||
|
||||
**Note:** SEAD flights have a ToT 1 minute ahead of the rest of the package.
|
||||
|
||||
A player performing this mission is expected to fire HARMs in PB mode so that the weapon's TOT roughly aligns with the package's TOT, even if the emitter is off. It is best to fire HARMs one by one, staggered by a minute or so to keep the site suppressed for as long as possible, always trying to keep one HARM in flight near the target. When using decoys rather than ARMs the principle is the same, but you'll just have to guess at the decoy's TOT.
|
||||
|
||||
### SEAD Escort
|
||||
|
||||
A SEAD escort mission protects any other flights that are requesting an escort from SAM threats. Flight plans that pass within the range of enemy SAMs will request a SEAD escort. A SEAD escort will fly a flight plan similar to the rest of the package while engaging detected SAMs near the flight path and will then RTB.
|
||||
|
||||
This differs from SEAD by engaging *any* SAM threatening the package between the join and split points rather than only the package's target.
|
||||
|
||||
A player performing this mission is expected to fly the route while searching for SAM threats (using TOO mode for the Hornet, HTS for the Viper, etc) and engage any emitter that begins to threaten the package.
|
||||
|
||||
### Strike
|
||||
|
||||
A strike mission can be planned against enemy ground targets. The flight will rendezvous with the rest of its package and release its weapons on the predefined location. Some bombers will carpet bomb an area in a single pass, but most will aim at multiple targets. After releasing its weapons, the flight will RTB.
|
||||
|
||||
Note that strike packages are assigned coordinates to attack, not units. If the target moves the flight will not hit its target.
|
||||
|
||||
### TARCAP
|
||||
|
||||
A TARCAP can be assigned to any enemy objective area. TARCAP flights behave similarly to BARCAP except that it will only remain at the target area for as long as the members of the package that are requesting an escort plan to be there. If there are no other package members, the flight will patrol for a predefined amount of time (currently 30 minutes). TARCAP will arrive on station 2 minutes ahead of the join time of the rest of the package to ensure coverage has been established by the time the package arrives. This means that TARCAPs are not a good choice for targets that are near enemy SAMs.
|
||||
249
Modded-Aircraft-Support.md
Normal file
249
Modded-Aircraft-Support.md
Normal file
@ -0,0 +1,249 @@
|
||||
> Hey, can you add support for <insert mod name here>?
|
||||
|
||||
Well, we could, but...
|
||||
|
||||
It takes a lot of time to add support for a mod in Liberation. We prefer using the free time we can allocate to Liberation to develop features that will benefit the whole community of Liberation users.
|
||||
|
||||
> I'm willing to support the mod in liberation myself!
|
||||
|
||||
Here is how to do it:
|
||||
|
||||
## Pre-requisites:
|
||||
|
||||
* A development environment for DCS Liberation, see [Developer's Guide](Developer's-Guide)
|
||||
* Basic Python programming knowledge
|
||||
* Basic Lua programming knowledge
|
||||
* A DCS World open beta installation
|
||||
|
||||
## Step 1: Pydcs extensions injection:
|
||||
|
||||
Adding support for a modded aircraft is much more complicated than adding its name in a faction file.
|
||||
|
||||
In order for a modded aircraft to work with Liberation, we need to generate a data export for it to work with [pydcs](https://github.com/pydcs/dcs)
|
||||
|
||||
Pydcs is the library we use to generate the .miz files, it is awesome, but it is not magical and can't support modded content natively if we don't tell it how do to do it. Its database also need to be updated every time DCS is updated.
|
||||
|
||||
Updating pydcs database is done by adding a script to DCS World to be executed on the game startup to export some aircraft data.
|
||||
|
||||
See the script here : https://github.com/pydcs/dcs/blob/master/tools/pydcs_export.lua;
|
||||
|
||||
Copy this script on your computer and do what is explained in the comments :
|
||||
|
||||
``` lua
|
||||
-- execute(dofile) this script at the end of
|
||||
-- of 'DCS World\MissionEditor\modules\me_mission.lua'
|
||||
-- base.dofile("C:\\Users\\peint\\Documents\\dcs\\tools\\pydcs_export.lua")
|
||||
```
|
||||
|
||||
Modify the first line "export_path" so it match an existing folder on your computer :
|
||||
|
||||
```lua
|
||||
local export_path = "D:\\Work\\DCS\\dcs\\dcs\\"
|
||||
```
|
||||
|
||||
Running this script generate most of pydcs data in the target folder when launching DCS.
|
||||
If DCS stops loading at 10%, it's normal. If it doesn't start at all after 5 minutes and stay blocked at 10%, there might be an error in the script, so check ```<DCS World Save directory>/dcs.log``` for clues.
|
||||
|
||||
If you run it with mods installed, it generates a version of pydcs with support for the currently installed mods.
|
||||
|
||||
> As pydcs does not have the ambition of supporting every existing mods, we do not push modded content to the official pydcs version, which only supports vanilla DCS.
|
||||
|
||||
So to add support for modded aircrafts in liberation, we then have to manually extract the new aircraft from the generated modded pydcs version, and create an extension (which is added to liberation code)
|
||||
|
||||
Aircraft data will be found in the file aircraft.py generated by pydcs. Search your aircraft class in this file, and add it to a custom file.
|
||||
Your mod might have added new weapons, they'll be found in weapons.py, and you have to fetch them as well.
|
||||
|
||||
Example of final file for the popular A-4E-C mod : https://github.com/dcs-liberation/dcs_liberation/blob/develop/pydcs_extensions/a4ec/a4ec.py
|
||||
|
||||
As you can see, extensions for mods are stored in this folder : https://github.com/dcs-liberation/dcs_liberation/blob/develop/pydcs_extensions
|
||||
|
||||
These file contains a lot of metadata we need to be able to generate missions, such as possible liveries, possible payloads for each pylons, specific weapons ids ... and so on.
|
||||
|
||||
## Step 2: Pydcs extensions injection:
|
||||
|
||||
Once you've created your extension, you need to inject it's content into the pydcs version run by Liberation. In the Python file you created for the mod, decorate each unit type with either `@planemod`, `@vehiclemod`, or `@helicoptermod`. For example:
|
||||
|
||||
|
||||
```python
|
||||
@planemod
|
||||
class A_4E_C(PlaneType):
|
||||
...
|
||||
```
|
||||
|
||||
Make sure your mod is imported in `pydcs_extensions/__init__.py`.
|
||||
|
||||
## Step 2 : Campaign start setup
|
||||
|
||||
For campaign start setup and mod settings support, add your plane to the files [start_generator.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/theater/start_generator.py), [faction.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/factions/faction.py) and [QNewGameWizard.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/qt_ui/windows/newgame/QNewGameWizard.py)
|
||||
|
||||
```python
|
||||
a4_skyhawk: bool = False
|
||||
f22_raptor: bool = False
|
||||
hercules: bool = False
|
||||
jas39_gripen: bool = False
|
||||
su57_felon: bool = False
|
||||
frenchpack: bool = False
|
||||
```
|
||||
|
||||
```python
|
||||
# aircraft
|
||||
if not mod_settings.a4_skyhawk:
|
||||
self.remove_aircraft("A-4E-C")
|
||||
if not mod_settings.hercules:
|
||||
self.remove_aircraft("Hercules")
|
||||
if not mod_settings.f22_raptor:
|
||||
self.remove_aircraft("F-22A")
|
||||
if not mod_settings.jas39_gripen:
|
||||
self.remove_aircraft("JAS39Gripen")
|
||||
self.remove_aircraft("JAS39Gripen_AG")
|
||||
if not mod_settings.su57_felon:
|
||||
self.remove_aircraft("Su-57")
|
||||
```
|
||||
|
||||
```python
|
||||
mod_settings = ModSettings(
|
||||
a4_skyhawk=self.field("a4_skyhawk"),
|
||||
f22_raptor=self.field("f22_raptor"),
|
||||
f104_starfighter=self.field("f104_starfighter"),
|
||||
hercules=self.field("hercules"),
|
||||
jas39_gripen=self.field("jas39_gripen"),
|
||||
su57_felon=self.field("su57_felon"),
|
||||
frenchpack=self.field("frenchpack"),
|
||||
```
|
||||
|
||||
```python
|
||||
modSettingsGroup = QtWidgets.QGroupBox("Mod Settings")
|
||||
a4_skyhawk = QtWidgets.QCheckBox()
|
||||
self.registerField("a4_skyhawk", a4_skyhawk)
|
||||
hercules = QtWidgets.QCheckBox()
|
||||
self.registerField("hercules", hercules)
|
||||
f22_raptor = QtWidgets.QCheckBox()
|
||||
self.registerField("f22_raptor", f22_raptor)
|
||||
jas39_gripen = QtWidgets.QCheckBox()
|
||||
self.registerField("jas39_gripen", jas39_gripen)
|
||||
su57_felon = QtWidgets.QCheckBox()
|
||||
self.registerField("su57_felon", su57_felon)
|
||||
```
|
||||
|
||||
```python
|
||||
modLayout = QtWidgets.QGridLayout()
|
||||
modLayout.addWidget(QtWidgets.QLabel("A-4E Skyhawk"), 1, 0)
|
||||
modLayout.addWidget(a4_skyhawk, 1, 1)
|
||||
modLayout.addWidget(QtWidgets.QLabel("F-22A Raptor"), 2, 0)
|
||||
modLayout.addWidget(f22_raptor, 2, 1)
|
||||
modLayout.addWidget(QtWidgets.QLabel("C-130J-30 Super Hercules"), 3, 0)
|
||||
modLayout.addWidget(hercules, 3, 1)
|
||||
modLayout.addWidget(QtWidgets.QLabel("JAS 39 Gripen"), 4, 0)
|
||||
modLayout.addWidget(jas39_gripen, 4, 1)
|
||||
modLayout.addWidget(QtWidgets.QLabel("Su-57 Felon"), 5, 0)
|
||||
modLayout.addWidget(su57_felon, 5, 1)
|
||||
modLayout.addWidget(QtWidgets.QLabel("Frenchpack"), 6, 0)
|
||||
modLayout.addWidget(frenchpack, 6, 1)
|
||||
```
|
||||
|
||||
## Step 3 : Liberation flight planner database setup:
|
||||
|
||||
### DCS Liberation 7
|
||||
|
||||
The aircraft preferences per task are kept in each aircraft's yaml file in `resources/units/aircraft/*.yaml`. Each task is assigned a weight describing the aircraft's relative strength at the given task. Aircraft with a higher weight for a given task will be preferred over those with a lower weight. If a task is omitted from the yaml file, the aircraft will not be capable of performing that mission type. For example:
|
||||
|
||||
```yaml
|
||||
# From FA-18C_hornet.yaml
|
||||
tasks:
|
||||
Anti-ship: 150
|
||||
BAI: 740
|
||||
BARCAP: 450
|
||||
CAS: 740
|
||||
DEAD: 440
|
||||
Escort: 450
|
||||
Fighter sweep: 450
|
||||
Intercept: 450
|
||||
OCA/Aircraft: 740
|
||||
OCA/Runway: 600
|
||||
SEAD: 160
|
||||
SEAD Escort: 160
|
||||
Strike: 600
|
||||
TARCAP: 450
|
||||
```
|
||||
|
||||
```yaml
|
||||
# From F-16C_50.yaml
|
||||
tasks:
|
||||
BAI: 750
|
||||
BARCAP: 460
|
||||
CAS: 750
|
||||
DEAD: 450
|
||||
Escort: 460
|
||||
Fighter sweep: 460
|
||||
Intercept: 460
|
||||
OCA/Aircraft: 750
|
||||
OCA/Runway: 610
|
||||
SEAD: 170
|
||||
SEAD Escort: 170
|
||||
Strike: 610
|
||||
TARCAP: 460
|
||||
```
|
||||
|
||||
The hornet has a BAI weight of 740 while the viper has a BAI weight of 750. Liberation will prefer choosing vipers to hornets when deciding which aircraft is better suited to BAI.
|
||||
|
||||
Aircraft can have identical weights for a task. When multiple aircraft have the same weight for a task, they are treated as equal by Liberation. Selection criteria vary by many factors; one may be chosen randomly from the set of equal aircraft, one may be chosen arbitrarily, or a different but similar aircraft may be chosen. **These weights are only guidelines.** Use them to give Liberation hints about which aircraft are better at each task.
|
||||
|
||||
For an overview of all tasks and weights in Liberation, run `dcs_liberation.exe dump-task-priorities` (from the command line). That will dump `Liberation/Debug/priorities.yaml` to your DCS Saved Games directory.
|
||||
|
||||
### DCS Liberation 6
|
||||
|
||||
Open [ai_flight_planner_db.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/gen/flights/ai_flight_planner_db.py)
|
||||
|
||||
Add your plane to the lists it needs to be in, so DCS Liberation is aware of its capabilities. **These lists are in priority order**:
|
||||
|
||||
**Example:**
|
||||
|
||||
```python
|
||||
CAP_CAPABLE = [
|
||||
# ....
|
||||
Su_57,
|
||||
F_22A,
|
||||
# ....
|
||||
]
|
||||
```
|
||||
|
||||
## Step 4: Create default payload and inject custom weapons
|
||||
|
||||
See [Custom Loadouts](Custom-Loadouts)
|
||||
Create default loadouts for the new plane.
|
||||
|
||||
Any custom weapons with the mod should be included in the same file as the python class for the vehicle itself. After the weapons are defined, they must be injected into the `pydcs` weapons table. You do this by including the following line at the top of the file:
|
||||
`from pydcs_extensions.weapon_injector import inject_weapons`
|
||||
|
||||
and the following line after the weapons definition class:
|
||||
`inject_weapons(CustomWeaponsClass)` where `CustomWeaponsClass` is the name of the weapons class you created. For the A4EC listed above, that name is `WeaponsA4EC`.
|
||||
|
||||
## Step 5: Factions
|
||||
|
||||
See [Custom Factions](Custom-Factions) and add the mods to the appropriate factions. If there are no appropriate factions, create a new one, but you don't need to worry about breaking existing factions by "requiring" the mod; Liberation will filter out mods that the player doesn't use.
|
||||
|
||||
## Step 6: Resource files for aircraft
|
||||
|
||||
Add new yaml files for your aircraft in resources/units/aircraft/
|
||||
|
||||
See [A-4E-C.yaml](https://github.com/dcs-liberation/dcs_liberation/blob/develop/resources/units/aircraft/A-4E-C.yaml) for reference.
|
||||
|
||||
## Step 7: Add icons for the UI (Optional)
|
||||
|
||||
Add icons for the new plane there: https://github.com/dcs-liberation/dcs_liberation/tree/develop/resources/ui/units/aircrafts/icons
|
||||
|
||||
And a banner, there: https://github.com/dcs-liberation/dcs_liberation/tree/develop/resources/ui/units/aircrafts/banners
|
||||
|
||||
## Step 8: Playtest
|
||||
|
||||
Play a few missions with the plane, test as much cases as you can.
|
||||
|
||||
## Step 9: Release
|
||||
|
||||
## Step 10: Maintenance
|
||||
|
||||
Redo the data export thing (Step 1), every time said mod is updated, if needed create new loadouts and account for new capabilities in db.
|
||||
|
||||
|
||||
|
||||
|
||||
30
New-aircraft-module-checklist.md
Normal file
30
New-aircraft-module-checklist.md
Normal file
@ -0,0 +1,30 @@
|
||||
This checklist describes the work needed to add support for a new aircraft module in Liberation. The same steps apply to both official modules and mods, though mods are often held to a lower standard.
|
||||
|
||||
The content below the line can be copied into the FR for tracking the work. Copy the source rather than the rendered view to preserve formatting in the bug. Mods should replace the first task (pydcs export) with the instructions in [[Modded aircraft support|Modded-Aircraft-Support]].
|
||||
|
||||
---
|
||||
|
||||
The tasks below are rated P0-P2 to indicate their importance:
|
||||
|
||||
Priority | Description
|
||||
--- | ---
|
||||
P0 | Required. Module will not function in Liberation without completing these tasks. _Must_ be addressed before shipping in a release.
|
||||
P1 | Most modules complete these tasks. Commonly available features will not be available for the module if these tasks are skipped. Expect bug reports. Should be addressed before shipping in a release.
|
||||
P2 | Many modules don't complete these tasks. Completing these tasks is required for complete functionality. Can be addressed in future releases.
|
||||
|
||||
- [ ] P0: pydcs export
|
||||
1. Export latest DCS data by following the instructions at the top of [pydcs_export.lua](https://github.com/pydcs/dcs/blob/master/tools/pydcs_export.lua)
|
||||
2. Send PR to pydcs
|
||||
3. Update Liberation to the latest DCS
|
||||
- [ ] P0: Add unit data to `resources/units/aircraft`. See [the F-16C data](https://github.com/dcs-liberation/dcs_liberation/blob/develop/resources/units/aircraft/F-16C_50.yaml) for a complete example.
|
||||
- [ ] P0: Price. Compare to similar aircraft to determine what the price should be.
|
||||
- [ ] P0: Variants. These are the names that will be used in the UI. At least one is required, but variants should be added for faction-specific types as necessary (e.g. a CF-18 variant for the Canadian F/A-18).
|
||||
- [ ] P1: Maximum range estimate. This is the maximum range from departure to target that the auto-planner will consider. The defaults are extremely conservative to avoid planning missions that will kill AI flights that run out of fuel.
|
||||
- [ ] P1: Information sections (description, introduction date, manufacturer, origin, and role).
|
||||
- [ ] P1: Radio configuration. See [radios.py](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/radio/radios.py) for a list of known radio types. Add new radios to that list if necessary. Necessary for default channel assignments and non-conflicting intra-flight frequency assignments.
|
||||
- [ ] P2: [Fuel consumption data](https://github.com/dcs-liberation/dcs_liberation/blob/develop/doc/fuel-consumption-measurement.md). Without this the kneeboard will not show minimum required fuel for each waypoint, and bingo/joker estimates may be extremely inaccurate.
|
||||
- [ ] P0: [Flight planner priority lists](https://github.com/dcs-liberation/dcs_liberation/blob/develop/game/ato/ai_flight_planner_db.py). These lists are in priority order. Add the aircraft to the list for each mission type it is capable of in the order suitable for auto-planner preference. For example, for CAP the F-16 should be lower in the list than the F-22, but above the FW-190.
|
||||
- [ ] P0: Default loadouts for all supported mission types.
|
||||
- [ ] P0: Add to relevant factions.
|
||||
- [ ] P0: Aircraft specific waypoint behavior. Most aircraft, such as those capable of a large (20+) quantity of waypoints or have no built-in waypoint navigation do not need custom behavior. Aircraft like the Viggen and F-14 where waypoints are constrained and/or have specific meanings will need to complete this task.
|
||||
- [ ] P1: Banners/icons.
|
||||
59
Performance-Options.md
Normal file
59
Performance-Options.md
Normal file
@ -0,0 +1,59 @@
|
||||
Below are some of the settings that you can try adjusting to optimize the performance of your Liberation campaign.
|
||||
|
||||
Given the wide amount of differences between systems, it will take some trial and error for you to find the settings that work for your campaign. Don't be afraid to test out different settings to see how they impact your game!
|
||||
|
||||
# Distant Unit Culling
|
||||
|
||||
Enabling "Culling of distant units" in the Mission Generator settings can improve performance by removing some distant units from the game.
|
||||
|
||||

|
||||
|
||||
|
||||
Distant unit culling removes all ground units (including buildings) that are beyond the set range from any culling exclusion zone. These culling exclusion zones are placed:
|
||||
|
||||
* At the front line and its attached airfields, if a front line exists.
|
||||
* At the closest two opposing airfields, if no front line exists.
|
||||
* At all non-BARCAP mission targets.
|
||||
|
||||
Culling exclusion zones can be displayed on the map using the "Display Culling Zones" display option in the Liberation toolbar. If set too large, culling will have little effect. If set too small, the game experience will suffer as many SAMs will likely be culled.
|
||||
|
||||
**Air units are never culled.** Restricting departure airfields for air units does little to limit unit counts, so does not help performance. Instead, the income scale modifiers can be used to limit the amount of aircraft the AI is able to purchase.
|
||||
|
||||
# Budget
|
||||
|
||||
The starting budget and income multiplier not only affects the difficulty of your campaign but it can have a dramatic impact on performance in your campaign. If you are finding that the default values are causing too much of a burden on your campaign, try adjusting them down. If you already see a negative performance impact in your first turn flying a mission, try lowering the starting budget and re-generating the campaign.
|
||||
|
||||
The starting budget and income multiplier is set during the initial campaign generation:
|
||||
|
||||

|
||||
|
||||
During the campaign, you can still adjust both your and the enemy's income multiplier in the settings menu:
|
||||
|
||||

|
||||
|
||||
# Miscellaneous Performance Options
|
||||
|
||||
In addition to unit culling and budget management, the mission generator page in the settings menu gives you a few more options.
|
||||
|
||||

|
||||
|
||||
**Smoke visual effect on frontline:** can have a big framerate impact if you are looking directly at it. If you regularly perform CAS and notice a drop in framerates while you are over the frontlines, consider turning this option off.
|
||||
|
||||
**Convoys drive the full distance between control points** is a performance option which will limit the length of the convoy routes, when the setting is disabled (it's enabled by default). DCS ground vehicle pathfinding AI is CPU heavy, especially when traversing long distances or when having to avoid obstacles and buildings, so this setting aims to help with campaigns which have a lot of ground vehicles between control points.
|
||||
Often the vehicles will not be able to traverse the entire length of the supply route during the mission, so running pathfinding for the whole route will be unnecessary.
|
||||
|
||||
**Generate infantry squads along vehicles:** More units usually equals more resources required. Infantry does not count towards the behind-the-scenes determination of a frontline victory/loss so removing them will not affect gameplay. Note: manpads will still spawn when this option is still turned off if you have the Manpads on frontline option checked.
|
||||
|
||||
**Include destroyed units carcass:** Another case where more units equals more resources required. Unchecking this box will remove dead units and should help improve performance.
|
||||
|
||||
# Skynet IADS Script
|
||||
|
||||
Using Skynet can actually help improve performance as it manages most of the SAMs in the campaign and keeps them shut off until an enemy unit is within a pre-determined firing range. In doing so, it helps by saving some processing power that would otherwise be used to keep all the SAMs operating all the time.
|
||||
|
||||
# Tacview
|
||||
|
||||
Disabling Tacview has resulted in framerate increases for a number of Liberation users. Most users report single digit frame increases but a few users have also experienced double digit gains. Consider turning Tacview off when running Liberation missions if you have already exhausted all other options and still need a few more frames to make your campaign playable.
|
||||
|
||||
# Use a Dedicated Server
|
||||
|
||||
Users have also reported that setting up a dedicated server even on a local machine has helped improve their performance. Refer to the [Dedicated Server Guide wiki page](Dedicated-Server-Guide) for more information on how to set a server up.
|
||||
5
Preview-builds.md
Normal file
5
Preview-builds.md
Normal file
@ -0,0 +1,5 @@
|
||||
The latest build of the development branch can be found [here](https://github.com/dcs-liberation/dcs_liberation/actions/workflows/build.yml?query=branch%3Adevelop+event%3Apush). That page shows the build for every change that goes into our development branch. Builds at the top of the page are newer. If you click on them and are logged in to GitHub, you can download the release from the "Artifacts" section of the page.
|
||||
|
||||
**This is a development branch. Sometimes we break things, and plenty of things will be works in progress. Save games may not work across builds, and you should back up any save games you don't want to lose before loading them with a development build.**
|
||||
|
||||
The latest builds of the 8.0 release can be found [here](https://github.com/dcs-liberation/dcs_liberation/actions/workflows/build.yml?query=branch%3Adevelop+event%3Apush). Saves from 7.x are not compatible. However, check the date of the build before downloading, as the build on this page may be older than the released version.
|
||||
9
Release-process.md
Normal file
9
Release-process.md
Normal file
@ -0,0 +1,9 @@
|
||||
To release a new version of DCS Liberation:
|
||||
|
||||
1. Make sure the version number and changelog are up to date in the release branch. If the changelog needs to be updated, fix it in develop first and cherry-pick the updates to the release branch so they stay in sync.
|
||||
2. Announce a preview build in #:loudspeaker:preview with the link to the GitHub Action for the specifc branch before creating the Release and wait some time. This allows to get some feedback on the build
|
||||
3. When everything is ready for release tag the corresponding release branch. Format for release tags is `$MAJOR.$MINOR.$PATCH`. **Do not create a release.** A release will be created automatically by the GitHub action from the tag. `git tag 6.1.1 && git push --tags`, for example.
|
||||
4. Smoke test the tagged build
|
||||
5. Update the bug templates in .github to allow reporting bugs against the new release. Old versions should be removed.
|
||||
6. In [Releases](https://github.com/dcs-liberation/dcs_liberation/releases), promote the tagged build to a release. The description should be pre-filled with the changelog.
|
||||
7. Announce the release in #:loudspeaker:releases in Discord.
|
||||
58
Setting-up-a-custom-Strike-mission.md
Normal file
58
Setting-up-a-custom-Strike-mission.md
Normal file
@ -0,0 +1,58 @@
|
||||
**The tutorial is out of date for DCS Liberation 3.0.** See the other sections of [the manual](https://github.com/dcs-liberation/dcs_liberation/wiki) for help. If you want to help us update the tutorial, [join the #doc-maintenance channel in our discord](https://discord.gg/fpJRYBV9).
|
||||
|
||||
## Determining a target :
|
||||
|
||||
The first step is to find a target to Strike.
|
||||
|
||||
Here is our campaign for instance :
|
||||
|
||||

|
||||
|
||||
As you know, the small red square icons are enemy buildings or air defenses.
|
||||
There are multiple kinds of buildings and air defenses sites.
|
||||
|
||||
Choosing a building :
|
||||
|
||||
Before you choose a building to destroy, you should know that some of them are more valuable to the enemy. The more building the enemy has, the more reinforcement he'll receive.
|
||||
|
||||
The buildings that contribute most to the enemy War effort are "Oil" and "Factory", while "FARP" and "FOB" contribute less to the enemy budget.
|
||||
|
||||
So let's target the oil station near Sukhumi :
|
||||
|
||||

|
||||
|
||||
You can hover over the icon with the mouse to get the Building tactical identifier, here it is "JAGUAR"
|
||||
|
||||
Now, click on proceed to go the mission planner and choose departure from the nearby aircraft carrier :
|
||||
|
||||

|
||||
|
||||
Click on Add flight, and add a two-aircraft STRIKE flight. I'll use F/A-18C in this example.
|
||||
|
||||

|
||||
|
||||
So your flight has been created and will appear on the flight list. Add a client slot for you and head for the "Waypoints" tab in the mission planner, with your flight selected.
|
||||
|
||||

|
||||
|
||||
In waypoints tab, click on add waypoint :
|
||||
|
||||

|
||||
|
||||
In the selection box, type in "JAGUAR", the name of the objective we want to strike, and then choose the first occurrence.
|
||||
|
||||

|
||||
|
||||
Keep the "Include all objects" checkbox checked. Then click on Add
|
||||
|
||||

|
||||
|
||||
This will have created a waypoint in your flight plan for each enemy building located at objective "JAGUAR" :
|
||||
|
||||

|
||||
|
||||
Then click on take off to start DCS, and let's drop a GBU-38 on each waypoint!
|
||||
|
||||

|
||||
|
||||

|
||||
147
Squadrons-and-pilots.md
Normal file
147
Squadrons-and-pilots.md
Normal file
@ -0,0 +1,147 @@
|
||||
## Pilots
|
||||
|
||||
Each aircraft in the mission will be assigned one pilot. Each pilot belongs to a squadron. Pilots are assigned to aircraft using the flight edit dialog (later they will be assignable when creating flights).
|
||||
|
||||
**Note:** Multi-crew aircraft get only one pilot. Non-pilot air crews are not modeled in Liberation. Other player slots will still be available in game.
|
||||
|
||||
Pilots can be killed. When the aircraft the pilot is flying is destroyed the pilot will be killed and a new pilot will need to replace them in the squadron. Completing missions will increase the skill level of AI pilots.
|
||||
|
||||
Pilots can be sent on leave to prevent them from being automatically assigned to new missions. Pilots already assigned to missions that are sent on leave will not be
|
||||
unassigned, but will not be used next turn.
|
||||
|
||||
Pilots cannot be manually created once the game has started. New pilots will be created automatically as they are needed.
|
||||
|
||||
Optionally (off by default), new pilots will be recruited to the squadron each turn at a limited rate (currently one per squadron) if the squadron is not full. Pilots are a limited resource just like aircraft.
|
||||
|
||||
### Players
|
||||
|
||||
Each pilot can be set as either a player or AI pilot. Instead of creating client slots in flights as in previous versions of Liberation, pilots are set as players and those pilots are assigned to flights.
|
||||
|
||||
By default player pilots cannot be killed. This can be toggled in the difficulty options. **The aircraft is still lost when the player's aircraft is destroyed.**
|
||||
|
||||
Preference of player pilots during automatic mission planning is selectable as an option in the settings menu.
|
||||
|
||||

|
||||
|
||||
The options are:
|
||||
|
||||
Option | Behavior
|
||||
--- | ---
|
||||
Disabled | Automatic mission planning is disabled. Players perform all mission planning.
|
||||
Never assign player pilots | The automatic mission planner will never assign pilots to missions. Players plan their own missions.
|
||||
No preference | Players and AI pilots are chosen with equal preference. Players will not necessarily be assigned to missions.
|
||||
Prefer player pilots | Player pilots will be assigned to the flights of their squadron before AI pilots are used.
|
||||
|
||||
The `Automatically generated packages with players are scheduled ASAP` checkbox causes any player-assigned missions generated by the automatic mission planner to be scheduled ASAP.
|
||||
|
||||
### Skill level
|
||||
|
||||
AI pilots gain skill after completing missions. Every four missions completed confers one increase in skill level from the base level chosen in the campaign settings.
|
||||
|
||||
### Names
|
||||
|
||||
Pilot names are generated randomly when the squadron has exhausted all of its pre-defined names. The generated names are localized based on the `locales` field of the faction definition. For example:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "France and Germany",
|
||||
"locales": ["fr_FR", "de_DE"],
|
||||
}
|
||||
```
|
||||
|
||||
Names will be localized if the chosen locale has a `faker.providers.person` listed on https://faker.readthedocs.io/en/master/locales.html.
|
||||
|
||||
If the faction has no locales defined, names will be generated using `en_US` (the default for the name generator library).
|
||||
|
||||
## Squadrons
|
||||
|
||||
Squadrons define a group of pilots that fly a single type of aircraft and perform a predefined set of missions. The types of missions that are automatically assigned during mission planning can be chosen in the squadron menu. The squadron has a fixed livery.
|
||||
|
||||
Squadrons cannot be added after the game has started.
|
||||
|
||||
Optionally (off by default) squadrons have a maximum number of pilots (currently 24). Once a squadron reaches its limit no new pilots will be recruited until pilots are either killed or sent on leave. Each understaffed squadron will replenish pilots at a limited rate (currently four pilots per squadron) at the end of each turn. Both the limit and the replenishment rate are configurable in the game settings.
|
||||
|
||||
### Predefined squadrons
|
||||
|
||||
Predefined squadrons are loaded from `resources\squadrons\*\*.yaml` (for built-in squadrons) and from `<DCS saved games directory>\Liberation\Squadrons\*\*.yaml` (for user-defined squadrons).
|
||||
|
||||
The directory name within the squadrons directory is not important; it's just to allow organizing the squadron files. For example:
|
||||
|
||||
```
|
||||
<squadron directory>
|
||||
hornet/
|
||||
VFA-113.yaml
|
||||
VFA-122.yaml
|
||||
skyhawk/
|
||||
VFA-113.yaml
|
||||
```
|
||||
|
||||
Here is an example squadron definition file:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: VMFA-323
|
||||
nickname: Death Rattlers
|
||||
country: USA
|
||||
role: Strike Fighter
|
||||
aircraft: F/A-18C Hornet (Lot 20)
|
||||
bases:
|
||||
carrier: true
|
||||
shore: true
|
||||
livery: VMFA-323
|
||||
mission_types:
|
||||
- Anti-ship
|
||||
- BAI
|
||||
- BARCAP
|
||||
- CAS
|
||||
- DEAD
|
||||
- Escort
|
||||
- Intercept
|
||||
- OCA/Aircraft
|
||||
- OCA/Runway
|
||||
- SEAD
|
||||
- SEAD Escort
|
||||
- Strike
|
||||
- Fighter sweep
|
||||
- TARCAP
|
||||
pilots:
|
||||
- Wedge Antilles
|
||||
- Tycho Celchu
|
||||
players:
|
||||
- Corran Horn
|
||||
```
|
||||
|
||||
The country and aircraft fields will be used to match squadrons that are found against the squadrons being used. The country should be spelled exactly as it would be in a faction file. Factions that use Combined Joint Task Forces nations will have access to all squadrons with matching aircraft.
|
||||
|
||||
The `role` field is currently non-functional. The `role` field will later be shown in the UI as information for the player.
|
||||
|
||||
The `mission_types` field determines which mission types to assign to the squadron. The spelling of each entry in `mission_types` should match the spelling of the mission that is used in the Liberation UI. If the squadron specifies a mission type that the aircraft is not capable of, an error will be emitted in the log and the incompatible mission type will not be used for the squadron.
|
||||
|
||||
Note: The `mission_types` field is no longer used as of DCS Liberation 7. All squadrons will be capable of all mission types the airframe is capable of, and the auto-assignable mission types are defined by the campaign.
|
||||
|
||||
The `livery` field, if set, will be the livery used by all aircraft of this squadron. Default liveries included in DCS should match the quoted portion of the livery name in https://github.com/pydcs/dcs/blob/master/dcs/planes.py. For example, the name for the HAF 330 Thunder livery for a Greek F-16 is `HAF_ 330_Thunder`
|
||||
|
||||
**Note:** You can also use any custom liveries that you have downloaded to your Saved Games folder. In this case, the `livery` field should match the folder name (NOT the file name) of your selected livery.
|
||||
|
||||
The `pilots` field defines AI pilot names that will be used before generating random pilot names for this squadron.
|
||||
|
||||
The `players` field operates the same as the `pilots` field, but the created pilots will be created as player pilots.
|
||||
|
||||
|
||||
|
||||
The `aircraft` field should match the variant name of the aircraft as specified in the unit data file. For more information about variant names, see https://github.com/dcs-liberation/dcs_liberation/wiki/Custom-Factions#aircraft-and-ground-unit-names.
|
||||
|
||||
The `bases` field is new in DCS Liberation 5.0 and can be used to override the default bases that the squadron will operate from. The defaults are set based on the aircraft type:
|
||||
|
||||
Aircraft type | `shore` | `carrier` | `lha`
|
||||
--- | --- | --- | ---
|
||||
Helicopter | true | true | true
|
||||
LHA capable | true | false | true
|
||||
Carrier capable | false | true | false
|
||||
Other | true | false | false
|
||||
|
||||
This can be used for creating Marine Hornet squadrons as in the example above.
|
||||
|
||||
### Generated squadrons
|
||||
|
||||
If the campaign includes an aircraft type that does not have predefined squadrons available, a squadron with a randomised name will be generated for it.
|
||||
19
Tips-for-AI-Handling.md
Normal file
19
Tips-for-AI-Handling.md
Normal file
@ -0,0 +1,19 @@
|
||||
AI Handling
|
||||
|
||||
| TASK | AIRCRAFT | ISSUE | SOLUTION | NOTES |
|
||||
| ---- | -------- | ----- | -------- | ----- |
|
||||
| Anti-ship | AV-8B | Frequently shot down by ships | 4 x S-3B is effective | Aircraft that use AGM-65s for anti-ship often fly directly over the target. |
|
||||
| Anti-ship | F/A-18C | Ineffective at destroying ships | 4 x S-3B is effective | F/A-18Cs don't fire all harpoons at once. S3-Bs engage with both harpoons quickly. |
|
||||
| Strike | Any Strike | Drops a single bomb and leaves | Cruise missiles are more reliable (e.g. B-52) | ----- |
|
||||
| Strike | Strategic Bombers | Climbing and Speed Issues | Start in-flight, at 28,000ft and M0.8 | Set altitude and speed in the mission editor. |
|
||||
| S/DEAD | Any S/DEAD | S-300/SA-10 SEAD Strategy | [Info about TALDs and HARM PB/Loft here] | ----- |
|
||||
| Any | Any | AI crashes into me while taxiing | Wait for the AI to taxi first | Combine with other traffic solutions. |
|
||||
| Any | Any | AI traffic issues (crashing/blocking) | Spread out take-off times (2+ minutes) | Combine with other traffic solutions. |
|
||||
| Any | Any | AI won't take off from carrier | Set clients to take off from runway | Combine with other traffic solutions. |
|
||||
|
||||
|
||||
Client Handling
|
||||
|
||||
| TASK | AIRCRAFT | ISSUE | SOLUTION | NOTES |
|
||||
| ---- | -------- | ----- | -------- | ----- |
|
||||
| BAI | Any | I want to destroy a runway | [Info about effective weapons here] | ----- |
|
||||
36
Turn-Zero.md
Normal file
36
Turn-Zero.md
Normal file
@ -0,0 +1,36 @@
|
||||
**THE PART BELOW REQUIRES A REWORK FOR 5.x**
|
||||
|
||||
In DCS Liberation you may take control of planning decisions regarding the course of the ongoing war.
|
||||
|
||||
This is a turn based simulation. Each turn, DCS Liberation will generate a DCS World mission for you to fly. Note that, in general, **only the events that occur while the mission is running will have any effect**. There are exceptions to this rule such as ferry flights and airfield repairs, but _missions_ will only be completed if they are completed while the game is running. **DCS Liberation does not simulate combat if the player quits the mission before it completes.**
|
||||
|
||||
## Recruitment:
|
||||
|
||||
**Note:** These actions can be automated. See the [Auto purchase options guide](Auto-purchase-options) for more information.
|
||||
|
||||
On the map, click on an airbase (or right click and select "Open base menu") to open the base management menu. For the full demonstration, choose an airbase that is connected to the active front line.
|
||||
|
||||
|
||||
|
||||
### Aircraft recruitment
|
||||
|
||||
In Airfield Command tab, click on the "+" button to order new aircraft:
|
||||
|
||||
|
||||
|
||||
Purchased aircraft will arrive at the airfield next turn. Orders can be canceled and aircraft can be sold using the "-" button. **Sales are immediate and cannot be canceled**, so be careful to not sell aircraft you need for the turn.
|
||||
|
||||
Purchases are limited by your available budget and by the amount of parking available next turn. Current aircraft, ordered aircraft, and aircraft transferring in or out of the airbase this turn contribute to the next turn's parking limits.
|
||||
|
||||
You will need to buy aircraft for your entire faction, not just your own aircraft. Ensure that you purchase aircraft capable of performing the missions you will plan next turn like BARCAPs, CAS, and DEAD. See the [Mission planning guide](Mission-planning) for more information on mission types.
|
||||
|
||||
### Ground unit recruitment
|
||||
|
||||
In the Ground Forces HQ menu you can recruit ground forces that will fight on the front line.
|
||||
|
||||
|
||||
Ground units are very important, since they will fight on the front line to progress toward the nearby enemy bases and defend your airbase against enemy attacks. Do not underestimate this part of the conflict!
|
||||
|
||||
## Ending the turn
|
||||
|
||||
The units you bought will not be delivered until next turn. Spend your remaining budget and click the pass turn button to continue to the first turn.
|
||||
181
Tutorial-UI.md
Normal file
181
Tutorial-UI.md
Normal file
@ -0,0 +1,181 @@
|
||||
Now that you have started a new campaign, let's go through the UI to get an understanding of what the various elements & buttons do.
|
||||
|
||||
# UI Elements
|
||||
## Overview
|
||||
|
||||

|
||||
|
||||
*use browser zoom function to see all details on the picture above*
|
||||
|
||||
#
|
||||
### 1 - Toolbar
|
||||
|
||||

|
||||
|
||||
Buttons from left to right
|
||||
- *New Game* - starts the process of a new campaign as described in the [Getting Started](Getting-Started) guide.
|
||||
- *Open* - Load a previously saved campaign file `*.liberation`
|
||||
- *Save* - Save the currently active campaign
|
||||
- *Discord Server* - Link to the DCS Liberation Discord server
|
||||
- *Github Repo* - Link to the DCS Liberation Github repository (code & wiki)
|
||||
- *Settings* - opens current campaign settings dialogue
|
||||
- *Stats* - opens current campaign statistics dialogue
|
||||
- *Notes* - opens the campaign notes
|
||||
|
||||
#
|
||||
### 2 - Info section
|
||||
|
||||

|
||||
|
||||
Displays information about ...
|
||||
- selected factions
|
||||
- current turn number including date and time
|
||||
- weather forcast
|
||||
|
||||
*pro tip: If you mouse hover over the weather forecast, you will get information about the cloud base altitude*
|
||||
|
||||
#
|
||||
### 3 - Actions panel
|
||||
|
||||

|
||||
|
||||
Provides access to ...
|
||||
- *Budget* - opens finances dialogue, showing income sources and amounts
|
||||
- *Intel* - opens intelligence dialogue, showing details on the air & ground forces numbers (can also show enemies data)
|
||||
- *Misc* - opens air wing dialogue, showing details about squadrons and the inventory
|
||||
|
||||
#
|
||||
### 4 - Turn panel
|
||||
|
||||

|
||||
|
||||
Lets you ...
|
||||
- check the number of available human player slots, as set up via the [planning panel](#5---planning-panel)
|
||||
- *Pass turn* - skip turn
|
||||
- *Take off* - opens the mission dialogue
|
||||
|
||||
#### Mission dialogue
|
||||
|
||||

|
||||
|
||||
*Read the information given in this dialogue carefully!*
|
||||
|
||||
#
|
||||
### 5 - Planning panel
|
||||
|
||||
Here you can edit/remove packages and flights of various types
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
*Check out the details on available [task types](Mission-planning#task-types)*
|
||||
|
||||
#
|
||||
### 6 - Map & Overlays
|
||||
|
||||

|
||||
|
||||
Here you can see the campaign map with the following elemtens
|
||||
- A - *Ruler* - meassure distances, similar to the DCS F10 map feature
|
||||
- B - *Overlays* - enable/disable various overlays as shown below
|
||||
- C - *Display filters* - enable/disable various filters
|
||||
|
||||
#### Overlays
|
||||
|
||||

|
||||
|
||||
|
||||
#
|
||||
### 7 - Info panel
|
||||
Showing system output
|
||||

|
||||
|
||||
|
||||
#
|
||||
## Map Icons
|
||||
### Major point of interests
|
||||
- [Control points](#control-points)
|
||||
- [Air defences](#sam-sites)
|
||||
- [Objective locations](#objective-locations)
|
||||
- [Frontlines](#frontlines)
|
||||
|
||||
General information
|
||||
- You can hover the mouse over a point of interests to get details
|
||||
- Every point of interest will get a name assigned, e.g. CATFISH, ROACH, SILKWORM, for easy identification and reference
|
||||
|
||||
## Control points
|
||||
### Airbases
|
||||
**Friendly airbase**
|
||||
|
||||

|
||||
|
||||
You can **left** click on a friendly airbase to open airfield management dialogue
|
||||
- buy/sell aircraft
|
||||
- buy/sell ground units (HQ static defences)
|
||||
- initiate unit transfers
|
||||
|
||||
You can **right** click on a friendly airbase to open the mission planning dialogue
|
||||
- setup BARCAP missions
|
||||
|
||||
**Enemy airbase**
|
||||
|
||||

|
||||
|
||||
You can **left** click on an enemy airbase to open the airfield dialogue
|
||||
- *Intel* - Attack airfield
|
||||
- *Departing convoys* - show departing convoys and order an attack on them
|
||||
|
||||
### FOB
|
||||
|
||||
FOB = Forward operation base
|
||||
|
||||

|
||||
|
||||
Since version 5.x , FOBs host FARPs that can be used for rotorwing operations.
|
||||
|
||||
You can **left** click on a friendly FOB to open FOB management dialogue
|
||||
- buy/sell ground units (HQ static defences)
|
||||
- buy/sell rotorwing aircraft (Heliport)
|
||||
- initiate unit transfers
|
||||
- **IF** he FOB is the control point closest to the frontline, you can set the [frontline ground units stance](Frontline-Strategies-Stances), e.g. defining their speed of advancement
|
||||
|
||||
Lines to and from a FOB:
|
||||
- red line indicates route to the frontline
|
||||
- white line indicates friendly convoy/supply route
|
||||
|
||||
#
|
||||
|
||||
#### **Objective locations**
|
||||
[Objective locations](Custom-campaigns#objective-locations) are structures of various types.
|
||||
|
||||
Those structures yield income for the player/enemy, depending on ownership.
|
||||
|
||||
**Right** clicking an enemy objective location will open the strike mission planning dialogue.
|
||||
|
||||
Enemy buildings are automatically captured when the nearby airbase or FOB has been captured. They can't be repaired after capturing them, so be smart about strikes.
|
||||
|
||||
#### **SAM sites**
|
||||
|
||||
Friendly SAM sites
|
||||
|
||||

|
||||
|
||||
|
||||
Enemy SAM sites
|
||||
|
||||

|
||||
|
||||
Damaged SAM sites will show a "health bar" underneath the icon.
|
||||
|
||||
#
|
||||
|
||||
#### Frontlines
|
||||
|
||||

|
||||
|
||||
In the example above, you can see the friendly FOB in dark blue, surrounded by SAM sites and static defences. A red line leading up to the front (orange bar), going further to the right, leading to the next enemy control point.
|
||||
|
||||
The orange bar indicates a fronline. A campaign can have multiple frontlines, depending on the campaign setup.
|
||||
|
||||
You can **right** click on a frontline to open the mission planning dialogue.
|
||||
61
Unit-Transfers.md
Normal file
61
Unit-Transfers.md
Normal file
@ -0,0 +1,61 @@
|
||||
# Transferring Air Units
|
||||
|
||||
Squadrons can be transferred through the Air Wing pane by double-clicking on a squadron. You will have to transfer the squadron itself, not individual aircraft.
|
||||
|
||||

|
||||
|
||||
The transfer destination can then be selected from the pulldown menu at the bottom of the pane.
|
||||
|
||||

|
||||
|
||||
# Transferring Ground Units
|
||||
|
||||
Ground units can be moved between bases following the available transit routes. Transfers move along the transit route toward their destination at a speed of one control point per turn.
|
||||
|
||||
Transfers will be automatically created when purchasing units. New units will spawn at the factory nearest the base purchasing the units and will then begin to transfer.
|
||||
|
||||
Units being transferred will not appear in the base's inventory, and will not be able to join combat at the front line. To see a list of all in-progress unit transfers, click the "Transfers" button in the top bar. Transfers can be cancelled from this menu as well. Cancelled transfers will add the units in transfer to the inventory at their current location.
|
||||
|
||||
If the transfer destination is cut off due to a base capture, the transfer will be cancelled and the units will be added to the inventory at their current location. If the transferring units are surrounded (the base they left at the beginning of the turn was captured, as were the connecting bases), the units are destroyed.
|
||||
|
||||
## Transport methods
|
||||
|
||||
Units can be relocated by road, cargo ship, or airlift. A single transfer may make use of multiple modes of transportation over the course of its journey. The type of transit used will be chosen automatically with the following priorities:
|
||||
|
||||
1. Road
|
||||
2. Shipping
|
||||
3. Airlift
|
||||
|
||||
Airlift is given lowest priority because airlifts require the use of planes and helicopters that could be used for other tasks. Convoys are self-propelled, and cargo ships are free and have no other purpose.
|
||||
|
||||
The decision of route and transport method is re-evaluated at the beginning of each turn, or whenever a new transport order is created. This means that transfers interrupted by a base being captured (or, later, a bridge being destroyed) will cause the group to re-route if possible.
|
||||
|
||||
### Convoys
|
||||
|
||||
Road transfers follow the same route as the front line.
|
||||
|
||||
Units transferring by ground will be present as a convoy in the mission. The convoy will spawn at its origin base and move on-road to the next base on its path to its final destination. Convoys are vulnerable to attack, so interdiction of enemy convoys will prevent the front line from receiving those reinforcements on a future turn.
|
||||
|
||||
### Shipping
|
||||
|
||||
Cargo ship transfers follow shipping lanes.
|
||||
|
||||
Units transferring by cargo ship will be present as a freighter in the mission. The ship will spawn at its origin port and follow the shipping lane to the destination port. Cargo ships are vulnerable to attack, so sinking enemy cargo ships will prevent them from receiving those reinforcements.
|
||||
|
||||
### Airlift
|
||||
|
||||
Airlift transfers move between any two airports.
|
||||
|
||||
Helicopters carry one unit each. Cargo planes can carry up to two units each.
|
||||
|
||||
Units transferring by airlift will not be directly present in the mission but will be represented by helicopters and cargo planes flying between the origin and destination. Shooting down transport aircraft will destroy the carried units, preventing those reinforcements from reaching the front line.
|
||||
|
||||
## Creating transfers manually
|
||||
|
||||
Ground units can be moved between bases by opening a base's menu and clicking the "Transfer Units" button at the bottom of the page. This button will only be present if there is a safe path from the selected base to another friendly base. In the transfer creation window, select the destination base and the units to move, then click "Create Transfer Order" to accept.
|
||||
|
||||
Note that manual creation of transfers is only needed when redeploying existing units. Transfer orders for purchased units will automatically be created to move them from the factory to their destination.
|
||||
|
||||
Further work that's planned:
|
||||
* Redeployment of reserves from non-front line bases: https://github.com/dcs-liberation/dcs_liberation/issues/823
|
||||
* Transfer via rail for alternate ground transportation networks: https://github.com/dcs-liberation/dcs_liberation/issues/826
|
||||
62
Using-noVNC-and-Liberation-as-Web-Interface.md
Normal file
62
Using-noVNC-and-Liberation-as-Web-Interface.md
Normal file
@ -0,0 +1,62 @@
|
||||
## Situation:
|
||||
My flight group and I want to create missions using Liberation. I run the campaign on my dedicated server, which is a Windows 10 Guest VM.
|
||||
Generally we use the Server Interface provided by ED to control the server. Missions are synced by a Google Drive sync.
|
||||
So everybody is able to upload missions and run them on the server remotely, without having to use some sort of third party interface - like VNC or Remote Desktop.
|
||||
|
||||
On Liberation it is a bit different - you cannot control it using some sort of WebGui. Making a turn would need the user to be on that very machine the mission runs.
|
||||
Asking for a solution I was pointed to use Remote Desktop for such an endeavour - in my eyes not a good solution when running a server where several people want to operate.
|
||||
|
||||
## Workaround:
|
||||
To access the Liberation Tool I used VNC and set it up the following way...
|
||||
|
||||
### Setting up Liberation area
|
||||
On the Windows VM set up a second screen in which you want to position Liberation. Note that the resolution should be somewhat below your clients-resolution
|
||||
for example:
|
||||
If you use 1080p on your client then it would be best that the resolution on your VM is below that (1680x1050) - otherwise your browser bars/frames will cost viewing area.
|
||||
If you fancy remove the Taskbar from that screen.
|
||||
|
||||
### Setting up VNC
|
||||
[Download TightVNC](https://www.tightvnc.com/download.php) - why? Because you can limit the viewing-Area with it.
|
||||
|
||||
I found several other VNC server tools, but its seldom that you can limit the provided area to a certain window or coordinates.
|
||||
Install TightVNC using its installer.
|
||||
Once done install it as a service (there are links in the StartMenu for that) and run that service (also link in StartMenu).
|
||||
In your tray you'll find a VNC icon, click on it and open _configuration_.
|
||||
Set up your ports and passwords as needed.
|
||||
On Extra Ports add the port and viewing area your Liberation is positioned
|
||||
In my particular case (1152x864 main screen / 1680x1050 second screen) that string looks like that:
|
||||
|
||||
>``5901:1680x1020+1152+30``
|
||||
|
||||
> Explanation:
|
||||
> * 5901: listening port for VNC connections
|
||||
> * 1680: picture width
|
||||
> * 1020: picture height (minus the windows top-bar)
|
||||
> * 1152: starting point X (right of my main screen)
|
||||
> * 30: starting point Y (below the windows top-bar)
|
||||
|
||||
Change to the tab _Access Control_ and allow loopback connections
|
||||
|
||||
## Setting up noVNC and websockify
|
||||
* [Download noVNC](https://github.com/novnc/noVNC) and extract it to a folder of your liking.
|
||||
* change the websocket.json (../noVNC-1.2.0/core/websocket.json - Line 185) to following: > ``this_websocket = new WebSocket(uri, ['binary',base64']);``
|
||||
* [Download Websockify](https://github.com/novnc/websockify)
|
||||
* Start websockify using (for example) the following parameters:
|
||||
``..\websockify.exe 5902 127.0.0.1:5901 --web ..\noVNC-1.2.0``
|
||||
> * Explanation:
|
||||
> * ..\websockify.exe - please provide the correct path to the executable
|
||||
> * 5902 - any port you want to use for your connection
|
||||
> * 127.0.0.1:5901 - localhost + the port your VNC server is listening on
|
||||
> * --web - parameter for the web interface to show
|
||||
> * ..\noVNC-1.2.0 - the path to your noVNC folder
|
||||
* rename the _vnc.html_ to _index.html_ so you don't need to enter it in the URL afterwards
|
||||
|
||||
There are some more parameters to websockify to wrap executables or start them on connection, which I haven't had a look on yet.
|
||||
|
||||
## Execution
|
||||
Start websockify using the parameters given (or adapted). Start Liberation and put it on your second screen maximized.
|
||||
Start a Browser and enter the URL:port of your machine. Enter you password - now you should see your Liberation tool.
|
||||
|
||||
## Notes
|
||||
I did all that for people I trust and not for a public server. Keep in mind that this provides an access to your machine, there is no security implemented.
|
||||
Why did I use an area instead of an executable wrapping? Because Liberation uses popups, if I wrap VNC only to liberation.exe those popups might not show up - providing an area I avoid this.
|
||||
74
_Sidebar.md
Normal file
74
_Sidebar.md
Normal file
@ -0,0 +1,74 @@
|
||||
## Tutorials
|
||||
|
||||
[Getting Started](Getting-started)
|
||||
|
||||
1. [DCS Liberation UI](Tutorial-UI)
|
||||
2. [Air Wing Configuration](Air-Wing-Configuration)
|
||||
3. [Turn Zero](Turn-Zero)
|
||||
4. [First operation](First-operation)
|
||||
5. [Setting up a custom Strike mission](Setting-up-a-custom-Strike-mission)
|
||||
6. [Campaign "Battle of Abu Dhabi" Play Through Tutorial](Campaign-Battle-of-Abu-Dhabi-Play-Through)
|
||||
|
||||
## Manual
|
||||
|
||||
[Mission Planning](Mission-planning)
|
||||
|
||||
[Frontline Stances](Frontline-Strategies-Stances)
|
||||
|
||||
[Frontline Movement](Frontline-Movement)
|
||||
|
||||
[Base Capture](Base-Capture)
|
||||
|
||||
[Performance Options](Performance-Options)
|
||||
|
||||
[Auto purchase options](Auto-purchase-options)
|
||||
|
||||
[Fast forward](Fast-forward)
|
||||
|
||||
[Unit Transfers](Unit-Transfers)
|
||||
|
||||
[Squadrons and pilots](Squadrons-and-pilots)
|
||||
|
||||
## Additional content
|
||||
|
||||
[Community campaigns](Community-campaigns)
|
||||
|
||||
[Preview Builds](Preview-builds)
|
||||
|
||||
## Dedicated Servers
|
||||
|
||||
[Dedicated server guide](Dedicated-Server-Guide)
|
||||
|
||||
[WebUI for Dedicated Servers](Using-noVNC-and-Liberation-as-Web-Interface)
|
||||
|
||||
## Modding Liberation
|
||||
|
||||
[Custom campaigns](Custom-Campaigns)
|
||||
|
||||
[Custom factions](Custom-Factions)
|
||||
|
||||
[Layouts (WIP)](https://dcs-liberation.readthedocs.io/en/latest/modding/layouts.html)
|
||||
|
||||
[Lua Plugins](Lua-Plugins)
|
||||
|
||||
[Custom Loadouts](Custom-Loadouts)
|
||||
|
||||
[Modded aircraft support](Modded-Aircraft-Support)
|
||||
|
||||
## Contributing
|
||||
|
||||
[Contributing to DCS Liberation](Contributing-to-DCS-Liberation)
|
||||
|
||||
[Campaign maintenance](Campaign-maintenance)
|
||||
|
||||
### Core development guides
|
||||
|
||||
[Developer's Guide](Developer's-Guide)
|
||||
|
||||
[[Adding a new aircraft module|New-aircraft-module-checklist]]
|
||||
|
||||
[Release process](Release-process)
|
||||
|
||||
## Misc
|
||||
|
||||
[Code of Conduct](Code-of-Conduct)
|
||||
29
“自动采购”选项(Auto-purchase-options).md
Normal file
29
“自动采购”选项(Auto-purchase-options).md
Normal file
@ -0,0 +1,29 @@
|
||||
DCS Liberation 2.3将为玩家增加“自动采购”选项,以下三种采购功能可以分别启用:
|
||||
|
||||
* 跑道修理Runway repair
|
||||
* 前线增援Front line reinforcement
|
||||
* 飞机采购Aircraft reinforcement
|
||||
|
||||
上述选项可以在新建战役阶段或战役开始后,通过设置菜单激活。
|
||||
所有选项中双方AI的行为策略没有差异。
|
||||
|
||||
## 自动跑道修理Automatic runway repair
|
||||
选项激活后,如果有足够的资金,受损的跑道将立即开始自动修理。
|
||||
|
||||
跑道修理的优先级高于前线增援和飞机采购。
|
||||
|
||||
## 前线增援Front line reinforcement
|
||||
修理跑道后的剩余预算中,将有最高50%,用于购买增援前线的地面单位。
|
||||
|
||||
处于前线且剩余单位少于30的控制点(control point)将优先购买地面单位。当目前所有前线控制点的剩余单位均≥30时,将随机给所有的控制点配置增援单位。
|
||||
|
||||
## 飞机采购Aircraft reinforcement
|
||||
所有剩余的预算资金将用于采购飞机。
|
||||
|
||||
因为缺乏足够飞机而无法完成规划的任务,将优先采购飞机。根据任务规划器(Mission Planner)指定的顺序逐项进行采购。
|
||||
|
||||
在为特定任务购买飞机时,系统将试图在具有空闲停机位且距离该任务目标最近的机场购买飞机。
|
||||
|
||||
采购的机型将用于执行那些未能完成规划的任务。Liberation自带飞机列表,标注了各种任务类型下具备任务执行能力(mission capable)的机型,以及该任务类型的优先选择机型。系统将首先从优先选择机型列表中进行随机采购,如优先选择机型列表为空(比如列表中的机型本阵营没有)或超出预算(飞机太贵买不起),则将从具备任务执行能力的飞机列表中随机采购。
|
||||
|
||||
如果任务范围内没有具备任务执行能力的飞机可供购买,则剩余预算将留存至下一回合。
|
||||
93
任务规划Mission-planning.md
Normal file
93
任务规划Mission-planning.md
Normal file
@ -0,0 +1,93 @@
|
||||
注: 以下相关内容仅适用于DCS Liberation 2.2及以后版本。
|
||||
|
||||
所有的空中任务都采用“package”(任务包)的形式生成。一个任务包中囊括了一个或多个具有相同任务目标的飞行小队(flight)。同一个package中的不同小队,可以有不同的具体分工、起飞时间和起飞机场。例如,一个攻击工厂的package中,将包括一个作为主攻轰炸工厂的STRIKE小队,也可能包含承担防空压制任务的SEAD小队,以及担任空中护航的ESCORT小队。
|
||||
本方所有已经规划(fragged)的任务包,构成了本方的“空中任务指令”(ATO-Air Tasking Order)。
|
||||
|
||||
## 任务时间Mission timing
|
||||
每个package都有指定的“到达目标时间”(TOT)。 Package中,每个具体小队的TOT时间与其任务类型有关,可能会有细微差别。对于Strike和DEAD小队,TOT代表了攻击目标的确切时间(当然,AI实际上并不一定能十分精确地执行这些攻击指令),而对于CAP小队,TOT代表了他们巡逻的开始时间。
|
||||
|
||||
任务的其他路点时间、起飞时间、任务开始时间,都基于任务的TOT进行规划。距离目标的路程、冷启、滑行等时间都会被纳入考量。
|
||||
|
||||
为了保证所有小队都能准时到达目标区,有些小队会延迟起飞。延迟起飞时间会受到小队内是否存在人类玩家、起飞机场、玩家设定等多方面因素影响:
|
||||
|
||||
* 所有路基机场的AI在游戏开始时,都将以非控制状态(冷机停放,无行员)刷在机场停机位上,只有到达各自的任务开始时间,AI才会接管并开车。这将为攻击机场的任务提供更多目标(可以直接把地面上的飞机炸了),以及更好地营造战场氛围。
|
||||
* 航母和两攻等水面舰船上的AI小队,在任务开始时间之前将被延迟激活(AI飞机一开始不会被刷出来)。 这将有助于减少甲板上的拥堵和撞车。
|
||||
* 路基机场进行冷启的玩家小队,将以非控制状态出生。在任务开始时间到达前,玩家不能进入座舱。这将避免AI僚机过早开车,空耗燃料。(如果你不想等,那么就调整任务的TOT时间)
|
||||
* 路基机场非冷启的玩家小队,将立即出生。使用跑道和空中出生的玩家请注意,你的出生位置有可能正好会挡了其他人的路,Liberation无法完全避免这点。
|
||||
* 从水面舰船上开始任务的玩家小队,将在任务开始时直接出生。
|
||||
|
||||
如要避免玩家的小队被延迟出生,勾选战役选项中的“Never delay player flights”(不延迟玩家小队)。**注意,这并不会修改你们package的TOT和你小队的任务时间,只是允许你提前进座舱等。**
|
||||
|
||||
在规划任务时,如果你对打击目标的确切时间没有那么在意,只想要在游戏开始时能够尽快开始任务,**点击Package规划界面,TOT时间旁边的ASAP(尽快)按钮即可(系统会自动按照玩家小队在游戏开始时即刻出生的时间,来调整TOT)**。
|
||||
|
||||
## 汇合规划Rendezvous planning
|
||||
有些任务,需要你在前往目标区前,与Package的其他小队先汇合。比如Strike/DEAD以及他们护航飞机。对于这些任务类型,系统会自动增加一些任务路点:
|
||||
|
||||
在爬升路点之后,会增加一个hold(等待)路点。爬升高度后在该路点盘旋等待,直到到达指定的推进时刻。小队一般会规划5分钟的等待时间,以便给推进前的最后准备以及各种起飞延误留出足够的时间。
|
||||
|
||||
在hold路点之后,是join(加入)路点。Package的各个小队在该路点进行集结,并向任务目标推进。一个package中的所有小队,到达join路点的TOT都是相同的。
|
||||
|
||||
在egress(退出)路点后,增加了split(解散)路点。各小队在这个路点解散,并返回各自的降落机场。
|
||||
|
||||
## 任务类型Task types
|
||||
|
||||
以下为当前已经实装的任务类型,后续还会继续增加。
|
||||
|
||||
### 反舰-Anti-ship
|
||||
注:反舰任务是DCS Liberation 2.3新增任务类型。
|
||||
|
||||
反舰任务可以针对敌方舰队单位进行规划。小队会先与其他package成员完成集结,再向ingress(进入)路点推进,到达路点后会向敌方舰艇发射武器。AI会同时瞄准敌方船队内的多个目标,在武器发射后,小队将返航。
|
||||
许多舰艇都有非常牛逼的近防系统(以AK630为代表)。通常需要大量反舰武器来饱和攻击目标的防御系统。
|
||||
|
||||
### 战场空中遮断-BAI
|
||||
注:BAI任务是DCS Liberation 2.3新增任务类型。
|
||||
|
||||
战场空中遮断(BAI)可以针对敌方目标区域内的车辆规划。BAI任务与CAS有些类似,但不同于直接支援前线的友军,BAI主要针对尚未到达前线的敌方部队,意在打击对方的增援力量。小队会先与其他package成员完成集结,再向ingress(进入)路点推进,到达路点后开始搜索其预设目标。
|
||||
|
||||
### 防御型战斗空中巡逻-BARCAP
|
||||
BARCAP可针对任何非前线的友军目标(前线目标请使用TARCAP)进行规划。BARCAP的主要目标是阻止敌方飞机进入目标区域。小队将在package的TOT时间到达目标区,并开始跑马圈巡逻。巡逻时间预先设定(目前为30分钟)。跑马圈的方向将指向最近的敌方机场。
|
||||
|
||||
**2.3中的主要变更:**
|
||||
在DCS Liberation 2.3中,BARCAP将专职防御性使用。BARCAP将只能**规划在友军目标区域**(如友军机场、船队、目标区等)。针对敌方区域的CAP任务由TARCAP取代。
|
||||
|
||||
### 近距空中支援-CAS
|
||||
CAS任务可针对前线进行规划。CAS的主要目标是支援友军地面部队。小队将按照TOT到达目标区,并开始在一定范围内搜索目标。小队将持续在任务区搜索目标直到bingo燃油或者武器耗尽。
|
||||
|
||||
### 摧毁敌方防空系统-DEAD
|
||||
DEAD任务可针对敌方防空单位进行规划,其主要目标是摧毁敌方防空系统。小队会先与其他package成员完成集结,并力争在TOT实现对目标的打击。武器投放后,小队会直接返航。
|
||||
|
||||
### 护航-Escort
|
||||
护航任务主要用于保护其他类型的小队。基本上大部分的任务类型(除了CAP任务)都需要护航。护航机将采取和package其他小队相近的飞行计划。
|
||||
|
||||
注意:即使package中的其他小队还没有来得及完成目标区的任务,护航小队也不会持续停留在目标区。**如需目标区长时间的对空防御,规划TARCAP任务。**
|
||||
|
||||
### 空中扫荡-Fighter sweep
|
||||
注:空中扫荡是DCS Liberation 2.3新增任务类型。
|
||||
|
||||
空中扫荡任务可以针对敌方目标进行规划,其主要目标是在package其他小队到达目标区之前,先行扫清空中威胁。小队会先机动到package的join路点附近,然后开始向目标区推进,并一路扫清其遭遇的所有敌军战机。小队会在bingo燃油、武器耗尽或抵达目标区但没有遭遇任何敌机时返航。
|
||||
|
||||
### 进攻性空优作战/敌机-OCA/Aircraft
|
||||
注:进攻性空优作战/敌机是DCS Liberation 2.3新增任务类型。
|
||||
|
||||
OCA/敌机任务,可针对敌方机场进行规划,其主要目标是攻击敌方机场上停放的飞机。小队会先与其他package成员完成集结,再向ingress路点推进,到达路点后开始搜索目标机场上停放的飞机。
|
||||
|
||||
### 进攻性空优作战/跑道-OCA/Runway
|
||||
注:进攻性空优作战/跑道是DCS Liberation 2.3新增任务类型。
|
||||
|
||||
OCA/跑道任务,可针对敌方机场进行规划,其主要目标是摧毁目标机场跑道,阻止敌方后续利用该机场继续出动任务。小队会先与其他package成员完成集结,再向ingress路点推进,达到路点后,转向与跑道对齐并进入轰炸。如果跑道能在一轮攻击中遭受足够的伤害,那么跑道将被摧毁。摧毁跑道所需的伤害量,由DCS定义。
|
||||
|
||||
**如果跑道被摧毁,该机场将无法再出动任何任务,也不能购买或出售飞机,直到跑道修复**。**修理跑道需要1亿元($ 100M)以及4轮时间**。只要有足够的资金,AI便会试图修复跑道。如果在修理完成前跑道再次被损毁,则修理进度将被打断,需要重新开始修理并再次支付费用。
|
||||
|
||||
### 压制敌方防空系统-SEAD
|
||||
SEAD任务着眼于保护友军单位免受敌方SAM威胁。不同于DEAD,SEAD小队将攻击包括任务区附近的各类防空单位,而不只是任务目标本身。小队会先与其他package成员完成集结,并在一定预设范围内搜索和压制敌方防空单位。武器投放后,小队将返航。
|
||||
|
||||
### 打击-Strike
|
||||
打击任务,可以针对敌方地面目标进行规划。小队会先与其他package成员完成集结,随后向指定坐标投放武器。有些轰炸机型将对指定区域采取地毯式轰炸,不过大多数机型可以瞄准多个目标展开攻击。武器投放后,小队将返航。
|
||||
|
||||
注意:strike任务将直接为AI**指定目标坐标开展攻击**(适合炸固定建筑),而不是分配目标单位(units),因此如果目标可以移动,那strike小队将无法击中目标。
|
||||
|
||||
### 目标区战斗空中巡逻-TARCAP
|
||||
TARCAP可以针对前线进行规划,TARCAP大体和BARCAP接近,只是如果有package成员需要护航时,TARCAP会尽可能久地留在目标区。如果package中没有其他小队成员,则TARCAP会在目标区巡逻预设的时间(目前为30分钟)。
|
||||
|
||||
**2.3中的主要变更:**
|
||||
在DCS Liberation 2.3中TARCAP将可以针对任何敌方目标进行规划。其行为方式和以前的版本基本相同,除了TARCAP小队会早于其他package成员2分钟抵达任务目标区,以便扫清任务空域。
|
||||
Loading…
x
Reference in New Issue
Block a user