Concepts

In Deadfire, data for many of the objects in the game exists as Game Data Objects. Game Data Objects are JSON objects that are loaded from Game Data Bundles (*.gamedatabundle) files. Game Data Bundles are loaded from the following locations:

  • \\Pillars of Eternity II\\PillarsOfEternityII_Data\\exported\\design\\gamedata - The vanilla base game Game Data Bundles. Always loaded first.
  • \\Pillars of Eternity II\\PillarsOfEternityII_Data\\*_exported\\design\\gamedata - Expansion and DLC Game Data Bundles. Always loaded second, if the associated expansion is installed.
  • \\Pillars of Eternity II\\PillarsOfEternityII_Data\\override\\* - Game Data Bundles from mods. Loading can be enabled and disabled from Main Menu in the Mod Manager tab of the Options menu. The load order can also be modified in the Mod Manager.

A Game Data Bundle is a JSON object with one property "GameDataObjects", an array of Game Data Objects. A Game Data Object is a JSON object with the following structure:

Name /typeDescription /example
$type
string
The type of the object.
"Game.GameData.*, Assembly-CSharp"
DebugName
string
A string identifying the object for debug purposes.
""
ID
GUID
The object's globally-unique identifier.
"00000000-0000-0000-0000-000000000000"
Components
GameDataComponent[]
A collection of components that make up the object. For information on which Components are needed for which types, see Game Data Types.
[]
Name /typeDescription /example
$type
string
The type of the object.
"Game.GameData.*, Assembly-CSharp"
<other values>
varies
Specific component values (see documentation for each component type).

If an object exists in an expansion bundle with the same ID as an object in a base game bundle, the expansion object will replace the base game object.

If an object exists in an override (mod) bundle with the same ID as an object in a base game or expansion bundle, the override object will partially override the existing object. Any properties that are provided on the override object will be altered on the vanilla object; any properties that aren't provided will not be changed. If the type of the object is different between the vanilla and mod bundles, the mod object will instead replace the vanilla object.