1.4.0
caution
All loot table templates need to be recompiled after updating.
Versions
- UE5.1
- UE5.2
- UE5.3
Features
- Added a new struct,
STFloatMask
, which stores an array of floats. You can use float masks to store data for each row in a loot table.- Added 53 arithmetic functions for doing math with float masks (add, multiply, divide, etc.).
- Added a new base class,
STMaskGenerator
, which generates float masks that are stored in loot tables.STMaskGenerator
can be subclassed in C++ or blueprint to generate custom masks based on your loot tables' data. - Added 10 built-in mask generators:
- Bool: Evaluates a boolean property from the source.
- Copy Data: Copies data from a numeric property from the source.
- Curve: Uses a source's numeric property as a key into a curve.
- Gameplay Tag Compare: Compares a source's tag property.
- Gameplay Tag Enumerate: Creates a mask for each unique tag stored in the source's property.
- Loot Count: Copies the loot table's count for that row.
- Loot Weight: Copies the loot table's weight for that row.
- Manual: Stores manually defined data.
- Numeric Compare: Compares numeric property(s) from the source.
- Row Filter: Evaluates a row filter on each source.
- Added a new
ComposeLootTable
function using float masks instead. This version is significantly faster than the previous version.- Added a new struct to
STLootRegistrationComponent
for composing loot tables using the new method.
- Added a new struct to
- Added a
ComposeMasks
function to compose a named mask from multiple loot tables or loot table templates. - Added a
Filter to Mask
function for row filters. This will evaluate a row filter against an array of object handles, then store the results into a float mask. - Added
Masked Sample
,Bulk Masked Sample (Ordered)
, andBulk Masked Sample (Unordered)
functions. These functions apply a temporary float mask, then sample from the distribution or loot table. - Added the
ApplyMaskToWeights
andApplyMaskToCounts
functions to loot tables and distributions. - Added functions for converting
STFloatMask
,STSumArray
, andSTSumTree
to string. - Added functions for printing debug info about
STLootTable
,STSumArray
, andSTSumTree
to the output log in a tabular format. - Added a commandlet,
STCompileLootTablesCommandlet
, which compiles all loot tables and optionally regenerates their float masks. We recommend running this commandlet before packaging your game. STBuiltTableData
now storesSTObjectRefHandle
s instead ofSTTableRowHandle
. As a result, all existing loot tables need to be recompiled.- Added a float precision slider for the build tab.
- Added a 'Reset column widths to automatic' command for the build tab.
- Changed asset references in the authoring and build tabs to only show the asset name (instead of the entire path).
Deprecations
- Deprecated the
STNestedBag
distribution. See the upgrade guide for reasoning and suggested alternatives. - Deprecated all
Restock
functions. You can use a float mask instead. - Deprecated
STLootTable::ModifyTable
. You can use a float mask instead. - Deprecated
STRowModifier
. You can use a float mask instead. - Deprecated the current
ComposeLootTable
function. An alternative using float masks has been added instead. - Replaced the current loot registration struct in
STLootRegistrationComponent
because we deprecated the old method of loot table composition.
Bug Fixes
- Added const to
STDiscreteDistribution::GetItemWeights
. - Fixed row editor repeatedly collapsing after property changes.
- Fixed automatic column widths being too narrow for sort marker in authoring and build tabs.
- Fixed cell data not aligning with header in authoring and build tabs.
Changes to the Example Map
Most instances of composition now use float masks instead. Composition still has its uses, so we added a new example for composing affix loot tables.
RollAffixes
,RollRarity
, andRollBaseItem
now use float masks. See the updated ARPG Loot Generation example.LT_Affixes
,LT_Rarity
, andLT_Armor
now store data in float masks.- Changed the distribution type for
LT_Affixes
and all of the individual affix tables fromSTNestedBag
toSTUnlimitedDist
. - Removed
LT_Prefixes
andLT_Suffixes
. We store this info into a float mask instead. - Added tags for each affix group in
DT_Affixes
. DT_Rarity
has a new field:MagicFindEffectiveness
, which is used in the newRollRarity
function.- Updated the
LV_Performance
map to compare between composition with float masks. All composition should be significantly faster.
Changes to Documentation
- Changed the docs styling.
- Added a new guide for upgrading to 1.4.0.
- Updated the ARPG Loot Generation guide to use float masks. This includes many notable improvements and should be much easier to understand.
- Added a page describing float masks in more detail.
- Added a page describing mask generators in more detail.
- Updated the composition page with the new method.
- Added a deprecation notice on the Nested Bag.