Ark Loot Overrides Spec

The information in this document is gathered from all over the community, discussions with users, and pulled from the dev kit.

Below are the three object specifications for the ConfigOverrideSupplyCrateItems command line option. All keys are optional, except where it doesn't make sense to omit, such as the keys which actually specify items. When a key is omitted, the default value will be used.

Loot Source Object

Key Description Range Default
SupplyCrateClassString Specifies which loot source is being replaced.
MinItemSets The minimum number of item sets the loot source must select. Number of item sets >= MinItemSets >= 1 1
MaxItemSets The maximum number of item sets the loot source may select. Number of item sets >= MaxItemSets >= MinItemSets 1
NumItemSetsPower Mystery value. According to Wildcard, this should be left at 1.0 NumItemSetsPower >= 0.0 1.0
bSetsRandomWithoutReplacement When set to true, instructs the loot engine to select an item set no more than once. True Or False True
ItemSets Array of item set objects.
bAppendItemSets When true, the item sets will be added to the loot source instead of replacing them. In this case, MinItemSets and MaxItemSets values get added to the original values. True Or False False
bAppendPreventIncreasingMinMaxItemSets According to release notes, set this to true "to dynamically increase the amount of items dropped by however many additional itemsets you add." However in testing, this value seems to have no impact whatsoever. True Or False False

Item Set Object

Key Description Range Default
SetName A cosmetic name not used in-game, but recognized by the Ark Dev Kit and Beacon.
MinNumItems The minimum number of entries the loot engine must select. Number of entries >= MinNumItems >= 1 1
MaxNumItems The maximum number of entries the loot engine may select. Number of entries >= MaxNumItems >= MinNumItems 1
NumItemsPower Like NumberItemSetsPower, this should be left at 1.0 1.0
SetWeight Higher values mean this item set is more likely to be chosen. This should be a whole integer value, and weights are relative to each other. For example, if Set1.Weight is 50 and Set2.Weight is 25, Set1 is twice as likely to be selected as Set2. These values could be 500 and 250, respectively, and the odds do not change. SetWeight >= 1 Unknown
bItemsRandomWithoutReplacement When true, an entry in this item set may not be selected more than once. However, multiple entries with similar items or even multiple item sets with similar items may still produce duplicates. True or False False
ItemEntries Array of set entry objects.

Set Entry Object

Key Description Range Default
EntryWeight Works exactly like SetWeight from the item set object. EntryWeight >= 1 Unknown
Items An array of Blueprint-generated classes. See "Engram Specifiers" below.
ItemClassStrings An array of class strings. See "Engram Specifiers" below.
ItemsWeights Not a type. An array of weights, one for each item in Items or ItemClassStrings.
MinQuality Minimum numeric quality value. Ark will multiply this value by the crate's min loot source multiplier, as well as the difficulty value. MinQuality >= 0 0
MaxQuality Maximum numeric quality value. Ark will multiply this value by the crate's max loot source multiplier, as well as the difficulty value. MaxQuality >= 0 0
bForceBlueprint Setting to True will cause the loot engine to always create a blueprint. True or False False
ChanceToActuallyGiveItem Is a chance to create an actual item instead of a blueprint, when bForceBlueprint is false. See "Blueprint Chances" below. 1.0 >= ChanceToActuallyGiveItem >= 0.0 1.0
ChanceToBeBlueprintOverride The inverse of ChanceToActuallyGiveItem. ChanceToBeBlueprintOverride >= 1.0 0.0

Engram Specifiers

There are two keys to specify items: Items and ItemClassStrings. Only one should be used at a time. Each have advantages and disadvantages. For this example, we're going to talk about Stone, which has a blueprint path of

/Game/PrimalEarth/CoreBlueprints/Resources/PrimalItemResource_Stone.PrimalItemResource_Stone

ItemClassStrings uses an array of class strings, which are the "tail" of the blueprint, with a "_C" appended. So in this example, the class string for Stone is "PrimalItemResource_Stone_C". This is the option that was provided to the community when the loot overrides were first introduced. When using mods however, it has the disadvantage of not being unique. For example, the Smithy from the Smithy+ mod and Structures+ mod both use the same class string. For a server with both mods installed, it is undefined which one will be selected. Ark seems to always pick the same one, so load order might be important, but it is still difficult to predict.

Items uses an array of Blueprint-generated classes. These are the full blueprint path, with a "BlueprintGeneratedClass" prefix, and "_C" suffix. So in this example, the Blueprint-generated class for Stone is

BlueprintGeneratedClass'/Game/PrimalEarth/CoreBlueprints/Resources/PrimalItemResource_Stone.PrimalItemResource_Stone_C'

Note that using a "regular" blueprint is NOT acceptable in this scenario. Using a full path allows Ark to always generate the intended loot. However, using this option has a few problems, which is why Beacon has stopped using it. While this works fine on dedicated servers, it often seems to crash the Ark client when used locally. The theory is that BlueprintGeneratedClass creates an instance of the class immediately. But since the Ark client loads some content on-demand, such as mod and DLC content, the items simply don't exist in memory when the Game.ini file is loaded. Class strings appear to resolve on-demand instead of at load, which makes them more reliable for single player.

Interestingly, the default loot tables use the Items key and Blueprint-generated classes. For example, find

/Game/PrimalEarth/Structures/SupplyCrate_Level03

When opening that item, it has a single "Item Sets" key with a number of item sets. Right-click any of them, copy, and paste into a text editor. The structure is identical to the item set configuration we know. Except it uses the Items key instead of ItemClassStrings. There are also various other keys added or omitted.

Quantity Notes

Quantities are not what most users expect. Ark will create a brand-new item for each value in a quantity. For example, if MinQuantity and MaxQuantity are both 2, ark will create 2 items from scratch. That means 2 quality selections, 2 item selections, 2 blueprint chances, and so on.

For developers, this process would look something like the following psuedo-code:

Quantity = RandomInRange(MinQuantity, MaxQuantity)
For I = 1 To Quantity {
    Item = RandomFromSet(ItemClassStrings)
    Quality = RandomInRange(MinQuality, MaxQuality)
    IsBlueprint = bForceBlueprint Or RandomInRange(0.0, 1.0) > ChanceToBeBlueprintOverride
}

This means that if a blueprint is a possibility, and quantity is more than 1, there could be multiple blueprints generated.

Blueprint Chances

Both ChanceToActuallyGiveItem and ChanceToBeBlueprintOverride appear to do the same thing, and for the most part, they do. One is merely an inverse of the other.

So why do both exist? Possibly because of sloppy development. The default loot tables use ChanceToActuallyGiveItem instead of ChanceToBeBlueprintOverride. But ChanceToBeBlueprintOverride is the one demonstrated to the community in the 242 release notes. It is unclear which is correct, better to use, takes precedent, and so on. So to play it safe, Beacon generates both.

    No Results

    Message

    Explanation