Layer Overhaul for Modders

Last updated 2021-02-19 20:30 PST        

Introduction

WHEN is this coming?

WHY do I want this?

Example of how things are intended to work

Files you’ll have to modify

Why Data is cool

How to create Data Assets

How to create Data Tables

Regarding future updates

Project Setup

Asset Manager Paths

Folder Structure

Tools

Validators

Handy Editor Play Settings you should know about

Level Spawner Setup

Deployables

Vehicles

Vehicle Spawner Best Practices

Level Data

Data Table

Data Asset

Layer Data

Data Table

Data Asset

Team Setup: Working with Layer Team Configs

Faction

Data Table

Data Asset

Faction Setup (Units)

Data Table

Data Asset

Vehicles

Data Table

Data Asset

Deployables

FOB Deployables

Data Table

Data Asset

Deployable Items

Data Table

Data Asset

Roles

Data Table

Data Asset

Actions

Advanced: Availability and Delay

Game Modes

Introduction

Welcome to the complete tutorial for how to create content or convert your existing Squad mod for compatibility with the new Layer Overhaul framework.

WHEN is this coming?

The Layer Overhaul framework will be rolled out in Squad v2.0, February 2021. Most Layers will use the Legacy format (no voting) at first, but will be progressively updated to the new Generic format over successive updates.

WHY do I want this?

Layer Overhaul gives modders, and OWI developers, the ability to do things we could never have done before. These include:

Example of how things are intended to work

  1. Within a Faction are many different Units: Team setups which have different vehicle compositions and availabilities. There can even be unique deployables, soldier kits, and commander actions defined on a per-Unit basis.
  2. Layers are Faction-agnostic, allowing any compatible faction to appear on them.
  3. Units can be mixed and matched with appropriate opponents across all compatible Layers, allowing for a huge amount of variety.
  4. Before a round, players can vote for which Unit, and thus which playstyle, they want to play with.
  5. Modded Factions and Units can be seamlessly integrated with the vanilla game, available for vote alongside Vanilla factions, maps, and layers.
  6. (WIP) Integrated analytics can determine win-loss rates across the game.
  7. (WIP) A Battle Rating system for Units allows possible matchups to be adjusted dynamically as Squad’s meta evolves, without having to push a client or server update.

Files you’ll have to modify

The files you need to modify will depend on what types of content your mod adds.

Why Data is cool

With the exception of updating some spawners on gameplay layers, we won’t need to modify any maps or blueprint scripts here. Rather than referencing blueprints directly, we now use Data Tables and Data Assets as containers for those blueprints. This means:

How to create Data Assets

Right click in Content Browser → Miscellaneous → Data Asset

Select a base class when prompted and press OK

How to create Data Tables

Right click in Content Browser → Miscellaneous → Data Table

Select a base structure (table columns) when prompted and press OK

Regarding future updates

One of the great things about Layer Overhaul is that it makes it very easy to iterate and improve on these systems over time. This means some of the information here may become out of date, and you will have to keep on top of your mod’s compatibility in future versions of the SDK.

The main changes coming in the future will involve:

Project Setup

Asset Manager Paths

Folder Structure

Most new assets should go in a new folder called Settings. Look at the vanilla Settings folder as an example.

Layer and Level data should live within a Gameplay_Layer_Data folder within each individual Map folder.

Tools

We have a number of handy tools to aid in your workflow. These can be found in the Tools folder.

To run, right click a tool in the Content Browser and click “Run Editor Utility Widget”

WARNING: The tools described here are the only ones we recommend you use. If you want to use the potentially out of date tools in the Tools folder, you do so at your own risk!

Validators

Scripts which automatically run when saving Layer Overhaul assets, to ensure you don’t accidentally enter bad data. Output is sent to the Message Log.

Handy Editor Play Settings you should know about

Level Spawner Setup

All spawners, for both Vehicles and Main Base Deployables, are now generic. They can accept any vehicle/deployable from any faction that plays on the layer, and require some setup and housekeeping. This needs to be set up for Legacy layers too.

Deployables

Deployables are now created by a spawner blueprint, BP_SQDeployableSpawner.

To convert your existing Main Base Deployables, run Tools/SpawnerUpdated/EUW_DeployableReplacer

If your layer contains modded deployables, the tool may not detect them. You can tell the tool what to search for by opening the blueprint and editing the Targets map.

Vehicles

The Vehicle Spawner Class has been updated. Your existing spawners will inherit this new functionality.

