Data Registries

Use Data Registries to store, combine, read, and manage data from various sources.

Choose your operating system:

Windows

macOS

Linux

Because Data Registries are part of a plugin, there is some setup required. The

[](InteractiveExperiences/DataDriven/DataRegistries/QuickStart)
can guide you through the process and familiarize you with some of the basic concepts.

A Data Registry is an efficient global storage space for USTRUCT -tagged data structures.

Data Registries support both synchronous and asynchronous data access, as well as user-defined caching behaviors. They are intended to work with general read-only data.

For specific session-based data such as progress in a story, or a character's current state, use the engine's Save Game system.

You can configure your Data Registry to load or generate data from a variety of different sources, and can populate it with Asset scanning and manual registration.

Data Registries are similar to Composite Data Tables , but can store curve data in addition to standard table rows, and use an indirection layer rather than manually compositing multiple tables together.

Data Sources

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#DataSources]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#DataSources]

![](DataRegistrySources.png)

All four built-in Data Registry Source types (see below) in an array within a Data Registry Asset.

Data Registry Sources

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#DataRegistrySources]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#DataRegistrySources]

Meta Data Registry Sources

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#MetaDataRegistrySources]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#MetaDataRegistrySources]

Identifiers

The Data Registry plugin uses its own identifier types to identify or look up Data Registries and the individual data items they contain.

While these identifiers are string-based names at their core, the FDataRegistryType (for Data Registry Assets) and FDataRegistryId (for individual items within a Data Registry) structures act as wrappers and provide useful in-editor functionality.

FDataRegistryType identifies a Data Registry Asset, while FDataRegistryId identifies a Data Registry and a specific data item within it. Use these identifier types when you need to find Data Registry Assets or retrieve individual data items from them.

Each Data Registry Asset must have a unique name in the Registry Type field; if two Data Registry Assets have the same name in this field, the system will only recognize and populate one of them.

Similarly, if multiple data items share the same identifying value (name or Gameplay Tag), the registry will read all items, but retrieval operations will only access the first one that the Data Registry Asset loaded; see the section on data sources for information about the order in which data items load.

Developers using C++ can change this behavior by creating a child Data Registry class and overriding the ResolveDataRegistryId function.

Data Registry Asset Identifiers

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#DataRegistryAssetIdentifiers]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#DataRegistryAssetIdentifiers]

DataRegistryAssetType.png

Above, setting the Data Registry Asset's identifier.

Below, selecting the identifier, or a specific row within that Data Registry, on an Actor that needs to reference the Data Registry Asset.

DataRegistryAssetReferences.png

Data Item Identifiers

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#DataItemIdentifiers]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#DataItemIdentifiers]

If you edit a Data Registry Asset, your changes may not take effect immediately in other Assets that reference it using data item identifiers.

If this happens, the data item identifiers could contain obsolete rows in its dropdown lists.

Click the Compile button in the Asset that references the Data Registry (not the Data Registry Asset itself) to update the interface with current data item information.

DataItemIDs.png

On the left, item selection for a Data Registry Asset with an ID Format that uses a Gameplay Tag.

On the right, item selection for a Data Registry Asset that uses a simple name.

Because FDataRegistryId has an FDataRegistryType member (called RegistryType ), you can find the Data Registry Asset that contains the row without needing a separate FDataRegistryType identifier.

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#IdentifierResolution]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#DynamicIdentifierResolution]

Quick Function Reference

The following functions are helpful for getting started with Data Registries.

This is not a complete reference, but these functions are the basics you will need to access your data after having set up Data Registries in your project.

[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-BP#UsefulFunctions]
[INCLUDE:InteractiveExperiences/DataDriven/DataRegistries/DataRegistries-CPP#UsefulFunctions]

Integration with Game Features

The Data Registry plugin can add both Data Registries and individual Data Registry Sources from Game Feature plugins. For details on how this process works, see the

[](EverythingIsRealtime/GameFeaturesAndModularGameplay)
page.

InteractiveExperiences/DataDriven/DataRegistries\DataRegistries-CPP\DataRegistries-CPP.INT.UDN

availability: docs title: Data Registries CPP description: Data Registries CPP Excerpts parent: BuildABiggerWorld/DataRegistries type: reference

InteractiveExperiences/DataDriven/DataRegistries\DataRegistries-BP\DataRegistries-BP.INT.udn

availability: docs title: Data Registries BP description: DataRegistries BP Excerpts parent: BuildABiggerWorld/DataRegistries type: reference

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss