Basic Guide to installing mods

From Nexus Mods Wiki
Jump to: navigation, search

Overview

First of all, it is not possible to modify XCOM:Enemy Unknown 2012 (XCOM:EU 2012) for any game console. Only computer versions can install mods.

If you are getting "application error 0xc0000142", you have a so-called "non Steam" (as in "cracked") version of the game. (Even the version sold on CD requires a Steam account and internet connection.) The Nexus site rules prohibit anything supporting piracy or help with this problem. If you believe you have a legitimate Steam version of the game, then this is indicating a corrupted file. Use the Steam "verify local files" option in the Library section of the Steam Console and it should replace the affected file.

Note that the initial release is called "Enemy Unknown" (EU). The later expansion release (as a "DownLoadable Content" or "DLC" addon) is known as "Enemy Within" (EW). Mods are written for specific releases, and are not generally interchangeable. EW mods can not be expected to work with EU, and vice versa. The popular "Long War" (LW) mod is not an official release from Firaxis, but is so extensive a reworking of the game it is regarded by many as another (unofficial) expansion. "Long War" is not compatible with other mods that are not specifically written for use with it, even if they work with the vanilla version of the game.

XCOM:EU 2012 is not (at this time: April 2013) considered a 'modder friendly' environment. Despite the presence of various configuration files, for the most part the ones you would expect to be able to 'tweak' to have an effect are not actively used by the game itself by default, except in a very limited set of instances. The vast majority of changes have to be made by altering the hex code of the game executable file XComGame.exe, either directly or indirectly. (More on this is the Details section.) As a consequence, every time a patch to the game is released, or Steam 'verifies' the game files, any changes by mods installed will be removed and vanilla files restored, and eventually you will find it necessary to reapply all your desired mods. Plan ahead for this and develop packages for any manual changes you make.

Fortunately, some techniques and tools have been developed to make installing mods more accessible to those who do not wish to directly make the changes themselves. However, the process may require the use of several tools and is not as easy or straight forward as with other games. Take the time to educate yourself first.

At this time there is no direct support for modding provided by Firaxis, such as a Software Development Kit (SDK) or a formal mechanism for applying mods. Mod makers have to tease out the information from the hex code of the game, and despite great strides, it is a long and laborious process. Fortunately the game uses the Unreal Game Engine, which is licensed from a third party and used by a number of other games. Hence a fair amount of general game engine information is available as a foundation. The Modding Tools - XCOM:EU 2012 page has the majority of these third-party resources. Some others may be found on the Other Web Resources - XCOM:EU 2012 page. The 'known information' about XCOM:EU 2012 is found in various articles under the Category:XCOM_Modding.

Everyone is advised to read Navigating the XCOM Wiki to understand how to locate desired articles.

Checklist

The following is a checklist of points discussed in the main article below. It's provided to help diagnose the most common problems people have after installing a mod. It assumes that you have actually read the relevant sections of this article, and does not include everything discussed in those sections. These are simply the most common overlooked steps leading to problems. They also form the fundamental questions asked when looking for help.

XCOM on other platforms than Windows (i.e. Mac OS/X or Linux or ARM/IOS devices) have significant differences in file and hex offset locations. See the appropriate sections in the Table of Contents.

  • Which version of the game (EU or EW) and "patch level", for which platform (Windows, Linux, Mac, ARM/IOS) have you tried before it broke?
  • Have you tested EU/EW (twice) to the main menu prior to installing any mods (see The Loose Files)?
  • Have you moved Windows Steam games out from the "C:\Program Files" (or "C:\Program Files(x86)") tree to another folder (see Environment)?
  • Are you running with Steam in "off-line" mode (see Environment)?
  • Have you disabled the "phone home" feature (see Phoning Home)?[1]

[1] Note this can be handled for you in the "Options" menu of PatcherGUI mod installation utility, or manually as described in this article.

The instructions on most download pages assume you have already performed the above. And they are never a substitute for reading the included documentation, such as "ReadMe" files.

The following are general troubleshooting questions you can expect when asking for help in trying to isolate the problem:

  • What mods have you installed and any "in game" options enabled, such as "Training Roulette"?
  • Which version of which mods (meaning: is the mod intended for EU or EW; they are not interchangable and may be patch level dependent)? Not all mods are compatible with each other, and some have already been incorporated into other mods. Use mod version numbers, not vague terms like "latest". If nothing else there are "uploaded" dates on the mod download page.
  • Have you installed TexMod? If so, you need to uninstall it, install all other mods first, and then install TexMod last (because it requires renaming the game executable and messes up other mod installations).
  • Try installing only one mod at a time, test it, and report with details on what is installed and the nature of any error messages the system gives. See the wiki article "Troubleshooting basics".

If you are still having problems getting mods to install, please answer these checklist questions in your request for help on the Nexus "XCOM Technical Support" forum.

Problems with getting your own custom mod to work should be addressed to the Nexus "XCOM Mod Troubleshooting" forum.

Problems with a specific mod created by someone else should be addressed to the mod author in the "comments" or "forum" section of the mod download page on the Nexus.

The more details you can initially provide, the more quickly you are likely to get a solution. If the problem cannot be reproduced by others, it's most likely specific to your situation.

Details

Even if all you desire is to install mods and play the game, there are some things you need to understand about the current state of the modding process.

The Executable

The game executable file XComGame.exe has embedded in it ALL of the files it requires to display and run the game. These are generally referred to as the 'embedded files', which can be confusing since we often are referring to files within one file. The key point is that the embedded files in the EXE are all in a 'compressed and packed' archive file format that the game engine can deal with.

(See Archive file. Here the term packed simply means concatenated, or added one after the other, into a single archive. Compressed means they have been reduced in size, which typically refers to replacing multiple instances of a re-occurring pattern with placeholders. (This is where the file turns into a 'coded message'.) Many people do not realize that it is possible to pack multiple archive files together into another archive file, with the same or different formats, but that is what is happening with XCOM. Self-extracting archives are simply an EXE wrapper around an archive that automatically takes care of the unpacking and decompressing as needed. The game EXE is a bit more than just a wrapper, but the principle is the same.)

The compression makes changes to these elements like trying to alter a 'coded message'. For this reason, only the parts of the EXE that do not contain the embedded files are safe to directly apply hex changes, and most mods avoid direct EXE edits entirely, using specialized tools instead.

The Resource Cache

The term resource cache is often used by modders to refer to these 'embedded files', but technically the term refers to the area of the EXE resources identified by the Resource Hacker tool (see Tools section) as resource type RCData. This tool has an internal script compiler and decompiler that enables it to work with the 'packed and compressed' format of the embedded files, and successfully make direct changes in the EXE. Searching for RCData in a hex editor will fail to locate the resource cache, so the term should be regarded as tool specific.

Various sub-sections under RCData in Resource Hacker present different groups of information in different formats. Of interest to most modders are sections:

1020/1033: XComGame.XGTacticalGameCore
1030/1033: XComGame.XComMPData
1040/1033: XComGame.XGLoadoutMgr

The Loose Files

These same files that are embedded in the game EXE are also present in various installation sub-folders under the <Steam install path> of ..\Steam\steamapps\common\.
NOTE: "..\Steam" means the drive and whatever your "games" folder is called where the "Steam" folder is located (i.e. "C:\Games\Steam"). The ".." refers to the "parent path" of the "Steam" directory "tree". "Directory" and "folder" are interchangeable terms.

  • XCOM is installed under the <Steam install path> in ..\XCom-Enemy-Unknown (also known as the <XCOM root>) folder:
    (i.e. "C:\Games\Steam\steamapps\common\XCom-Enemy-Unknown").
    This is the location most mod installers want you to point out to them.
  • "Enemy Unknown" (EU) is one level further down the <XCOM root> tree in ..\XComGame\:
    (i.e. "C:\Games\Steam\steamapps\common\XCom-Enemy-Unknown\XComGame").
  • "Enemy Within" (EW) is installed in it's own sub-folder under the <XCOM root> folder as ..\XEW\:
    (i.e. "C:\Games\Steam\steamapps\common\XCom-Enemy-Unknown\XEW").
  • If you have installed any DLCs, such as Slingshot, these will be under ..\XComGame\DLC\PCConsole\<DLC_Name> folders, as in:
    "Elite Soldier Pack" = "C:\Games\Steam\steamapps\common\XCom-Enemy-Unknown\XComGame\DLC\PCConsole\DLC_PackIn"
    "Slingshot" = "C:\Games\Steam\steamapps\common\XCom-Enemy-Unknown\XComGame\DLC\PCConsole\DLC_Day060"

