Hold both approaches
The upper and lower entrances converge on one keep exit. Lower spawn packets alternate between the shortcut and southern bypass; their roads never switch during travel. The ancient Oathfrost Beacon stands separately in the central snowfield.
Local testing
Nine interactive foundations use normal construction, upgrades, selling and rally controls. Both heroes have independent movement, health, charge and respawn. Prototype tools are separate from the normal campaign. The starting economy is 900 gold with 45-second intermissions and up to 10 gold per early wave call.
Validation boundary
Campaign progression, both hero pairings, heal/freeze, fixed routes and atomic beacon repair and simulator builds are tested locally. Physical-phone performance and final balance require review; see the local campaign validation record for actual tests. New character art estimates total 104 MiB decoded RGBA; compressed WebP size is not a device memory measurement.
Wave plan
Twenty-wave first pass. Lower packets alternate fixed branches. Hrold joins wave 20 after 20 seconds.
- 1. Signal fires: 4 frost_troll (upper), 2 winter_wolf (lower)
- 2. The southern road: 5 frost_troll (bypass), 3 winter_wolf (upper)
- 3. Axes in the snow: 7 frost_troll (upper), 2 frostbound_reaver (lower)
- 4. Above the walls: 7 winter_wolf (bypass), 6 frost_troll (upper), 6 gloomwing_bat (sky)
- 5. A promise to hold: 8 frost_troll (upper), 1 frost_troll_chieftain (upper), 7 frost_troll (lower)
- 6. The first siege stone: 3 frostbound_reaver (bypass), 7 winter_wolf (upper), 1 snowboulder_giant (upper)
- 7. Two roads under pressure: 10 frost_troll (lower), 1 whitebough_yeti (upper), 8 gloomwing_bat (sky)
- 8. The captain's orders: 10 frost_troll (upper), 1 black_banner_captain (upper), 3 frostbound_reaver (bypass)
- 9. Cold wings: 10 winter_wolf (lower), 8 frost_troll (upper), 1 rimewing (sky)
- 10. Stores behind the walls: 10 frost_troll (upper), 1 frost_troll_chieftain (upper), 1 snowboulder_giant (bypass), 4 frostbound_reaver (upper)
- 11. Long shadows: 11 frost_troll (lower), 2 whitebough_yeti (upper), 10 gloomwing_bat (sky)
- 12. Paid in provisions: 5 frostbound_reaver (upper), 10 winter_wolf (bypass), 1 black_banner_captain (upper)
- 13. Ice over the relay: 12 frost_troll (upper), 10 frost_troll (lower), 2 rimewing (sky)
- 14. Hold the fork: 2 snowboulder_giant (bypass), 2 frost_troll_chieftain (upper), 10 winter_wolf (upper)
- 15. The siege line: 12 frost_troll (lower), 1 black_banner_captain (upper), 5 frostbound_reaver (upper), 10 gloomwing_bat (sky)
- 16. No road abandoned: 3 whitebough_yeti (upper), 12 winter_wolf (bypass), 10 frost_troll (upper)
- 17. Keep the fires burning: 14 frost_troll (upper), 6 frostbound_reaver (lower), 2 rimewing (sky), 12 gloomwing_bat (sky)
- 18. Hrold's vanguard: 2 snowboulder_giant (upper), 1 black_banner_captain (bypass), 14 frost_troll (lower), 2 frost_troll_chieftain (upper)
- 19. The last warning: 3 whitebough_yeti (bypass), 6 frostbound_reaver (upper), 12 winter_wolf (upper), 2 rimewing (sky)
- 20. Hrold the Gatebreaker: 14 frost_troll (upper), 5 frostbound_reaver (lower), 12 gloomwing_bat (sky), 2 frost_troll_chieftain (upper)
Connected stories & guides
- Kate — Oathguard Keep · Kataris level 5
- Hrold — Gatebreaker — Oathguard Keep · Kataris level 5
- Oathfrost Beacon — Oathguard Keep · Kataris level 5
About this entry & sources
Reviewed 26 October 2026. Drawn from the game’s authored catalog and implemented systems. Numbers are base development values; upgrades and encounter tuning may change them.
Game/Data/OathguardBattle.swiftGame/Systems/KateCombat.swiftGame/Systems/HroldCombatSystem.swiftGame/Systems/OathfrostBeacon.swiftGame/Data/OldarPrototypeMap.swiftGame/Models/OldarLore.swiftGame/Models/HroldDefinition.swiftGame/Models/HeroTerrain.swiftGame/Systems/HeroNavigation.swiftGame/Systems/HeroPartySystem.swiftGame/Systems/CampaignProgressStore.swiftGame/Systems/BattleSimulation.swiftGame/Models/TowerMenuPresentation.swift



