Undaunted: Normandy

Undaunted: Normandy

Not enough ratings
Creating custom scenarios in Undaunted Normandy.
By Richard Berger
This guide explains how to create custom scenarios in the early access release of Undaunted Normandy
   
Award
Favorite
Favorited
Unfavorite
Overview
In order to create an use a custom scenario in Undaunted Normandy, you need to:

  • Create a directory on your computer where the scenarios will be stored.
  • Reference this directory in the game settings
  • Using your favourite text editor create a file in the directory with a prefix of .yaml (e.g. myFirstScenario.yaml).

*** CAUTION. This guide is recommended only for someone with at least some basic programming knowledge (or similar) If you create an invalid file, or reference an invalid directory then this may cause issues with the game. If this happens it is recommended that you clear the referenced directory value from the settings page. Future releases will improve stability for this feature but for now it is fairly basic.

In the rest of this guide I'll describe the items that need to go in the file, with examples.
Scenario Details
The first section in your file needs to be called scenarioDetails. It contains a number of sections, each described below:

  • TITLE: This is the title of the scenario. It contains two parts, the scenario reference number, then a colon, then the scenario name. The scenario name will appear on the button text on the left hand side of the scenario selection page.
  • HEADER: This is the header for the scenario, and will appear at the top of the scenario selection details tab.
  • LOCATION: This will appear underneath the header details on the scenario selection details tab.
  • DESCRIPTION: This is the scenario description and will appear underneath the header and location details on the scenarios selection details tab.
  • US_OBJECTIVE: This is the number of victory points required by the US team to win the scenario. A value of -1 means that they need to pin the enemy.
  • GERMAN_OBJECTIVE: This is the number of victory points required by the German team to win the scenario. A value of -1 means that they need to pin the enemy.
  • STARTING_INITIATIVE: This should be set to either US or GERMANY and determines which side starts with the initiative.
  • TIP_BOLD: This is the headline for any tips that should be displayed with the scenario details.
  • TIP: This is the tip that should be displayed with the scenario details.
  • AUTHOR: Used for documentation only (for now). Put your name here!

Here's an example (taken from Scenario 1):
scenarioDetails: TITLE : Scenario 1X: La Raye Custom HEADER : Assault to the Vire-et-Taute Canal LOCATION : La Raye - 16 June 1944 DESCRIPTION : The 30th Infantry Division's first action was on the morning of 15 June. While over half the division was still afloat or moving through the assembly areas on Omaha Beach, an initial attack was made by an improvised combat team. Difficult opposition was encountered as soon as the leading squads crept past the railway track leading east from Carentan. By mid-afternoon the US forces had worked their way through intermittent artillery fire and swund to the south-east to threaten German forces grouped around houses in the hamlet of La Raye. US_OBJECTIVE : 5 GERMAN_OBJECTIVE : 5 STARTING_INITIATIVE : US TIP_BOLD : Controlling objectives TIP : You control an objective only if you have a control marker on the same tile as the objective marker, with the control side up. Both sides can't control the same objective! if you take the Control action on a tile your opponent controls, flip their control marker back to its scouted side. You can't take the Control action if one of your opponent's combat counters is on that tile. AUTHOR : Standard
Starting Cards
This section defines the cards available to each team.

The section should start with the heading "startingCards": and then the following sections:
  • US_DECK: This contains the cards in the starting deck for the US team.
  • US_SUPPLY: This contains the cards in the starting supply for the US team.
  • GERMAN_DECK: This contains the cards in the starting deck for the German team.
  • GERMAN_SUPPLY: This contains the cards in the starting supply for the German team.

Each deck contains a semi-colon separated list of cards. The following values can be used, referring to the card and where relevant the squad. Note the number after each card, which lists the number of times the card can appear for each side:

platoonSergeant (1); platoonGuide (1); squadLeaderA (1); squadLeaderB (1); squadLeaderC (1); riflemanA (5); riflemanB (5); riflemanC (5); scoutA (5); scoutB (5); scoutC (5); gunnerA (3); gunnerB (3); gunnerC (3); sniper (3); mortar (3); fow (infinite)

