Skip to content

AI Substrate — Logic Driver Pro as fuzzy system (Track D)

Status: Design lock · 2026-10-26
Scope: Shared AI substrate only — GFP, controller, fuzzy-in-LD contract, Squad + Agent shape, product-brain boundaries.
Out of scope: Unreal graph authoring · full UT2004 bot catalog (Track A) · monster pack behaviors (Track B) · campaign/world patrol catalogs (Track C)

Authority: FS-WLD-001 · FS-AI-* (this pass) · Architecture Map TFAAI · Demo sandbox C (docs/22-demo.md)

Locked decisions:

  • Build order: D (this) → A MP bots → B monster groups → C campaign / world patrol.
  • Multiplayer arena bots and Campaign/World AI are different product brains. Shared substrate only — not graphs, goals, or difficulty semantics.
  • Logic Driver Pro is the fuzzy system (continuous desirability on the blackboard + soft selection + hysteresis). Not a hard outer C++ brain that bypasses LD.
  • Team shape: Squad/Team LD graph + Agent LD graphs (same structural pattern for bot teams and monster packs; different assets and vocabularies).

Brain Consumer Job Difficulty semantics
MP Bot (Track A) Ladder / Progressive MP / fill bots Arena combat, mode objectives, team play UT2004 ladder (exact feel — Track A)
Monster Group (Track B) Open world, dungeons, raids, Demo sandbox C Pack tactics vs fireteam / players Area Difficulty + Grunt/Elite/Boss DAs (FS-CMP-006, FS-WLD-001)
Campaign / World Patrol (Track C) Story missions, open-world ambient Routes, scripted beats, sector presence Mission / sector authored — not UT2004 labels

Forbidden: one Deathmatch LD graph reused as world monsters or story escorts.


Piece Owner Role
Logical module TFAAI GFP TFAAI (Runtime) Substrate only
Depends on TFACore (+ engine perception / nav as needed) Downward only
Enabled by Experiences (MP bot fill, world encounters, Demo C) Not Boot Active
ATFAAIController TFAAI Hosts LD runners, perception bridge, move requests
UTFAFuzzyMembership (util / subsystem helper) TFAAI Raw metrics → soft scores; difficulty remaps curves
UTFAAISquadCoordinator TFAAI Owns one Squad LD instance per team / pack / patrol cell
UTFAAIAgentBrain (component on controller) TFAAI Owns Agent LD instance; reads squad blackboard intents
DA_TFA_AIDifficultyProfile TFAAI Curve multipliers + reaction / accuracy / aggression hooks — product-specific row semantics
DA_TFA_AIBlackboardContract (optional lock asset) TFAAI Documents shared key names; product brains may add keys, never redefine shared ones

Does not own: damage pipeline, gunfeel, OmniVisor, economy. AI pawns remain ATFACharacter + GAS via TFACombat (FS-WLD-001).

TFAWorld encounter director and MP Experiences enable TFAAI; they do not reimplement fuzzy selection.


Logic Driver must function as a fuzzy system:

  1. Sense — Perception / nav / mode queries produce raw metrics (distance, LOS time, HP ratio, objective pressure, ammo pressure, ally density).
  2. Fuzzify — Membership functions (Low / Med / High style curves, or continuous traps) emit desirability scores in [0, 1] onto the LD blackboard.
  3. Squad soft-select — Squad LD chooses among intent states using those scores + hysteresis (enter threshold > exit threshold, or minimum dwell time) so intents do not thrash.
  4. Agent soft-select — Agent LD chooses tactics constrained by current squad intent scores (agents may soft-override only within authored allowance).
  5. Difficulty remap — DA_TFA_AIDifficultyProfile scales curve steepness, reaction delay, aim cone, aggression bias without replacing the SM with boolean-only transitions.

Not allowed:

  • Hard-only boolean transitions as the sole decision path for high-level goals.
  • An outer Goal picker that never writes soft scores into LD and only teleports LD into named states.
  • Client-authoritative intent selection Online (server owns AI decisions; clients may predict presentation only).

For candidate intents / tactics (i):

  • Score (S_i) from blackboard (already fuzzified).
  • Apply hysteresis: if current intent is (c), keep (c) while (S_c \ge S_{\text{best}} - H) and dwell time not elapsed.
  • Else select (\arg\max S_i) (optional: weighted random among top-K for lower difficulties — product brain decides; substrate provides the hook).

Mode / Encounter DA
│
▼
Squad LD (one per team | pack | patrol cell)
│ writes soft intent scores + role assignments
▼
Shared blackboard (squad-scoped)
│
├── Agent LD (pawn A)
├── Agent LD (pawn B)
└── Agent LD (pawn …)
│
▼
ATFAAIController → ATFACharacter (GAS / move)
Layer Owns Does not own
Squad LD Team / pack intent vocabulary, role assignment, objective pressure fusion Per-pawn aim, reload micro-timing
Agent LD Local tactics under intents (strafe, take cover, push, retreat, focus fire) Rewriting squad objective without allowance
Substrate Fuzzy util, BB key contract, runners, difficulty DA type Product graph assets

Same structural pattern for MP teams and monster packs. Different LD assets and intent names.


5. Shared blackboard key contract (substrate)

Section titled “5. Shared blackboard key contract (substrate)”

Product brains may add keys. They must not redefine these shared names with different meanings.

Key family Examples (names illustrative) Notes
Threat Threat.Nearest, Threat.Focus, Threat.LOS Soft scores preferred over bools
Vitality Self.HP, Self.Armor, Self.Shield Normalized 0–1 bands
Pressure Pressure.Ammo, Pressure.Suppression
Squad intent Intent.Primary, Intent.PrimaryScore, Intent.SecondaryScore Soft
Role Role.Tag, Role.Weight Grunt/Elite/Boss or bot specialty
Hysteresis Lock.IntentUntil, Lock.TacticUntil Timestamps / dwell
Difficulty Diff.Reaction, Diff.Accuracy, Diff.Aggression Fed from profile DA

6. Explicitly not shared across product brains

Section titled “6. Explicitly not shared across product brains”
  • LD graph assets (MP vs Monster vs Patrol)
  • Goal / intent vocabulary (CaptureFlag ≠ HoldSector ≠ AmbushLane)
  • Team strategy tables per game mode
  • UT2004 difficulty labels and feel (MP bots only — Track A)
  • Campaign scripted beats / world ambient schedules (Track C)
  • Monster pack composition tables (Track B)

Domain Solo Online
Fuzzy scores, squad intent, agent tactic selection Local authority Server only
Pawn move / fire requests from AI Local Server simulates AI controllers
Presentation (anim telegraph) Client Client from replicated pose / cues

AI never applies a second damage pipeline. Hits still go through FS-DMG / TFACombat.


Full specs deferred. Outlines:


  • Designer: “LD is fuzzy via blackboard scores + soft selection,” and can point to Squad vs Agent.
  • Engineer: names GFP TFAAI, ATFAAIController, and what the three product brains must not share.
  • FS + Architecture Map no longer imply one AI class covers bots and world monsters beyond pawn / damage.

  • No TBD placeholders for substrate shape; product catalogs deferred to A/B/C by design.
  • Consistent with FS-WLD-001 (shared character + no second damage pipeline).
  • Scope is substrate only — not a combined AI encyclopedia.