Add Eagle0 concept pages (#8413)

This commit is contained in:
2026-07-10 12:49:44 -07:00
committed by GitHub
parent 59d000f792
commit 931ae4b926
7 changed files with 379 additions and 0 deletions
+13
View File
@@ -16,6 +16,19 @@ export default defineConfig({
label: "Reference",
items: [
{ label: "Eagle0pedia", slug: "" },
{
label: "Concepts",
items: [
{ label: "Game Concepts", slug: "concepts" },
{ label: "Eagle Round Flow", slug: "concepts/eagle-round-flow" },
{ label: "From Eagle to Shardok", slug: "concepts/eagle-to-shardok" },
{ label: "Shardok Battles", slug: "concepts/shardok-battles" },
{
label: "Shardok Victory Conditions",
slug: "concepts/shardok-victory-conditions",
},
],
},
{ label: "Eagle Commands", slug: "commands" },
{ label: "Shardok Commands", slug: "shardok-commands" },
{ label: "Heroes", slug: "heroes" },
@@ -0,0 +1,137 @@
---
title: Eagle Round Flow
description: How Eagle strategic rounds advance, including simultaneous player action.
---
<!--
Source map:
- Phase enum: src/main/protobuf/net/eagle0/eagle/common/round_phase.proto.
- Phase advancement: src/main/scala/net/eagle0/eagle/library/RoundPhaseAdvancer.scala.
- Command availability by phase: src/main/scala/net/eagle0/eagle/library/actions/availability/AvailableCommandsFactory.scala.
- Result visibility/filtering: src/main/scala/net/eagle0/eagle/library/ActionResultFilter.scala and src/main/scala/net/eagle0/eagle/library/util/view_filters/.
-->
Eagle is a simultaneous-turn strategy game. During a phase, every faction gets the chance to act in parallel. The game does not fully resolve the phase just because one player chooses a command; it waits until every required player choice has been made, then advances the phase and reveals the results each faction is allowed to know.
That means two things matter:
- Your orders are not a private single-player timeline. Other factions may be choosing their own commands at the same time.
- You do not automatically see every action in the world. You see your faction's results, your allies' visible results, and information your faction has earned through scouting, battle revelations, diplomacy, or province control.
## Round Shape
Most rounds follow this broad rhythm:
1. Upkeep and automatic world changes happen.
2. Vassals and players issue strategic commands.
3. Marching armies arrive, attacks are decided, and battles are requested.
4. Shardok battles resolve outside the strategic map.
5. Eagle applies battle results, aftermath choices, diplomacy, recon, and end-of-round changes.
Some phases are player-facing. Others are bookkeeping phases that advance automatically unless a special decision is needed.
## Automatic Upkeep
These phases usually advance without direct player input:
### New Round
The game starts a new strategic round. Provinces, heroes, factions, and long-running state are updated for the new date.
### Prisoner Exchange
The game resolves automatic prisoner exchange state.
### Province Events
Province events such as local problems or opportunities are processed.
### Forced Turn Back
Armies that must turn back do so before normal movement resolution.
### Province Move Resolution
Moving armies arrive at their destinations, supplies move, and incoming hostile groups are created where armies meet resistance.
### Hero Departures
Heroes who are ready to leave unaffiliated states or temporary situations may depart.
### Unaffiliated Hero Actions
Unaffiliated heroes may move, appear, escape, or otherwise act without belonging to a faction.
### Hostile Army Setup
The game prepares hostile army groups before conquest or battle decisions.
### Uncontested Conquest
If an attacker reaches a province with no defending force, the conquest can resolve without a Shardok battle.
### Truce Turn Back
Armies affected by truces may turn back instead of fighting.
### Battle Request
Eagle creates Shardok battles for provinces where attackers and defenders must fight.
### Food Consumption
Armies consume food before or around battle handling.
### Battle Resolution
Eagle waits for outstanding Shardok battles to report results. If there are none, the phase advances automatically.
### Recon Resolution
Recon results are applied after the relevant strategic activity has completed.
## Player Decision Phases
These phases can pause until required players have submitted decisions.
### Handle Riot
If your province has a riot, you may need to decide how to respond before the round can continue.
### Please Recruit Me
Some unaffiliated heroes may ask to join a faction. The phase waits while available recruitment decisions remain.
### Vassal Commands
Vassals choose province actions for provinces they rule. Vassals lead provinces and make their own choices, so these commands can happen before the direct player command phase.
### Player Commands
This is the main strategic command phase. Each player acts for provinces and heroes they can command directly. Every player is acting within the same phase, so your command is submitted into a shared strategic moment rather than immediately revealing a global timeline.
See [Eagle commands](/commands/) for the command reference.
### Attack Decision
When an army reaches a hostile province, the attacking side may need to choose whether to attack.
### Defense Decision
The defending side may need to decide how to respond to an incoming attack.
### Battle Aftermath
After Shardok results return to Eagle, winners may need to decide what happens to conquered provinces, captured heroes, or multiple allied claimants.
### Diplomacy Resolution
Diplomatic offers are resolved after players choose how to answer them. Offers can be accepted, rejected, invalidated, or lead to consequences such as imprisonment.
## Simultaneous Information
The important habit is to think in phases, not in a fully visible turn order.
If two factions both issue orders during Player Commands, those orders belong to the same command phase. When the phase ends, each faction receives the filtered results it is allowed to observe. Your own actions are visible to you. Allied and nearby events may be visible depending on game state. Enemy actions may be hidden until scouts, battles, diplomacy, or later consequences reveal them.
This is why Eagle often feels less like "I move, then you move" and more like issuing orders into a living world, then discovering what happened.
@@ -0,0 +1,74 @@
---
title: From Eagle to Shardok
description: How strategic Eagle armies become tactical Shardok battles.
---
<!--
Source map:
- Movement resolution: src/main/scala/net/eagle0/eagle/library/actions/impl/action/PerformProvinceMoveResolutionAction.scala.
- Battle setup phase: src/main/scala/net/eagle0/eagle/library/actions/impl/action/PerformHostileArmySetupAction.scala.
- Battle request creation: src/main/scala/net/eagle0/eagle/library/actions/impl/action/RequestBattlesAction.scala.
- Tactical battle resolution back into Eagle: src/main/scala/net/eagle0/eagle/library/actions/impl/action/ResolveBattleAction.scala.
- Battle aftermath decisions: src/main/scala/net/eagle0/eagle/library/actions/impl/action/FinalizeAftermathAction.scala and AutoResolveBattleAftermathAction.scala.
-->
Eagle is the strategic layer. Shardok is the tactical layer. The two connect when armies meet in a province and Eagle needs a battlefield result instead of a simple strategic update.
## Strategic Movement
In Eagle, armies move through the March command. A moving army has an origin province, destination province, arrival round, heroes, battalions, and supplies.
Because Eagle is simultaneous, multiple factions can send armies during the same strategic phase. Those armies arrive later during movement resolution, after every relevant player has had the chance to submit orders for the phase.
## Arrival
When an army arrives, Eagle checks the destination province:
- If there is no defending force, the attack may become an uncontested conquest.
- If attackers and defenders are both present, Eagle prepares a Shardok battle.
- If diplomacy or truces apply, armies may turn back before fighting.
The player may also see attack or defense decision phases before a battle is requested.
## Battle Creation
When Eagle creates a Shardok battle, it sends:
- The province's Shardok map.
- The attacking armies.
- The defending army, if any.
- Each side's food for the battle.
- Victory conditions for each player.
- The battle type and battle id.
Attackers in a normal province assault are trying to take the province. Defenders are trying to hold it or survive long enough for the attacker to fail.
## Tactical Resolution
The battle then runs in Shardok. Players place units, move, attack, use profession commands, spend Action Points, and try to satisfy their victory conditions.
Eagle waits in the battle resolution phase until outstanding Shardok battles report back.
See [Shardok battles](/concepts/shardok-battles/) for the tactical overview and [Shardok victory conditions](/concepts/shardok-victory-conditions/) for battle-ending rules.
## Returning To Eagle
When Shardok reports a result, Eagle applies it to the strategic world.
The result can change:
- Province ownership.
- Hero locations and status.
- Battalion size and survival.
- Captured heroes and prisoners.
- Supplies brought by attacking armies.
- Province devastation.
- Quest progress and battle history.
## Aftermath
Some battle results need another Eagle decision before the round can continue.
If the defender wins, the province is held. If a single attacker wins, the province can be conquered directly. If multiple allied attackers win together, Eagle may ask who keeps the province and what happens to the remaining forces.
Captured heroes can also create follow-up decisions. These happen in the Battle Aftermath phase, after the tactical result has returned but before the strategic round fully moves on.
@@ -0,0 +1,16 @@
---
title: Game Concepts
description: Player-facing explanations of Eagle and Shardok systems.
---
These pages explain how Eagle0's major systems fit together. Use them when you want the big picture behind the command reference.
## Eagle
- [Eagle round flow](eagle-round-flow/) explains how a strategic round advances, why actions are simultaneous, and when players see results.
- [From Eagle to Shardok](eagle-to-shardok/) explains how strategic movement turns into tactical battles and how battle results return to Eagle.
## Shardok
- [Shardok battles](shardok-battles/) explains tactical setup, turns, units, morale, vigor, terrain, and battle aftermath.
- [Shardok victory conditions](shardok-victory-conditions/) explains how tactical battles end.
@@ -0,0 +1,76 @@
---
title: Shardok Battles
description: How tactical Shardok battles work at a high level.
---
<!--
Source map:
- Shardok battle model: src/main/scala/net/eagle0/eagle/model/state/shardok_battle/ShardokBattle.scala.
- Battle creation from Eagle: src/main/scala/net/eagle0/eagle/library/actions/impl/action/RequestBattlesAction.scala.
- Battle resolution back into Eagle: src/main/scala/net/eagle0/eagle/library/actions/impl/action/ResolveBattleAction.scala.
- Tactical command availability: src/main/cpp/net/eagle0/shardok/library/AvailableCommandsFactory.cpp and command_factories/.
- Victory checks: src/main/cpp/net/eagle0/shardok/library/actions/UpdateGameStatusAction.cpp.
-->
Shardok is the tactical battle layer. Eagle decides that a battle should happen, sends armies into Shardok, and later receives the result back.
## Setup
At the start of a battle, each side places its units onto valid setup hexes. Some battles include reserve or reinforcement units that enter later. Rangers on stealth-capable units may be able to deploy hidden.
The map comes from the province where the battle occurs. A province's Shardok map defines terrain, castles, cities, rivers, bridges, water, and critical tiles.
## Units
A Shardok unit usually represents a hero attached to a battalion. The hero brings stats, vigor, profession abilities, and special command access. The battalion brings troop count, type, morale, training, armament, movement costs, damage profile, and battlefield limits.
Some commands require a profession. Some also require the attached battalion type to support that role. For example, many spell commands require a unit that can cast, while Ranger stealth depends on a stealth-capable battalion.
See [Heroes](/heroes/) for professions and [Shardok commands](/shardok-commands/) for command requirements.
## Action Points
Units act using Action Points. Moving through terrain spends AP based on the terrain and battalion type. Many major actions require a fixed AP minimum and then consume all remaining AP.
Unless a command says otherwise, a unit with morale must have at least 10 morale, and a unit with an attached hero must have at least 10 vigor.
## Turns And Rounds
Shardok advances tactically while units move, attack, cast, hide, scout, flee, and reinforce. When a side ends its turn, control passes according to the tactical state. At the end of a tactical round, Shardok checks end-of-round victory conditions such as holding critical tiles or surviving to the round limit.
Some victory conditions, such as last player standing, can end the battle as soon as only one eligible side remains. Others wait until the end of a round so the opposing side has a chance to respond.
## Terrain
Terrain matters constantly:
- It changes movement costs.
- It affects damage and resistance.
- It can block line of fire.
- Castles and cities can become critical objectives.
- Water, bridges, ice, fire, and mountains create command-specific constraints.
Shardok is not just a troop-count comparison. Position, terrain, hidden information, and command timing matter.
## Hidden Units
Hidden units are not fully visible to enemies. Ranger abilities, scouting, terrain, movement, and proximity can reveal or preserve hidden information.
A hidden unit can matter even at battle end. If a losing hidden unit has a capable hero and can flee, it may escape rather than being resolved like an ordinary visible loser.
## Fleeing, Retreating, And Outlaws
Units can leave a battle through flee or retreat mechanics when those commands are available. A hero may also become an outlaw through battle consequences. Eagle receives these statuses when Shardok reports the final battle result.
## Battle Results
When the battle ends, Shardok reports each player's surviving units, destroyed battalions, fled units, captured or secured units, and victory or loss condition.
Eagle then applies the result:
- Defenders who win hold the province.
- A single attacking winner can conquer the province.
- Multiple allied attacking winners may trigger battle aftermath decisions.
- Captured heroes and prisoners can create follow-up decisions.
- Battle damage can devastate province economy, agriculture, and infrastructure.
- Winning battles can advance quests.
@@ -0,0 +1,58 @@
---
title: Shardok Victory Conditions
description: How tactical battles decide winners and losers.
---
<!--
Source map:
- Victory condition enum: src/main/protobuf/net/eagle0/common/victory_condition.proto.
- Shardok victory checks: src/main/cpp/net/eagle0/shardok/library/actions/UpdateGameStatusAction.cpp.
- Eagle assignment of battle victory conditions: src/main/scala/net/eagle0/eagle/library/actions/impl/action/RequestBattlesAction.scala.
-->
Shardok battles end when one of the battle's victory conditions is satisfied. Each player has a set of conditions that apply to them.
In a normal Eagle province assault, attackers usually get **Hold Critical Tiles**, **Last Player Standing**, and **Last Alliance Standing**. The defender usually gets **Last Player Standing** and **Win After Max Rounds**.
## Last Player Standing
A player wins if they are the only surviving player and they have this victory condition.
A player counts as surviving when they still have a visible normal unit with troops, or a visible normal unit with a living hero. Hidden units do not keep a player alive for this check, though some hidden losing units may be able to flee when the battle ends.
## Last Alliance Standing
Multiple players can win together if all surviving players are mutually allied and all have this victory condition.
This is the tactical version of "the only forces left on the field are allies."
## Win After Max Rounds
A player wins if the battle lasts past the maximum number of Shardok rounds and they have this victory condition.
In normal province assaults, this is usually the defender's clock. The attacker has to force a result before time runs out.
## Hold Critical Tiles
A player wins by controlling every critical tile on the map. Critical tiles are usually castles or other objective tiles.
To count, each critical tile must be occupied by a unit belonging to the winning player, and the occupying unit must have an attached hero.
Allied attackers can also win this way together if allied players collectively occupy all critical tiles, all occupying players have the condition, and the occupants are mutually allied.
This condition is checked at the end of a tactical round, not immediately after every move, so the defender has a chance to retake objectives before the round closes.
## Most Troops Standing
This condition exists in the battle model, but normal Eagle province assaults do not currently assign it to attackers or defenders.
If a battle type uses it, the winner is the player with the most troops standing when the battle reaches the relevant ending check.
## What Happens After Victory
Shardok reports each player as victorious or defeated, including which condition ended the battle. Eagle then turns that tactical result into strategic consequences:
- A defending winner holds the province.
- A single attacking winner conquers the province.
- Multiple allied attacking winners may need to decide who keeps the province.
- Captured heroes, destroyed battalions, fled units, outlaws, and secured prisoners are applied to the Eagle game state.
@@ -11,6 +11,11 @@ Use these pages when you want a quick reference for commands, hero professions,
## Sections
- [Game concepts](concepts/) explains the flow of Eagle rounds, the handoff from Eagle to Shardok, tactical battles, and victory conditions.
- [Eagle round flow](concepts/eagle-round-flow/) explains strategic phases and simultaneous player action.
- [From Eagle to Shardok](concepts/eagle-to-shardok/) explains how strategic armies become tactical battles.
- [Shardok battles](concepts/shardok-battles/) explains tactical battle structure, units, terrain, and aftermath.
- [Shardok victory conditions](concepts/shardok-victory-conditions/) explains how tactical battles end.
- [Eagle commands](commands/) explains the strategic commands available from province command panels.
- [Shardok commands](shardok-commands/) explains tactical battle commands and profession-gated battlefield actions.
- [Heroes](heroes/) covers stats, vigor, loyalty, professions, faction leaders, and battle capabilities.