[PAYDAY 2] The mod_overrides folder is currently not functional
Avatar

As the title says, the mod_overrides folder does not work on the Linux version of Payday 2 currently. I'm trying to make contact with Overkill to resolve this issue.

Avatar
I would guess, based on some function signatures, that the asset database scans this folder, and then loads in the assets in a certain path to replace assets matching that path that are already in the database.
That sounds likely, though it appears that the function dsl::MainDB::collect_mod_overrides() isn't being called (nor referenced) anywhere in the Linux binary (I've yet to track down the Windows equivalent so I can't compare it against that atm). Interestingly, mod_overrides-related Lua-facing C closures (such as reload_override_mods) seem to be added in the Linux binary, just like on Windows (assuming I'm reading it right, that is. Refer to dsl::MainDB::add_members()).
One of the issues I suspect to be causing a lot of the functionality deficit on Linux is that (and this is speculation) overkill are using divergent branches for the Windows and Linux builds. This means that there are two effectively separate codebases being used for the two different builds. This would not effect the addition of new content such as Weapons, Maps, etc... because all that data is stored in bundles along with scripts that install them in to the game. If you look in to historic issues, many users were encountering similar issues during Crimefest 2015, such as not receiving voice data and what have you. Additionally, while I'm unsure of the date of its introduction in to the game, but I imagine that if you were to look at the source for the main/options menu, you would find that the "Mods" menu option (for the asset mods folder) is simply not even implemented
Yes, this does appear to be the case - I've had three binaries (U78-Windows, U97.3-Windows, U97.2-Linux) open and noticed that the Linux disassembled output actually resembles U78-Windows' disassembly more than U97.3-Windows' disassembly. Or that might be due to an apparent compiler toolset change (probably in U79), since the function prologues are different and the PDB path is now on a different drive letter (D:\Projects\payday2\trunk\packages\win32\win32\payday2_win32_release.pdb in U78, C:\Projects\payday2\packages\win32\payday2_win32_release.pdb in U97.3). It's a good thing lua_call() is still readily accessible in the Linux binary - the inability to hook it in the Windows binary due to aggressive inlining is a particular pain point for mod stability on Windows. :/
46 941