data-driven-design

Implement Unreal Engine gameplay data using DataTables, DataAssets, curves, and config-driven settings.

1|Updated Sep 6, 2026
One-click install
npx skills add https://github.com/ziyarduc/Baran-bk-game --skill data-driven-design-ziyarduc
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: data-driven-design
Source: https://github.com/ziyarduc/Baran-bk-game/tree/main/.agents/skills/data-driven-design
Command: npx skills add https://github.com/ziyarduc/Baran-bk-game --skill data-driven-design-ziyarduc

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Hardcoding gameplay values like item stats, enemy configs, and balance numbers in C++ makes iteration slow and requires recompilation for every tuning change. This Skill guides you to move those values into externally-editable Unreal Engine assets and config objects that designers can modify without touching code. ## Core Features & Use Cases - Container Selection Guidance: Choose the right data container for each scenario — UDataTable for tabular records, UCompositeDataTable for DLC layering, UDataAsset/UPrimaryDataAsset for rich config objects, UCurveFloat/UCurveTable for value-over-input relationships, and UDeveloperSettings for Project Settings panel entries. - C++ Implementation Patterns: Provides complete code examples for FTableRowBase row structs, FDataTableRowHandle pickers, config UPROPERTY binding to .ini files, and FRuntimeFloatCurve inline curves. - Data Validation: Implements IsDataValid overrides and CI integration via the Data Validation plugin to catch content errors before runtime. - Use Case: When building a loot system with hundreds of items, use this Skill to define an FItemRow struct, import stats from CSV into a UDataTable, and expose FDataTableRowHandle properties so designers pick rows from validated dropdown lists instead of typing error-prone string names. ## Quick Start Ask the AI to define a UDataTable row struct for weapon stats and show how to look up rows at runtime using FDataTableRowHandle.

Frequently Asked Questions about data-driven-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a DataTable in Unreal Engine C++?▼

Define a USTRUCT inheriting FTableRowBase with UPROPERTY fields, then create a DataTable asset in the Content Browser or import CSV/JSON. Access rows at runtime with FindRow<T>(RowName, Context) or iterate all rows with ForeachRow<T>.

What is the difference between UDataAsset and UPrimaryDataAsset?▼

UPrimaryDataAsset adds GetPrimaryAssetId() so UAssetManager can discover, async-load, and manage instances by type. Use UDataAsset for single configs loaded with the level; use UPrimaryDataAsset when you have many instances needing lifecycle control.

When should I use UDataTable vs UDataAsset in Unreal?▼

Use UDataTable for many rows of the same schema with spreadsheet-style bulk editing. Use UDataAsset when each record needs inheritance, rich nested types, or Blueprint subclassing for per-instance variation.

Why is my UDeveloperSettings class not showing in Project Settings?▼

The DeveloperSettings module must be listed in PublicDependencyModuleNames in your Build.cs file. Also verify CategoryName maps to a known category like Game, Engine, or Editor.

How do I avoid row name typos with FindRow in Unreal?▼

Use FDataTableRowHandle as a UPROPERTY instead of raw string names. Designers pick the exact row from a validated dropdown in the Details panel, and GetRow<T>() retrieves it safely at runtime.

Can I override DataTable rows for DLC or platforms?▼

Yes, use UCompositeDataTable, which stacks parent tables so higher-index parents win on duplicate row names. This lets DLC or platform tables override base rows without duplicating the entire table.