Home › Engine executable functions

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.

Engine executable functions

A searchable index of the engine executable CivilizationVI.exe (DX11, July 2024 build). The Windows build has no symbols and no class information, so function names come from the Linux build of the same engine, which exports about 199,000 names; a Windows address is listed where the same function could be found there. 1565 functions exist only on Windows (no Linux symbol): the exports named by the PE export table (ForgeUI, Havok), and Lua wrappers and control thunks named by the registration code, WorldView event handlers, the engine utility vtable and the debug console handlers; their Linux address is blank.

What the addresses mean

Windows addresses are RVAs (add the image base 0x140000000 for the address Ghidra shows). Linux addresses are virtual addresses in the Linux Civ6 executable. The DX12 executable has different RVAs and is not covered. Of the 52,101 functions the Windows executable contains, 7566 are named here; the rest have no Linux counterpart or could not be matched. The compiler merges identical functions on Windows, so several Linux names can share one Windows address.

Confidence

Confidence Functions How the Windows address was found How reliable
high 2559 name join with the Windows export table, a string anchor with two or more strings, hand-checked disassembly, name-matched Lua registration wrappers every check passed: 26 of 26 string anchors against the export ground truth, 5 of 5 Lua wrappers
medium 3183 a single string or rare-constant anchor, call-graph propagation of non-trivial functions, neighbour scoring at a strict threshold about 94-97% on hold-out tests, 12 of 12 Lua wrappers
low 1319 tiny propagated functions, a lenient neighbour threshold, order alignment unreliable: 1 of 19 checked Lua wrappers was right. Verify in the disassembly before using.
export 505 the Windows export table names it (ForgeUI and Havok); no Linux counterpart exact
unmapped 43075 no Windows address name only

The measured accuracy per method is in the analysis notes (findings/topics/exe-analysis-tooling.md). Names come from the Linux build and can differ in spelling from the Windows build (template arguments, calling conventions).

Categories

Category What it is Functions With a Windows address
other Everything not matched to a subsystem by its name: template instances, standard-library code, small helpers. 29038 2771
ForgeUI The UI toolkit: controls, input, tooltips, animation, and the Lua exposure of the controls. 4942 1699
GameCore bridge Code that talks to GameCore: the cache of game state, event translators and handlers, the engine utility interface. 2794 880
WorldView The 3D map renderer: terrain, landmarks, units, clutter, water, cameras. 2409 337
Lua Lua libraries and bindings hosted by the exe (see the Lua tables). 1647 604
Lua (Havok) Havok Script (the Lua virtual machine) functions the exe exports. 1501 61
FiraxisLive Firaxis Live / My2K online services client. 1492 93
VFX The visual effects system. 1292 155
base library Engine base classes: memory, strings, containers, utilities. 834 75
Network Multiplayer: sessions, lobbies, matchmaking, cloud turns. 585 191
Graphics The rendering back end: device, shaders, command streams. 558 124
Modding The mod framework: loading, ownership checks, content handling. 557 166
StrategicView The 2D strategic map. 498 34
Platform Operating system and platform layer. 435 67
Synthesis Terrain synthesis: ridgelines, rivers, coast splines. 414 40
Audio Audio integration and the systems that drive it. 395 29
FOW Fog of war. 297 35
Database Access to the game database. 279 27
Terrain Terrain context, cells and baking. 185 15
App The application: start-up, game states, the main loop. 183 52
library Third-party libraries. 117 75
GameState Game state objects of the application layer. 106 26
Events The event system itself (see engine events). 64 5
Minimap The minimap. 19 5

Categories were assigned from the function names and namespaces and are approximate; descriptions are inferred from them.