Here's an example from the first scenario showing how this section should look:
startingCards: US_DECK : platoonSergeant;squadLeaderA;squadLeaderB;riflemanA;riflemanB;scoutA;scoutB;fow;fow US_SUPPLY : riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;scoutA;scoutA;scoutB;scoutB;fow;fow;fow;fow;fow;fow;fow;fow GERMAN_DECK : platoonSergeant;squadLeaderA;squadLeaderB;riflemanA;riflemanB;scoutA;scoutB;fow;fow GERMAN_SUPPLY : riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;scoutA;scoutA;scoutB;scoutB;fow;fow;fow;fow;fow;fow;fow;fow

Board Layout
The final section defines the layout of the board. The section should be titled "board:" and contains a list of the tiles being used in the game, the objects in the tiles, and the orientation of the board. It contains the following lines:

ORIENTATION: This should be set to either "vertical" or "horizontal", depending on which way round the tiles should be aligned. The number for each tile depends on the board alignment. The two pictures below show the horizontal and vertical alignments, and the tile numbers for each one.
The subsequent lines in this section contain:

LOC<tileNo>, e.g. LOC7 or LOC19. Each line lists the content of the space. If a location is not provided then that space is not used. The following (semi-colon separated) values can be added to the location descriptor:

  • Tile number. E.g. 1A, 2B. This guide does not contain a list of all of the tiles in Undaunted Normandy - for now please check online or refer to the game (physical or digital). Note that tiles 15A and 17A can be suffixed with the word _INVERTED to appear in their inverted form.
  • US_SCOUTED. Sets the tile to be scouted by the US player.
  • GERMAN_SCOUTED. Sets the tile to be scouted by the German player.
  • US_CONTROL. Sets the tile to be controlled by the US player.
  • GERMAN_CONTROL. Sets the tile to be controlled by the German player.
  • US_SPAWN_A. Sets the spawn point for Squad A.
  • US_SPAWN_B. Sets the spawn point for Squad B.
  • US_SPAWN_C. Sets the spawn point for Squad C.
  • US_SPAWN_SNIPER. Sets the spawn point for the US Sniper.
  • US_SPAWN_SNIPER_MORTAR. Sets the spawn point or the the US Sniper and Mortar.
  • US_ALL. Sets all US units to spawn on this tile.
  • GERMAN_SPAWN_A. Sets the spawn point for Squad A.
  • GERMAN_SPAWN_B. Sets the spawn point for Squad B.
  • GERMAN_SPAWN_C. Sets the spawn point for Squad C.
  • GERMAN_SPAWN_AB. Sets the spawn point for German squads A or B.
  • GERMAN_SPAWN_ABC. Sets the spawn point for German squads A, B or C.
  • GERMAN_SPAWN_SNIPER. Sets the spawn point for the German Sniper.
  • GERMAN_SPAWN_MORTAR. Sets the spawn point for the German Mortar.
  • GERMAN_SPAWN_SNIPER_MORTAR. Sets the spawn point for the German Sniper and Mortar.
  • GERMAN_ALL. Sets all German units to spawn on this tile.
  • US_SCOUTS_<squad>. Sets US Scout units here for the given squad.
  • US_RIFLEMAN_<squad>. Sets US Rifleman units here for the given squad.
  • US_GUNNER_<squad>. Sets US MG units here for the given squad.
  • US_SNIPER. Sets the US Sniper unit here.
  • US_MORTAR. Sets the US Mortar unit here.
  • GERMAN equivalents for the above also apply.
  • RADIO. Sets a radio on the space (see Scenario 10, "Critical Intelligence" for an example).
  • nVP: Places a victory point marker on the space worth n points.

Below is an example from scenario 1 showing this section.

