Repository navigation
Mac compatibility: per-game settings, badges in the library and store, launch rules - #305
marcshawco wants to merge 2 commits into
Conversation
… block Works out how each game should be run on this Mac and how likely it is to run, and shows it where Steam shows the Steam Deck's. - machine.c, tuning.c: read the Mac (chip, GPU cores, memory, macOS, display) and turn it into settings the defaults whitelist accepts. - game.c: read an installed game's files: word size, which Direct3D it loads, anti-cheat, launcher, engine, native macOS build. - verdict.c: a tier from the sessions the run script now records. - advice.c: Mac + game + history into settings, launch arguments, a badge and a reason. D3D12 goes to D3DMetal, D3D11 to DXMT, D3D9 to DXVK. - rules.c: launch rules from ~/Library/Application Support/notproton/rules, on the plugin grammar (new conf kind). - catalog.c: one pass over the library. Uses Valve's Steam Deck results from appinfo.vdf (appinfo --compat) for games that are not installed. - webpatch.c: badge on library tiles, stat on the game page, "Use Recommended" on the Compatibility page, two switches in Preferences. - store.c, store_page.js: the same on store and wishlist pages, through the web helper's debugger on 127.0.0.1:27101. Has its own switch. - compat_run.sh: records sessions, applies advice and rule arguments at launch after anything the user set. Also fixes two things found on the way: a DXMT_CONFIG with two clauses was dropped on its way to the page (is_setting_value refused ';'), and `make dobby` failed in a path with spaces. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
docs/mac-compatibility.md covers what each badge means, where the answers come from, the switches, launch rules, how the store part works and what its debugger port costs, and the files involved. README points to it. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
I don't want to use the Steam web debugger. That is developer functionality that could go away at any time and opens a user up to certain kinds of attacks. Relying on Steam Deck data for anti-cheat is not really reliable for us; there are many games (all EAC games, among others) that work on Linux/Proton but do not work on macOS. There are also games that work specifically on SteamOS but do not work on any other Linux distro. The hard part with auto-applying compatibility settings is getting the data in the first place. Where would I source which compatibility settings are correct? Just because the game starts with a specific graphics backend does not mean that the game started correctly - it could have visual issues, etc. A human needs to look and see. Plus, lots of games need fixes (MacGameFix, etc) in order to work correctly. The rest of the idea itself is not a bad idea. The biggest problem is using the Steam web debugger. That's not how the rest of NotProton works. :\ |
Draft, and a best effort that needs your review. It is large, it touches the dylib and the run script, and it was built with Claude Code over one long session, so please treat the comments and this text accordingly. I use NotProton daily and wanted to stop guessing at settings per game.
What it does
~/Library/Application Support/notproton/rules/*.conf, on the plugin grammar.docs/mac-compatibility.mdhas the detail and a table of which file does what.Things you should decide, not me
--remote-debugging-port=27101 --remote-debugging-address=127.0.0.1(inhook_spawn.c). Loopback only, but any local program can use it while Steam runs. It has its own switch and is on by default in this branch. You may well want it off by default, or not at all.store.cis a small HTTP and WebSocket client in the dylib. That is new surface.Two fixes found on the way
DXMT_CONFIGwith two clauses was dropped before reaching the page, becauseis_setting_valuerefused;.make dobbyfailed in a checkout path containing spaces.Tested
31 make check targets pass locally, including new ones (
tuning-check,verdict-check,advice-check,game-check,rules-check,catalog-check,store-check) and additions topanel-behavior,envcheckandbuildcheck.l10ncheckand the Swift app tests were not run. Verified by hand in Steam client build 1794536281 on an M4 Max, one account, one library. Not tested: multiple libraries, multiple accounts, FEX tools, Intel.🤖 Generated with Claude Code