# The Frontier Cell

This is V5's open prairie. The Frontier cell is the Red Dead Redemption surface
where the moment-to-moment loop is **ride, track, hunt, camp, and outrun a
posse** — the genre that lives or dies on texture of a different kind than the
crime sandbox: not whether a chase feels seamless, but whether a horse _answers_
when you ask it to canter, whether a slow-mo headshot lands with the right sepia
weight, whether a perfect pelt rewards the patience of the right caliber and a
clean kill, and whether riding from camp to town turns up a downed rider or an
ambush that feels authored rather than rolled. It is V5's most deliberately
_patient_ cell — fast travel exists but is gated behind discovery, because the
design wants you on horseback, inside the encounter system, across five biomes.

The cell ships as two GameFeature variant modules — a single-protagonist 1899
campaign (**Outlaw Trail**) and a posse open-world multiplayer surface
(**Frontier Online**) — composed over a set of shared C++ mechanic cores
(`V5DeadEye`, `V5HorseAI`, `V5Hunting`, `V5Honor`, `V5Squad`). The promise is
the same one every cell makes: **per-genre feel from one engine.** The slow-mo
that paints six targets in sepia here is the literal same `BuildSlowMoEffect`
the urban cell calls "Reflex Mode" and the sci-fi cell calls "Tactical Time";
the perfect-pelt scorer is the same one the monster-hunter cell uses for trapper
outfits. This page inventories what the frontier stack does on the player's side
of the screen, and points at the exact Unreal C++ behind each feature. For the
full mode taxonomy, roster, and the scope this slots into, start at the hub:
[../V5_features.md](../V5_features.md).

## What ships, honestly

**The cell's mechanics are real, compiled, and tested.** Every module named
above exists under `V5/ue/Source/` with a `Public/`/`Private/` split, a
`*.Build.cs`, and a `Private/Tests/` automation spec, and the linker has been
through them on this box: `libUnrealEditor-V5FrontierOutlawTrail.so`,
`-V5FrontierOnline.so`, `-V5DeadEye.so`, `-V5HorseAI.so`, and `-V5Hunting.so`
all sit in `V5/ue/Binaries/Linux/` next to their sources, built by the `ueagent`
user. The signature math is real domain-specific code — a 7,700-kcal-per-kilo
body-weight integrator, a four-tier horse-bond panic-reduction curve, a
weak-spot damage table, a one-shot-to-the-vitals perfect-pelt classifier — and
each is pinned by UE `IMPLEMENT_SIMPLE_AUTOMATION_TEST` assertions that check
_values_, not truthiness (`TestEqual("Biome area totals 125 km2", …)`,
`TestEqual("Witnessed train robbery applies bounty", …, 120.0f)`).

**"Cell" means a mechanic stack composed by thin variant modules.** As with the
urban cell, the frame-critical verbs live in shared cores and each playable
sub-ruleset is a content-and-validation module whose `Build.cs` wires the
mechanics it needs — `V5FrontierOutlawTrail.Build.cs` pulls in `V5DeadEye`,
`V5HorseAI`, `V5Hunting`, `V5Honor`, and `V5Squad`. The honest consequence is
that the variant modules are heavier on **catalog assembly and `Require(...)`
shape-gating over large authored datasets** than on novel per-frame algorithms;
those live one layer down in the cores, plus a handful of frontier-only runtime
libraries (`UV5_OutlawTrail_BodyWeight`, `UV5_OutlawTrail_Camp`,
`UV5_OutlawTrail_Encounters`) that the module owns outright.

**The data is C++ catalogs; the art is not in-tree.** Consistent with V5's
0-binary-`.uasset` accounting, the catalogs are built in code and validated
hard, while the horse meshes, gang-member MetaHumans, Dead-Eye Niagara, and
biome terrain those catalogs reference are _described_ by `FSoftObjectPath`, not
cooked. One maturity seam is worth flagging up front: the **65 launch huntable
species are procedurally seeded placeholder rows** (`outlaw.species.01`…`65`,
display name "Outlaw Trail Species NN", a single generic
`wildlife.family.launch` tag), while the **30 Year-1 Naturalist species are
hand-authored** with real names, biomes, families, and per-species calibers
(Paintbrush Fox, Glasswater Otter, Golden Bison Calf…). Both are shape-valid;
only one is content-finished. Where a claim leans on the in-world runtime or on
art, this page says so.