Some of these DLC files may also be duplicated under your local Windows account <My Games path>\XCOM folder as well:

  • i.e. "C:\Users\<your account name>\My Documents\My Games\XCOM - Enemy Unknown" and subfolders,
    or "C:\Users\<your account name>\My Documents\My Games\XCOM - Enemy Within" and subfolders.

The files found under the <XCOM root>\<EU|EW game> and <My Games path>\XCOM folders are collectively referred to as the 'loose' files. Some of them (such as UPK files) also are in a 'compressed and packed' archive file format. While these files can be 'decompressed' and then 'unpacked' into individual component files, general practice is to just 'decompress' them and use a hex editor to apply changes to the 'still packed' archive. A decompressed but packed 'loose' file will be used by the game engine, as will a 'loose' compressed file, over the one embedded in the EXE. Apparently the difference in file size informs it as to which to use.

Mods in general are based upon making hex changes to the 'decompressed but still packed' 'loose' files under the <XCOM root>\<EU|EW game> sub-folders. This is not a requirement, but simply has proven to be the simplest method. While tools exist to 'unpack' a decompressed archive into it's separate constituent files, a suitable 'repacker' is not available. In addition, no one has discovered a method to reliably replace an embedded file with one that has been repackaged, nor is it necessary, so working with the 'decompressed but still packed' loose files remains the most efficient method.

Plaintext Files

Not all files require hex editing. The INI and INT files are plaintext, and can be edited with any plain text editor (like Notepad, not Write or any word processing program, which insert special formatting codes.) However, there are some caveats; so if you desire to get into this aspect of modding, read Modding_XCOM:EU_2012 and it's related articles.

The plaintext files are there in part to allow the player to make simple changes to game variables. With the release of Enemy Within (EW), Firaxis deliberately moved a number of variables previously only found buried with the code to INI files, presumably to make them available to the modding community. In addition, the EW expansion was in many ways treated like other downloadable content (DLC), and also as a separate game. The EW game files are installed in a XEW sub-folder under the <Steam install path> of XCOM (i.e. .\Steam\steamapps\common\XCom-Enemy-Unknown\XEW). But when running, it works from XCOM-prefix named versions located in the MyDocs\MyGames folder of the Default-prefix named INI files that are located in the <Steam install path>, as with previous DLCs.

In the orginal EU EXE, all the loose INI files were blocked from being accessed fully, by default. EW changed this to only blocking DefaultGameCore.INI by default. (See the Enemy With entry under Recent Discoveries for how to change this.)

As is the case with DLCs, the XCOM-prefix versions of the INIs are merged versions of Default-prefix and DLC specific INIs. The files in the root <Steam install path> XCom/XEW folders are the "master" copies. These master files all begin with "Default" as a prefix (e.g. DefaultGameCore.ini, DefaultGameData.ini). Whenever the game is launched, near the very beginning of execution it performs merge operations, creating copies of the config files in the \My Games\...\Config\ folder. These merged files all begin with an XCom prefix (e.g. XComGameCore.ini, XComGameData.ini). For the present state of Enemy Within these are simply copies (but with all comments stripped out). However, once DLC for Enemy Within is released, these \MyGames versions are expected to be merged versions of the base game + DLC config files as before. These XCOM-prefix files are reconstructed (or are supposed to be) every time the game launches so altering the versions in \MyGames probably will be ineffective. By all appearances Firaxis wants to encourage making your mods whenever possible to the "master copy" Default-prefix versions of the INIs.

Something that may not be apparent is that patches and updates to the game can not only replace the game EXE (as might be expected), but also any of the 'loose' compressed files. Consequently not only must mods be reapplied after patching, they may also require being updated in turn. Be patient. The more complex the mod, the longer it takes to update, test, and release. If you are impatient for a mod maker to update your favorite mod, consider making a donation as an incentive. (Guilt is a powerful motivator, and "money talks". Or nags, if you prefer.)

Environment

  • See Installing Games on Windows Vista+ for why you should and how to move your Steam folder out of the Program Files folder tree. (On 64-bit versions of Windows, 64-bit programs are installed under "C:\Program Files" while 32-bit programs are installed under "C:\Program Files(x86)", by default. Both folders are otherwise treated the same: as "system folders" with special protections against mal-ware.)
  • See Steam and mods for instructions on how to set up your Steam account to work with mods.

The disabling of the 'phone home' capability as presented in Steam and mods is somewhat optional for XCOM:EU - 2012. If you look into ...Users\<YourUserName>\Documents\My Games\XCOM - Enemy Unknown\XComGame\Logs\EMS\ folder, you'll find XComGameCore.INI. It contains lines that are responsible for clearing Armors, Characters and Weapons arrays. Arrays are filled with new entries afterwards.

New entries in EU XComGameCore.INI (changelist 398179; P6) compared with entries in DefaultGameCore.INI (changelist 346964, 356266, 398179; P4-P6) perfectly match.

It is reported that in over a year of playing modded XCOM with 'phone home' still enabled, only the Armors, Characters or Weapons changes had to have 'phone home' disabled.

In the case of modding Armors, Characters, and Weapons in DefaultGameCore.INI, or when the MultiPlayer menu being selected normally causes XComMPGame.INI to be patched: Steam in 'offline' mode means it attempts to use the (edited) hosts file.

In the case of the MultiPlayer menu being selected, Steam in 'offline' mode disables Ranked and Quick Match, Leaderboards and View Invites buttons. Only Custom Match and Edit Squad buttons are available. This applies to EU and EW. Alternative modding approaches to editing the hosts file are presented in the article Class: IniLocPatcher - XCOM:EU 2012#Hosts file alternatives, which enable disabling specific files from being patched. These have proven to be necessary for some players circumstances.

See also the wiki article Multiplayer and mods.

Languages other than English

If you need to change the game so you can play in a more familiar language than English and are not using TexMod, then use your Steam Client to go to the "Steam Library" and Right-click on "XCOM: Enemy Unknown". Select "Properties" for the game. For:

  • Enemy Unknown -> Go to the LANGUAGE tab and select the desired language. Expect around 200 MB of new data to be downloaded.
  • Enemy Within -> The same as for "Enemy Unknown".

Alternatively you can click on SET LAUNCH OPTIONS under the "Properties" GENERAL tab and input your language there. This will skip the 200 MB download intended for EU. (Tested with the French language.)

If you are using TexMod, please see the Modifying Textures wiki article for special considerations with other languages.

Note that installation problems with the game language set to other than INT (English) can sometimes be resolved by switching back to English for installation, and then to your preferred language once installation is successful.

Later versions of Windows

Issue: Later versions of Windows provide backward compatible DirectX libraries, such as Win10 which has DirectX12 drivers, but the DX9 driver the game is expecting is not being found.

  • Cause-1: Win10 has DirectX12 drivers, but the DX9 driver the game is expecting is not being found.
