Play a campaign

A campaign is a story told over several maps. Your heroes, and what they carry, travel from one map to the next. Open Campaigns on the start screen.

The picker

One card per campaign: its name and author, a state chip (NEW, IN PROGRESS, DONE, LOCKED), the difficulty, a progress bar with "Chapter 3 of 9" and the chapter that comes next. A card has one main button: Start for a new campaign, Resume for one you began, Play again for a finished one. A campaign you have played also has Statistics.

Campaigns are folders in Documents/W4 Campaigns (or the folder named by AQUA4_CAMPAIGNS_DIR), each with a campaign.toml, or a single packed .a4c file. Your progress is saved in a .saves folder inside that folder after every mission and every choice, so closing the game loses nothing: Resume brings you back to where you were.

The chapter briefing

Before a mission you see its title ("Chapter 2 of 5"), the story line, the objectives and any bonus objectives, and your party as it arrives: each hero with level, abilities and items (a fallen hero is shown in red). The first chapter of a campaign that lets you choose also asks for a difficulty. Start chapter begins the story scenes that come first, if any, and then the mission. See Campaign scenes and choices for those.

When the campaign opens with a scene or a choice, the briefing is of the first mission after it. If no hero has joined yet it says so ("No heroes yet").

Winning, losing, retrying

When a mission ends, the result page shows what each player did. Continue goes to the next chapter's briefing; after the last chapter it opens the statistics page. If you lose a mission, the button says Try again and sends you back to the chapter's briefing, unless the author gave the loss a node of its own: you retry with the party you arrived with, and the scenes before the mission are not shown again. Each attempt is counted.

Leaving a mission from the pause menu ("Main menu") puts you back on the picker with the campaign still in progress.

Statistics

The statistics page lists every chapter you have played with its last result (WON, LOST, or the name of a special outcome), the attempts, the defeats, the game time, your kills and your losses, and a totals row; the chips above the table repeat the totals. A zero is a dim dash. It opens by itself after the last chapter and from Statistics on the picker. A campaign you have not played says "Nothing played yet".

The campaign.toml fields

The campaign page of the editor edits this file; you can also write it by hand. Top of the file:

Field Meaning
name The campaign's name (also the name of its save).
author, description Shown on the picker card.
difficulty_variable true lets the player pick the difficulty on the first chapter.
background A picture inside the folder.
[party] What travels between maps: heroes, items, gold and lumber, the hero limit, revival.

Then one [[node]] per step; the first is the start:

Field Used by Meaning
id all The node's name; targets refer to it.
kind all map (the default), cinematic, choice, interlude or end.
map map The map folder inside the campaign folder.
title, subtitle all The chapter's name; the subtitle is the story line on the briefing.
objectives, bonus map Lists of plain words for the briefing. The game does not check them; the map's script decides victory.
optional map A side mission that a choice may offer and the player may skip.
[node.outcomes] map victory = "next" (required) and defeat = "node"; with no defeat the node is played again. Other outcome names a map script ends with also work.
next cinematic, interlude The node after it.
text cinematic, interlude, choice, end The scene's lines (one Speaker: words per line), the question of a choice, or the ending key of an end node.
[[node.options]] choice text, goto and an optional requires condition on the carried values.
name = "Story Road"
author = "W4 test"

[[node]]
id = "open"
kind = "cinematic"
title = "The Salt Gate, dusk"
text = """
The chain lay slack in the harbour, and the tide had begun to turn.
Mira: They left the gate open.
"""
next = "one"

[[node]]
id = "one"
kind = "map"
map = "maps/one"
title = "The Hero Starts"
objectives = ["Hold the bridge until dawn"]
bonus = ["Rescue the grain barges"]
[node.outcomes]
victory = "fin"
defeat = "one"

[[node]]
id = "fin"
kind = "end"
text = "good"

A campaign is checked when it opens: every target must exist, every node must be reachable and lead to an ending, and every map must be where the node says. The first fault is named with its node.

Packing a campaign

A folder can be packed into one .a4c file that plays without unpacking: w4-engine --pack-campaign "<campaign folder>" "<out>.a4c". The maps are stored inside, with a hash that is checked when the campaign opens, so a damaged or changed package is refused instead of played wrong.