Vehicle Spawner Best Practices

Level Data

Data Table

Create a Data Table of type LevelEntry called “[YourMod]_LevelTable” in [YourMod]/Settings/Maps. Add a Row for each map in your mod.

Data Asset

Create a Data Asset of type BP_SQLevel in [YourMod]/Maps/[YourMap] named “[YourMap]_LevelData”

Layer Data

Data Table

For each map in your mod, create a Data Table of struct SQLayerEntry named “[YourMod]_[YourMap]_LayerTable” in [YourMod]/Maps/[YourMap]/Gameplay_Layer_Data.

Data Asset

For each Layer, create a Data Asset of type BP_SQLayer in [YourMod]/Maps/[YourMap]/Gameplay_Layer_Data.

For consistency, its name should match the Row Name in the Layer Table.

Team Setup: Working with Layer Team Configs

There are two ways to set up a layer:

Legacy

To create a Legacy team:

Generic

To create a Generic team:

Faction

Say goodbye to the bloated Team Settings blueprints.

This represents a team, in the sense of US Army, Russian Ground Forces, Insurgents, etc.

Data Table

Create a Data Table of type SQ_FactionEntry called “[YourMod]_FactionTable” in [YourMod]/Settings/Factions. Add a Row for each Faction in your mod.

Data Asset

Create a Data Asset of type BP_SQFaction called “[YourMod]_Faction_[YourFactionAbreviation]” in [YourMod]/Settings/Factions.

Faction Setup (Units)

Data Table

Create a Data Table using the SQFactionSetupEntry struct in [YourMod]/Settings/FactionSetups/[YourFaction]. This will contain individual entries for all Faction Setups in your mod.

Open it and add a row named for Faction Setup in your mod.

Data Asset

Now, create a Data Asset of type BP_SQFactionSetup 

Note: While you can use any existing SQRestrictionRoleCount to set role limits in a Faction Setup, we do not recommend you attempt to create your own at the current time. This feature is still being fleshed out and developed. Documentation will be provided here when the Count Parameter data assets are ready for your use.

Vehicles

Data Table

Create a Data Table using the VehicleEntry struct in [YourMod]/Settings/Vehicles. This will contain individual entries for all vehicles in your mod.

Open it and add a row named for each vehicle in your mod.

Data Asset

Now, create a Data Asset of type BP_SQVehicle.

Deployables

The Deployables setup process is very similar to Vehicles, however, there is a distinction between Deployable Items (ammo bags, mines) and FOB Deployables (ammo crates, HMGs).

Create a folder structure within [YourMod]/Settings/Deployables with separate folders for FOB Deployables based on category, plus one for Items.

FOB Deployables

Data Table

First, create a Data Table using struct DeployableEntry. This one table will serve all deployables in your mod, just keep adding rows.

Data Asset

Now, create a DataAsset of type BP_SQDeployableSettings within the folder which matches its category (Tech Structures, Emplacements, etc)

Deployable Items

Data Table

Create a Data Table of struct DeployableItemEntry in [YourMod]/Settings/Deployables. Add a row for each Deployable Item in your mod.

Data Asset

Create a Data Asset of type BP_SQDeployableSettings within the folder which matches its category (Tech Structures, Emplacements, etc)

Setup is identical to FOB Deployables.

Roles

These represent individual soldier kits.

Note: There is some duplication necessary at this point. Role Categories are currently read from both Tags and the Role Group enum, by different systems. In the near future, these will be consolidated into Role Grouping Strategies, which live in the Faction and can be overridden in the Faction Setup. For the moment, ensure the correct Role category is defined in both fields.

Data Table

Create a Data Table of struct SQRoleEntry in [YourMod]/Settings/Roles/[YourFaction]. Add a row for each Kit/Role in your mod.

Data Asset

Create a Data Asset of type BP_SQDeployableSettings within the folder which matches its category (Tech Structures, Emplacements, etc)

Actions

WIP. Commander actions will eventually be integrated into Layer Overhaul.

Advanced: Availability and Delay

This section will be updated later. You will not usually need to customize this stuff.

Game Modes

WIP. Game Modes will receive new functionality and capabilities later.

In the meantime, just remember to define your custom Game Modes in a new Data Table. See Content/Settings/Maps/GameModeTable for reference.

This is only used by the UI and systems like the staging phase timer. Referencing a different row in this table will not actually change a layer’s game mode. That must still be set in the layer umap itself, in World Settings.

Other stuff that’s changed