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.