---
title: "QuartzUIGASConfig: declaration reference"
description: "Quartz UI 0.57.0-dev: QuartzUIGASConfig: declaration reference. Source-reviewed guidance, usage and limitations."
status: approved
visibility: public
sourceRevision: fe5b709ec900e282b50e58b819a25041945005f9
reviewedAt: 2026-09-24
---

# QuartzUIGASConfig: declaration reference

> **0.57.0-dev · beta source documentation.** Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See [validation and limits](https://betterbuilt.games/docs/quartz-ui/evidence).

Pinned source (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h`) · [integration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) · [practical guide](https://betterbuilt.games/docs/quartz-ui/integrations)

## EQuartzUIGASBrowserAbilityActionPolicy

**Internal type.** Browser authority policy. Observation never implies permission to mutate gameplay.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L15`)

## FQuartzUIGASAttributeMapping

**Public type.** GASAttribute Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L28`)

## FQuartzUIGASTagMapping

**Public type.** GASTag Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L41`)

## FQuartzUIGASFailureReasonMapping

**Public type.** GASFailure Reason Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L53`)

## FQuartzUIGASAbilityCostMapping

**Public type.** GASAbility Cost Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L65`)

## FQuartzUIGASAbilityMapping

**Public type.** GASAbility Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L81`)

## FQuartzUIGASStatusEffectMapping

**Public type.** GASStatus Effect Mapping: a declared type in optional aliases, mappings, discovery mode and action permissions; use its exact fields/operations below.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L108`)

## UQuartzUIGASConfig

**Public type.** Optional aliases and policy overrides for automatic GAS discovery. A project does not need this asset to expose its exact local player's GAS state. When automatic discovery is enabled, matching entries rename discovered DTO IDs; ability entries can also opt into ExplicitMappings browser-action policy. Setting automatic discovery off preserves the bounded legacy allowlist behavior.

**Prerequisites / integration:** Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the [QuartzUIGASConfig recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuigasconfig) in the host module `QuartzUIGAS`.

**Minimal example / lifecycle:** Create config only for custom aliases/permissions; validate mappings. Durable primary data asset; scope consumes a validated configuration.

**Avoid:** Expecting mappings to load an ASC or allowing duplicate/invalid IDs. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIGAS/Public/QuartzUIGASConfig.h#L129`)

## Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

```cpp
#pragma once

#include "AttributeSet.h"
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"

#include "QuartzUIGASConfig.generated.h"

class UGameplayAbility;
class UGameplayEffect;

/** Browser authority policy. Observation never implies permission to mutate gameplay. */
UENUM(BlueprintType)
enum class EQuartzUIGASBrowserAbilityActionPolicy : uint8
{
	/** The browser can observe abilities but cannot activate or cancel them. */
	Disabled,

	/** Only legacy/override mappings with the matching permission flag are actionable. */
	ExplicitMappings,

	/** Every currently granted ability is addressable after the generic runtime checks pass. */
	AllDiscovered
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAttributeMapping
{
	GENERATED_BODY()

	/** Optional stable project-facing alias for the reflected attribute identity. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayAttribute Attribute;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASTagMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag Tag;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASFailureReasonMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag Tag;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAbilityCostMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayAttribute Attribute;

	/** Positive amount required by this project's presentation mapping. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS", meta = (ClampMin = "0"))
	float RequiredValue = 0.0f;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASAbilityMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	/** Exact granted class to match without synchronously loading a GameFeature. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TSoftClassPtr<UGameplayAbility> AbilityClass;

	/** Optional exact dynamic source tag for projects granting the same class more than once. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FGameplayTag SpecSourceTag;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bAllowBrowserActivation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bAllowBrowserCancellation = false;

	/** Optional quantified costs; custom GAS costs still contribute to Affordable. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAbilityCostMapping> Costs;
};

USTRUCT(BlueprintType)
struct QUARTZUIGAS_API FQuartzUIGASStatusEffectMapping
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	FName Id;

	/** Exact active effect class selector; output remains immutable data only. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TSoftClassPtr<UGameplayEffect> EffectClass;
};

/**
 * Optional aliases and policy overrides for automatic GAS discovery.
 *
 * A project does not need this asset to expose its exact local player's GAS state.
 * When automatic discovery is enabled, matching entries rename discovered DTO IDs;
 * ability entries can also opt into ExplicitMappings browser-action policy. Setting
 * automatic discovery off preserves the bounded legacy allowlist behavior.
 */
UCLASS(BlueprintType, Blueprintable)
class QUARTZUIGAS_API UQuartzUIGASConfig : public UPrimaryDataAsset
{
	GENERATED_BODY()

public:
	static constexpr int32 MaxAttributes = 64;
	static constexpr int32 MaxTags = 128;
	static constexpr int32 MaxAbilities = 64;
	static constexpr int32 MaxStatusEffects = 64;
	static constexpr int32 MaxFailureReasons = 64;
	static constexpr int32 MaxCostsPerAbility = 16;

	/** Discover spawned AttributeSets, owned tags, granted specs, and active effects. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	bool bUseAutomaticDiscovery = true;

	/** Optional attribute aliases, or the complete list when automatic discovery is off. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAttributeMapping> Attributes;

	/** Optional tag aliases/zero-count observations, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASTagMapping> Tags;

	/** Optional ability aliases/action permissions, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASAbilityMapping> Abilities;

	/** Optional effect aliases, or the legacy explicit list. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASStatusEffectMapping> StatusEffects;

	/** Optional failure-tag aliases. Unmapped failures use their gameplay-tag names. */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|GAS")
	TArray<FQuartzUIGASFailureReasonMapping> FailureReasons;

	/** Strict bounds, IDs, duplicate mappings, attributes, tags, and soft classes. */
	UFUNCTION(BlueprintPure, Category = "QuartzUI|GAS")
	bool IsValidConfig(FName& OutError) const;
};
```

Canonical HTML: https://betterbuilt.games/docs/quartz-ui/reference-quartzuigasconfig
