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.