Initialize Git with LFS for binary assets and add standard Unreal Engine .gitignore/.gitattributes. Co-authored-by: Cursor <cursoragent@cursor.com>
91 lines
3.6 KiB
Markdown
91 lines
3.6 KiB
Markdown
# 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).
|