🎯 Objectives¶
Objectives connect database entities to campaign flow, tutorials, notifications, rewards, map-specific logic, and progression. They are powerful, but they are also one of the riskiest modding areas because a broken objective chain can block a map or corrupt mission pacing.
Objective data appears in several places:
game-gdb/core/gdb/objectives.gd.xml
game-gdb/dlc1/gdb/objectives.gd.xml
game-gdb/core/gdb/campaign map *.gd.xml
game-gdb/core/gdb/campaign test map.gd.xml
game-gdb/dlc1/maps/meadowsong map database.gd.xml
game-gdb/core/gdb/campaignglobals.gd.xml
game-gdb/dlc1/gdb/globals.gd.xml
(campaign test map.gd.xml is an EE internal test/sandbox map that ships in
core alongside the seven numbered campaign maps; the campaign map * glob
above does not match its different name.)
For the broader map-specific relationship between objectives, POIs, treasure areas, shrines, artifacts, and scenario flow, see Map, POI, And Objective Systems.
Notifications and related UI data often appear in:
What Objectives Usually Connect¶
Objective entities commonly reference or depend on:
- resources and commodities
- buildings
- points of interest
- NPC bases
- units
- notifications
- rewards
- trigger conditions
- objective categories
- map-specific state
This makes objectives less isolated than resources, recipes, or building costs. Always trace references before editing.
Common Objective-Like Components¶
The database uses multiple objective components. Examples seen in the current XML set include:
| Component or Field | Likely Role |
|---|---|
ObjectiveOwnCommodityAmount |
Require the player to own or store a commodity amount |
ObjectiveSupplyPointsOfInterest |
Require resources to be supplied to points of interest |
ObjectiveNotifications |
Notifications shown during objective state changes |
ObjectiveCompletionTriggers |
Trigger hooks for started, completed, skipped, or failed states |
GeneralObjectiveCategory |
UI grouping/category for objectives |
UnlockConditions |
Links objective progress to unlock behavior |
RewardTime |
Defines when a reward is applied |
The exact field meaning should be verified through examples and in-game testing.
Notifications¶
Objectives often use notifications to explain what happened or what changed. Notification references may appear inside:
- objective components
- building components
- unit/NPC components
- resources
- map scripts
- reward blocks
When changing an objective, search for its notification GUIDs and related text keys. If a notification is removed or disconnected, the gameplay may still function but become confusing.
Useful command:
rg --no-ignore "ObjectiveNotifications|Notification|RewardTime|ObjectiveCompletionTriggers" .\game-gdb
Rewards And Triggers¶
Rewards can be linked to objective lifecycle events, such as:
- objective started
- objective completed
- objective skipped
- objective failed
Fields such as RewardTime and ObjectiveCompletionTriggers should be treated with care. They may cause resources, units, buildings, unlocks, or narrative steps to appear at a specific point in the mission flow.
Safer edits:
- change objective display text keys for local experiments
- adjust small commodity amounts in a copied/test map objective
- change notification text keys if you know where localization is handled
Riskier edits:
- remove triggers
- change reward timing
- change objective dependencies
- change map-specific objective chains
- change objective GUIDs
Map-Specific Objectives¶
Campaign maps and DLC maps can contain their own objectives and overrides. These are especially risky because they are tied to a particular map setup.
Examples:
game-gdb/core/gdb/campaign map 1 - tutorial.gd.xml
game-gdb/core/gdb/campaign map 7 - final showdown.gd.xml
game-gdb/dlc1/maps/meadowsong map database.gd.xml
When editing map objectives:
- Work on a copy.
- Change only one objective at a time.
- Start the map from the beginning after each change.
- Check whether the objective appears, updates, completes, and rewards correctly.
- Keep a clean backup of the original extracted XML.
Tracing An Objective¶
A practical tracing workflow:
- Find the objective entity by name or GUID.
- List its components.
- Search every GUID referenced inside the objective.
- Resolve each referenced GUID in
generated/entities.json. - Check map files for additional references to the objective GUID.
- Check notifications and rewards.
- Validate the database.
Useful commands:
rg --no-ignore "OBJECTIVE-GUID-HERE" .\game-gdb
rg --no-ignore "ObjectiveOwnCommodityAmount|ObjectiveSupplyPointsOfInterest|ObjectiveNotifications" .\game-gdb
Generated Objective Flow Catalog¶
Run:
Then open:
generated/catalog/objective-flow.md
generated/catalog/objective-flow.csv
generated/catalog/filters/objectives/with-preconditions.md
generated/catalog/filters/objectives/with-rewards.md
generated/catalog/filters/objectives/with-notifications.md
generated/catalog/filters/objectives/tech-tree.md
The current local catalog reports:
| Catalog | Count |
|---|---|
| Objective flow rows | 814 |
| Rows with preconditions | 249 |
| Rows with rewards | 124 |
| Rows with notifications | 228 |
| Tech tree rows | 21 |
The catalog expands objective-like entities into requirement components, precondition objectives, skip/fail objectives, resource references, building references, unit references, POI/encounter references, start rewards, rewards, notifications, completion triggers, and localization keys.
Treat it as a navigation aid. It helps you find the important pieces quickly, but final campaign flow still needs in-game testing.
Risk Summary¶
| Edit | Risk |
|---|---|
| Change objective display text key | Low to medium |
| Change a required commodity amount | Medium |
| Change notification references | Medium |
| Change reward resources or timing | High |
| Change trigger hooks | High |
| Remove objective components | High |
| Change objective GUIDs | High |
For early modding, objectives are better for reading and tracing than for editing. Once you have a reliable test map workflow, start with small requirement changes.