Data
Overview
All game board configuration is expressed through Blueprint-exposed USTRUCT types defined in CGameBlueprintStruct.h and CGameMakerStruct.h. These structs are passed to UCGameManager::storeNewGameBoard and converted into internal DataTable rows.
Game Common
| Name | Description |
|---|---|
| FCBP_GameCommon | Top-level shared settings: decal select material, optional widget class overrides (debug, compass, interaction, dialog, skill, resource, life, textPop, minimap), and metadata maps (skill, resource, character, room) |
| FCBP_CommonMetadata | Base metadata struct with label (FText) and icon (UTexture2D) |
| FCBP_SkillMetadata | Extends FCBP_CommonMetadata with cooldown (float) and baseColor (FLinearColor) |
| FCBP_ResourceMetadata | Extends FCBP_CommonMetadata, no additional fields |
| FCBP_CharMetadata | Extends FCBP_CommonMetadata, no additional fields |
| FCBP_RoomMetadata | Extends FCBP_CommonMetadata, no additional fields |
| FCGameMakerStruct | Internal FTableRowBase storing object map, widget map, and metadata DataTables |
Player
| Name | Description |
|---|---|
| FCBP_Player | Full player definition: actor class, basic info, skeletal, behavior, interaction, lifecycle, movement, fog of war, skills |
| FCBP_ACPBasic | Common actor/pawn/character identity: mainTag, famillyTag, minScale, maxScale |
| FCBP_PMovement | Fly pawn movement: maxWalkSpeed (default 6 m/s) |
| FCBP_CMovement | Character movement: maxWalkSpeed, maxStepHeight (45 cm), jumpZVelocity (6.3 m/s), all modulated by scale |
| FCBP_PlayerInteraction | Player interaction settings: canInteract, reuseOverlapSkillToCapsule, overlap skills |
| FCBP_FogOfWarRevealer | Per-actor fog of war settings: complexTrace, tickIntervalInSecond, numberOfRayIfComplexTrace, lineOfSightSizeMeter, revealedAreaSizeMeter |
NPC (Pawn, Character, Actor)
| Name | Description |
|---|---|
| FCBP_PandC | Base struct for pawns and characters: basic, skeletal, behavior, AI, interaction, lifecycle, skills, fog of war |
| FCBP_Character | Extends FCBP_PandC with TSubclassOf<ACCharacter> and FCBP_CMovement |
| FCBP_Pawn | Extends FCBP_PandC with TSubclassOf<ACPawn> and FCBP_PMovement |
| FCBP_Actor | Standalone actor: TSubclassOf<ACActor>, basic info, interaction |
| FCBP_ACPRoomRule | Base room assignment: count, spawnProbabilities, biome filter |
| FCBP_CharacterRoom | Extends FCBP_ACPRoomRule with a FCBP_Character |
| FCBP_PawnRoom | Extends FCBP_ACPRoomRule with a FCBP_Pawn |
| FCBP_ActorRoom | Extends FCBP_ACPRoomRule with a FCBP_Actor |
| FCBP_ACPSpawnProbability | Spawn probability window: probabilityMinWindow, probabilityMaxWindow, condition |
NPC Components
| Name | Description |
|---|---|
| FCBP_CPSkeletal | Skeletal mesh, physics asset, anim class, anim sequences, blendspaces, montage array |
| FCBP_CPBehavior | Melee and range attack behavior settings |
| FCBP_CPMeleeAttackBehavior | noComboButRandom, allowComboLoop |
| FCBP_CPRangeAttackBehavior | Range attack settings (reserved for future use) |
| FCBP_CPAI | AI configuration: team, aiClass, behaviorTree, automations, sightPerception |
| FCBP_SightPerception | AI sight: enableSight, distances, angle, forget delay |
| FCBP_Automation | Automation command: command (ECAutomationCommandName), value (FString) |
| FCBP_CPLifecycle | Life, damage, block armor, damage-on attitudes, turn-by-turn flag, death/damage skills |
| FCBP_ACPInteraction | Interaction settings: player-only, once-only, canInteract, overlap/interaction skills |
World
| Name | Description |
|---|---|
| FCBP_World | World definition: material, topography assets (world, cluster, shift, room/corridor), fog of war, map, world effector, shadow effector, room softener blend |
| FCBP_WorldEffector | World generation parameters: worldMakerClass, cellSizeMeter, numberOfCellToDrawAround, nbMinPointPerCellSide, maxLODFactor, followAndBuildTilesAroundPawn, curvaturLODReduction, calculateNormal, pool sizes, collisionOnFullLODOnly, actorWakeUpDistanceMeter |
| FCBP_FogOfWar | Fog of war settings: renderTargetSizePixel, blur options, lineOfSightIntensityPercentage, revealedAreaIntensityPercentage, post-process material |
| FCBP_Map | Minimap settings: tile mesh/size, spline mesh/size, tangentForce |
| FCBP_ShadowEffector | Shadow definition (extends FCShadowDefinition) |
Room
| Name | Description |
|---|---|
| FCBP_RoomCluster | Cluster of rooms: mainTag, count, corridor width range, straightCorridor, clusterMarginMeter, corridorBreaks, room descriptions, optional specific topography |
| FCBP_RoomDescription | Single room type: mainTag, count, isPlayerStartPoint, size range, margin, interaction, NPC arrays (characters, pawns, actors), spawn condition |
| FCBP_RoomInteraction | Room interaction: player-only, once-only, canInteract, overlap skills |
Tile and Grass (Hexa)
| Name | Description |
|---|---|
| FCBP_TileAndGrass | Hexagonal tile/grass definition: mesh array, biome filter, room type filter, tile/room/corridor/shadow effectors |
| FCBP_Tile | Single mesh entry: mesh (UStaticMesh), percentBelowFloor |
| FCBP_TileEffector | Tile placement: collision, tileSizeInMeter, numberToDrawAroundPlayer, alignToSlope, randomRotate, jitter, scale, vertical/normal limits |
| FCBP_RoomEffector | Room distance filter: rateDistanceToRoomLowerBound, rateDistanceToRoomUpperBound, onlyForRoom |
| FCBP_CorridorEffector | Corridor edge distance filter: rateDistanceToEdgeLowerBound, rateDistanceToEdgeUpperBound |
Biome
| Name | Description |
|---|---|
| FCBP_Biome | Biome definition: biomeTopography noise asset, boundaries array |
| FCBP_BiomeBound | Named noise range: name, noiseLowerValue, noiseUpperValue |
Skill and Resource
| Name | Description |
|---|---|
| FCBP_Skill | Skill definition: name, onSkillAsDynamicDelegate (Blueprint) or onSkillAsLambda (C++) |
| FCBP_whatToDoOnSkill | Dynamic delegate with three params: const AActor* source, const UObject* otherInformation, UCBoolContainer* resultAsIO |
| FCBP_Inventory | Inventory item: name, inventoryClass (TSubclassOf of AActor) |
Delegates
| Name | Description |
|---|---|
| FCBP_defineQuests | Dynamic delegate (no params) used to define quests when a game board is spawned |
Internal Runtime Structs
| Name | Description |
|---|---|
| FCBP_GameStruct | Runtime container holding all DataTables for a game board: game maker, room cluster, hexa, world, FOW, NPC, map, player, AI, resource, skill, quest delegate. Created by storeNewGameBoard |
| FCBP_PlayerRoom | Internal room assignment for players (extends FCBP_ACPRoomRule with a FCBP_Player) |
Misc
| Name | Description |
|---|---|
| FCBP_Misc | Display settings: window mode, resolution, scale, frame rate limit, anti-aliasing, vSync, quality levels (GI, texture, post-process, shading, shadow, view distance, VFX, reflection, AA, foliage) |
| ECMiscQuality | Quality enum: LOW, MED, HIGH, EPIC, CINEMATIC |
Animation
| Name | Description |
|---|---|
| ECSkeletalMontageName | Enum for montage slots: ATTACK_0 through ATTACK_9, BLOCK_START/END, DAMAGED, KILLED, RANGE_START/END, TURN_LEFT/RIGHT |
| FCBP_MontageWithName | Map of ECSkeletalMontageName to UAnimMontage |
// Game Common
FCBP_GameCommon gameCommon;
gameCommon.decalSelectMaterial = myDecalMaterial;
gameCommon.skillMetadata.Add(FName("Fireball"), FCBP_SkillMetadata());
gameCommon.resourceMetadata.Add(FName("Gold"), FCBP_ResourceMetadata());
// Player
FCBP_ACPBasic basic;
basic.mainTag = FName("Hero");
basic.minScale = 0.9f;
basic.maxScale = 1.1f;
// Movement
FCBP_CMovement movement;
movement.maxWalkSpeed = 8.0f; // 8 m/s
movement.maxStepHeight = 50.0f;
movement.jumpZVelocity = 7.0f;
// NPC
FCBP_Character npcChar;
npcChar.actorClass = AMyCharacter::StaticClass();
npcChar.basic.mainTag = FName("Guard");
npcChar.ai.team = 1;
npcChar.ai.behaviorTree = myBehaviorTree;
npcChar.lifecycle.maxLife = 200.0f;
npcChar.lifecycle.damage = 10.0f;
// Room
FCBP_RoomCluster cluster;
cluster.mainTag = FName("Dungeon");
cluster.count = 3;
cluster.corridorMinWidthMeter = 3.0f;
cluster.corridorMaxWidthMeter = 5.0f;
FCBP_RoomDescription room;
room.mainTag = FName("BossRoom");
room.count = 1;
room.minSizeMeter = 10.0f;
room.maxSizeMeter = 15.0f;
room.isPlayerStartPoint = true;
cluster.roomDescriptions.Add(room);
// Tile
FCBP_TileAndGrass grass;
grass.tileEffector.tileSizeInMeter = 1.5f;
grass.tileEffector.numberToDrawAroundPlayer = 40;
grass.tileEffector.alignToSlope = true;
grass.onlyIf = CRoomType::ROOM;
// Biome
FCBP_Biome biome;
biome.biomeTopography = myNoiseAsset;
biome.boundaries.Add({FName("Forest"), -0.5f, 0.5f});
// Skill (C++ lambda)
FCBP_Skill skill;
skill.name = FName("Fireball");
skill.onSkillAsLambda = [](const AActor* source, const UObject* info, UCBoolContainer* result) {
result->value = true;
};
// Misc
FCBP_Misc misc;
misc.windowMode = EWindowMode::Fullscreen;
misc.frameRateLimit = 60;
misc.antiAliasingMethod = ECAntiAliasingDefinition::TSR;
// FCBP_GameStruct is created internally by storeNewGameBoard.
// Access its DataTables via getter functions:
// gameStruct.getResourceDT(), gameStruct.getSkillDT(), etc.