## The frontier experience — what the cell plays like

### Outlaw Trail — one gang, six camps, 125 km²

`V5FrontierOutlawTrail` is the RDR surface, and its
`UV5_OutlawTrail_Catalog::BuildCampaignCatalog`
(`V5/ue/Source/V5FrontierOutlawTrail/Private/V5FrontierOutlawTrailSystems.cpp`)
is a validator-enforced content spine. `ValidateCampaignCatalog` refuses
anything but **60 main missions across 6 chapters of exactly 10 each**, **4
endings**, **22 named gang members**, **320 random encounters**, **5 biomes**,
**3 Dead-Eye tiers**, **4 horse-bond tiers**, and **95 huntable species** — and
it sums the five biome areas and demands they total **exactly 125.0 km²**
(`FMath::IsNearlyEqual( AreaTotal, 125.0f, 0.01f)`): High Plains 31, Redwoods
28, Snowline Mountains 25, Bayou 23, Desert Mesas 18. The four endings
(`BuildEndings`) are honor-banded — a High-Honor Good close, a High-Honor
_Martyrdom_ (the enforcer dies redeemed), a Low-Honor close below −40, and a
Cynical middle for the fence-sitters — exactly the moral-payoff shape the RDR
fantasy promises.

The camp is the cell's home: `BuildGangMembers` seeds 22 named outlaws (Ada
Bell, Doc Mercy, Moses Flint, Vera Slate…), the first twelve flagged as mission
companions, each with a daily-routine chore tag (firewatch, stables, infirmary,
ledger…) and a starting relationship value. Across six chapters the camp
physically relocates through the biomes — `BuildCampRelocations` moves it from
Blackwater Run on the high plains, to a shady bayou hideout, a redwood hollow, a
snowline refuge, and a final mesa hideout, each carrying a `threat` tag
(Pinkerton patrols, winter exposure, a bounty-hunter net) and a `resource` tag
(a rail spur, a riverboat dock, a border crossing). It is a moving frontier, not
a static map.

### Cinematic random encounters — honor as a content dial

The encounter system is the cell's signature, and it is honest about being a
selection engine over a large authored set. `BuildRandomEncounters` produces
**320 encounters = 8 categories × 40** — `BountyTarget`, `Ambush`,
`AnimalAttack`, `LawEncounter`, `TownEvent`, `TravelEvent`, `Treasure`,
`HelpNeeded` — each tagged with a biome, a chapter availability window, a
cooldown, and an `EV5OTHonorEligibility` band. The runtime that surfaces them,
`UV5_OutlawTrail_Encounters::GetEligibleEncounters`, filters by biome, the
current chapter window, _and_ `IsEncounterEligibleForHonor`, which routes
`LowOnly` encounters to low/very-low honor, `HighOnly` to high/very-high, and
`Any` to everyone. That single predicate is the design's "high-honor players see
more help-needed events, low-honor players see more ambushes" rule expressed as
a catalog filter — your reputation is literally the dial that selects the
world's content. The spec proves both ends fire
(`HighHonorEncounters.Num() > 0`, `LowHonorEncounters.Num() > 0`).

## The frontier signature systems

Strip the variant modules apart and the depth is in five shared-or-owned
runtimes: a survival layer, the bonded horse, Dead Eye, hunting, and the
honor/bounty meter — with the posse multiplayer surface sitting on top.

```mermaid
flowchart TB
    subgraph VAR["Frontier variant modules (catalog + validate)"]
        OT["V5FrontierOutlawTrail<br/><sub>60 missions · 6 camps · 320 encounters · 125 km²</sub>"]
        FO["V5FrontierOnline<br/><sub>posse 2-7 · showdown 8 FFA · 4v4 posse-war</sub>"]
    end
    subgraph OWN["Outlaw Trail's own runtime"]
        BW["BodyWeight<br/><sub>survival: kcal/7700 → kg</sub>"]
        Camp["Camp upkeep<br/><sub>food/med/ammo → morale</sub>"]
        Enc["Encounters<br/><sub>honor-gated selection</sub>"]
    end
    subgraph SHARED["Shared mechanic cores"]
        DE["V5DeadEye<br/><sub>painted-shot slow-mo</sub>"]
        Horse["V5HorseAI<br/><sub>bond · gait · spook · permadeath</sub>"]
        Hunt["V5Hunting<br/><sub>perfect-pelt scorer</sub>"]
        Honor["V5Honor<br/><sub>meter + bounty $</sub>"]
    end
    OT --> BW & Camp & Enc
    OT --> DE & Horse & Hunt & Honor
    FO --> Horse & Honor & Net["V5Netcode · V5OnlineServices"]
    DE -.->|same effect, urban/scifi skins| Reuse["Reflex Mode · Tactical Time"]
    Hunt -.->|shared scorer| MH["Monster-Hunter cell"]
    Honor -->|moral compass| Bureau["Cross-Continuum Bureau"]
```