While Win10 comes with DirectX12 installed and is backwards compatible with older DX versions, older games do not know that and are looking for specific versions of DX library files (i.e. d3d9_32.dll) and not finding them. So you need to install the appropriate "DirectX End-User Runtimes" as well: ones which are compatible with Win 8.1+.Note that you need the 32-bit version for 32-bit games. I make it a practice to always download both the 32-bit and the 64-bit versions of any libraries I manually install, so I am covered either way. (There is a reason they published a version for both 32-bit and 64-bit. They are not "interchangeable", and are separate installs going into different locations.)
(Games that used DX7 and 8 are murky territory. Many will run on OS's newer than XP, but may require fixes/tweaks. Always use the latest available "runtime" versions of those DX libraries.)
Some games try to install an older DX version they come bundled with. Those versions may not be compatible with the later versions of Windows, which is why you should manually install the version you know is compatible. Then those games will see that DX version is already installed and not try to install their bundled version causing incompatibility problems.
  • Solution-1: For DX9, manually install the DirectX End-User Runtimes (June 2010) which is Win 8.1+ compatible. Download the full runtime package. DO NOT use the "Web Installer" version.
  • When the DX installer asks where to install the files to, you choose any folder you like, but generally have it unpack the files to a folder on the desktop or one dedicated to that purpose anywhere, because this folder can be deleted or emptied after the final install is done. (DirectX does not actually get installed at this point. The files are only 'unpacked' from an archive)
  • Once the files are unpacked to this folder you open the folder and locate DXSETUP.exe (the actual installer).
  • Run this installer (as an Administrator) to finalize the DirectX re-installation.
  • When the installer is finished delete this folder.
Each game uses a specific DX file, or files, (e.g. d3dx9_32).
A newer game may use two DX files (e.g. d3dx9_42 and d3dx10_42).
See the MS article How to make Win10 run DirectX 9.0 for more details.
  • Cause-2: The game is not finding all the asset and resource files it requires. Especially under Windows 10, some files upon installation can get "black listed", which means they get deleted immediately without the installer realizing it.
  • Solution-2a: If you haven't already, move the game out of the default "C:\Program Files" folder. See the wiki article Installing games on Windows Vista+ for instructions.
  • Solution-2b: If your graphics card is an "Intel" brand or on-board graphics chip, you need to install the mod Intel HD graphics Bypass package (from the FO3 section of the Nexus mod site but it works for FNV as well, and may work for XCOM as it is even later). This "by-passes" an issue with those chips by placing an expected DLL file in the game root folder.
  • Solution-2c: If you are still having problems, then you need to determine which assets are missing. Install the 32-bit version of the Dependency Walker tool. Then run "Dependency.exe", pointing to the game EXE to examine. You are looking for red entries which signal "missing assets", which means it is not finding files the game requires. Some of these will be Windows system files (typically 32-bit versions if you are running a 64-bit system; which is expected). Initially you are looking for missing game files. If there are none, then either the game files are corrupted or the "load order" needs to be fixed.
  • If you have more than a few "missing assets" (i.e. files from Steam for Windows compatibility), then fire up the game with the Steam Client in "online mode" and launch it from the Steam Library (so it will install those assets it considers "temporary" while in game that it installs upon launch. If you can get to the main menu in "windowed mode", use <Alt+Tab> to switch out of the game and then run "Dependency.exe" again against the game EXE file (while it is loaded into memory). You should now find all or most of those "red" entries are now "black".
  • If you still have "missing assets" from the game the files may be corrupted (in which case you can try to re-install or "verify local files"), or they are getting "black listed", in which case you may need to install them while in "Safe Boot" mode.
  • Otherwise, make note of which are missing and seek assistance on the XCOM Technical Support forum. Be sure to include your version of Windows, hardware specs, where you have the game installed, and what steps you have already taken.

Tools

Different tools are used to apply mods to different parts of the game, which correspond to different types of configuration files. Those types that are currently modded are UPK, INI, INT, SWF, and texture files. The various tools are described on the Modding Tools - XCOM:EU 2012 page.


Installation Essentials

It is important to note Mod release notes as to which versions of the game they are compatible with. It should NOT be assumed that any given mod is compatible with any version other than it states in it's documentation. This is especially true where offsets are given to locate the position of hex code changes. Patches usually cause changes to offset values. See the Patches section for a list of patches.

  • Set up the environment to support using mods with Steam. (See section Environment.)
  • Acquire the necessary tools. (See section Tools.)
  • Backup files to be changed. File affected by Mods are all located in sub-folders of the game installation path (aka <Steam install path>) "\Steam\steamapps\common\XCom-Enemy-Unknown\".
    • The executable XComGame.exe is located in .\Binaries\Win32.
    • Movie BIK files are located in .\XComGame\Movies.
    • UPK files are located in .\XComGame\CookedPCConsole. (SWF files are embedded in UPK files.)
    • INI files are located in .\XComGame and .\Engine sub-folder \Config.
    • INT files are located in .\XComGame and .\Engine sub-folder \Localization\INT (for English, and other country codes for other languages).
Each BALANCE Mode has its own separate table, designated by
  • BalanceMods_EASY (= 'Tutorial Difficulty'),
  • BalanceMods_NORMAL (= 'Normal Difficulty'),
  • BalanceMods_HARD (= 'Classic Difficulty'),
  • BalanceMods_CLASSiC (= 'Impossible Difficulty').
Each table has an entry for every UNIT type designated by 'eType=eChar_UNITTYPENAME', then followed by the bonuses and penalties applied to that unit. If you look back at the CHARACTERS section, you can see what each stat does, what the BASE is for that stat, and then see how the bonus/penalty will effect that unit.

Offset Location Values

Most mods are packaged with, or designed for use with, tools which locate the correct spot to begin replacing the existing hex code with the mod's replacement hex code. There are two methods of programmatically determining the correct location: by finding a pattern of sequential hex code (commonly referred to as find-and-replace); or by jumping to a location that is an offset, or so many bytes distant (commonly called an offset location), from a known starting point (usually the beginning of the file). The find-and-replace method suffers from the risk that the searched code sequence might be changed by a later patch or other mod, as well as requiring it be sufficiently unique (i.e. long) as to eliminate any other similar code sequence; while the offset method only has to be adjusted if a later patch has changed the starting location. The offset method has become more popular, and most of the mods found on this Wiki use or are adding the offset location. (Actually providing both a unique search pattern and an offset location is preferred, as both enable anyone to make their own adjustments after subsequent patches.) Some mods are simple enough to merely provide instructions with an offset location and a few byte changes to be made manually.

There are two questions modders might have when referencing a hex-code offset location value. 1) How to find that location in the file to be modified; OR 2) Given some decompiled code sequence, how to determine the equivalent hex-code and then find the offset value of the beginning location of that code in the packed UPK or executable?

Question 2 is for mod developers, so in that case direct your attention to the Hex editing UPK files article. But question 1 applies in either case, so read on.

An offset is always relative to some starting point. When modding, generally this will be the relative to the beginning of the file being modified: byte zero. However, it is always possible to be relative from some other point, so examine the instructions carefully.

