Files
realms-in-ruin-dev/Documentation/Archaeology/06-PartialGASArchitecture.md
T
tedwardsandCursor ff5640a020 Establish UE 5.8 known-good baseline with Batch 1 archaeology docs.
Initialize Git with LFS for binary assets and add standard Unreal Engine .gitignore/.gitattributes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 19:40:19 -07:00

3.6 KiB

06 — Partial GAS Architecture

Status: Draft

  • Scope (Batch 1 seed): Native GAS scaffolding — ASC ownership, AttributeSet, empty GameplayAbility base, EffectActor GE application, default-attribute property, tags from config. Full GE CDO / cue / grant-path inventory deferred.
  • Inspection method: Native C++ read; AttributeSetToolset not re-run this batch (calibration prior); GameplayTags from DefaultGameplayTags.ini; subclass search for URIRGameplayAbility.
  • Last updated: 2026-07-16
  • Current phase: Phase 1 — Static Architecture
  • Last completed pass: Pass 2 (Batch 1)
  • Next pass expected to contribute: Batch 4 Pass 7

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

Pending sections

  • Default attribute GE CDO modifiers per character
  • Gameplay Cue inventory
  • Ability granting paths in Blueprints
  • Tag referencers
  • Runtime ASC state (PIE-gated)

Evidence still required

  • Whether BP_PlayerState assigns/applies DefaultAttributesGameplayEffect
  • Whether any Blueprint grants URIRGameplayAbility or engine GA classes

Distinctions (Batch 1)

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; calibration: no GA assets
Legacy BP abilities Not inspected this batch Calibration: Server_Ability_, UseAbility on Paladin

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.


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 have been observed so far.

Current evidence supports that the playable abilities have not yet been converted into discrete Gameplay Ability implementations. This must be reconfirmed during the dedicated GAS and Blueprint passes.


Effects

ARIREffectActor::ApplyEffectToTarget applies Instant/Duration class via ASC MakeOutgoingSpec + ApplyGameplayEffectSpecToSelf. Overlap/authority logic expected in Blueprint children (Batch 4 Pass 10 / doc 12).