### Survival — body weight, camp upkeep, and the saddle-inventory tether

The frontier cell is the only one with a **metabolic survival layer**, and it is
real physiology, not a flavour meter.
`UV5_OutlawTrail_BodyWeight::ApplyMealAndTravel` starts the enforcer at **82
kg** and integrates calories: burned energy is
`RidingHours × 220 + OnFootHours × 430 + 1800` base, the calorie balance
accumulates, and weight changes by `CalorieBalance / 7700.0f` — **7,700 kcal per
kilogram is the actual approximate energy density of body fat**, the same number
a nutritionist would use. The result clamps to `[54, 125]` kg and resolves a
weight class with genuine trade-offs: under **68 kg** is `underweight` (stamina
×1.05, health ×0.94 — lean and quick but fragile), over **96 kg** is `heavy`
(stamina ×0.9, health ×1.06 — slower but tougher), and the band between is
`average` — exactly the RDR weight simulation, expressed as one interpolation.

The gang camp is the cell's resource sink.
`UV5_OutlawTrail_Camp::ApplyCampDonationAndUpkeep` takes a dollar donation and
converts it to stores (**food = donation/2, medicine = donation/8, ammo =
donation/3**), then sums the daily needs across all 22 member rows, subtracts
them, and computes per-resource _deficits_. Meeting every need lifts camp morale
by `2.0 + CompletedChores × 0.25`; falling short drops it by
`0.3 × total deficit`, clamped to `[0,100]`. The initial state
(`BuildInitialCampUpkeep`) seeds 85 dollars, 44 food, 18 medicine, 66 ammo, 62%
morale — and the spec confirms the opening camp can actually meet its first day
(`Upkeep.bAllNeedsMet`).

Both systems tie back to the **saddle-inventory doctrine**, the design choice
that makes the horse load-bearing rather than decorative. The validated
inventory split puts **12 weapon slots and 6 outfit slots on the saddle** versus
only **2 weapon slots and 1 sidearm on your person** (`Catalog.InventorySplit`),
and `UV5_Horse_SaddleBagInventory::BuildSaddleBagInventory` only grants access
when the horse is within **50 m** (`bHorseNearby`), flipping
`bCarryOverRestricted` true otherwise. A single carcass slot forces the RDR
choice between the trophy on the horse's rear and the supplies it displaces.
Lose the horse and you lose your arsenal — which is why the next system matters.

### Mounts — the bonded horse

`V5HorseAI` is the one locomotion system in V5 with a _relationship_, and it is
the frontier cell's beating heart. A horse is an `FV5HorseState` (bond tier,
bond XP, stamina, health, hunger, mood, ability flags), and `UV5_Horse_Bonding`
runs a four-rung ladder — **Wild → Familiar (100 XP) → Trusted (300 XP) → Bonded
(600 XP)** — where each promotion unlocks real behaviours via
`ApplyTierAbilities`: Trusted grants rear/side-step/drift, Bonded grants
`calm-under-fire` and whistle recall. You earn that XP through the care loop in
`UV5_Horse_FeedBrushTalk::ApplyCareInteraction`, which pays differentiated
values — **brushing 18, feeding apples 16/oats 14/hay 12, talking 10, calming a
spook 25, vet-treating 20** — while moving hunger, mood, and health on their own
clamps.

