soulsmods / ModEngine2

Runtime injection library for modding Souls games. WIP
MIT License
867 stars 157 forks source link

can you please add linux support? #162

Open arxeon101 opened 10 months ago

arxeon101 commented 10 months ago

im trying to add ac6 mods that require modloader as they arent regulation.bin files you can just swap in and out, but this only works on windows, and im on a steamdeck (linux)

SophieBrown commented 7 months ago

Seconding this request for Linux support. I'm running Mint Cinnamon 21.3, and when I try to run the launcher through wine, I get the following output:

sophie@sophie-MS-7D09:~/Documents/ModEngine-2.1.0.0-win64$ wine modengine2_launcher.exe wine: created the configuration directory '/home/sophie/.wine' 0048:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002 0048:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002 0048:err:ole:apartment_get_local_server_stream Failed: 0x80004002 0050:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002 0050:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002 0050:err:ole:apartment_get_local_server_stream Failed: 0x80004002 0050:err:ole:start_rpcss Failed to open RpcSs service 0040:err:setupapi:SetupDefaultQueueCallbackW copy error 1812 L"@wineusb.sys,-1" -> L"C:\windows\inf\wineusb.inf" Could not find Wine Gecko. HTML rendering will be disabled. Could not find Wine Gecko. HTML rendering will be disabled. wine: configuration in L"/home/sophie/.wine" has been updated. [2024-02-25 15:59:24.328] [stderr] [error] Couldn't find path to game

Hollyrious commented 6 months ago

I'd like to third this - or, failing that, just info on how to sideload as a dll would probably suffice.

mivort commented 3 months ago

It's actually possible to use ModEngine2 on Linux with only a small limitation. It's possible to unpack the archive to /Game directory, and replace start_protected_game.exe with modengine2_launcher.exe (I'm using symlink and shell script to quickly switch between these).

Then, in Steam game options, I set game launch arguments to %command% -t ac6 -c config_armoredcore6.toml for AC6 (or -t er -c config_eldenring.toml for Elden Ring) - that's basically what each of *.bat files does. Modengine launcher is able to find non-protected executable and start it with the modding support.

I think it may be possible to run it without unpacking to game directory, but that may require some wrapping of executable to properly set the working directory.

yretenai commented 3 months ago

for multiple games, you can also symlink the entire modengine2 folder, the toml config file of that specific game and the launcher exe (to start_protected_game.exe as described above)

the program by itself it will look for any of the non-protected games.

https://github.com/soulsmods/ModEngine2/blob/a3b50579dc76187cf4dcf5e979722c19781a36c4/launcher/launcher.cpp#L139-L165

steam will freak out a little if start_protected_game.exe ever changes, which happens when EAC gets updated (shouldn't happen anymore for any of the current games, maybe ER with a surprise bugfix update in a month or two)

this way you also only have to update the modengine2 folder in one location.