{"name":"Campaign Description.ext","title":"Campaign Description.ext","type":"topic","url":"https://community.bistudio.com/wiki/Campaign_Description.ext","revid":341610,"updated":"2023-06-10T15:13:46Z","aliases":["Description.fsm"],"markdown":"A campaign's **Description.ext** is the entry point to load a campaign's information; the campaign title, author and overview picture, the missions tree, everything displayed from the Campaigns screen is defined in it.\n\nIt must be well written to ensure a good campaign experience, as the flow of missions is defined in this file (a.k.a which mission should be played on which ending).\nThis config file can be accessed through campaignConfigFile.\n\nA campaign file (*myCampaign.pbo*) should not depend on any external resources to work but eventual mods!\n\n> [!IMPORTANT]\n> A wrongly formatted campaign's Description.ext can crash your game!\n\n> [!NOTE]\n> - This page is about a campaign's Description.ext. For the mission version, please go to Description.ext.\n> - For a tutorial on how to create a multiplayer campaign, see Arma 3: Multiplayer Campaign Creation.\n\n### Campaign Directory Structure\n\nA campaign structure is the following:\n\n```\nmyCampaignDirectory\nmyCampaignDirectory\\description.ext\nmyCampaignDirectory\\missions\nmyCampaignDirectory\\missions\\mission01.VR\nmyCampaignDirectory\\missions\\mission02.VR\n...\n```\n\nOther files may appear at the root of myCampaignDirectory for sharing resources between missions, or storing the campaign overview image for example.\nNo files should appear in myCampaignDirectory\\mission**s**, only mission directories. Mission names do not matter nor impact the missions flow.\n*Zmission.VR* will not load after *Amission.VR* for example. The order is, again, defined in the **description.ext** file.\n\n> [!NOTE]\n> You may have to manually create the ***arma3rootDir*\\Campaigns** directory.\n\n### Missions Flow\n\nMissions flow structure is defined as follows:\n\n- The parent class is Campaign, nothing else.\n- Campaign is filled with chapters\n- Chapters are filled with missions and defined endings\n- Missions are filled with endings.\n\n> [!IMPORTANT]\n> Campaign class cannot contain mission classes directly!\n\n- A campaign contains one to many chapters, and **must** define a parameter named **firstBattle** pointing to its first chapter.\n- A chapter contains one to many missions, and **must** define a parameter named **firstMission** pointing to its first mission.\n- A mission must define its endings. A mission with an empty defined ending will follow its chapter ending.\n\n#### Campaign\n\nThis is the main class for missions flow definition. It is defined as follows:\n\n```cpp\nclass Campaign // this is a reference class, the name cannot be customised\n{\n    firstBattle    = Chapter1;                        // which chapter should be loaded first. MUST be declared!\n\n    name            = \"my great campaign\";        // before Arma 3\n    briefingName    = \"my Arma 3 campaign\";        // since Arma 3 - if undefined, an error popup will appear\n    author            = \"Username\";                // since Arma 3 - if undefined, \"by unknown community author\" will replace author's name\n    overviewPicture    = \"overview.paa\";\n    overviewText    = \"$STR_A3_StageAOverview\";\n    disableMP        = 1;                        // since Arma 2 - if set to 1, forces the campaign as SinglePlayer\n    enableHub        = 1;                        // TBD - has to do with coming back to a \"base\"\n    // ...\n};\n```\n\n#### Chapters\n\nA chapter is defined inside Campaign block.\nMultiple chapters can exist inside Campaign block. A chapter is defined as follows:\n\n```cpp\nclass Chapter1 // name can be customised here - it will be used as reference, in Campaign's {{hl|firstBattle}} for example\n{\n    firstMission    = Mission1;                // which mission should be loaded first. MUST be declared!\n    name            = \"My first chapter\";    // chapter name. Has no in-game impact\n    cutscene        = Chapter1Cutscene.VR;    // in the *missions* sub-directory. A cutscene is of course optional but the parameter MUST be declared (cutscene = ;)\n    end1            = ;\n    // ...\n};\n```\n\nThere can be multiple chapters in a campaign, but this is optional. Campaign missions can very well be contained within a single chapter.\nChapters are used for campaign organisation as well as adding some transition cutscenes.\n\n#### Missions\n\nA mission is defined inside a chapter and must target one of the **missions** sub-directories.\nMultiple missions can be inside a chapter. A mission is defined as follows:\n\n```cpp\nclass myMission1 // name can be customised too\n{\n    end1 = myMission2; // next mission's classname\n    end2 = myMission3a;\n    end3 = myMission3b;\n    end4 = myMission2;\n    end5 = ;\n    end6 = ;\n    lost = myMission1;\n\n    template = myMissionDirectory.VR; // the mission directory itself, placed in the /missions/ sub-directory\n};\n```\n\n> [!NOTE]\n> Mission directories that are not declared anywhere in description.ext (such as mission or cutscene) are simply ignored.\n\n##### cutscene (Operation Flashpoint v1.00)\n\nDefine a cutscene mission directory that will be played before the mission. The cutscene won't appear in missions list in the campaign screen.\n\n##### end1-6, lost (Operation Flashpoint v1.00)\n\nThese *end%* and *lost* parameters are used to define which mission is next. An empty ending (`end1 = ;`) will end the current chapter.\n\n> [!NOTE]\n> **Arma 3:** *end1-6* and *lost* are **optional** in Arma 3.\n>\n> Since custom ending names can be used in Arma 3 now (`\"myCustomEnd\" call BIS_fnc_endMission;` for example)\n>\n> you can use your own custom name here (e.g `myCustomEnd = nextMission;`).\n\n##### endDefault (Arma 3 v1.00)\n\nFallback value in case an undefined ending is used, avoiding the game to crash.\n\n```cpp\nendDefault = ; // valid\n```\n\n##### repeat (Arma 3 v1.00)\n\n*Allow mission to repeat?*\n\n```cpp\nrepeat = 1; // 0: disabled - 1: enabled. Default: 0\n```\n\n##### isHub (Arma 3 v1.00)\n\nDefine a mission to be hub. May have to do with **CfgHubs**.\n\n```cpp\nisHub = 1; // 0: disabled - 1: enabled. Default: 0\n```\n\n### Description.fsm\n\nSince Arma 3, an FSM (compiled with \"campaignFSMA3.cfg\" FSM config) can be included in a chapter (here named \"Missions\"):\n\n```cpp\n// East Wind's Description.ext\n\nweaponPool = 1;\n\nclass Campaign\n{\n    name = \"$STR_A3_CampaignName\";\n    firstBattle = Missions;\n    disableMP = 1;\n    enableHub = 1;\n\n    briefingName = \"$STR_A3_CampaignName\";\n    author = \"$STR_A3_Bohemia_Interactive\";\n    overviewPicture = \"a3\\Missions_F_EPA\\data\\img\\Campaign_overview_CA.paa\";\n    overviewText = \"$STR_A3_StageAOverview\";\n\n    class MissionDefault\n    {\n        lives = -1;\n\n        lost = ;\n        end1 = ;\n        end2 = ;\n        end3 = ;\n        end4 = ;\n        end5 = ;\n        end6 = ;\n    };\n\n    class Missions\n    {\n        name = \"The Beginning\";\n        cutscene = ;\n        firstMission = A_in;\n        end1 = ;\n        end2 = ;\n        end3 = ;\n        end4 = ;\n        end5 = ;\n        end6 = ;\n        lost = ;\n\n        /*#define _DISABLE_DESCRIPTION    1*/\n\n        #define _CAMPAIGN 1\n\n        #include \"description.fsm\" // here is the FSM\n    };\n};\n```\n\n> [!NOTE]\n> FSM information found in description.fsm:\n>\n> **PROJECT SPLENDID**\n> **CAMPAIGN FSM**\n>\n> - State names are mission classes\n> - Condition names can be anything (even empty)\n> - Condition \"conditions\" field can contain code which has to return true in order to make the mission available.\n>   Other missions' classes can be used as variables.\n>   Empty field returns true by default\n\nThe FSM entry point (titled \"A_in1\") contains the following data:\n\n```cpp\nendDefault = A_in2;\nnoWeaponPool = 1;\nisIntro = 1;\n```\n\nThese are usual config entries that could be found in a normal config. Other possible values found:\n\n```cpp\nisHub = 1;\nisHubMission = 1;\nisOutro = 1;\nisSkirmish = 1;\nrepeat = 1;\n```\n\n### Root Parameters\n\n> [!IMPORTANT]\n> Additional root parameters must be placed **outside** the Campaign class to be effective!\n\n##### directory (Arma 3 v1.00)\n\nDefine the campaign directory, used when campaign is part of an addon.\n\n```cpp\ndirectory = \"A3\\Missions_F_EPA\\Campaign\";\n```\n\n##### filterGroup (Arma 3 v1.00)\n\n*Usage unknown.*\n\n```cpp\nfilterGroup = 3;\n```\n\n##### weaponPool (Operation Flashpoint: Resistance v1.75)\n\nA campaign automatically enables weapon pool.\nThis parameter allows equipment transferred from one campaign mission to the next to be available during the briefing in the gear menu.\n\n```cpp\nweaponPool = 1; // 0: disabled - 1: enabled. Default: 0\n```\n\n### Full Example\n\n```cpp\n/*\n    \"MissionDefault\", \"NoEndings\" etc. are arbitrary class names. MissionDefault is Bohemia standard name for missions parent class.\n    Left to itself, simply inheriting the mission default means you will exit the game at the end of mission/chapter (and will be done on last(s) mission(s).\n\n    An end that is used but not defined (e.g \"end6\") WILL crash the game.\n*/\nclass NoEndings\n{\n    // Arma 3\n    endDefault = ;\n\n    // pre-Arma 3\n    end1 = ;\n    end2 = ;\n    end3 = ;\n    end4 = ;\n    end5 = ;\n    end6 = ;\n    lost = ;\n};\n\nclass MissionDefault : NoEndings\n{\n    lives        = -1;    // this sets your \"lives\" to none - old OFP setting where you would lose a \"life\" every time you retried the mission, never used\n    noAward        =  1;    // TBD\n    cutscene    = ;        // mandatory definition\n};\n\n// additional parameters go here\nweaponPool        = 1;\n\nclass Campaign\n{\n    name            = \"My Great Campaign\";    // before Arma 3\n    briefingName    = \"My Great Campaign\";    // since Arma 3\n    author            = \"John Doe\";\n    overviewText    = \"You are a soldier on an island. Try killing the enemies and not dying to survive.\";\n\n    firstBattle    = Chapter1;\n    disableMP    = 0; // this campaign is multiplayer-compatible\n\n    class Chapter1 : NoEndings\n    {\n        firstMission = Chapter1_Mission1;\n        end1 = Chapter2; // other endings are defined by inheritance from NoEndings\n\n        class Chapter1_Mission1 : MissionDefault\n        {\n            end1 = Chapter1_Mission2;    // other endings are defined by inheritance from MissionDefault, inheriting from NoEndings\n            end2 = ;                    // end2 will end Chapter 1, therefore going to Chapter 2\n            template = C1M1.VR;\n        };\n\n        class Chapter1_Mission2 : MissionDefault\n        {\n            end1 = ; // not defining the ending will use the Chapter ending corresponding to end1: Chapter2 here\n            template = C1M2.VR;\n        };\n    };\n\n    class Chapter2 : NoEndings\n    {\n        firstMission = Chapter2_Mission1;\n        end1 = LastChapter;\n\n        // this mission is named Chapter2_Mission1 for clarity purpose,\n        // but both Chapter1_Mission1 and Chapter2_Mission1 could have been named Mission1 as game engine respects Chapter hierarchy.\n        // do not, however, name two missions the same -in the same chapter-\n        class Chapter2_Mission1 : MissionDefault\n        {\n            end1 = ; // not defining the ending will use the Chapter ending corresponding to end1: LastChapter here\n            template = C2M1.VR;\n        };\n    };\n\n    class LastChapter : NoEndings\n    {\n        firstMission = Chapter3_Mission1;\n        // no endings provided: because of NoEndings inheritance this is the same as writing 'endDefault = ;'\n        class Chapter3_Mission1\n        {\n            // not defining the ending will use the Chapter ending corresponding to end1: NOTHING here, closing the campaign\n            template = C3M1.VR;\n        };\n    };\n};\n```\n\n### Recommendations\n\nIf you do not know for sure what you are doing, follow these advices:\n\n- try and make all the missions work stand-alone, then place them all in the **Missions** directory\n- do not force yourself to use many chapters. Chapters are useful to organise a lot of missions, but if your campaign does not have many, do not oversplit it.\n- you can test your campaign structure by allowing file patching (in Arma 3 launcher, or *arma3.exe -filePatching*) and placing your campaign in the *campaign**s*** directory.","sections":[{"heading":null,"level":1,"markdown":"A campaign's **Description.ext** is the entry point to load a campaign's information; the campaign title, author and overview picture, the missions tree, everything displayed from the Campaigns screen is defined in it.\n\nIt must be well written to ensure a good campaign experience, as the flow of missions is defined in this file (a.k.a which mission should be played on which ending).\nThis config file can be accessed through campaignConfigFile.\n\nA campaign file (*myCampaign.pbo*) should not depend on any external resources to work but eventual mods!\n\n> [!IMPORTANT]\n> A wrongly formatted campaign's Description.ext can crash your game!\n\n> [!NOTE]\n> - This page is about a campaign's Description.ext. For the mission version, please go to Description.ext.\n> - For a tutorial on how to create a multiplayer campaign, see Arma 3: Multiplayer Campaign Creation."},{"heading":"Campaign Directory Structure","level":3,"markdown":"A campaign structure is the following:\n\n```\nmyCampaignDirectory\nmyCampaignDirectory\\description.ext\nmyCampaignDirectory\\missions\nmyCampaignDirectory\\missions\\mission01.VR\nmyCampaignDirectory\\missions\\mission02.VR\n...\n```\n\nOther files may appear at the root of myCampaignDirectory for sharing resources between missions, or storing the campaign overview image for example.\nNo files should appear in myCampaignDirectory\\mission**s**, only mission directories. Mission names do not matter nor impact the missions flow.\n*Zmission.VR* will not load after *Amission.VR* for example. The order is, again, defined in the **description.ext** file.\n\n> [!NOTE]\n> You may have to manually create the ***arma3rootDir*\\Campaigns** directory."},{"heading":"Missions Flow","level":3,"markdown":"Missions flow structure is defined as follows:\n\n- The parent class is Campaign, nothing else.\n- Campaign is filled with chapters\n- Chapters are filled with missions and defined endings\n- Missions are filled with endings.\n\n> [!IMPORTANT]\n> Campaign class cannot contain mission classes directly!\n\n- A campaign contains one to many chapters, and **must** define a parameter named **firstBattle** pointing to its first chapter.\n- A chapter contains one to many missions, and **must** define a parameter named **firstMission** pointing to its first mission.\n- A mission must define its endings. A mission with an empty defined ending will follow its chapter ending."},{"heading":"Campaign","level":4,"markdown":"This is the main class for missions flow definition. It is defined as follows:\n\n```cpp\nclass Campaign // this is a reference class, the name cannot be customised\n{\n    firstBattle    = Chapter1;                        // which chapter should be loaded first. MUST be declared!\n\n    name            = \"my great campaign\";        // before Arma 3\n    briefingName    = \"my Arma 3 campaign\";        // since Arma 3 - if undefined, an error popup will appear\n    author            = \"Username\";                // since Arma 3 - if undefined, \"by unknown community author\" will replace author's name\n    overviewPicture    = \"overview.paa\";\n    overviewText    = \"$STR_A3_StageAOverview\";\n    disableMP        = 1;                        // since Arma 2 - if set to 1, forces the campaign as SinglePlayer\n    enableHub        = 1;                        // TBD - has to do with coming back to a \"base\"\n    // ...\n};\n```"},{"heading":"Chapters","level":4,"markdown":"A chapter is defined inside Campaign block.\nMultiple chapters can exist inside Campaign block. A chapter is defined as follows:\n\n```cpp\nclass Chapter1 // name can be customised here - it will be used as reference, in Campaign's {{hl|firstBattle}} for example\n{\n    firstMission    = Mission1;                // which mission should be loaded first. MUST be declared!\n    name            = \"My first chapter\";    // chapter name. Has no in-game impact\n    cutscene        = Chapter1Cutscene.VR;    // in the *missions* sub-directory. A cutscene is of course optional but the parameter MUST be declared (cutscene = ;)\n    end1            = ;\n    // ...\n};\n```\n\nThere can be multiple chapters in a campaign, but this is optional. Campaign missions can very well be contained within a single chapter.\nChapters are used for campaign organisation as well as adding some transition cutscenes."},{"heading":"Missions","level":4,"markdown":"A mission is defined inside a chapter and must target one of the **missions** sub-directories.\nMultiple missions can be inside a chapter. A mission is defined as follows:\n\n```cpp\nclass myMission1 // name can be customised too\n{\n    end1 = myMission2; // next mission's classname\n    end2 = myMission3a;\n    end3 = myMission3b;\n    end4 = myMission2;\n    end5 = ;\n    end6 = ;\n    lost = myMission1;\n\n    template = myMissionDirectory.VR; // the mission directory itself, placed in the /missions/ sub-directory\n};\n```\n\n> [!NOTE]\n> Mission directories that are not declared anywhere in description.ext (such as mission or cutscene) are simply ignored."},{"heading":"cutscene (Operation Flashpoint v1.00)","level":5,"markdown":"Define a cutscene mission directory that will be played before the mission. The cutscene won't appear in missions list in the campaign screen."},{"heading":"end1-6, lost (Operation Flashpoint v1.00)","level":5,"markdown":"These *end%* and *lost* parameters are used to define which mission is next. An empty ending (`end1 = ;`) will end the current chapter.\n\n> [!NOTE]\n> **Arma 3:** *end1-6* and *lost* are **optional** in Arma 3.\n>\n> Since custom ending names can be used in Arma 3 now (`\"myCustomEnd\" call BIS_fnc_endMission;` for example)\n>\n> you can use your own custom name here (e.g `myCustomEnd = nextMission;`)."},{"heading":"endDefault (Arma 3 v1.00)","level":5,"markdown":"Fallback value in case an undefined ending is used, avoiding the game to crash.\n\n```cpp\nendDefault = ; // valid\n```"},{"heading":"repeat (Arma 3 v1.00)","level":5,"markdown":"*Allow mission to repeat?*\n\n```cpp\nrepeat = 1; // 0: disabled - 1: enabled. Default: 0\n```"},{"heading":"isHub (Arma 3 v1.00)","level":5,"markdown":"Define a mission to be hub. May have to do with **CfgHubs**.\n\n```cpp\nisHub = 1; // 0: disabled - 1: enabled. Default: 0\n```"},{"heading":"Description.fsm","level":3,"markdown":"Since Arma 3, an FSM (compiled with \"campaignFSMA3.cfg\" FSM config) can be included in a chapter (here named \"Missions\"):\n\n```cpp\n// East Wind's Description.ext\n\nweaponPool = 1;\n\nclass Campaign\n{\n    name = \"$STR_A3_CampaignName\";\n    firstBattle = Missions;\n    disableMP = 1;\n    enableHub = 1;\n\n    briefingName = \"$STR_A3_CampaignName\";\n    author = \"$STR_A3_Bohemia_Interactive\";\n    overviewPicture = \"a3\\Missions_F_EPA\\data\\img\\Campaign_overview_CA.paa\";\n    overviewText = \"$STR_A3_StageAOverview\";\n\n    class MissionDefault\n    {\n        lives = -1;\n\n        lost = ;\n        end1 = ;\n        end2 = ;\n        end3 = ;\n        end4 = ;\n        end5 = ;\n        end6 = ;\n    };\n\n    class Missions\n    {\n        name = \"The Beginning\";\n        cutscene = ;\n        firstMission = A_in;\n        end1 = ;\n        end2 = ;\n        end3 = ;\n        end4 = ;\n        end5 = ;\n        end6 = ;\n        lost = ;\n\n        /*#define _DISABLE_DESCRIPTION    1*/\n\n        #define _CAMPAIGN 1\n\n        #include \"description.fsm\" // here is the FSM\n    };\n};\n```\n\n> [!NOTE]\n> FSM information found in description.fsm:\n>\n> **PROJECT SPLENDID**\n> **CAMPAIGN FSM**\n>\n> - State names are mission classes\n> - Condition names can be anything (even empty)\n> - Condition \"conditions\" field can contain code which has to return true in order to make the mission available.\n>   Other missions' classes can be used as variables.\n>   Empty field returns true by default\n\nThe FSM entry point (titled \"A_in1\") contains the following data:\n\n```cpp\nendDefault = A_in2;\nnoWeaponPool = 1;\nisIntro = 1;\n```\n\nThese are usual config entries that could be found in a normal config. Other possible values found:\n\n```cpp\nisHub = 1;\nisHubMission = 1;\nisOutro = 1;\nisSkirmish = 1;\nrepeat = 1;\n```"},{"heading":"Root Parameters","level":3,"markdown":"> [!IMPORTANT]\n> Additional root parameters must be placed **outside** the Campaign class to be effective!"},{"heading":"directory (Arma 3 v1.00)","level":5,"markdown":"Define the campaign directory, used when campaign is part of an addon.\n\n```cpp\ndirectory = \"A3\\Missions_F_EPA\\Campaign\";\n```"},{"heading":"filterGroup (Arma 3 v1.00)","level":5,"markdown":"*Usage unknown.*\n\n```cpp\nfilterGroup = 3;\n```"},{"heading":"weaponPool (Operation Flashpoint: Resistance v1.75)","level":5,"markdown":"A campaign automatically enables weapon pool.\nThis parameter allows equipment transferred from one campaign mission to the next to be available during the briefing in the gear menu.\n\n```cpp\nweaponPool = 1; // 0: disabled - 1: enabled. Default: 0\n```"},{"heading":"Full Example","level":3,"markdown":"```cpp\n/*\n    \"MissionDefault\", \"NoEndings\" etc. are arbitrary class names. MissionDefault is Bohemia standard name for missions parent class.\n    Left to itself, simply inheriting the mission default means you will exit the game at the end of mission/chapter (and will be done on last(s) mission(s).\n\n    An end that is used but not defined (e.g \"end6\") WILL crash the game.\n*/\nclass NoEndings\n{\n    // Arma 3\n    endDefault = ;\n\n    // pre-Arma 3\n    end1 = ;\n    end2 = ;\n    end3 = ;\n    end4 = ;\n    end5 = ;\n    end6 = ;\n    lost = ;\n};\n\nclass MissionDefault : NoEndings\n{\n    lives        = -1;    // this sets your \"lives\" to none - old OFP setting where you would lose a \"life\" every time you retried the mission, never used\n    noAward        =  1;    // TBD\n    cutscene    = ;        // mandatory definition\n};\n\n// additional parameters go here\nweaponPool        = 1;\n\nclass Campaign\n{\n    name            = \"My Great Campaign\";    // before Arma 3\n    briefingName    = \"My Great Campaign\";    // since Arma 3\n    author            = \"John Doe\";\n    overviewText    = \"You are a soldier on an island. Try killing the enemies and not dying to survive.\";\n\n    firstBattle    = Chapter1;\n    disableMP    = 0; // this campaign is multiplayer-compatible\n\n    class Chapter1 : NoEndings\n    {\n        firstMission = Chapter1_Mission1;\n        end1 = Chapter2; // other endings are defined by inheritance from NoEndings\n\n        class Chapter1_Mission1 : MissionDefault\n        {\n            end1 = Chapter1_Mission2;    // other endings are defined by inheritance from MissionDefault, inheriting from NoEndings\n            end2 = ;                    // end2 will end Chapter 1, therefore going to Chapter 2\n            template = C1M1.VR;\n        };\n\n        class Chapter1_Mission2 : MissionDefault\n        {\n            end1 = ; // not defining the ending will use the Chapter ending corresponding to end1: Chapter2 here\n            template = C1M2.VR;\n        };\n    };\n\n    class Chapter2 : NoEndings\n    {\n        firstMission = Chapter2_Mission1;\n        end1 = LastChapter;\n\n        // this mission is named Chapter2_Mission1 for clarity purpose,\n        // but both Chapter1_Mission1 and Chapter2_Mission1 could have been named Mission1 as game engine respects Chapter hierarchy.\n        // do not, however, name two missions the same -in the same chapter-\n        class Chapter2_Mission1 : MissionDefault\n        {\n            end1 = ; // not defining the ending will use the Chapter ending corresponding to end1: LastChapter here\n            template = C2M1.VR;\n        };\n    };\n\n    class LastChapter : NoEndings\n    {\n        firstMission = Chapter3_Mission1;\n        // no endings provided: because of NoEndings inheritance this is the same as writing 'endDefault = ;'\n        class Chapter3_Mission1\n        {\n            // not defining the ending will use the Chapter ending corresponding to end1: NOTHING here, closing the campaign\n            template = C3M1.VR;\n        };\n    };\n};\n```"},{"heading":"Recommendations","level":3,"markdown":"If you do not know for sure what you are doing, follow these advices:\n\n- try and make all the missions work stand-alone, then place them all in the **Missions** directory\n- do not force yourself to use many chapters. Chapters are useful to organise a lot of missions, but if your campaign does not have many, do not oversplit it.\n- you can test your campaign structure by allowing file patching (in Arma 3 launcher, or *arma3.exe -filePatching*) and placing your campaign in the *campaign**s*** directory."}],"categories":["Mission Editing"],"groups":["Mission Editing"]}