Multiplayer and mods

From Nexus Mods Wiki
Jump to: navigation, search

Overview

The following is derived from the Nexus Mod Talk Forum thread An impact of single player mods on multiplayer.

To date (Oct 2014), no one has published a mod specifically for multiplayer (MP) XCOM. It is known that the phone home feature is designed to prevent cheating in MP by copying some files from the server, and consequently is disabled for single-player mods. MP does not function without this capability.

Very little experimentation has been reported if single player mods have any impact on multiplayer. Some test results by Drakous79 and wghost81 recently published have shown that at least some mods can be used in MP.

Programs and Tools

None are required by this article, but any required by mods may be found in the following article:

Details

All tests were done with enabled phone home capability. See the wiki article Class: IniLocPatcher for the details of which files are affected.

If you don't understand what this refers to, see the "Phoning Home" entry in the wiki article Basic Guide to installing mods. Other mentioned modifications such as "Enable INI Loading" and "Disable Hash Checks" are also found in that same article.

Case 1 - modified UPK

Test scenario 1 for EU and EW

  • Drakous79 - modded XComGame.upk (delays for "hunker down" and "overwatch")
  • wghost81 - vanilla

Result:

  • Accepting wghost81's invite resulted in rotating "Vigilo Confido" logo.
  • The match didn't start.

Countermeasures taken on Drakous79's side:

  • Updated XComGame.upk hash - did not work
  • Disabled all hashes - did not work

But we found something interesting in logs:

PendingLevel received: HandshakeChallenge
PendingLevel received: HandshakeComplete
PendingLevel received: Challenge
DevNet: Received: NMT_Challenge: Package hashes don't match, closing connection

So I reverted to vanilla, we both installed the same mod and we could play.


Test scenario 2

  • Both players have the same mod installed (XCOM Camera Tweaks).

Result:

  • The game started with mods applied.

Haven't dug too much into this, but "Package hashes don't match, closing connection" string is saved as unicode text in XComEW.exe, suggesting that is the source of the check.

Assume all files accompanied with *.uncompressed_size are affected by MP hash check.

Also in Engine.AccessControl is this code:

if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, (none)))
{
  GameSettings = OnlineSub.GameInterface.GetGameSettings('None');
}
if(GameSettings != none)
{
  bSecure = GameSettings.bAntiCheatProtected;
}

But have no idea how GameSettings.bAntiCheatProtected works.

Case 2 - modified INI

This one went smoothly. Enabled loose INI files loading and changed Kevlar iHPBonus=10 in DefaultGameCore.ini on one system.

"+10 bonus" was applied to both players' units wearing Kevlar armor, but only when hosted (created) from the modded game system. So INI files are always taken from match's host.

Conclusions

  • Steam in offline mode disables Ranked and Quick matches, Leaderboards and View Invites buttons in the Multiplayer menu. Only Custom Match and Edit Squad buttons are available.
  • Disabled phone home prevents downloading of XComMPGame.ini into the Logs\EMS folder (i.e. Documents\My Games\XCOM - Enemy Unknown\XComGame\Logs\EMS\) after clicking the Multiplayer button in the game. Haven't tested this one any further.
  • Modified config INI files are always taken from match's host. Suspect this could be used to do some really funny matches considering units with insanely high health.
  • Modified UPK files formerly accompanied with *.uncompressed_size are affected by package hash check and a match won't start if players don't have the same files. Anybody wishing to play multiplayer ranked matches should do so with vanilla installation. This limits the mods that can be used to those that do not modify hash checked UPK files. Also mod authors should place a note about it into their Readme documentation.
  • If both players have the same modified UPK files, the match will proceed, if:
    • EU - players must update hash of that file or have hash checking disabled, to even start the game.
      Both ends' uncompressed_size files (if present) should match their files, so they can start the game. And if both players have the same uncompressed_size file, they should have the same UPK and the match will start.
      Think the hash may be computed by the executable; ignoring uncompressed_size files. For sure it ignores hashes stored in self.
    • EW - doesn't matter if hash checking is enabled or not.
  • Modified textures (TexMod, TextureFileCache) may have no impact on multiplayer.
  • Modified sounds may have no impact on multiplayer.


References

Referred to by this article:



That refer to this article: