Public API
Review draft. This source page has not completed website editorial and release-specific verification.
Authoring
Section titled “Authoring”USkillProgressionSchedule: finiteXPThresholds(int64),ValidateSchedule,TryGetXPThreshold.USkillProfile: orderedSkills(FSkillDefinition) and optionalGlobalProgressionSchedule;ValidateProfile,FindSkillDefinition,SupportsSkill.FSkillDefinition: exactSkillId, display text, Starting/Base/Effective ranges, optional per-Skill schedule.
Runtime component
Section titled “Runtime component”USkillComponent initializes from its assigned profile. Normal component
registration automatically adds it to USkillComponentRegistrySubsystem, a
GameInstance-scoped service.
Consumers bind to OnSkillComponentRegistered() and
OnSkillComponentUnregistered(), then call GetRegisteredSkillComponents()
to take a snapshot. Binding first and then snapshotting avoids missing
startup-time components; consumer binding must be idempotent because a
component may be in both the snapshot and a notification received during
setup. Snapshot order follows registration order. Entries are weakly owned
and only valid components are returned. The registry is isolated per
GameInstance, updates on the game thread, and is cleaned during component
unregistration and GameInstance teardown. Registry mutation is private to
Skill Director, and no world scan is used.
The registry reports component lifecycle only. It does not change Skill initialization, progression, modifiers, semantic events, participant identity, or persistence, and has no SignalBus dependency.
Queries include IsInitialized, HasSkill, TryGetStartingSkillValue,
TryGetBaseSkillValue, TryGetEffectiveSkillValue, TryGetSkillXP,
TryGetSkillXPRequiredForNextIncrease, TryGetActiveModifiers,
TryGetGlobalXP, TryGetGlobalXPRequiredForNextSkillPoint, and
TryGetUnspentSkillPoints. TryGet returns false when unavailable or not
owned; zero remains a valid value.
Mutations are GrantGlobalXP(int64, FName),
GrantSkillXP(FGameplayTag, int64, FName),
SpendSkillPoint(FGameplayTag, FName),
SetModifier(FName, FGameplayTag, int32, FName), and
RemoveModifier(FName). Each returns FSkillMutationResult with
ESkillMutationStatus and ESkillMutationReason.
Native and Blueprint-assignable events are SkillIncreased,
SkillPointAwarded, SkillPointInvested, ModifierChanged,
EffectiveSkillValueChanged, and SkillStateRestored. Events are post-commit;
the mutation-specific event precedes an Effective-change event.
Persistence
Section titled “Persistence”CapturePersistenceSnapshot, ValidatePersistenceSnapshot, and
RestorePersistenceSnapshot use FSkillPersistenceSnapshot,
FSkillPersistenceValidationResult, and FSkillPersistenceRestoreResult.
Schema version is SkillDirectorPersistence::CurrentSchemaVersion (1).
Optional integrations
Section titled “Optional integrations”- Canonical optional SignalBus integration is provided by DirectorBridge and observes committed Skill events. SignalBus is not part of the Skill owner API.
- SaveGame contributor registration and factory identity belong to optional DirectorBridge modules; they are not part of the Skill owner API.
- Optional Character State condition projection is provided by DirectorBridge’s
CharacterState.Skillintegration through Skill Director’s public modifier API. Skill Director does not depend on Character State.