The bond is not cosmetic; it is wired into danger.
`UV5_Horse_SpookCalm::EvaluateThreat` computes panic as threat intensity (plus
12 if there's gunfire) minus a **tier-scaled reduction of 5 / 18 / 38 / 70** — a
Bonded horse simply shrugs off most of what would throw a wild one. A horse
stays calm under a panic of ≤25 or if it's `bCalmUnderFire`, and only **throws
its rider when panic ≥ 70 and the tier is below Trusted**. Recall obeys the same
logic: `UV5_Horse_Whistle::RequestRecall` will only bring the horse from within
**300 m**, refuses if a threat is near and the horse isn't bonded enough to
brave it (`threat_blocked`), and otherwise returns an ETA from a tier-scaled
trot of **8 / 10 / 12 m/s**. Movement itself is stamina-gated:
`UV5_Horse_GaitLibrary::ApplyGait` charges a per-gait stamina cost over time and
forces a slowdown to walk when the horse is spent — and a Wild, unbonded horse
refuses anything faster than a walk at all. Finally,
`UV5_Horse_Permadeath::ResolveDamage` honours the difficulty toggle: with
permadeath enabled _and_ armed, a killed horse is gone for good (`permadeath`,
saddlebag recoverable at the carcass); otherwise it clamps to 1 HP and reports
`stable_recovery`. The deeper mounts dive — gaits, breeds, the wagon team —
lives in the architecture companion at
[../architecture/spaceship-vehicles-and-mounts.md](../architecture/spaceship-vehicles-and-mounts.md).

### Dead Eye — the painted-shot slow-mo, shared three ways

`V5DeadEye` is the RDR slow-mo, and it is the cleanest proof of V5's
one-engine-many-skins thesis. The gauge (`UV5_DeadEye_Gauge`) fills from
`Kill (+20)`, `Headshot (+35)`, and `HonorStoryBeat (+45)` and drains while
active. Three tiers gate three fantasies: **Tier 1 auto-target** (time scale
0.35, one painted mark), **Tier 2 painted-shot** (0.25, up to **6** marks via
`PaintTargets`), and **Tier 3 weak-spot** (0.20, paint specific body parts
through `PaintWeakSpots`). The weak-spot table is where it bites —
`WeakSpotDamageMultiplier` returns **Head ×2.5, Vital ×2.0, WeaponHand ×1.35,
CenterMass ×1.0** — so a late-game player painting six heads in a
fifth-of-real-time bullet-ballet is doing real multiplied damage, and the
catalog ties tier unlocks to story chapters (`DeadEyeTierForChapter`: Tier 2 by
chapter 3, Tier 3 by chapter 5).

The cross-cell reuse is literal, not rhetorical.
`UV5_DeadEye_SlowMoEffect::BuildSlowMoEffect` applies a theme: `FrontierDeadEye`
sets vignette 0.82, film grain 0.65, sepia 0.9, an 850 Hz audio low-pass, and a
`frontier_amber` accent — the signature RDR look — while
`UV5_DeadEye_ReflexMode_Urban` and `UV5_DeadEye_TacticalTime_SciFi` call the
_same function_ with `UrbanReflex` (white, no sepia) and `SciFiTacticalTime`
(cyan) themes. One slow-mo engine, three aesthetics, zero duplicated logic.

### Hunting, pelts, and the Naturalist journal

The frontier economy is anchored to hunting, and it shares its scorer with the
monster-hunter cell. `UV5_OutlawTrail_Hunting::ScorePerfectPelt` adapts a
frontier species and defers to `UV5_Hunting_PerfectPeltScoring::ScorePelt`
(`V5/ue/Source/V5Hunting/Private/V5HuntingSystems.cpp`), which encodes the RDR2
cleanliness rule precisely: a `Perfect` pelt requires **the correct caliber for
the species**, **a clean kill** (`ShotCount == 1` into Head or Vital), **and**
field dressing within `PerfectFieldDressMinutes = 15.0f`; miss any and it drops
to `Good` or `Poor` with a typed reason. The trapper unlock
(`EvaluateTrapperUnlock`) gates each of the 72 outfits behind a specific set of
_matching_ perfect pelts plus dollars.

Layered over the launch hunt is the **Year-1 Naturalist** content, which is the
more finished half. `UV5_OutlawTrail_Naturalist::CatalogWildlifeInJournal` is a
real collection state machine: it credits a new journal entry only if the
species' `bPhotographRequiredForJournal` is satisfied (some species demand a
photo before the entry completes — a fail-loud "needs a photograph" status
otherwise), awards separate photo and pristine-sample credits, accumulates
`TotalNaturalistXp`, and promotes the player's `NaturalistRank` across six tiers
that idempotently unlock outfits. This is the hand-authored layer — 30 named
species, 12 naturalist outfits, photograph gates — sitting atop the
procedurally-seeded 65-species launch roster noted above.

