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 —