Files
realms-in-ruin-dev/Documentation/Archaeology/06-PartialGASArchitecture.md
T
tedwardsandCursor 0d045d142f Document Batch 2–3 Phase 1 archaeology: shared player-base architecture and per-character ability inventories.
Captures Blueprint hierarchy, legacy ability/RPC paths, animation dependency seeds, and handoff state without modifying Unreal assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 20:29:10 -07:00

118 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 06 — Partial GAS Architecture
**Status: Draft**
- **Scope:** Native GAS scaffolding (Batch 1) plus Batch 2 Blueprint seeds: BP_PlayerState defaults, legacy ability confirmation, dual HUD attribute paths.
- **Inspection method:** Native C++ read; Batch 2 ObjectTools on `BP_PlayerState` CDO; BlueprintTools on `BP_PlayerCharacterBase` for ASC/GA absence in ability graphs.
- **Last updated:** 2026-07-16
- **Current phase:** Phase 1 — Static Architecture
- **Last completed pass:** Pass 6 (Batch 3)
- **Next pass expected to contribute:** Batch 4 Pass 7 (GE/cue inventory)
## Draft tracking
### Completed sections
- ASC ownership split (player PlayerState vs enemy character)
- Replication modes
- Actor-info initialization
- Attribute inventory + constructor defaults
- URIRGameplayAbility empty + no subclasses
- EffectActor ApplyEffectToTarget mechanism
- Project gameplay tags from config
- **BP_PlayerState `DefaultAttributesGameplayEffect` = None** (Pass 3)
- Confirmation: abilities remain legacy BP `Server_Ability_*` (Pass 56 / doc 05)
- **Pass 6:** No ASC activate/grant/GameplayEffect apply in any connected ability path on five playables
### Pending sections
- Default attribute GE CDO modifiers per character (Pass 7)
- Gameplay Cue inventory
- Tag referencers
- Runtime ASC state (PIE-gated)
### Evidence still required
- Whether any other actor/BP applies default-attribute GEs at spawn
- Whether OverlayWidgetController path and DEPRECATED HUD path both run in PIE
- Full GE asset inventory and referencer map (Pass 7)
---
## Distinctions
| Layer | Status | Evidence |
|-------|--------|----------|
| GAS infrastructure | Present | ASC, AttributeSet, IAbilitySystemInterface, EffectActor |
| GAS data | Partially present | Tags in INI; GE assets exist (calibration); DefaultAttributes property |
| GAS runtime abilities | Not observed | No URIRGameplayAbility subclasses; no GA assets; base EventGraph has no ASC activate |
| Legacy BP abilities | **Documented (Batch 2)** | `05-LegacyAbilityArchitecture.md`: IA → Server_Ability_* → Multicast montage |
---
## Ownership and init
**Player (Observed Implementation):**
- ASC + AttributeSet created on `ARIRPlayerState`
- ReplicationMode **Mixed**; NetUpdateFrequency 100
- `ARIRPlayerCharacter::InitAbilityActorInfo`: Owner=PlayerState, Avatar=Character; called from PossessedBy and OnRep_PlayerState
**Enemy (Observed Implementation):**
- ASC + AttributeSet created on `ARIRBaseEnemyCharacter`
- ReplicationMode **Minimal**
- BeginPlay: InitAbilityActorInfo(this, this)
**Interface contradiction:** `ARIRBaseCharacter::GetAbilitySystemComponent` always uses PlayerState — enemies may not expose ASC through `IAbilitySystemInterface` / `UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent`. **Issue:** Incomplete Refactor; **Requires Runtime Inspection**.
---
## Attributes
`URIRAttributeSet`: Health, MaxHealth, Mana, MaxMana, Stamina, MaxStamina — all replicated with OnRep notify.
Constructor inits Health/MaxHealth/Mana/MaxMana only; Stamina/MaxStamina not Init'd in native.
`DefaultAttributesGameplayEffect` on PlayerState: declared, **not applied in native**.
**Batch 2 Observed Implementation:** `/Game/_Main/Blueprints/Player/BP_PlayerState` CDO property `defaultAttributesGameplayEffect` = **None**. Assignment/application path remains missing at both C++ and this BP.
---
## Abilities
`URIRGameplayAbility`: InstancedPerActor only. **No project subclasses** (search_subclasses).
**Conclusion (Observed Implementation):** No project-defined UGameplayAbility subclasses, Gameplay Ability assets, or static ability-granting paths observed. Playable abilities are legacy Blueprint custom events (`Server_Ability_*`) with Enhanced Input on `BP_PlayerCharacterBase` — see `05-LegacyAbilityArchitecture.md`.
---
## Dual attribute UI paths (Batch 2)
| Path | Source | Consumer |
|------|--------|----------|
| Native GAS | `InitAbilityActorInfo``ARIRHUD::InitOverlay` → OverlayWidgetController ASC delegates | `WBP_Overlay` via `WBP_PlayerHUD` (AHUD) deps |
| Legacy BP | `Server_UpdateHUD` / `InitializeHUD` using `DEPRECATED_Current/Max Health/Mana` | `BPI_PlayerController.UpdatePlayerHUD` |
Both are Observed Implementation. Incomplete Refactor — legacy path still active.
---
## Effects
`ARIREffectActor::ApplyEffectToTarget` applies Instant/Duration class via ASC MakeOutgoingSpec + ApplyGameplayEffectSpecToSelf. Overlap/authority logic expected in Blueprint children (Batch 4 Pass 10 / doc 12).
---
## Pass 6 — GAS interactions encountered on playables
| Asset / interaction | Character | Status | Classification |
|---|---|---|---|
| ASC ActivateAbility / GrantAbility | All five | Not found in ability graphs | Observed Implementation (absence) |
| ApplyGameplayEffect / GE Spec | All five ability paths | Not found | Observed Implementation (absence) |
| `GE_Cleric_DefaultAttributes` | Cleric | Asset exists; 0 referencers; not in ability graphs | Present but Unconnected |
| `GE_Wizard_DefaultAttributes` | Wizard | Asset exists; unwired | Present but Unconnected |
| `GE_Gunslinger_*` | Gunslinger | Not found | Missing |
| `NS_Wizard_Ability001` | Wizard | Niagara present; unwired | Present but Unconnected |
| Damage / heal | Paladin / Amazonian / Cleric | `ApplyDamage` / `DEPRECATED_RecoverPlayerHealth`**not** GE | Observed Implementation |
**Conclusion (Observed Implementation):** Pass 6 reconfirms playable combat is legacy Blueprint. Character-named DefaultAttributes GE assets are orphaned relative to ability graphs and `BP_PlayerState.DefaultAttributesGameplayEffect=None`. Systemwide GE/cue archaeology remains Pass 7.