Outer Wilds vs Steam

Hello,
I’m happy to report Outer Wilds works well with SpecialK HDR at scRGB, despite being Unity based.

However, I’m having a problem where Steam API gets stuck, no frames input, thus no achievements. Controller works. Flood prevention checkbox has no effect. Path to load the DLL is correct.

I’m currently out of ideas on how to fix that bit.

Have you tried disabling the Steam API functionality of Special K ?

https://www.pcgamingwiki.com/wiki/Special_K#Disable_all_enhancements

No, that did nothing besides showing Steam API as invalid. Nothing from Steam showed up. If it helps, I’m using 0.11.0.48 in global injector mode, edited config entering Notepad from GUI.
Delay does not have any effect either.

What’s also interesting is that the replaced frame timing makes the game smooth when it wasn’t before. It has a really weird and broken limiter. And that in scRGB mode, using Unchanged (== BT-709 gamma) → DCI P3 makes the colors mostly correct - still slightly oversaturated in red compared to SDR, but that can’t be helped without actually tonemapping or setting dynamic tonemapping to On (vs HGIG or Off) in the LG CX TV. Could use an Output colorspace of “matrix” read off the target screen.

My suspicion is the game has a Steam callback wired to the original window and firing it from there, but it’s been recreated. I’ll check if hooking wnd proc or disabling HDR changes anything inside Special K by not touching the window.

Suspicion is almost confirmed as by disabling flip discard (and thus HDR) I got the Steam popup back with Silent set to true.

Not sure how to fix that globally at all, perhaps SK would have to keep normal window running and see if there are any tick callbacks in main loop, then patch them to replace original pointer with new one and wire them in. Very tricky. Maybe easier for Unity games.

Never mind.

This is the cause for when Silent = false:

10/04/2020 14:24:19.143: c:\program files (x86)\steam\steamapps\common\Outer Wilds\OuterWilds_Data\Plugins\steam_api64.dll: [S_API FAIL] SteamAPI_Init() failed; create pipe failed.
10/04/2020 14:24:24.144: c:\program files (x86)\steam\steamapps\common\Outer Wilds\OuterWilds_Data\Plugins\steam_api64.dll: [S_API FAIL] SteamAPI_Init() failed; create pipe failed.

That file is version 4.4.91.85 of Steam Client API by the way.

Issue solved. Due to a crash or something like that, a leftover steam_appid.txt was left in game directory. It was openable by my user by the way, and had the correct number in it.

Not sure why SpecialK specifically would have trouble opening the file it created… potentially service vs non-service setup makes a difference in access rights to the temporary file.

Special K does not create that file — game developers does. Verifying game files through Steam probably restores it.

According to Steam docs, the file is not supposed to exist. Validating game does not restore it either.
SpecialK does create the file if AppID is given in config, which is how I found it.

https://gitlab.special-k.info/Kaldaien/SpecialK/-/blob/0.11.liberated/src/steam/steam_api.cpp#L4611

Let me reiterate, this file should not be created if there’s no override of App ID. The App ID config option is set automatically on first configuration save if I remember it correctly and this code does not check for a match. (How could it?) Perhaps the option should be kept -1 unless manually set.

Even more fun, this only works if I pass -console -debug_steamapi option and then the file is not created. No idea what changes.

It interacts with Run As Administrator for Steam itself and with SpecialK service running. No service running when Steam starts, no problem it seems? But I’m not certain.

It is definitely related to that steam_appid.txt file though. When there’s no problem, the file is not left behind.

Important bit might be that I’m running Insider’s preview Win 10, 20226.1000.

Based on my testing, this is a bug with v0.11.0.48. Use v0.11.0.49 which shouldn’t (at least in my testing) experience this issue.

https://files.aemony.se/sharex/Special%20K%20v0.11.0.49.zip

Damn random bugs that can appear… I was going crazy trying to figure this one out as SK typically didn’t have a need to create the steam_appid.txt file for this game or in general (it’s a fallback that should only be used if the Steam API doesn’t properly initiate), and I didn’t remember having any issues of this sort when I played through the game back in June with SK.

Turns out throwing v48 at the game reproduced the issue immediately for me as well :expressionless:

v0.11.0.49 technically isn’t ‘official’ yet, but it’s mostly stable based on my testing, although the 64-bit DLL file is an hour or two newer than the 32-bit, and includes some minor change or something mentioned somewhere in Topic-Free Mega Thread - v 1.11.2020.

I’ve just checked 0.11.0.49 and it has the same problem. First run is fine (because AppID is not set), second is faulty unless Steam is ran as admin.

Weird, I had no issue at all with v0.11.0.49.

It is made even more interesting because other games do not have this problem. It’s just Outer Wilds. Something is special about it (or Unity games).