Overview
WCGASCurriculumSub is a Game Instance Subsystem that serves as the central evaluation engine and curriculum registry for the Wonderscape GAS Ally plugin. It automatically initializes at game start, loads Curriculum Data assets from Project Settings, builds a fast-lookup cache indexed by Curriculum ID tags, and provides comprehensive evaluation functions that determine which abilities should be granted, suspended, revoked, or made available for purchase based on character state. The subsystem is stateless regarding per-character progression—all character state tracking is delegated to the Curriculum Component.
Purpose
The Curriculum Subsystem orchestrates curriculum management and ability progression evaluation by providing:
- Automatic Initialization: Loads all registered Curriculum Data assets from Project Settings and builds lookup caches at startup
- Curriculum Registry: Tracks all loaded curricula with duplicate ID detection and validation
- Fast Curriculum Lookups: Maintains a
CurriculumLookup map (CurriculumID → CurriculumData) for O(1) curriculum queries
- Stateless Evaluation: Evaluates curricula against character state without tracking per-character progression (component responsibility)
- Multi-Mode Grant Evaluation: Categorizes abilities into automatic grants, available purchases, suspensions, revocations, and reactivations
- Purchase Validation: Validates purchase requests by checking curriculum prerequisites, grant mode, requirements, and duplicate ownership
- Cost Handler Integration: Supports pluggable cost handling via
IWCGASCurriculumCostHandler interface for custom economy systems
- Character-Based Filtering: Provides queries for applicable curricula (auto-activate) and assignable curricula (manual selection)
- Event Broadcasting: Notifies game systems when curricula load or reload via multicast delegates
- Hot-Reload Support: Allows manual curriculum reload for development iteration without restarting
How It Works
Initialization Flow
- Subsystem Startup: When the GameInstance initializes, the subsystem automatically starts via UE's subsystem lifecycle
- Load Curricula From Settings: Retrieves
RegisteredCurricula array from UWCGASAllySettings (Project Settings)