Data Structures
FCRoomClusterStruct
Top-level DataTable row structure defining the entire room cluster generation.
| Name | Description |
|---|---|
| roomMakerCountStructArray | Array of FCRoomMakerCountStruct defining how many clusters of each type to generate |
| maxIteration | Maximum relaxation iterations for cluster placement (default 9999) |
| algoRelax | Relaxation algorithm for cluster spacing (default SLOW_SMALL) |
| algoSpeed | Relaxation speed multiplier (default 1.0) |
| clusterNoiseDataAsset | Noise asset for cluster-level terrain modulation |
| roomAndCorridorNoiseDataAsset | Noise asset for room and corridor terrain modulation |
| clusterShiftNoiseDataAsset | Noise asset for cluster shift terrain modulation |
FCRoomMakerCountStruct
Associates a cluster definition with a spawn count.
| Name | Description |
|---|---|
| roomMakerRH | FDataTableRowHandle pointing to a FCRoomMakerStruct row |
| countCluster | Number of clusters of this type to generate (default 1) |
FCRoomMakerStruct
Configuration for a single cluster: room layout, corridor parameters, and optional per-cluster noise.
| Name | Description |
|---|---|
| mainTag | Tag identifying this cluster type (used for deck/quest systems) |
| maxIteration | Maximum relaxation iterations for room placement within this cluster (default 9999) |
| corridowMinWidth | Minimum corridor width in world units (default 250) |
| corridowMaxWidth | Maximum corridor width in world units (default 500) |
| algoRelax | Relaxation algorithm for room spacing (default FAST_LARGE) |
| algoSpeed | Relaxation speed multiplier (default 1.0) |
| algoShuffle | Whether to shuffle room processing order during relaxation |
| tileSize | Tile size for room grid (default 150) |
| straightCorridor | If true, uses straight MST corridors; if false, uses flex corridors |
| clusterMarginMeter | Margin around the cluster bounding box in world units (default 10000) |
| corridorNoiseIntensity | Noise intensity applied to corridor edges for organic shapes (0 = straight) |
| minSizeForStraight | Minimum edge size to use straight corridors when straightCorridor is true |
| roomCountStructArray | Array of FCRoomCountStruct defining room types and counts in this cluster |
| clusterSpecificNoise | Optional per-cluster noise asset for terrain topography |
| clusterSpecificShiftNoise | Optional per-cluster shift noise asset |
FCRoomCountStruct
Associates a room definition with a spawn count and an optional condition.
| Name | Description |
|---|---|
| roomDetailRH | FDataTableRowHandle pointing to a FCRoomDetailStruct row |
| countRoom | Number of rooms of this type to generate (default 1) |
| condition | Optional Blueprint delegate (FCRoomConditionBasic) evaluated before spawning each room |
FCRoomDetailStruct
Configuration for a single room type: size, margins, interaction rules, and content probabilities.
| Name | Description |
|---|---|
| mainTag | Tag identifying this room type (used for quest matching) |
| minRoomSize | Minimum room dimension in world units (default 600) |
| maxRoomSize | Maximum room dimension in world units (default 5000) |
| marginRoom | Margin around the room for relaxation spacing (default 800.0) |
| interactWithPlayerOnly | If true, only the player pawn triggers room overlap events |
| canOnlyBeConsumedOnce | If true, the room interaction fires only once then is marked consumed |
| canInteract | Optional Blueprint delegate for custom interaction check |
| beginOverlapInteractionSkill | Skill name triggered on room enter overlap |
| endOverlapInteractionSkill | Skill name triggered on room exit overlap |
| roomProbaRHArray | Array of FCRoomContentStruct defining tag-based content probabilities |
| doorTag | Tag for door identification |
FCRoomContentStruct
Defines tag-based content probability for room population.
| Name | Description |
|---|---|
| tag | Content tag to match against character tags |
| roomContentProbaStructArray | Array of FCRoomContentProbaStruct with probability ranges and conditions |
FCRoomContentProbaStruct
Probability range with optional condition for room content eligibility.
| Name | Description |
|---|---|
| minRandom | Minimum random threshold (default 0.0) |
| maxRandom | Maximum random threshold (default 1.0) |
| condition | Optional Blueprint delegate (FCRoomConditionWithMetadata) with access to character tag and room metadata |
FCRoomDetailData
Runtime data for a single cluster’s room layout (generated, not configured).
| Name | Description |
|---|---|
| roomRectangulator | FCRectangulator containing all room rectangles for this cluster |
| roomTriangulator | FCTriangulator with Delaunay triangulation data |
| roomMST | FCMstData with the Minimum Spanning Tree connecting rooms |
| brokenMSTEdgeMap | Map of edge index to FCEdge with noise-broken corridor edges |
FCClusterDetailData
Runtime data for the entire cluster system (generated, not configured).
| Name | Description |
|---|---|
| roomDetailMap | Map of cluster ID to FCRoomDetailData |
| clusterRectangulator | FCRectangulator containing all cluster bounding rectangles |
FCRoomDataQueue
Internal queue structure used during async room generation.
| Name | Description |
|---|---|
| last | Marks the final queue entry, triggering finalization |
| clusterToFinalizeArray | Array of cluster IDs with their FCRoomMakerStruct for metadata creation |
| roomToFinalizeArray | Array of (clusterId, roomId, FCRoomDetailStruct) for room metadata creation |