### Honor, bounty, and the marshal response

The frontier cell's reputation runs through the shared `V5Honor` substrate.
`UV5_OutlawTrail_HonorBounty::ApplyHonorBeat` forwards story beats to
`UV5_Honor_Meter::ApplyHonorChange` (a `[−100,100]` meter in five bands — a
cruel beat drives the spec straight to `VeryLow`), while `ApplyWitnessedBounty`
routes crimes to `UV5_Honor_Bounty::ApplyBountyCharge` as a dollar bounty (the
spec's witnessed train robbery costs **120 dollars**). Six authored bounty
offices (`BuildBountyOffices`, from Valentine to Armadillo) let you pay it down:
`PayBountyAtOffice` subtracts a per-office service fee and clears the balance,
with the spec confirming a partial payoff (120 → 45) and a full clear (→ 0).

One honest seam: **Outlaw Trail's `Build.cs` does not depend on `V5Wanted`.**
The bounty you accrue here is the `V5Honor` dollar ledger and its offices, not a
star-rated heat curve. The _era-scaled marshal-and-posse response_ the design
attributes to the frontier — `EV5WantedResponseEra::Frontier` spawning marshals
and posse riders — lives in the shared `V5Wanted` engine that the in-world mode
would invoke, and is documented alongside the Honor bridge and the
Cross-Continuum Bureau XP ledger in the architecture companion at
[../architecture/hunter-period-systems-and-bureau-spine.md](../architecture/hunter-period-systems-and-bureau-spine.md).
Honor still feeds the cross-cell moral compass there, so being cleanly heroic or
cleanly ruthless on the frontier still earns Bureau-XP toward cross-cell
unlocks.

### Frontier Online — the posse surface

`V5FrontierOnline` composes the horse and honor verbs into the cell's
multiplayer face, and `ValidateOnlineCatalog` pins the shape of three modes: a
**2–7-player dedicated-server posse open world** on the shared **500 m Frontier
AOI profile** with join-in-progress; an **8-player free-for-all Frontier
Showdown** on a rollback netcode tick — notably with **Dead Eye disabled**
(`bDeadEyeDisabled = true`) for competitive fairness, but lasso and horse-chase
enabled; and a **4v4 Posse War** on dedicated servers, best-of-five, on a 90-day
ranked season cadence. Below the modes sits a regional economy
(`BuildEconomyPrices`: 25 rows = 5 regions × 5 goods, each with a demand/supply
scalar driving a current value) whose writes route through the shared
`V5OnlineServices` balance-ledger and matchmaking contracts — the same backbone
every cell rides, not bespoke endpoints.

The module also authors a Year-1 **Posse War Tournament** (ranked season, maps,
leaderboards) and the single-player pirate-and-Polynesian "full vision" DLC
catalogs (`BuildFullVisionPirateFrontierCatalog` and its Polynesian sibling) —
all real shape-checked catalogs with id-drift guards, whose geometry and live
services are described, not stood up.

## Where this connects

The Frontier cell is one face of a single game, and it hands off at well-defined
seams:

- **The other open worlds.** The Period-Drama cell shares the Honor bridge and
  the Bureau ledger but spends them on 1947 noir and a Mafia rank ladder — see
  [./period-drama-cell.md](./period-drama-cell.md) — and the Monster-Hunter cell
  shares the _exact_ perfect-pelt scorer and the Witcher-Sense/Eagle-Eye
  tracking lineage — see [./monster-hunter-cell.md](./monster-hunter-cell.md).
- **The mount, in depth.** The horse's gait library, twelve breeds, wagon teams,
  and how it differs from the car and the spaceship are detailed in
  [../architecture/spaceship-vehicles-and-mounts.md](../architecture/spaceship-vehicles-and-mounts.md).
- **The reputation spine.** The Honor meter, the era-scaled Wanted response, and
  the Cross-Continuum Bureau XP ledger this cell plugs into are in
  [../architecture/hunter-period-systems-and-bureau-spine.md](../architecture/hunter-period-systems-and-bureau-spine.md).
- The feature hub: [../V5_features.md](../V5_features.md).