board: ORIENTATION : vertical LOC7 : 2B;1VP;US_SCOUTED LOC8 : 16B;1VP LOC9 : 6A;2VP LOC13 : 17B;US_SCOUTED;US_ALL;US_RIFLEMAN_B;US_SCOUTS_B;US_RIFLEMAN_A;US_SCOUTS_A LOC14 : 13B;2VP LOC15 : 3B LOC18 : 7A;1VP LOC19 : 12B LOC20 : 8A;GERMAN_SCOUTED LOC25 : 4B LOC26 : 5B;3VP;GERMAN_ALL;GERMAN_CONTROL;GERMAN_SCOUTS_A;GERMAN_RIFLEMAN_A;GERMAN_SCOUTS_B;GERMAN_RIFLEMAN_B LOC27 : 11B
Example 1 (Scenario 8: Streets of Tessy-sur-Vire)
scenarioDetails: TITLE : Scenario 8: Streets of Tessy-sur-Vire HEADER : Battle for Tessy-sur-Vire LOCATION : Tessy-sur-Vire - 1 August 1944 DESCRIPTION : On 1 August, the 30th Infantry Division was tasked with liberating the town of Tessy-sur_vire. The Germans held the town and commanded the high ground to the east. The US forces entered from the ridge to the north and were immediately met by mortar fire. They then battled through machine-gun nests and fought house by house down the main street. German fire support from across the river forced them to withdraw to the edge of town and wait for armoured support before renewing the attack and ultimately liberating the town. US_OBJECTIVE : 7 GERMAN_OBJECTIVE : 7 STARTING_INITIATIVE : US TIP_BOLD : Hills TIP : This scenario introduces players to hill tiles, which serve as powerful defensive positions. Hill tiles are easily recognisable by their variable cover bonus of 3/1. Against most attaxks, hill tiles provide a cover bonus of 3, as attackers have a huge disadvantage when attacking uphill. However, if the attacked is also on a hill (whether the same or another hill) or the attacker is a Mortar, the height advantage is negated and the space only provides a cover bonus of 1. AUTHOR : Standard startingCards: US_DECK : platoonSergeant;squadLeaderA;squadLeaderB;riflemanA;riflemanB;scoutA;scoutB;fow;fow US_SUPPLY : platoonGuide;squadLeaderC;riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;riflemanC;riflemanC;riflemanC;riflemanC;riflemanC;scoutA;scoutA;scoutB;scoutB;scoutC;scoutC;scoutC;gunnerA;gunnerA;gunnerA;gunnerB;gunnerB;gunnerB;gunnerC;gunnerC;gunnerC;mortar;mortar;mortar;sniper;sniper;sniper;fow;fow;fow;fow;fow;fow;fow;fow GERMAN_DECK : platoonSergeant;squadLeaderA;squadLeaderB;riflemanA;riflemanB;riflemanC;gunnerA;gunnerA;mortar;mortar;fow;fow GERMAN_SUPPLY : platoonGuide;squadLeaderC;riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;riflemanC;riflemanC;riflemanC;riflemanC;scoutA;scoutA;scoutA;scoutB;scoutB;scoutB;scoutC;scoutC;scoutC;gunnerA;gunnerB;gunnerB;gunnerB;gunnerC;gunnerC;gunnerC;mortar;sniper;sniper;sniper;fow;fow;fow;fow;fow;fow;fow;fow board: ORIENTATION : vertical LOC2 : 12A;1VP;GERMAN_SCOUTED;GERMAN_SPAWN_C;GERMAN_SPAWN_SNIPER;GERMAN_RIFLEMAN_C LOC3 : 17A_INVERTED LOC7 : 7B;1VP;GERMAN_SCOUTED;GERMAN_SPAWN_B;GERMAN_RIFLEMAN_B LOC8 : 8B;1VP LOC9 : 14A LOC13 : 6B;2VP LOC14 : 1B;2VP LOC15 : 10A;1VP;GERMAN_SCOUTED;GERMAN_SPAWN_A;GERMAN_RIFLEMAN_A;GERMAN_GUNNER_A LOC16 : 15A LOC18 : 4B;US_SCOUTED LOC19 : 11B;US_SCOUTED LOC20 : 5B;2VP LOC21 : 18A LOC24 : 16A;US_SCOUTED;US_SPAWN_B;US_SPAWN_C;US_SPAWN_SNIPER_MORTAR;US_RIFLEMAN_B;US_SCOUTS_B LOC25 : 2A;US_SCOUTED;US_SPAWN_A;US_RIFLEMAN_A;US_SCOUTS_A LOC26 : 3B;US_SCOUTED LOC27 : 13A LOC28 : 9A;GERMAN_SCOUTED;GERMAN_SPAWN_MORTAR;GERMAN_MORTAR
Example 2 (Scenario 11: Hill 314)
scenarioDetails: TITLE : Scenario 11: Hill 314 HEADER : Battle for Mortain LOCATION : Mortain - 10 August 1944 DESCRIPTION : The Germans launched the first attack against Hill 314 shortly after midnight on 7 August. The initial assault involved flanking manoeuvres that allowed for surprise attacks against the widely separated American defenders. Under constant attack, forward observers called in well-aimed artillery strikes, which were critical in preventing the Germans from overrunning Hill 314. The battles raged on until 10 August, when the Germans launched their most ambitious attempt to take the hill. US_OBJECTIVE : -1 GERMAN_OBJECTIVE : 1 STARTING_INITIATIVE : GERMANY TIP_BOLD : Three-pronged assault TIP : No other scenario in the game asks players to simultaneously coordinate all three squads from the start as in Hill 314. Think carefully about what your overall strategy is going to be, or you might find your deck too inconsistent and your platoon in disarray. Watch your opponent! If the German forces are bolstering squad A, don’t be caught off guard with all your defences in a poorly positioned squad C. If the US side brings in a Mortar team, don’t leave your units bunched up as easy targets! AUTHOR : Standard startingCards: US_DECK : platoonSergeant;squadLeaderA;squadLeaderB;squadLeaderC;riflemanA;riflemanB;riflemanC;fow;fow US_SUPPLY : platoonGuide;riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;riflemanC;riflemanC;riflemanC;riflemanC;scoutA;scoutA;scoutA;scoutB;scoutB;scoutB;scoutC;scoutC;scoutC;gunnerA;gunnerA;gunnerA;gunnerB;gunnerB;gunnerB;gunnerC;gunnerC;gunnerC;mortar;mortar;mortar;sniper;sniper;sniper;fow;fow;fow;fow;fow;fow;fow;fow GERMAN_DECK : platoonSergeant;squadLeaderA;squadLeaderB;squadLeaderC;riflemanA;riflemanB;riflemanC;fow;fow GERMAN_SUPPLY : platoonGuide;riflemanA;riflemanA;riflemanA;riflemanA;riflemanB;riflemanB;riflemanB;riflemanB;riflemanC;riflemanC;riflemanC;riflemanC;scoutA;scoutA;scoutA;scoutB;scoutB;scoutB;scoutC;scoutC;scoutC;gunnerA;gunnerA;gunnerA;gunnerB;gunnerB;gunnerB;gunnerC;gunnerC;gunnerC;mortar;mortar;mortar;sniper;sniper;sniper;fow;fow;fow;fow;fow;fow;fow;fow board: ORIENTATION : horizontal LOC8 : 1B;GERMAN_SCOUTED;GERMAN_SPAWN_A;GERMAN_RIFLEMAN_A LOC9 : 6A;GERMAN_SCOUTED LOC10 : 15B;US_SCOUTED LOC15 : 12A;GERMAN_SCOUTED LOC16 : 18B LOC17 : 2A;US_CONTROL;US_SPAWN_A;US_RIFLEMAN_A;1VP LOC20 : 8A;GERMAN_SCOUTED;GERMAN_SPAWN_B;GERMAN_SPAWN_SNIPER_MORTAR;GERMAN_RIFLEMAN_B LOC21 : 3A LOC22 : 4A;US_SCOUTED LOC23 : 9A;US_CONTROL;US_SPAWN_B;US_SPAWN_SNIPER_MORTAR;US_RIFLEMAN_B;1VP LOC27 : 11A;GERMAN_SCOUTED LOC28 : 17B LOC29 : 16A;US_CONTROL;US_SPAWN_C;US_RIFLEMAN_C;1VP LOC32 : 14B;GERMAN_SCOUTED;GERMAN_SPAWN_C;GERMAN_RIFLEMAN_C LOC33 : 5A;GERMAN_SCOUTED LOC34 : 7A;US_SCOUTED
1 Comments
Billington Common Nov 4, 2023 @ 1:31am 
This is brilliant thanks