When you open any hex editor (but we will use HxD here because it's in our suggested toolkit) you have to first tell it what file you want to edit. For this example we will assume we want to edit the game executable XComGame.EXE to enable INI file loading by modifying location '0x157D93A'. (The details about the necessary hex changes to enable INI file loading are available in the #Recent Discoveries section of this article.) Note the 0x prefix simply indicates that the following value is a hexadecimal number, and should be ignored. The actual offset value of the target location is 157D93A.

  1. Open HxD and then select File | Open and navigate your <Steam install path> to \XCom-Enemy-Unknown\Binaries\Win32\ and select XComGame.EXE.
  2. Select Search in the menu bar and then drop down to select Goto, or use the hotkey combination of <Ctrl+G>. (This results in the smaller box at the top of this image.)
    HxD Image
  3. Enter the offset location (157D93A) in the offset field (red box) of the Goto box, as shown in the upper part of the image. Double check that you do not have any extra characters when you either paste or type the offset value. The field has a right-justified zero by default. (Don't worry about case; HxD will automatically convert valid letters into upper case for you.)
  4. Check that the two radio buttons in that dialog box are set correctly: type of value is on hex (red box); and Offset relative to is on begin (yellow box).
  5. When you click on the OK button, the edit cursor (|) in the HxD window will be positioned at that location in the hex portion of the display (immediately to the left of the first hex character), ready to start replacing the byte with your hex changes. (Unfortunately, the editor cursors are not displayed in the image.)
    Note that a hex byte always consists of a pair of hex characters (0-9 + A-F). (See Hexadecimal.)
  6. HxD has unlimited undo operations. Use <Ctrl+Z> (or look under the Edit menu) to undo the last hex character change. Repeat as often as needed. (HxD features are described here.)

Notice that the very first column of the display for each line (in the yellow box) is also a hex value very similar to what you entered in the 'Goto' box (actually all but the very last character). Each line displays 16 bytes, starting in position zero (notice the column labels across the top line in the yellow box), with each byte consisting of a pair of hexadecimal characters. In the image the very bottom line offset is 0157D930 (red box). Our offset location is in the 0A (or 10th) column (red box) of that row. So it is entirely possible to scroll through the file to the desired offset location. <Ctrl+G> is simply faster.

To the right of the hex bytes are displayed the 16 printable ASCII characters for every 2 hex characters of each hex byte. Where there is not a printable ASCII character for a hex byte, a period is used as a placeholder.

Note that a dotted-box is displayed around the equivalent ASCII character (red box) for the same byte that the hex edit cursor is positioned at. You can edit either the hex byte or the ASCII character, but do not attempt to place a non-printable character in the ASCII display. For this reason, it is best to get used to entering only hex values and treat the ASCII display as a means of verification.

With this information, you should now be able to find the correct location to implement hex changes.

Mac OSX Offset Differences

Apple's OSX (Unix based) handles things a little differently than Windows. (For just one instance, it typically uses forward slashes (/) where Windows uses backward slashes (\). So you might see a path displayed either way.) SteamApps/common/XCom-Enemy-Unknown contains an .app file (an "application bundle", the typical OSX way to package an executable + related files; roughly the equivalent of a Windows archive file unpacked on the disk), and an XCOMData folder. Here's the directory structure:

.
├── XCOM\ Enemy\ Unknown.app
│   ├── Contents
│   │   ├── Frameworks
│   │   ├── Info.plist
│   │   ├── MacOS <- Contains the executable, 'XCOM Enemy Unknown'.
│   │   ├── PkgInfo
│   │   ├── Resources
│   │   └── _CodeSignature
│   └── installscript_osx.vdf
└── XCOMData
    ├── Binaries
    │   └── Win32 <- Contains Hashes.sha.
    ├── Engine
    │   ├── Config
    │   ├── Localization
    │   ├── Shaders
    │   ├── Splash
    │   └── Stats
    └── XComGame
        ├── Config <- Contains DefaultGameCore.ini. 
        ├── CookedPCConsole <- Contains xcomgame, xcomstrategygame, xcomshell.upk files.
        ├── Cursors
        ├── DLC
        ├── Localization
        ├── Movies
        ├── PCConsoleTOC.txt
        ├── PCConsoleTOC_DEU.txt
        ├── PCConsoleTOC_ESN.txt
        ├── PCConsoleTOC_FRA.txt
        ├── PCConsoleTOC_ITA.txt
        ├── PCConsoleTOC_JPN.txt
        ├── PCConsoleTOC_KOR.txt
        ├── PCConsoleTOC_POL.txt
        └── PCConsoleTOC_RUS.txt

Versions purchased from the Apple/Mac "AppStore" may have a different directory structure.

Note the presence of the Hashes.sha file in Binaries\Win32, which is absent from the Windows implementation. This contains the Hash check data, located at 0x00D0-0x0120 within that file, which otherwise is embedded in the Windows executable. You must change the data in Hashes.sha to Disable Hash Checks.

The last recorded (as of 13 Aug 2013) Steam patch for EU is Patch 3 on Jan 8, 2013.

Here is a screenshot for the OSX Steam version's DGC.ini offset, taken in the freeware program Hex Fiend. Everything stated above about locating an offset still applies, with the following specific deviations:

  • The encoding displayed in this screenshot is UTF32-Little Endian, which can be selected in Hex Fiend under Text Encoding -> Other as 'UTF32LE'. This displays as 32-bit memory blocks of 4 pairs of hex digits (8 digits per block) compared to the 8-bit single pair of digits for the Windows version of the editor. Only the first (8-bit) pair of hex digits for each block are significant for the ASCII display portion of the screen. But each pair of digits must be counted to find the correct offset.
  • To Jump directly to an offset location, just select Edit -> Jump to Offset and remember to include the identifying 0x so that Hex Fiend knows you're in base 16.

HexFiend Image(Thanks to psyflame for this image and general information)
Note the offset given here (0x1E7E590) is a general location. The specific offset location of the "D" (0x44) in filename DefaultGameCore.ini is 0x1E7E5E0.

For the Enemy Within (EW) DLC release, searching for the regular string DefaultGameCore in XComEW.exe doesn't generate any matches; but searching as a unicode string finds 2 matches. In the PC version it is the 2nd instance of this that has to be changed.

For the Mac / OSX version of EW, the string is found around 0x1fe7eb3. (You also need to edit the hosts file with the additional IP address and domain name for EW to prevent it phoning home, which is found in /private/etc/hosts.)

OS/X mod installation

The material in this section comes from the Nexus Mod Talk Forum thread Long War for Mac OS/X - pointers / advice?

There are basically four directory trees you're dealing with in a Steam install. This is just some arbitrary nomenclature for reference:

  1. The "game tree", where the main files are installed. This is typically ~/Library/Application Support/Steam/SteamApps/common/XCom-Enemy-Unknown. (It will be in a different place if you told Steam to install the game somewhere else when you installed it. This is the OS/X equivalent of the <Steam install path> for Windows.) It should have two subdirectories, XCOMData and XCOM Enemy Unknown.app. Note that for Enemy Within, all the relevant files are in XCOMData/XEW/XComGame. It's easy to get confused and drop them in XCOMData/XComGame by accident, in which case they won't do anything.
  2. The "app bundle tree", meaning the .app folder that you can double-click to launch the game. This is the directory XCOM Enemy Unknown.app inside the game tree above. In the finder, to show this directory you've got to right-click on XCOM Enemy Unknown and select "show package contents."
  3. The "feral tree", which lives in ~/Library/Application Support/Feral Interactive/XCOM Enemy Unknown. This directory probably won't exist until you've run the game at least once. The relevant files in here are all in the directory XEW/MacInit. As above, don't forget the XEW part.
  4. The "extract tree" is the directory where you extracted the mod files from the Windows installer with innoextract. It contains all the new files you're going to copy into the other places to install the mod. The files you want to deal with are all under the app/XComGame directory.

The versions of EU and EW from gamersgate.co.uk are reported to use these directories instead:

  • /Applications/XCOM Enemy Unknown - Elite Edition/Contents/Resources/Data/XEW (which has the following ** Binaries/Engine/XComGame
    • .../Library/Application Support/Feral Interactive/XCOM Enemy Unknown - Elite Edition/XEW
      • FeralTemp/Logs/MacInit/Profiling/SaveData/Volumes'
      • shader_log.txt file.

Versions released from other vendors may differ.

  • timgilbert has created an OS/X "dmg" installer package for Long War mod, which is now included on that mod's download page. Installer instructions may be found here. (Note this was for older versions of the beta. See next for the latest versions.)
  • The Long War team has now included a "bash shell script" installer (install-LW-OSX.sh) for OS/X, which is run from the terminal program. (This is no longer packaged as a "dmg" installer. See this article about the differences and how to recognize packages, DMG files, and other executables.) Follow the instructions for copying the package to your computer.
  • For those with the Apple "App store" version, tn6263364495 of the Nexus XCOM Forums developed the following method to use the LW install script without Steam. This was tested with LW Beta 14. Basically you need to edit the install-LW-OSX.sh file as well as copy the XCOM: Enemy Unknown - Elite Edition.app file from your /Applications/ folder to the following folder: ~/Library/Containers/com.feralinteractive.xcomenemyunknown/Data/Library/Application Support/Feral Interactive/XCOM Enemy Unknown - Elite Edition/.

Versions of XCOM purchased from vendors other than Steam, such as the Apple/Mac AppStore, may have a different directory structure. Amend the paths in these instructions as necessary.

Here are the step by step instructions.

1. EDIT install-LW-OSX.sh (Lines 7 - 15) as follows:

USERFILES=~/Library/Containers/com.feralinteractive.xcomenemyunknown/Data/Library/Application\ Support/Feral\ Interactive/XCOM\ Enemy\ Unknown\ -\ Elite\ Edition/XEW
INSTALLDIR=~/Library/Containers/com.feralinteractive.xcomenemyunknown/Data/Library/Application\ Support/Feral\ Interactive/XCOM\ Enemy\ Unknown\ -\ Elite\ Edition
INSTALL_DATA_DIR="Data/XEW/XComGame"

MOD_DATA_DIR="`dirname "$0"`/install-files"
MOD_CONFIG_DIR="${MOD_DATA_DIR}/xcomgame/config"

FERAL_OVERRIDES="xcomgame/localization/int/xcomgame.int xcomgame/localization/int/xcomuishell.int"
FERAL_OVERRIDE_DIR=XCOM\ Enemy\ Unknown\ -\ Elite\ Edition.app/Contents/Resources/MacOverrides/XEW

2. Temporarily copy the XCOM: Enemy Unknown - Elite Edition.app from your /Applications/ folder to:

~/Library/Containers/com.feralinteractive.xcomenemyunknown/Data/Library/Application Support/Feral Interactive/XCOM Enemy Unknown - Elite Edition/

3. RUN install-LW-OSX.sh in Terminal.
4. After it completes, Move XCOM: Enemy Unknown - Elite Edition.app back to your /Applications/ folder.

  • For those unfamiliar with using "shell scripts" or terminal, here are some basic guidelines.
  1. <Right-click> on the shell script install-LW-OSX.sh, and click "open with", then "other".
  2. Then search for terminal.
    • It may appear as grayed out and in that case will be un-selectable. However all you need to do is look at the bottom of that window and change Enable >Recommended Applications to Enable >All Applications and it will then be selectable.
  3. Once terminal is selected, it should automatically run the script for you.
    • If it doesn't, or indicates it cannot find the correct application, you need to investigate how to get the Bash Shell functional on your system.
  4. Once the shell script runs, you then need to type either Y or N when the script asks if you wish to keep old save games.
  • Some people have troubles with "permission denied" messages running the LW installer when using terminal. To solve this you need to run the installer as a super user: "sudo".
Here's how to do it:
    • Open the Terminal App.
    • Change directories to the folder where you extracted the "Long War Mod" files.
      Optionally, a shortcut to get to the right directory for those "Long War Mod" files works like this:
      Open Terminal and then drag the folder with the "Long War Mod" files to the "Terminal Icon" in the Dock. NOT on the already running terminal window, BUT onto the ICON in the Docking Bar.
      A new (second) Terminal window will open and this will already be in the "Long War Mod" directory.
    • Enter the following command into the Terminal window opened to the "Long War Mod" folder:

sudo ./install-lw-osx.sh

    • The terminal app will then ask for your Mac account password. Put it in and confirm with Enter.
      The Long War installation will then proceed normally.
    • Press Y or N for the questions the LW installer script asks.



  • The manual mod install process (assuming a Steam version of the game) follows for those who still have problems:
  1. Ensure the game was started at least once without the mod (fails to load menu if it never phoned home).
  2. Unpack the mod file.
  3. Replace .upk files, remove corresponding .upk.uncompressed_size file.
    The UPK files live in the game directory tree, under XCOMData/XEW/XComGame/CookedPCConsole. In the extract tree, these live in app/XComGame/CookedPCConsole.
  4. Replace Localization files in two directories (under XComGame, and in MacOverrides near the binary).
    The files in Localization (in the extract tree: app/XComGame/Localization/INT/*.int from a Windows installer) need to be replaced in two separate directories:
    1. In the game tree: XCOMData/XEW/XComGame/Localization/INT.
    2. In the app bundle tree: XCOM Enemy Unknown.app/Contents/Resources/MacOverrides/XEW.
  5. Replace Config files under XComGame.
    The config files (in the extract tree at app/XComGame/Config) go in the game directory tree at XCOMData/XEW/XComGame/Config.
  6. Delete files under MacInit in ~/Library/Application Support/Feral Interactive/<blahblah>.
    These are all under XCOM Enemy Unknown/XEW/MacInit in the feral tree. You want to delete every file in this directory, but not the directory itself.
    (You will copy and rename 2 files in there in the next step, and those two files should be the only files present when you launch the game after installing the mod.) When the game starts, it copies a lot of other files there itself.
  7. Move DefaultGameCore.ini to MacInit/XComGameCore.ini, and DefaultLoadouts.ini to MacInit/XComLoadouts.ini (all the other files will be generated from XComGame/Config)
    Here you're copying and renaming files that you already copied during step 4. These two files live in the game directory tree in XCOMData/XEW/XComGame/Config and you're copying them to the feral tree at XCOM Enemy Unknown/XEW/MacInit, and then renaming them as above.
    Alternately for this step you can just copy the files from the extract tree. Relative to the mod, they live in app/XComGame/Config, and you'll be copying them into XCOM Enemy Unknown/XEW/MacInit in the feral directory and renaming them.
  8. Block phoning home in /etc/hosts.

ARM / IOS / Android Devices

We have virtually no reports about any attempts to mod XCOM on IOS devices. What little is known in general follows:

Requires - iFile, WinSCP, iFunbox, iExplore, etc.; some sort of ability to view files and folders. Find the folder /var/mobile/Applications/"XCOM"/. The "Documents" equivalent of the Windows "My Documents" folder is under this tree.

(It would be very helpful if someone would post the complete directory structure below this point for both EU and EW/other DLC content.)

At least one person has made a modded savegame file for IOS available here.

The Android system packages games in an "obb" wrapper, much like a ZIP file. The "obb" file contains the XCom UPK files, though with different extensions than "UPK" to match Android file associations.

Bogdacutu has ported the UPKUtils package (by wghost81) to the Android OS here, which includes a tool for unpacking the "obb" file. The forum thread announcing these tools is found here.

Linux Differences

[Thanks to "wghost81" (aka "Wasteland Ghost") for the following, taken from the Nexus "XCOM Mod Talk" forum thread Modding XCOM under Linux.]

Game itself is installed under the steam library folder. Default path:

~/.local/share/Steam/SteamApps/common/XCom-Enemy-Unknown

Saved games and configs are stored in:

~/.local/share/feral-interactive/XCOM

EW files are stored under:

~/.local/share/Steam/SteamApps/common/XCom-Enemy-Unknown/xew

and

~/.local/share/feral-interactive/XCOM/XEW

Profile and saved games are stored in a savedata sub-folder; and merged configs are stored in a WritableFiles sub-folder.

Changes to INT files need to be saved to the following folders to take effect.
For EU:

~/.local/share/Steam/steamapps/common/XCom-Enemy-Unknown/binaries/share/feraloverrides

For EW:

~/.local/share/Steam/steamapps/common/XCom-Enemy-Unknown/xew/binaries/share/feraloverrides

For EU there is a hashes.sha file located in the steam game install folder under binaries/win32, but it is confirmed that the game completely ignores it so it does not need to be modified or deleted.

There is just one version.txt file under the main game install folder, which contains:

Version - 1.0 Beta 2
Built from revision - 51336 

(EW doesn't have a separate version file, so prepare for more patch mix-ups.)

Packages under cookedpcconsole are identical to the Windows versions. Therefore the same version of the UE3 UDK (Sep 2011) should be used, running under WINE. This version has support for Mac OS X. Not until the April 2014 release of the UDK for UE4.1 was native Linux support provided: "The 4.1 source code has initial support for running and packaging games for Linux and SteamOS." Source: Unreal release blog According to a user's comment related to that release here: "The last Epic game that supported Linux was UT2004. The Unreal Engine 3 SDK did not support Linux ports out of the box but porting wasn't that hard but still required quite some work. It's not a 'press a button and done' solution as with 4.1. Also you will now be able to get official support when something is wrong with your Linux port. "

Linux doesn't have the "Program Files" folder tree "protected access"/UAC problem, so the default install path will do.
"Phoning home" can be disabled via /etc/hosts.deny (su or sudo needed):

# Prevent Steam from Phoning Home (XCOM 2012)
ALL: prod.xcom.firaxis.com
ALL: 65.118.245.165
# Prevent Steam from Phoning Home (XCOM EW 2012)
ALL: prod.xcom-ew.firaxis.com
ALL: 65.118.245.139

If modifying hosts.deny isn't working for you, add two following lines to /etc/hosts:

127.0.0.1       prod.xcom.firaxis.com
127.0.0.1       prod.xcom-ew.firaxis.com

And, of course, disable Steam auto-updates.

EW writes launch.log file to ~/.local/share/feral-interactive/XCOM/XEW/Logs, but for EU debugging features are disabled (confirmed by Feral member on Steam forums).

INI editing works differently too. The Linux version ignores the DefaultGameCore.INI file (the same as the Windows version does by default) but instead of modifying game executable to enable INI loading, if you copy:

~/.local/share/Steam/SteamApps/common/XCom-Enemy-Unknown/xcomgame/config/defaultgamecore.ini

to

~/.local/share/feral-interactive/XCOM/WritableFiles/XComGameCore.ini

the game will read the edited data from that file. Presumably this applies to all the other INI files as well.

Reminder that Linux filenames are case sensitive. Feral renamed all the packages to be lowercase. Windows mod filenames are often capitalized (i.e. "CamelCase"). Renaming them to lower case may help with mod tool file recognition (i.e. UPKUtils) on Linux systems. Don't forget to check the filename references inside the mod file as well. Otherwise, mods seem to work as designed, but caution is advised.


Wasteland Ghost (aka "wghost81"), author of the UPKUtils tools works on a Linux platform and is in the process of making her tool set cross-platform compatible. Linux users will have to compile her tools for their distribution themselves. She has provided the following guidance:

  • Install gcc-c++ compiler, cmake, git, and any wxGTK-devel package available from your distribution repository. Aside from PatcherGUI, which isn't ready for Linux compilation yet, there is just one program which requires wxWidgets (i.e. wxGTK-devel): DeserializeAll. Everything else should compile perfectly without wxGTK-devel installed.
  • Clone github repo and compile UPKUtils project:

git clone https://github.com/wghost/UPKUtils.git
cd UPKUtils/build
cmake .
make

  • To compile XComLZO packer/unpacker:

cd UPKUtils/XComLZO/build
cmake .
make

  • Readme files are available as part of Nexus file: UPKUtils. (I will add those to github repo later).
  • For now XComLZO is working with fully compressed packages only (ones which have additional <package_name>.uncompressed_size file) like xcomgame.upk and xcomstrategygame.upk. I will move this project to main UPKUtils project and add full compressed packages support later.
  • As usual, if you're using unpacked/modded packages, you have to delete uncompressed_size files for game to launch properly.

Amineri's UPKmodder is coded 100% in java, so in theory the jar file should run fine under Linux as well.

Wasteland Ghost tested it and reports:

It works after some minor changes. First, old projects won't open, because source-root path is different under Linux. BTW, I tried relative path, but only absolute one works. After I changed source-root and opened my project, another problem appeared: program couldn't find config/operand_data.ini. I've checked and found that folder is actually called Config and case matters under Linux. So I renamed it to config and UPK Modder worked. I haven't tested it extensively, though.

My suggestion will be to use relative path in project files and to make every internal config path lowercase.

Mod Install Order

If a mod provides specific information as to the order in which it should be applied relative to other mods, those instructions should take precedence. However, certain considerations regarding how a particular mod is applied to the game will always prevail, and may not have been anticipated when the instructions were developed. Therefor it is necessary to consider all provided instructions with some understanding of basic fundamentals.

In particular, at the present time the only way to make graphic texture changes (such as nationality flags and rank patches, armor textures, etc) is via the TexMod utility. "It allows to extract textures from DirectX 9 applications, and to pack eventually changed textures into TPF files (TexMod Package File) to load those back to the application replacing the original textures." Ref: TexMod source site The game is consequently run from the TexMod launcher, to become a sub-process that TexMod can monitor and intercept calls to load texture files to make the necessary switches in texture images it passes along to the game. See the wiki article Modifying Textures - XCOM:EU 2012 for details on getting TexMod to work with either XCOM EU or EW.

However, the Steam application launcher will only launch the Steam game file: i.e. XComGame.EXE. The TexMod launcher must be renamed to the game executable, and configured to call in turn the 'new' name of the renamed game executable (such as XComGameCore.EXE): making TexMod a shell or wrapper launcher, just like the Steam application launcher.

Most mods are altering either UPK files or the game executable. If the TexMod launcher is renamed to XComGame.EXE too soon in the install process, mods trying to patch the game EXE will not be looking at the correct file, and fail. The best outcome will be that the game then fails to launch.

If more than one mod attempts to change the same section of code, the first mod will install. The later mods will be highly unlikely to find the correct sequence if they use the 'find-and-replace' method. However, if the offset location method of applying changes is employed, subsequent mods will simply overwrite the code starting at the offset location. If subsequent mods do not completely overwrite all the code of earlier mods, unpredictable results will occur.

Install mods 'new to you' one at a time and test that the game at least will start the first mission correctly and manifests some aspect of the change before installing another. That way you will know which mod is causing the problem.

In general, install mods in the following sequence:

  1. Most important to you, first. If you encounter fatal conflicts, then you want to only have to drop the use of the least significant mods added, which will be the last ones.
  2. Mod Tools which make changes to the game executable enabling it to load normally excluded INI files and modified UPK files. These often only work with specific versions of the game and check to ensure vanilla filesize or version numbers match. (Note this requires either fixing the EXE file hash ( with XSHAPE) or disabling the hash check ( with PatcherGUI or [XComModHelper]) before the game will be able to launch.) Even if the tool permits, do not apply any other changes with it at this time as they may be overridden by other mods.
  3. Major overhaul mods that affect many aspects of the game such as re-balancing difficulty levels, extended play or increased options, large numbers of changes, etc. Presumably such mods will be the most important to you as they will make the most changes for you.
  4. Mods that apply changes to files other than the EXE; generally in decreasing order of complexity or scope. However, do not install any graphic mods that require renaming the game EXE at this time, such as those requiring TexMod. (Note some INI file changes may require applying a mod to the EXE to enable all INI loading before their effects can be seen.)
    1. Mods that directly change graphic elements such as the 'User Interface (UI)' are less likely to conflict with other mods that do not change graphics.
    2. Mods that are broader in scope (that modify more different files or portions of files) should go before those that are more concentrated in scope.
    3. Where mods directly conflict, you must choose one or the other. There currently is no mechanism to combine mods automatically.
  5. Mods that apply gameplay changes to the EXE, such as various 'toggle' options in ToolBoks. Note that if other mods have modified the same portions of code the changes may not 'take'.
  6. Mods that require their own launcher (i.e. TexMod), to then launch the game in their turn. These 'shells' can be 'nested' as long as they can be configured with the name of the file they should launch in turn. The 'top shell' is the one to be renamed to the game executable so Steam will launch it. But this file must not be renamed until all mods and patches to the game EXE have been applied.

Understanding what the mods you install affect is your responsibility. Mod creators cannot possibly anticipate which mods you will choose or how they will be installed.

Simple "Anyone can do it" Modding

Advanced Modding

Patches

It is important to point out in Mod release notes as to which versions of the game they are compatible with. It should NOT be assumed that any given mod is compatible with any version other than it states in it's documentation. This is especially true where offsets are given to locate the position of hex code changes. Patches usually cause changes to offset values.

Game version information comes in three forms: release date, EXE Version from Properties, and Changelist number from the <install folder>\Binaries\Version.txt file. The community has taken to referring to patches by sequential number since the original game release as well, but this is strictly an informal reference.

The Launch.log file located in your ...\My Games\XCOM - Enemy Unknown\XComGame\Logs folder also contains the Changelist number in the 11th line:

Init: FxsChangelist: <changelist number>

This might be worth looking for if you haven't played for a while as the game keeps about 5 backup copies of this file.

XCom:EU Game Version/Patch Table
Patch Version.txt Date EXE Version Changelist Notes Source
0 2012-Oct-09 1.0.0.5443 Live on Steam: 2012-Oct-09 Steam Announcement
1 2012-Oct-10 1.0.0.11052 338732 Live on Steam: 2012-Oct-11 2K Forums
2 2012-Nov-01 1.0.0.14565 342245 Live on Steam: 2012-Nov-08 2K Forums
2.1 2012-Dec-07 1.0.0.19284 346964 Live on Steam: 2012-Dec-07; Slingshot Saves Hot Fix 2K Forums
3 2012-Dec-11 1.0.0.20072 347752 Live on Steam: 2013-Jan-07 2K Forums
4 2013-Feb-20 1.0.0.28586 356266 Live on Steam: 2013-Mar-15 2K Forums
5 2013-Jul-11 1.0.0.55175 382855 Live on Steam: 2013-Nov-14 Steam announcement
6 2013-Nov-25 1.0.0.4963 398179 Live on Steam: 2013-Dec-02 2K Forums
7 2017-Aug-29 1.0.0.4963 3344272 unannounced SteamDB

View "Sources" for what is known about a specific patch.

  • "Patch 0" was the original public release of the game. SteamDB app id: 200510.
  • "Patch 2.1" for Slingshot Saves Hot Fix release note: "Slingshot Content Pack will no longer cause the game to think pre-existing saves are corrupt. All previous saves should now work properly." It appears to have been slipstreamed in without notice by most people, which is why it was given a ".1" patch number when it finally was recognized after patch 3.
  • "Patch 4" was made publicly available via Steam updates on 15 Mar 2013, but beta tested within the Steam Community starting 20 Feb as the "AI Teleport Bug Fix".
  • "Patch 5" was released along with the Enemy Within (EW patch 0) DLC expansion pack for XCOM: Enemy Unknown, on 12 November 2013 in North America, and 15 November 2013 elsewhere. Source: Wikia
  • "Patch 6" was announced and 'slipstream' released at the same time as EW patch 1.1. This appears to have been 'EW patch 1' for regions outside of the US.
  • "Patch 7" was an unannounced 'slipstream' release to apparently the entire current lineup of XCOM games (EU, EW, XCom2, and related DLC). At this time it appears the release was related to a switch in the security certificate provider used to verify the authenticity of the purchased game by the Steam Client, from "Verisign" to "Digicert".

There was a "Downgrade EU to patch 4" mod for compatibility with many older EU mods, especially the original "Long War for EU". However, the unannounced "patch 7" has broken the Steam Client verification of the older versions of the game by way of the current (online mode) or cached (offline mode) credentials, so the game wouldn't launch. Consequently the author has removed the "Downgrade" mod from Nexus to avoid people wasting time with it and to forestall any attempts to circumvent the certificates, which likely would be construed as "piracy".



The XCom: Enemy Within DLC expansion installs to the subfolder XEW under the XCOM <Steam install folder>, so it's Version.txt file is found in <install folder>\XEW\Binaries. The installation creates a complete copy of the loose compressed UPK files independently of those used for the original EU game, which differ in content. Some movie files in the EU folder have been updated and new ones are also found in the XEW folder. However, to prevent duplicating movie files, those movie files re-used from EU appear to have small .txt files that are used to reference the movie file in the root XCom-Enemy-Unknown folder.

XCom:EW Game Version/Patch Table
Patch Version.txt Date EXE Version Changelist Notes Source
0 2013-Oct-01 1.0.0.926 394142 Live on Steam: 2013-Nov-14 Steam announcement
1 2013-Nov-20 1.0.0.926 398180 Live on Steam: 2013-Dec-02 2K Forums
1.1 2013-Dec-02 1.0.0.4964 398180 Live on Steam: 2013-Dec-02; 3 bug fixes, adds Traditional Chinese 2K Forums
1.2 NA NA NA Live on Steam 2014-Jan-08; Multiplayer Balance Update Steam Community
2 2014-Feb-21 1.0.0.8708 401776/401924 Live on Steam 2014-Feb-25; Touch Support 2K Forums
3 2014-Mar-05 1.0.0.9040 401776/402256 Live on Steam 2014-Mar-10; Keybinding Fix 2K Forums
  • "Patch 0" was the initial public release of the Enemy Within DLC expansion pack, and along with "Patch 5" for XCOM: Enemy Unknown, available on 12 November 2013 in North America, and 15 November 2013 elsewhere. Source: Wikia. SteamDB app id: 32206.
  • "Patch 1.1" appears to have been slipstreamed in without notice by most people: "3 bug fixes, adds Traditional Chinese". The Changelist in the Version.txt file is still the same as patch 1. The only known difference is the internal version number and byte size of the XComEW.EXE file: patch 1= 26.3 MB (27645592 bytes); patch 1.1= Size 26.3 MB (27643032 bytes). Based on announcement on 2K Games forum, changed patch date to announcement date. (If the actual date from the Version.txt file is different, please update both the table and this note.) It is not listed on Steam Product Updates. Patch is decimal numbered because it appears to otherwise be identical to patch 1.
  • "Patch 1.2" announced as specific to EW on Steam Community forum as: "Multiplayer Balance Update" which adjusts the costs of units in multiplayer. This update is not like other patches, as it is without a new Version.txt file & Changelist number, or updated EXE or UPKs; replacing only an INI file. It is given a decimal number to indicate sequence following the previous normal patch with a Version.txt file. It updates various costs in XComMPGame.INI, which is delivered into the Logs\EMS folder via the 'phone home' (IniLocPatcher) mechanism.
  • "Patch 2" will change the "Version.txt" Changelist entry after running the Steam 'verify game files' process. The XComGame.EXE for EU date/timestamp will also change to 26-Feb-2014 13:00, but does not appear to have actually changed, and the "Version.txt" file Changelist data is unchanged.
  • "Patch 3" XEW\Version.txt has Changelist: 401776. XEW\Binaries\Win32\Changelist: 402256. No change to EU (398179). Tactical binds in this patch work once again from DefaultInput.ini. [XComGame.XComTacticalInput] section is no longer present in DefaultGame.ini.




XCom:EU/EW Linux Version/Patch Table
Patch Version.txt Date EXE Version Changelist Notes Source
0 2012-Oct-09 1.0 Beta 2 Live on Steam: 2014-Jun-19 Steam Store
  • "Patch 0" was the initial public release of the Linux version by Feral Interactive, and runs on Ubuntu 14.04 and SteamOS. It contains both EU and EW, but has only one Version.txt file. See the "Linux Differences" section of the Basic Guide to installing mods article for folder locations.




Bear in mind that patches replace some "loose" compressed UPK files as well as the game EXE. Since mods typically are made to "loose" decompressed UPK files, they may need to be updated with newly decompressed versions to apply correctly with patched versions of the game. Mod makers are advised to pay attention to the Globally Unique ID (GUID) 16 byte sequence found in the header at byte range 0x45-0x54 (69-84 in decimal) at the beginning of the uncompressed UPK.

XComGame.UPK
Game Patch GUID
EU 4 33 2E 29 6A A5 DD FC 40 B5 CC 57 A5 A7 AA 8C 41
EU 5 01 E9 EB 29 23 F4 DB 4F A8 2B 8E 46 A7 25 E5 D6
EW 0 B1 1A D8 E4 48 29 FC 43 8E C0 7A B0 A3 3E 34 9F
XComStrategyGame.UPK
Game Patch GUID
EU 4 A8 46 50 30 6F 48 84 42 AC 1A 72 B6 8D 2E 6D 23
EU 5 1D EE 33 F1 66 88 FB 49 B1 72 93 44 01 BC 85 39
EW 0 9C F8 70 10 21 38 A0 41 8B 33 A4 2E E8 71 23 00


This information has been included (via Template:Patches - XCOM:EU 2012) in the following articles:

Recent Discoveries

There have been a couple of recent (April-May 2013) discoveries that affect the need for or use of some of XCOM Modding tools. They are summarized here for reference.

Phoning Home

When using mods, it is necessary to prevent each game from connecting to it's update servers behind your back. However, the DNS entry is clearly for a vendor specific address. This appears to be a vendor verifier (i.e. "Firaxis Verifier", in this case) independent of those patches distributed via Steam. They may not be 'patches' per se, but merely replacements of certain files to ensure consistency. This is informally called 'phoning home' and initially was believed to be intended to be a Steam mechanism to prevent cheating in Multi-Player games. However, it has now been determined to affect single-player games as well.

PatcherGUI (as of v5.2) includes options to "Enable INI loading" and "Disable phoning home" for you. This is the easiest and recommended method.

If you use PatcherGUI, you can skip the rest of this sub-section. It's intended for those who have to deal with this manually.


Those interested in the mechanism involved in this 'phone home' process are referred to the Class: IniLocPatcher - XCOM:EU 2012 article.

This edit to the hosts file is not affected by Steam delivered patches or re-installing Steam and does not affect your ability to get updated when you go back to 'Online' mode for ANY reason (such as connecting to the Steam Store). Note this should be used in conjunction with disabling 'auto-updates' for your XCOM game in the Steam Library. Be aware, however, that since November of 2013 XCOM patches seem to disregard this Steam 'auto-updates' setting and have been known to apply regardless. Having a backup copy of your complete modded XCOM game tree current and available elsewhere is recommended as well.

At present, the EU 'phone home' process is known to overwrite Armors, Characters, and Weapons arrays of the EXE internal resource cache version of the DefaultGameCore.INI file, and the ...\My Documents\My Games\XCOM - Enemy Unknown\ file XComGameCore.INI file which is a merged copy from the DGC.INI and DLC content.

  • My Games\XCOM - Enemy Unknown\XComGame\Logs\EMS\
  • XComDLC.ini (XComGame.XComDLCManager)
  • XComGame.int (XComGame.XComDLCManager)
  • XComGameCore.ini (overwriting Armors, Characters and Weapons arrays)
  • XComMPGame.ini (overwriting a lot of MP related arrays)

These may be in My Games (if you have DLCs installed) or the <Steam install path> equivalent path, or both. If you are having problems with mods that alter one of these files not seeming to 'stick', check that your hosts file has the correct servers disabled according to the Launch.log as described below.

To determine where your game attempts to communicate, you want to examine your \My Games\<Steam Game folder>\Logs\Launch.log file. You are looking for lines similar to these:

The entries marked like so are:

  1. The Server IP address: 65.118.245.165
  2. The Server DNS Name: prod.xcom.firaxis.com

These are what you will place into the hosts file to block attempts to connect.

  • Start Menu > Right click on 'Notepad' (or any text editor), select "Run as Administrator"
    • File > Open > %systemroot%\system32\drivers\etc\hosts. The hosts file has no '.' suffix, so make sure you don't add .txt or anything else. Also, %systemroot% on most systems is C:\Windows, but the exact folder name may vary by OS version. The value of the global environmental variable %systemroot% on your system can be determined by entering 'set' on the Windows command line, or as it's shortcut is called, the Command Prompt. But the variable %systemroot% (including the percent "%" signs) can safely be used without knowing it's actual value.
    • Add these three lines to the hosts file:
      (The first line is a comment. The next two lines do the actual work, but are specific to XCOM:Enemy Unknown 2012. Other games may have their own DNS names [i.e. prod.xcom.firaxis.com] and IP addresses [i.e. 65.118.245.165]. The '127.0.0.1' IP address is a local loopback address the prevents attempts to connect to either of the other addresses from ever leaving your computer.)

# Prevent XCOM:EU from Phoning Home
127.0.0.1 prod.xcom.firaxis.com
127.0.0.1 65.118.245.165

  • Save the file.

NOTE: The "Enemy Within" (EW) expansion to XCOM:EU 2012 uses it's own DNS and IP address entries:

# Prevent XCOM:EW from Phoning Home
127.0.0.1 prod.xcom-ew.firaxis.com
127.0.0.1 65.118.245.139

However, early reports (13 Nov 2013) that disabling these addresses in hosts will prevent EW from launching have been attributed to other factors, such as failing to also disable 'auto-updates'. Save game synching with Cloud Storage still functions correctly, even with these addresses disabled.

The XCOM-EW expansion is proof that other DNS and IP addresses can be utilized by the same or different games. Care should be taken to check the Launch.log file as outlined above for changes with each patch or major release.

Disabling Hash checks

Enabling INI loading

PatcherGUI (as of v5.2) includes options to "Enable INI loading" and "Disable phoning home" for you. This is the easiest and recommended method. See also the INI Loading Test entry.

The following is provided for background and those interested in the manual method.

Most likely reason for any failure to load the DGC.INI is that (assuming you have the EW version of the game) you modified the DGC.INI in the wrong folder tree. EU is under "XCom-Enemy-Unknown", while EW is under "XCom-Enemy-Unknown\XEW".

INI Loading Test

Try this to test that the loose DGC.INI file is loading:

  • Edit the DGC.INI as follows:
  • Replace the Original 'eItem_Shotgun' line 'Properties[1]=eWPAssault' entry with '=eWP_Anyclass' as shown below. You can just copy and paste this SINGLE line with any text editor. (Save your '.BAK' file to restore the original DGC.INI.)
  • Load any previous save where you are in the XCOM base (the Strategy game phase) or play a new game to that point, go into the Barracks, View Soldiers, and change the Loadout of a Support class (which couldn't without this change and doesn't have any other class restrictions that might prevent it, as is the case with a Heavy). The 'vanilla' DGC.INI that's in the embedded 'Resource cache' only permits an Assault to equip a Shotgun. With this change, any class can that doesn't have other built-in restrictions.
  • Anyone other than an Assault class equipping a Shotgun proves you are loading the DGC from the correct '\config' folder.

INI file size limitations

Increased Load Times

Enemy Within

Extending/Replacing Functions

In early Dec 2013, wghost81 discovered it was possible to alter the UPK Package information so the game would utilize an expanded or replacement function of any size. This frees the mod creator from the constraint of keeping their code changes to within the original byte size limitations of the vanilla function, as well as providing the possibility to add new functions exclusive to your own mods. See the Hex editing UPK files article entry Hex editing III: Extending/Replacing Functions for details.

Troubleshooting

Finally, if you have problems with installing a mod see the following wiki article. Note that this document is one of those it will refer you to, so you might as well start by reviewing the material here.

References

Referred to by this article:



That refer to this article: