Data Structures

Overview

Configuration is entirely data-driven via DataTable rows. FCCharacterDetailMaker is the central structure defining everything about an actor. FCNPCMaker groups actors for the spawner. FCPlayerMakerStruct references a character maker for player creation. UCActorInformation holds runtime state.

FCCharacterDetailMaker

Main DataTable row structure (FTableRowBase). Defines actor class, visuals, animations, combat, AI, skills, interaction, biome constraints and more.

Name Description
actorClass Subclass of ACActor, ACPawn or ACCharacter to spawn
enable Whether this maker is active
rowTag / mainTag Row identifier and primary tag (used for quests, rooms)
famillyTag Tags copied to the actor’s Tags array
tagToRoomArray Room tags controlling where this actor can spawn
biomeSelectLowerBound / biomeSelectUpperBound Biome noise range filter (0,0 = no filter)
interactWithPlayerOnly If true, only interacts with the player
canOnlyBeConsumedOnce If true, interaction consumes the actor permanently
minScalePercent / maxScalePercent Random scale range
canInteract Dynamic delegate (FCBP_boolCalc) for custom interaction filtering
beginOverlapInteractionSkill Skill consumed on begin overlap
endOverlapInteractionSkill Skill consumed on end overlap
executeInteractionSkill Skill consumed on explicit interaction
executeDeathSkill / executeDamagedSkill Skills consumed on death / damage
executeAttackSkill / executeRangeAttackSkill Skills consumed on melee / range attack
skillArray Default skill list for the actor
maxWalkSpeed / maxStepHeight / jumpZVelocity Movement parameters
skeletalMesh / physicsAsset / animClass Visual and animation assets
animSequenceMap / blendspaceMap Named animation sequences and blendspaces for UCAnimInstance
attackAnimMontageArray Melee combo montages (played in order)
noCombo / comboLoop Combo behavior: random pick vs sequential, loop vs stop
startRangeAnimMontage / endRangeAnimMontage Range attack montages
startBlockAnimMontage / endBlockAnimMontage Block montages
killedAnimMontage / damagedAnimMontage Death and damage reaction montages
turnLeftAnimMontage / turnRightAnimMontage Turn-in-place montages
baseLife / baseDamage / blockArmor Combat stats
attackOnlyOn Team attitudes this actor can attack
teamId FGenericTeamId value
aiClass / aiStructRH AI controller class and AI behavior DataTable row
navigationRadius NavMesh invoker radius
automationStructArray Scripted automation commands (location, wait)
fogOfWar* FOW parameters (complex ray, blur, refresh rate, resolution, sizes)
// FCCharacterDetailMaker is configured in a DataTable.
// Each row defines a complete actor archetype.

FCCharacterDetailMaker maker;
maker.actorClass = ACCharacter::StaticClass();
maker.mainTag = FName("Goblin");
maker.baseLife = 20.0;
maker.baseDamage = 5.0;
maker.teamId = 1;
maker.maxWalkSpeed = 300.0;
maker.attackOnlyOn = {ETeamAttitude::Hostile};

FCNPCMaker

DataTable row grouping actors for the spawner. References an array of FCCharacterDetailMaker rows.

Name Description
cellSize Tile size for actor cell assignment (default 20000)
poolSizeStart / poolSizeRun Batch sizes for initial and subsequent spawn passes
wakeUpDistance Distance from pawn within which actors stay active
characterMakerRH Array of FDataTableRowHandle pointing to FCCharacterDetailMaker rows
FCNPCMaker npcMaker;
npcMaker.cellSize = 20000.0;
npcMaker.poolSizeStart = 8;
npcMaker.poolSizeRun = 4;
npcMaker.wakeUpDistance = 10000.0;
// characterMakerRH references FCCharacterDetailMaker rows in a DataTable

FCPlayerMakerStruct

DataTable row for player configuration. References a single FCCharacterDetailMaker row.

Name Description
characterDetailMakerRH FDataTableRowHandle pointing to the player’s FCCharacterDetailMaker
// FCPlayerMakerStruct delegates to FCCharacterDetailMaker for all actor configuration.
FCPlayerMakerStruct playerMaker;
FCCharacterDetailMaker* detail = playerMaker.getCharacterDetailMaker();

UCActorInformation

Runtime state object created per actor instance. Holds the link between the spawner data and the live actor.

Name Description
id Actor index (advIdx)
activated Whether the actor is currently active (visible, ticking)
killedOrConsumed Whether the actor has been killed or consumed
scale Random scale applied at creation
transform World transform (position, rotation, scale)
meshBound Mesh bounding box extent
maker Pointer to the FCCharacterDetailMaker row
actor Transient reference to the spawned AActor
// UCActorInformation is created by the spawner for each actor.
UCActorInformation* info = UCActorInformation::createActorInformation(
    owner, characterDetailMaker, x, y, advIdx);

// Z is computed from WorldUtility, scale and rotation are randomized.
// preserveMaker() copies the maker data locally (for actors spawned outside DataTable).
info->preserveMaker();