Home › Engine executable › The .modinfo vocabulary
Engine executable. Settings and tools of the game program (CivilizationVI.exe), usable without a mod. Mostly undocumented debug and configuration functionality; descriptions come from analysis of the executable and have not all been tried in the running game.
The .modinfo vocabulary
Everything the engine executable understands in a mod: the elements and attributes of a .modinfo file, the component (action) types, the criteria, the properties, and the codes returned to the mod browser. The names are the string literals of the code that parses and applies mods (Modding::XmlModLoader, ModLoaderService, the Modding* handlers and criteria classes); they are cross-checked against the 42 .modinfo files that ship with the game, so each row shows whether the game itself uses the name.
What is verified. The name exists in the exe, and the function that uses it (or the count in the shipped files). What is inferred. The explanation of what a component or criterion does: it comes from the handler class name, the files that use it and the strings inside its handler, and none of it was tried in the running game.
There are two styles in use. Old-style files list components under InGameActions / FrontEndActions with a separate ActionCriteria block (used in 36 places by the shipped files); newer files use Components and Settings (6 places). The exe reads both.
Names that the exe reads but no shipped file uses are options the game supports without showing an example (for example AffectsSavedGames appears once, Blocks, ConflictsWith and Exclude never).
Contents
Elements of a .modinfo file
XML elements the exe reads in a mod file (<Mod>, <Properties>, <Components>, ...). "Shipped" counts how many times the element appears in the .modinfo files that come with the game.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
File |
— |
4767 |
Priority |
— |
— |
Properties |
Key-value children describing the mod (at the root) or a component. |
210 |
— |
XmlModLoader::ParseModXml |
— |
Criteria |
— |
140 |
id, any |
XmlModLoader::ParseModXml |
— |
Mod |
— |
62 |
id, title |
— |
— |
Files |
The list of every file of the mod (relative paths); files outside this list are not packaged. |
42 |
— |
XmlModLoader::ParseModXml |
— |
ActionCriteria |
Container of Criteria blocks (old style). A Criteria has an id; an any attribute makes it true when any child is true instead of all. |
37 |
— |
XmlModLoader::ParseModXml |
— |
ConfigurationId |
— |
37 |
— |
— |
— |
Group |
— |
37 |
— |
— |
— |
Value |
— |
37 |
— |
XmlModLoader::ParseModXml |
— |
InGameActions |
Old-style list of components that apply while a game runs; each action may name criteria. |
36 |
— |
XmlModLoader::ParseModXml |
— |
FrontEndActions |
Old-style list of components that apply in the front end (menus). |
35 |
— |
XmlModLoader::ParseModXml |
— |
Include |
Pulls in another mod's action: mod_id and action_id select it and required says whether it must exist. |
28 |
mod_id, action_id, required |
XmlModLoader::ParseModXml; ModAssociationsService::GetComponentReferences |
— |
Items |
The files a component processes, as File children. |
27 |
— |
XmlModLoader::ParseModXml |
— |
References |
Mods this mod works with (soft references). |
17 |
— |
XmlModLoader::ParseModXml |
— |
LocalizedText |
The newer-style name for text content; handled by the text action. |
16 |
— |
XmlModLoader::ParseLocalizationBuffer; XmlModLoader::ParseModXml |
— |
Dependencies |
Mods that must be present (hard dependencies). |
8 |
— |
XmlModLoader::ParseModXml |
— |
ReverseReferences |
Mods that should treat this mod as a reference (the reverse direction). |
8 |
— |
XmlModLoader::ParseModXml |
— |
Components |
New-style list of components (actions that change the game). |
6 |
— |
XmlModLoader::ParseModXml |
— |
Settings |
New-style list of setting components (configuration, maps). |
6 |
— |
XmlModLoader::ParseModXml |
— |
Text |
— |
5 |
id |
— |
— |
Block |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetModReferences |
— |
Blocks |
Mods that cannot be enabled together with this one. |
0 |
— |
XmlModLoader::ParseModXml |
— |
ConflictsWith |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetComponentReferences |
— |
Dependency |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetModReferences |
— |
EnglishText |
— |
0 |
— |
XmlModLoader::ParseLocalizationBuffer |
— |
Exclude |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetComponentReferences |
— |
Language |
— |
0 |
— |
XmlModLoader::ParseLocalizationBuffer |
— |
Priority |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
Reference |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetActivationOrder |
— |
Replace |
— |
0 |
— |
XmlModLoader::ParseLocalizationBuffer |
— |
Required |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetComponentReferences |
— |
Requires |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
ReverseDependencies |
Mods that depend on this mod (the reverse direction). |
0 |
— |
XmlModLoader::ParseModXml |
— |
ReverseDependency |
— |
0 |
— |
ModAssociationsService::GetModReferences |
— |
ReverseReference |
— |
0 |
— |
XmlModLoader::ParseModXml; ModAssociationsService::GetModReferences |
— |
Attributes the exe reads
XML attributes the exe reads on those elements (mod_id, action_id, criteria, required, inverse, ...). id, version, title and any are read by generic code and not found as separate strings.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
en_US |
— |
5 |
— |
XmlModLoader::ParseLocalizationBuffer |
— |
action_id |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
criteria |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
inverse |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
mod_id |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
required |
— |
0 |
— |
XmlModLoader::ParseModXml |
— |
Mod properties (<Properties> of the mod)
Key-value children that describe the mod.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
Name |
— |
49 |
— |
— |
— |
Description |
— |
47 |
— |
— |
— |
Authors |
— |
42 |
— |
— |
— |
CompatibleVersions |
Mod property: game versions the mod claims to work with. |
42 |
— |
— |
— |
Teaser |
— |
42 |
— |
— |
— |
EnabledByDefault |
Mod property: enabled when first installed. |
34 |
— |
— |
— |
LoadOrder |
Mod property: ordering among mods. |
17 |
— |
— |
— |
SupportsSinglePlayer |
Mod property: usable in single player. |
7 |
— |
— |
— |
EnableByDefault |
— |
2 |
— |
— |
— |
AffectsSavedGames |
Mod property: whether the mod changes saved games (saves then record the mod). |
1 |
— |
ModLoaderService::ParseMod |
— |
DisabledAtStartup |
Mod property: starts disabled. |
1 |
— |
— |
— |
ShowInBrowser |
Mod property: shown in the Additional Content browser. |
1 |
— |
— |
— |
SupportsMultiplayer |
Mod property: usable in multiplayer. |
1 |
— |
— |
— |
Trusted |
Mod property: marks the mod as trusted (shipped content). |
1 |
— |
— |
— |
Mod database fields
Names that the exe handles when it parses a mod into Mods.sqlite rather than as .modinfo input: version, creation and update times, IsBasic, DBVersion, dependencies.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
Created |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
DBVersion |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
Dependency |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
IsBasic |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
LastUpdated |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
Version |
— |
0 |
— |
ModLoaderService::ParseMod |
— |
Component and action types
The things a mod can do. Old-style files list them under InGameActions and FrontEndActions, newer files under Components. The handler class is the code that applies the component.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
UpdateDatabase |
Loads the listed XML or SQL files into the game database when the component's criteria are met. A Properties child can carry a RuleSet. In Settings the same files go into the configuration database (game setup options). |
163 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateDatabase (0x260150); ModdingUpdateConfigurationDatabase (0x260880) |
ReplaceUIScript |
Replaces a UI Lua script: Properties carry LuaContext (the original) and LuaReplace (the replacement). Shipped scenarios use it heavily. |
119 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingReplaceUIScriptComponentHandler (0x25cb50) |
UpdateIcons |
Registers icon atlases and icon definitions. |
79 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateIconsAction (0x260cd0) |
UpdateText |
Loads localized text (XML or SQL files) into the text database. |
79 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateTextAction (0x261160) |
UpdateColors |
Adds colors and player colors to the color manager database. |
68 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateColorsAction (0x24e760) |
UpdateArt |
Adds art definition files. The exe's symbol list has no handler class of this name; it may be handled by the generic file path. |
67 |
id, criteria |
AppModdingFramework::AppModdingFramework |
— |
ImportFiles |
Makes the listed files visible to the game file system so that other components and scripts can use them. |
34 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingImportFilesAction (0x257ac0) |
UpdateLogitechARX |
Assets for the Logitech ARX second-screen app (the handler works with png and html files). |
27 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateARX (0x25f970) |
UpdateAudio |
Adds audio data (sound banks). |
25 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUpdateAudio (0x25fe00) |
AddGameplayScripts |
Adds Lua scripts that run in the gameplay (GameCore) Lua context. |
10 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingGameplayScriptComponentHandler (0x257700) |
AddUserInterfaces |
Adds a UI context (Lua and XML) to a UI layer. A Properties child names the Context (the layer). |
8 |
id, criteria |
AppModdingFramework::AppModdingFramework |
ModdingUserInterfaceComponentHandler (0x261af0); ModdingUISettingHandler |
AddMap |
Registers a map file in the map list (a Settings entry, used by the front end). |
5 |
id |
AppModdingFramework::AppModdingFramework |
ModdingMapSettingHandler (0x258ba0) |
GameplayScripts |
Newer-style name for AddGameplayScripts. |
4 |
id |
AppModdingFramework::AppModdingFramework |
ModdingGameplayScriptComponentHandler (0x257700) |
ModArt |
Newer-style name for art content. |
3 |
id, criteria |
AppModdingFramework::AppModdingFramework |
— |
None |
— |
2 |
id, criteria |
— |
— |
Icons |
The newer-style name for icon content. |
1 |
id |
AppModdingFramework::AppModdingFramework |
ModdingUpdateIconsAction (0x260cd0) |
LocalizedText |
The newer-style name for text content; handled by the text action. |
1 |
id |
AppModdingFramework::AppModdingFramework |
ModdingUpdateTextAction (0x261160) |
UpdateARX |
Same handler as UpdateLogitechARX under its shorter name. |
1 |
id |
AppModdingFramework::AppModdingFramework |
ModdingUpdateARX (0x25f970) |
AddWorldBuilderMap |
Registers a World Builder map. |
0 |
— |
AppModdingFramework::AppModdingFramework |
ModdingWorldBuilderSettingHandler (0x262060) |
Custom |
A settings container whose Items files are configuration files (loaded into the configuration database). |
0 |
— |
AppModdingFramework::AppModdingFramework |
— |
DoNothing |
A placeholder component with no effect. |
0 |
— |
AppModdingFramework::AppModdingFramework |
ModdingDoNothingAction |
UserInterface |
Newer-style name for AddUserInterfaces. |
0 |
— |
AppModdingFramework::AppModdingFramework |
ModdingUserInterfaceComponentHandler (0x261af0); ModdingUISettingHandler |
Component properties
Key-value children of a component (<Properties> inside it).
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
LuaContext |
— |
119 |
— |
— |
— |
LuaReplace |
— |
119 |
— |
— |
— |
RuleSet |
— |
19 |
— |
— |
— |
Context |
— |
8 |
— |
— |
— |
Group |
— |
7 |
— |
— |
— |
Setting types (<Settings>)
Component types that appear under Settings in shipped files.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
Custom |
A settings container whose Items files are configuration files (loaded into the configuration database). |
6 |
id |
— |
— |
Map |
— |
2 |
id |
— |
— |
Icons |
The newer-style name for icon content. |
1 |
id |
— |
ModdingUpdateIconsAction (0x260cd0) |
LocalizedText |
The newer-style name for text content; handled by the text action. |
1 |
id |
— |
ModdingUpdateTextAction (0x261160) |
ModArt |
Newer-style name for art content. |
1 |
id |
— |
— |
UpdateColors |
Adds colors and player colors to the color manager database. |
1 |
id |
— |
ModdingUpdateColorsAction (0x24e760) |
Criterion types
Conditions that decide whether a component applies, written in a <Criteria> block (referenced by the criteria attribute of a component). Check is the exe function that evaluates it.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
LeaderPlayable |
True when the leader is playable in the current setup. |
126 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
LeaderPlayableCriterion (0x255740) |
RuleSetInUse |
True when the named ruleset is in use. |
111 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
RuleSetInUseCriterion |
ConfigurationValueMatches |
True when a game, map or player configuration value (ConfigurationId) equals Value; Group says which configuration (for example Game, Map, Player) and Player selects the player. |
37 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
ConfigurationValueMatchesCriterion (0x2543d0) |
ModInUse |
True when the mod with the given id is active. |
12 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
ModInUseCriterion |
GameCoreInUse |
True when the named GameCore (ruleset DLL) is in use. |
4 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
GameCoreInUseCriterion |
ModIsEnabled |
Setting criterion: true when the mod is enabled. |
1 |
— |
— |
ModIsEnabledCriterion |
AlwaysMet |
Criterion that is always true. |
0 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
AlwaysMetCriterion |
ConfigurationValueContains |
True when the configuration value contains the given value (list-style values). |
0 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
ConfigurationValueContainsCriterion |
GameModeInUse |
True when the game mode matches: WorldBuilder, SinglePlayer, HotSeat or MultiPlayer. |
0 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
GameModeInUseCriterion (0x2552c0) |
MapInUse |
True when the named map is selected. |
0 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
MapInUseCriterion |
NeverMet |
Criterion that is never true. |
0 |
— |
ModdingComponentDiscoveryService::ModdingComponentDiscoveryService |
NeverMetCriterion |
Criterion parameters
Child names of ConfigurationValueMatches.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
ConfigurationId |
— |
0 |
— |
ConfigurationValueMatchesCriterion::Check |
— |
Group |
— |
0 |
— |
ConfigurationValueMatchesCriterion::Check |
— |
Player |
— |
0 |
— |
ConfigurationValueMatchesCriterion::Check |
— |
Value |
— |
0 |
— |
ConfigurationValueMatchesCriterion::Check |
— |
Setting criterion types
Conditions available to settings.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
AlwaysMet |
Criterion that is always true. |
0 |
— |
ModdingSettingDiscoveryService::ModdingSettingDiscoveryService |
AlwaysMetCriterion |
ModInUse |
True when the mod with the given id is active. |
0 |
— |
ModdingSettingDiscoveryService::ModdingSettingDiscoveryService |
ModInUseCriterion |
ModIsEnabled |
Setting criterion: true when the mod is enabled. |
0 |
— |
ModdingSettingDiscoveryService::ModdingSettingDiscoveryService |
ModIsEnabledCriterion |
ModIsInstalled |
Setting criterion: true when the mod is installed. |
0 |
— |
ModdingSettingDiscoveryService::ModdingSettingDiscoveryService |
ModIsInstalledCriterion |
NeverMet |
Criterion that is never true. |
0 |
— |
ModdingSettingDiscoveryService::ModdingSettingDiscoveryService |
NeverMetCriterion |
Values of GameModeInUse
The game modes the criterion can test.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
HotSeat |
— |
0 |
— |
GameModeInUseCriterion::Check |
— |
MultiPlayer |
— |
0 |
— |
GameModeInUseCriterion::Check |
— |
SinglePlayer |
— |
0 |
— |
GameModeInUseCriterion::Check |
— |
WorldBuilder |
— |
0 |
— |
GameModeInUseCriterion::Check |
— |
Mod requirement status codes
Why a mod cannot be enabled (strings returned by Modding.CheckRequirements).
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
BlockedByAssociation |
Mod status: another mod blocks this one. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
ConflictsWithExclusivity |
Mod status: conflicts with an exclusive mod. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
ContainsDuplicates |
Mod status: the mod set contains duplicates. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
InvalidMod |
Mod status: the mod could not be read. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
MissingDependencies |
Mod status: a required mod is missing. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
OutdatedGameVersion |
Mod status: the mod does not list the game version. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
OwnershipRequired |
Mod status: the player must own content the mod needs. |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
UnknownStatus |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModRequirementsStatus |
— |
Workshop subscription status values
Strings returned by Modding.GetSubscriptionDetails.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
Downloading |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
DownloadPending |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
Installed |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
LastUpdated |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
NeedsUpdate |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
Status |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
Subscribed |
— |
0 |
— |
AppLuaModdingLibrary::lGetSubscriptionDetails |
— |
Modding.GetModInfo result fields
Field names of the table the Lua function returns.
| Name |
What it is (inferred) |
Shipped |
Seen with |
In the exe |
Handler or check |
Allowance |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Created |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Enabled |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Handle |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Official |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Source |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
SourceFileName |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
SubscriptionId |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Teaser |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |
Unknown |
— |
0 |
— |
AppLuaModdingLibrary::lua_PushModInfo |
— |