updated changelog + some readmes

This commit is contained in:
otavepto 2024-01-20 20:18:35 +02:00
parent 6249d7ca4d
commit 44f4e400de
4 changed files with 43 additions and 17 deletions

View File

@ -1,17 +1,36 @@
* a new experimental library to patch Stub drm v3.1 in memory, check the readme of the cold client loader
* cold client loader can now inject dlls, also it can force inject the `steamclient(64).dll` library
* cold client loader can inject the dlls according to a user sepcified order, check the readme and the provided example
* cold client loader will now treat relative paths as relative to its own path
* cold client loader now doesn't need an explicit setting for the `ExeRunDir`, by default it would be the folder of the exe
* in cold client loader, the option `ResumeByDebugger` is now available in the release build
* cold client loader will display a nag about architecture difference if for example the app was 32-bit and the loader was 64-bit,
this could be disabled via the setting `IgnoreLoaderArchDifference=1`
## 2024/1/20
* **[Detanup01]** added implementation for `Steam_Remote_Storage::EnumerateUserSubscribedFiles()` +
mods files handles in `Steam_Remote_Storage::UGCDownload()` + `Steam_Remote_Storage::UGCDownloadToLocation()`
which makes mods now work for many games
* **[Kola124]** enhanced the settings parser to detect primary and preview mod files sizes automatically +
use the base Steam URL by default for workshop URL + auto calculate the mod `score` from up/down votes
also thanks to **[BTFighter]** for providing logs
* **Breaking change** mod preview image file must exist in `steam_settings\mod_images\<MOD_ID>`
* an enhancement to the settings parser to attempt to auto detect mods when `mods.json` is not present, with the same behavior as when the json file was created.
this works for mods with only 1 primary file and only 1 preview file
* fixed the generated path of mod `preview_url`, previously it would contain back slashes `\` on Windows
* use last week epoch as the default time for mods dates (created, added, etc...)
* make sure the mod path is always normalized and absolute, required by some APIs
* `Steam UGC`: implement `SetUserItemVote()`, `GetUserItemVote()`, `AddItemToFavorites()`, `RemoveItemFromFavorites()`,
favorite mods list are now saved in `favorites.txt` in the user save data folder
* cold client loader can now inject user dlls, and force inject the `steamclient(64).dll` library,
also you can control the injection order via a file `load_order.txt`, check its readme and the provided example
* a new experimental dll (which must be injected first) to patch Stub drm v3.1 in memory, check the injection example of the cold client loader
* cold client loader will now treat relative paths as relative to its own path, previously it used the current active directory
* cold client loader no longer needs an explicit setting for the `ExeRunDir`, by default it would be the folder of the exe
* in cold client loader, the option `ResumeByDebugger` is now available for the release build
* cold client loader is now built for 32-bit and 64-bit separately, and will display a nag about architecture difference if for example the app was 32-bit and the loader was 64-bit, this could be disabled via the setting `IgnoreLoaderArchDifference=1`
* the cold client loader will output useful debug info when the debug build is used
* added a very basic crashes logger/printer, enabled by creating a file called `crash_printer_location.txt` inside the `steam_settings` folder, check README.realease.md for more details
* fixed a problem in the overlay which would cause a crash for the guest player when an invitation was sent
* `Steam UGC`: make sure returned mod folder from `GetItemInstallInfo()` is null terminated, previously some apps would get a bad malformed string because of this
* `Steam_RemoteStorage`: very basic implementation for `GetQueryUGCNumTags()`, `GetQueryUGCTag()`, `GetQueryUGCTagDisplayName()`
* new function in local storage to get list of folders at root level, given some path
* imitate how the DOS Stub is manipulated during/after the build
* some fixes to the win build script + use the undocumented linker flag `/emittoolversioninfo:no` to prevent adding the MSVC Rich Header
* added a very basic crashes logger/printer, enabled by creating a file called `crash_printer_location.txt` inside the `steam_settings` folder,
check README.realease.md for more details
* debug messages are now mostly scoped, ex: `Steam_Ugc::XXX`
* added a bunch of helper functions, `common_helpers::XXX` + `pe_helpers::XXX`
---

View File

@ -20,15 +20,15 @@ You do not need to create a `steam_interfaces.txt` file for the `steamclient` ve
2. Edit `ColdClientLoader.ini` and specify:
* `AppId`: the app ID
* `Exe`: the path to the game's executable/launcher, either full path or relative to this loader
* `ExeRunDir`: generally this must be set to the folder containing the game's exe, if left empty then it will be automatically set to the folder containing the game's exe.
* `ExeCommandLine` additional args to pass to the exe, example: `-dx11 -windowed`
* `ExeRunDir` *(optional)*: generally this must be set to the folder containing the game's exe, if left empty then it will be automatically set to the folder containing the game's exe.
* `ExeCommandLine` *(optional)*: additional args to pass to the exe, example: `-dx11 -windowed`
Optionally you can specify a different location for `steamclient(64).dll`:
* `SteamClientDll`: path to `steamclient.dll`, either full path or relative to this loader
* `SteamClientDll`: path to `steamclient(64).dll`, either full path or relative to this loader
* `SteamClient64Dll`: path to `steamclient(64).dll`, either full path or relative to this loader
* `ForceInjectSteamClient`: force inject `steamclient(64).dll` instead of letting the app load it automatically
* `ResumeByDebugger`: setting this to `1` or `y` or `true` will prevent the loader from calling `ResumeThread()` on the main thread after spawning the .exe, and it will display a mesage with the process ID (PID) so you attach your debugger on it.
Note that you have to resume the main thread from the debugger after attaching, also the entry breakpoint may not be set automatically, but you can do that manually.
* `DllsToInjectFolder`: path to a folder containing dlls to force inject into the app upon start,
* `DllsToInjectFolder` *(optional)*: path to a folder containing dlls to force inject into the app upon start,
the loader will attempt to detect the dll architecture (32 or 64 bit), if it didn't match the architecture of the exe, then it will ignored
* `IgnoreInjectionError`: setting this to `1` or `y` or `true` will prevent the loader from displaying an error message when a dll injection fails
* `IgnoreLoaderArchDifference`: don't display an error message if the architecture of the loader is different from the app.

View File

@ -1 +1 @@
Put here the files whose names are specified by the JSON key "preview_filename" inside mods.json
Put here the file whose name is specified by the JSON key "preview_filename" inside mods.json

View File

@ -1,4 +1,11 @@
{
"9422": {
"title": "Some Workshop Item",
"description": "This is the prefered way of specifying mod details, primary file must exist in steam_settings/mods/9422 (along with any other mod files), and preview file must exist in steam_settings/mod_images/9422",
"primary_filename": "metadata.json",
"preview_filename": "thumbnail.png"
},
"111111111": {
"title": "Example Workshop Item",
"description": "Example Workshop Item with all Details",
@ -22,7 +29,7 @@
"222222222": {
"title": "Example Workshop Item",
"description": "Example Workshop Item with all Details",
"description": "Example Workshop Item with some Details",
"preview_url": "https://commons.wikimedia.org/wiki/File:Tree_in_Mississippi.jpg",
"score": 1.0
},
@ -33,7 +40,7 @@
"444444444": {
"title": "Example Workshop Item",
"description": "Example Workshop Item with all Details",
"description": "Example Workshop Item"
},
"555555555": {