Special K v 0.11.0.45 - [ Bringing auto-update / SKIM back ]

Just a heads up, the Steam version won’t run for users if they don’t have a manifest for appid 1157970 (Special K). I’ll build a new version of SKIF tomorrow that does not have that requirement.


FIXED

Yes, it was my intention to make an announcement on both the Special K app through Steamworks (I assume those are the 5,000 you spoke of) as well as the Steam Group itself (8,235 + 511 through the ‘Creator Homepage’).

Perhaps not necessarily simultaneously though.

Yeah, the store page for Special K has ~5,000 wishlist / followers. I’m not entirely sure which class of news event goes out to who, but that’s a lot of people when I can only handle 100 new accounts a day.

All links to SK 0.11.0.45 now include SKIF 0.6.9, which does not require appmanifest to run.

I’m considering packing the app manifest into SKIF.exe and unpacking it if it’s not present on systems. That will allow me to continue displaying the Global Injection control panel sensibly in the Manage Games List until I come up with a platform-agnostic game list.

Can you use the file from the Special K folder itself? So you don’t have to unpack it to the users’ steamapps folder? Just wondering as these appmanifest files otherwise remain and can cause minor but weird behaviors in the Steam client at times.

The client had have an issue for years, for example, where its taskbar icon would permanently be highlighted in the taskbar as if a download was stalled, that was always tracked down to an old appmanifest file being present in Steam’s folders.

I’ll figure something out. Don’t want Valve complaining that I’m leaving files in weird places. Don’t want Valve talking to me at all, to be honest :stuck_out_tongue:

Don’t worry, Valve would never in a million years figure it out.

By the way, in designing my own substitute for Steam Workshop, it has occurred to me that it might be possible to point content directly to personal Google Drive type storage sites.

I could also host some content on the servers I am leasing, but I suspect that will run dry very quickly. What kind of security issues, if any, could be associated with fetching a .7z file full of textures? I cannot think of any, but should probably hash this out before making off-site Workshop storage an integral part of the system.

If we crank the patron count up a bit more, I could likely host all of it in a secure Content Distribution Network similar to what Valve has with Akamai.

I would do something similar to how a lot of Linux distributions handle their package managers. Store a GPG signature and checksum for the downloads on your own servers, so that you can control them, and then the download can be from any mirror. So they user downloads from the mirrors and then uses the data downloaded from your own site to verify the integrity of the downloaded package. GPG Signatures and checksums are tiny, so saves bandwidth and storage on your own personal servers, and allows users to be sure they are downloading validated content. Alternatively the signatures can be hosted on the mirrors, but the signing key has to be known and trusted by the downloader. You verify the signature and you at least know that the file is from a “trusted” known entity.

Ah, that’s a really good idea. Thank you :slight_smile:

It’d also solve DMCA takedown disputes, I can just wipe the signature and then nobody can download the content (short of recompiling SK with the check removed, but I am not liable for that).

I’m not sure how most distros handle it, but ArchLinux (the one I use most often) has a package that basically imports a set of GPG keys from standard GPG keyservers and marks them as “trusted” in the local store. Periodically, you would need to refresh the keys from the keyserver. That way the authors can revoke their own keys using a revocation key. That way if their key is compromised they can invalidate it themselves. In this case, I’m not sure such a system is really warranted in this situation. Not like these are binaries vital to the proper operation of your OS like Linux packages can be.

No, it’s more complicated than need be … but there’s this guy in the back of my head who won’t shutup about how fun that would be to implement :stuck_out_tongue: That’s the same guy responsible for a lot the unique features of Special K, sometimes he strikes gold, but I think in this case it’s a waste of time :stuck_out_tongue:

I miss Steam :-\

Just knowing what application is actually running is ridiculously difficult. I might have to maintain some kind of database of executable hashes / filenames in order to implement even half of the features I did when SK was tightly coupled to Steam.

Somehow GeForce Experience is able to identify games, I’m guessing they have a database of known install locations / directory structures or something. The driver needs to know what game is running in order to cheat in benchmarks :slight_smile:

@Aemony Do you know from your experience on PCGamingWiki if the other store platforms have any identifying signatures (i.e. Steam’s AppID) for the currently running game?

AppID is so convenient, and lets me direct link to a game’s entry, but I’ve been using Steam and nothing but Steam for so long, I don’t even know where to begin analyzing installed games for the other stores.

Epic’s launcher typically sends an app identifier as part of the command line arguments to a process. See for example “epicapp” parameter for the game A Short Hike below:

"D:/Games/Epic Games/AShortHike/AShortHike.exe" 
  -AUTH_LOGIN=unused
  -AUTH_PASSWORD=<temporary-password-token>
  -AUTH_TYPE=exchangecode 
  -epicapp=<d6407c9e6fd54cb492b8c6635480d792>
  -epicenv=Prod
  -EpicPortal
  -epicusername="<username>"
  -epicuserid=<userid>
  -epiclocale=en

The “epicapp” value can then be correlated to an “item” through e.g. the third-party EpicData.info database (think SteamDB), such as A Short Hike.

The epicapp identifier can also seemingly be set to something custom, such as for For Rogue Company:

"D:/Games/Epic Games/RogueCompany/RogueCompany.exe"
  -hirezenv=RETAIL
  -homedir=RogueCompany 
  -AUTH_LOGIN=unused 
  -AUTH_PASSWORD=<temporary-password-token>
  -AUTH_TYPE=exchangecode 
  -epicapp=<Pewee>
  -epicenv=Prod 
  -EpicPortal  
  -epicusername="<username>" 
  -epicuserid=<userid>
  -epiclocale=en

I assume this value is unique, as I believe it is used by the embedded EOS functionality to authenticate and validate ownership over the title for the specified Epic account.


As for GOG Galaxy, I am not entirely certain how it identifies running games. Perhaps through the often included goggame-<appid>.info file that is stored alongside the game executable. That file includes stuff like the app/product/game ID (such as 1785384169 for Carrion), as well as client ID, build ID, languages, etc. It’s basically a variant of Steam’s appmanifest files stored separately.

Due to it’s general independency of the GOG Galaxy client itself, GOG games are a weird matter. For example, I have the above mentioned game, Carrion, installed on my system through a separate GOG account, but when I run GOG Galaxy as my main account it neither acknowledges its existence when its running nor allows me to add the game to the client.

GeForce Experience almost certainly relies on the same database that Nvidia’s display drivers rely on, which includes the executable names of thousands of games, I believe.

You can take a peak and even change the executable names through Nvidia Profile Inspector.

I wish I could find the support request in SK’s group that shows what happens when GeForce Experience encounters a symlink, it’s hilarious :slight_smile:

The user had GFE thinking there were 30 copies of Fallout 4 installed because it kept following special symlinks I used to create to make that point from the game’s directory to the SK config directory and a symlink in the SK config directory that points back to the game directory.

The symlinks were a neat and really handy feature, but … it confused poor old GeForce Experience, so I had to put an end to that. SKIF kind of makes all that obsolete, (for Steam games), since its context menus can quickly take you to relevant directories.

https://imgur.com/FaTpA47

https://imgur.com/pAYvKgL

So is SKIM supposed to be apart of this, because if so, it isn’t giving it to me no matter how many times I download and extract. I only get SKIF. This is the SKIM i’m talking about by the way. SO this is what I mean by " is SKIM supposed to be apart of this pack, since this is the part im missing in this new version. Annotation 2020-08-07 063239 Annotation 2020-08-07 063253

Not right now, no.