Skip to content

Latest commit

 

History

History
executable file
·
467 lines (359 loc) · 50.5 KB

README.md

File metadata and controls

executable file
·
467 lines (359 loc) · 50.5 KB

proton-ge-custom

(1) RUNNING NON-STEAM GAMES WITH PROTON OUTSIDE OF STEAM IS NOT SUPPORTED. DO NOT ASK FOR HELP WITH THIS:

Proton runs in a container, which uses a runtime environment and libraries specifically built for use within that container. Not running it as intended results in the container and therefore its runtime not being used, and severely breaks library compatibility.

It causes wine to search for libraries on your system instead of those it was built with/intended for within proton.

It may work, if enough libraries match, but it is not correct and not supportable due to library differences across distros.

If you want proton functionality -outside- of proton for non-steam games, I provide Wine-GE for usage with Lutris, found here:

https://github.com/gloriouseggroll/wine-ge-custom

(2) If you have an issue that happens with my proton-GE build, provided FROM this repository, that does -not- happen on Valve's proton, please DO NOT open a bug report on Valve's bug tracker. Instead, contact me on Discord about the issue:

https://discord.gg/6y3BdzC

(3) Please note, this is a custom build of proton, and is -not- affiliated with Valve's proton.

(4) Please also note I do not provide the flatpak of proton-GE, and I do not provide the AUR version of proton-GE. I will not assist with those.

(5) The only version of proton-GE that I provide and will assist with builds of is the one provided within this repository, using the build system documented here.

(6) I cannot validate the accuracy or functionality of other builds that have not been built using the build system included here.

Table of contents

Overview

This is my build of Proton with the most recent bleeding-edge Proton Experimental WINE.

Things it contains that Valve's Proton does not:

  • Additional media foundation patches for better video playback support
  • AMD FSR patches added directly to fullscreen hack that can be toggled with WINE_FULLSCREEN_FSR=1
  • FSR Fake resolution patch details here
  • Nvidia CUDA support for PhysX and NVAPI
  • Raw input mouse support
  • 'protonfixes' system -- this is an automated system that applies per-game fixes (such as winetricks, envvars, EAC workarounds, overrides, etc).
  • Various upstream WINE patches backported
  • Various wine-staging patches applied as they become needed

Notes

  • Warframe is problematic with VSync. Turn it off or on in game, do not set to Auto
  • Warframe needs a set a frame limit in game. Unlimited framerate can cause slowdowns
  • Warframe on NVIDIA: you may need to disable GPU Particles in game otherwise the game can freeze randomly. On AMD they work fine

Full patches can be viewed in protonprep-valve-staging.sh.

Installation

PLEASE NOTE: There are prerequisites for using this version of proton:

  1. You must have the proper Vulkan drivers/packages installed on your system. VKD3D on AMD requires Mesa 22.0.0 or higher for the VK_KHR_dynamic_rendering extension. Check here for general driver installation guidance.

Manual

There is an unofficial plugin for installing and managing ProtonGE versions with asdf (the universal version manager), it follows the same process as the manual installation but makes it a lot easier. Managing versions by removing and updating to newer versions also becomes easier.

To install by it first install asdf, and then proceed to add the ProtonGE plugin and install the version you want.

asdf plugin add protonge

# Or install a version from a tag (Eg.: GE-Proton8-25)
asdf install protonge latest

It's also possible to use the asdf plugin in Flatpak installations, by customizing the target compatibilitytools.d path. For more settings check the plugin's official documentation

After every install you need to restart Steam, and enable proton-ge-custom.

Native

This section is for those that use the native version of Steam.

  1. Download a release from the Releases page.
  2. Create a ~/.steam/root/compatibilitytools.d directory if it does not exist.
  3. Extract the release tarball into ~/.steam/root/compatibilitytools.d/.
    • tar -xf GE-ProtonVERSION.tar.gz -C ~/.steam/root/compatibilitytools.d/
  4. Restart Steam.
  5. Enable proton-ge-custom.

Terminal example based on Latest Release

# make temp working directory
mkdir /tmp/proton-ge-custom
cd /tmp/proton-ge-custom

# download  tarball
curl -sLOJ "$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .tar.gz)"

# download checksum
curl -sLOJ "$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .sha512sum)"

# check tarball with checksum
sha512sum -c ./*.sha512sum
# if result is ok, continue

# make steam directory if it does not exist
mkdir -p ~/.steam/root/compatibilitytools.d

# extract proton tarball to steam directory
tar -xf GE-Proton*.tar.gz -C ~/.steam/root/compatibilitytools.d/
echo "All done :)"

The shell code above can be run as a script by pasting the commands in a file and adding the following to the top of the file:

#!/bin/bash
set -euo pipefail

Save the file and make the script runnable by adding the executable bit:

chmod +x file.sh

Flatpak

This section is for those that use the Steam flatpak.

Flathub

The unofficial build provided by Flathub isn't supported by GloriousEggroll nor Valve and wasn't tested with all possible games and cases. It can behave differently from upstream builds. Use at your own risk.

  1. Add the Flathub repository.
  2. Run:
    flatpak install com.valvesoftware.Steam.CompatibilityTool.Proton-GE
  3. Enable proton-ge-custom.
Manual
  1. Download a release from the Releases page.
  2. Create a ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/ directory if it does not exist.
  3. Extract the release tarball into ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/.
    • tar -xf GE-ProtonVERSION.tar.gz -C ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/
  4. Restart Steam.
  5. Enable proton-ge-custom.

Snap

This section is for those that use the Steam snap.

This unofficial build isn't supported by GloriousEggroll nor Valve and wasn't tested with all possible games and cases. It can behave differently from upstream builds. Use at your own risk.

Manual
  1. Download a release from the Releases page.
  2. Create a ~/snap/steam/common/.steam/steam/compatibilitytools.d/ directory if it does not exist.
  3. Extract the release tarball into ~/snap/steam/common/.steam/steam/compatibilitytools.d/.
    • tar -xf GE-ProtonVERSION.tar.gz -C ~/snap/steam/common/.steam/steam/compatibilitytools.d/
  4. Restart Steam.
  5. Enable proton-ge-custom.

Building

  1. Clone this repo by executing:
git clone --recurse-submodules http://github.com/gloriouseggroll/proton-ge-custom
  1. Drop any custom patches into patches/, then open patches/protonprep-valve-staging.sh and add a patch line for them under #WINE CUSTOM PATCHES in the same way the others are done.

  2. Apply all of the patches in patches/ by running:

./patches/protonprep-valve-staging.sh &> patchlog.txt

in the main proton-ge-custom directory. Open patchlog.txt and search for "fail" to make sure no patch failures occured. An easy way to do this is like so:

grep -i fail patchlog.txt
grep -i error patchlog.txt 
  1. Navigate to the parent directory containing the proton-ge-custom folder.

  2. Type the following (note: if using docker instead of podman, change to --container-engine=docker):

mkdir build && cd build
../configure.sh --enable-ccache --build-name=SOME-BUILD-NAME-HERE --container-engine=podman
make redist &> log

Build will be placed within the build directory as SOME-BUILD-NAME-HERE.tar.gz.

Enabling

  1. Right click any game in Steam and click Properties.
  2. At the bottom of the Compatibility tab, Check Force the use of a specific Steam Play compatibility tool, then select the desired Proton version.
  3. Launch the game.

Modification

Environment variable options:

Compat config string Environment Variable Description
PROTON_LOG Convenience method for dumping a useful debug log to $HOME/steam-$APPID.log. For more thorough logging, use user_settings.py.
PROTON_DUMP_DEBUG_COMMANDS When running a game, Proton will write some useful debug scripts for that game into $PROTON_DEBUG_DIR/proton_$USER/.
PROTON_DEBUG_DIR Root directory for the Proton debug scripts, /tmp by default.
wined3d PROTON_USE_WINED3D Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11 and d3d10. This used to be called PROTON_USE_WINED3D11, which is now an alias for this same option.
nod3d12 PROTON_NO_D3D12 Disables DX12.
nod3d11 PROTON_NO_D3D11 Disables DX11.
nod3d10 PROTON_NO_D3D10 Disables DX10.
nod3d9 PROTON_NO_D3D9 Disables DX9.
noesync PROTON_NO_ESYNC Do not use eventfd-based in-process synchronization primitives.
nofsync PROTON_NO_FSYNC Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.)
forcelgadd PROTON_FORCE_LARGE_ADDRESS_AWARE Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables.
heapdelayfree PROTON_HEAP_DELAY_FREE Delay freeing some memory, to work around application use-after-free bugs.
noxim PROTON_NO_XIM Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7.
enablenvapi PROTON_ENABLE_NVAPI Enable NVIDIA's NVAPI GPU support library.
noforcelgadd Disable forcelgadd. If both this and forcelgadd are set, enabled wins.
oldglstr PROTON_OLD_GL_STRING Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings.
cmdlineappend: Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash.
seccomp PROTON_USE_SECCOMP Enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work.
nowritewatch PROTON_NO_WRITE_WATCH Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games).
WINE_FULLSCREEN_FSR Enable AMD FidelityFX Super Resolution (FSR) 1, use in conjunction with WINE_FULLSCREEN_FSR_STRENGTH. Only works in Vulkan games (DXVK and VKD3D-Proton included). Enabled by default since GE-Proton7-29
WINE_FULLSCREEN_FSR_STRENGTH AMD FidelityFX Super Resolution (FSR) strength, the default sharpening of 5 is enough without needing modification, but can be changed with 0-5 if wanted. 0 is the maximum sharpness, higher values mean less sharpening. 2 is the AMD recommended default and is set by GE-Proton by default.
WINE_FULLSCREEN_FSR_CUSTOM_MODE Set fake resolution of the screen. This can be useful in games that render in native resolution regardless of the selected resolution. Parameter WIDTHxHEIGHT
WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER Set to 1 to enable. Required for video playback in some games to not be miscolored (usually tinted pink)

Credits

As many of you may or may not already know, there is a Credits section in the README for this Git repository. My proton-ge project contains some of my personal tweaks to Proton, but a large amount of the patches, rebases and fixes come from numerous people's projects. While I tend to get credited for my builds, a lot of the work that goes into it are from other people as well. I'd like to take some time to point a few of these people out of recognition. In future builds, I plan to make clearer and more informative Git commits, as well as attempt to give these people further crediting, as my README may not be sufficient in doing so.

TKG (Etienne Juvigny)

I and many others owe TKG. In regards to both WINE and Proton. He has dedicated a lot of time (2+ years at least) to rebasing WINE and Proton patches, as well as making his own contributions. Before he came along, I did some rebasing work, and mainly only released things for Arch. These days he almost always beats me to rebasing, and it saves myself and others a lot of work.

Guy1524 (Derek Lesho)

Derek was responsible for the original rawinput patches, as well as several various game fixes in the past, just to name a few: MK11, FFXV, MHW, Steep, AC Odyssey FS fix. He has also done a massive amount of work on media foundation/mfplat, which should be hopefully working very soon.

Joshie (Joshua Ashton)

Joshua is the creator of D9VK and also a huge contributor of DXVK. He is also known for his recent DOOM Eternal WINE fixes and also many of the Vulkan tweaks and fixes used, such as FS hack interger scaling.

doitsujin/ドイツ人 (Philip Rebohle)

Philip is the creator of DXVK and a heavy contributor of VKD3D. He also put up a lot of my bug reporting for Warframe years ago, when DXVK started.

HansKristian/themaister (Hans-Kristian Arntzen)

Hans-Kristian is a heavy contributor of VKD3D and he also created a lot of WINE patches that allowed WoW to work.

flibitijibibo (Ethan Lee)

Ethan is the creator of FAudio, and he also listened to my Warframe bug reports years ago.

simmons-public (Chris Simmons)

Chris is the creator of the original Protonfixes project. The portions of Protonfixes I've imported are what allow customizations to be made to prefixes for various Proton games. without Proton fixes many games would still be broken and/or require manual prefix modification. Huge thanks to Chris.

Sporif (Amine Hassane)

Amine is the current maintainer of dxvk-async. This is a feature that was originally removed from dxvk as it happened around the same time a few overwatch bans happened. It was thought, but never confirmed whether or not this feature caused the bans, so the feature was removed as a safety precaution. It is still safe to use in many single player games, and games that do not have competitive anti-cheats. It has also been confirmed to work safely in Warframe and Path of Exile.

wine-staging maintainers

I also of course need to thank my fellow wine-staging maintainers: Alistair Leslie-Hughes, Zebediah Figura and Paul Gofman

They have contributed MANY patches to staging, far beyond what I have done, as well as kept up with regular rebasing. A lot of times when bug reports come to me, if it has to do with staging I end up testing and relaying information to these guys in order to get issues resolved.

Reporters

Additionally, a thank you is owed to Andrew Aeikum (aeikum), and kisak (kisak-valve) for regularly keeping me in the loop with Proton and fsync patches, as well as accepting PRs I've made to fix Proton build system issues, or listening to bug reports on early Proton patches before they reach Proton release.

Patrons

And finally - To all of my patrons that have supported me, thank you so much. It's because of you that I've been able to keep this project going, getting bug fixes reported, getting Proton/WINE issues fixed, getting various hardware and/or game fixes handled, and so on. Thanks to you, I have been able to use the spare budget in order to both help support the other people that make my project possible, as well as get things necessary for testing such as new game releases or specific hardware that hits odd issues. It's had a huge effect not just for this project, but a large trickle down effect.

My wine-staging co-maintainers are often able to ask me for testing games, or testing on different hardware if they don't have access to it. This also trickles into both Proton bug reporting AND Lutris bug reporting, as I'm able to provide bug testing and feedback and custom builds and upgrades to them as well. I'm also able to test driver related issues for things such as mesa and getting things reported + patched. This in turn leads to early patches for Mesa, the kernel, VKD3D, and other packages on my copr repos as well. The trickle down effect is just one gigantic awesome rabbit hole for getting things fixed. Thank you once again.

Donations

For anyone else interested, my Patreon can be found here:

https://www.patreon.com/gloriouseggroll

Tested Games

Name SteamDB Link ProtonDB Link Steambase Has Protonfixes Has Media Foundation fixes
Acceleration of SUGURI 2 SteamDB ProtonDB Steambase ✔️ ✔️
Age of Empires: Definitive Edition SteamDB ProtonDB Steambase ✔️
Age of Empires II: Definitive Edition SteamDB ProtonDB Steambase ✔️
Age of Empires III: Definitive Edition SteamDB ProtonDB Steambase ✔️
Age of Mythology: Extended Edition SteamDB ProtonDB Steambase ✔️
AirMech Strike SteamDB ProtonDB Steambase ✔️
American Fugitive SteamDB ProtonDB Steambase ✔️ ✔️
Apex Legends SteamDB ProtonDB Steambase ✔️
Arkania
Assetto Corsa SteamDB ProtonDB Steambase ✔️
Astroneer SteamDB ProtonDB Steambase ✔️ ✔️
Aven Colony SteamDB ProtonDB Steambase ✔️ ✔️
Baldur's Gate 3 SteamDB ProtonDB Steambase ✔️
Batman Arkham Asylum SteamDB ProtonDB Steambase ✔️
Batman Arkham Knight SteamDB ProtonDB Steambase ✔️
Battlefield: Bad Company 2 SteamDB ProtonDB Steambase ✔️
BeamNG.drive SteamDB ProtonDB Steambase ✔️
Bejeweled 3 SteamDB ProtonDB Steambase ✔️
Beyond Good and Evil SteamDB ProtonDB Steambase ✔️
BioShock 2 Remastered SteamDB ProtonDB Steambase ✔️
BIT.TRIP BEAT SteamDB ProtonDB Steambase ✔️
BIT.TRIP RUNNER SteamDB ProtonDB Steambase ✔️
BlazBlue Centralfiction SteamDB ProtonDB Steambase ✔️
BlazBlue: Chronophantasma Extend SteamDB ProtonDB Steambase ✔️
Blood and Bacon SteamDB ProtonDB Steambase ✔️
Bloodstained: Ritual of the Night SteamDB ProtonDB Steambase ✔️
Borderlands 2 SteamDB ProtonDB Steambase ✔️
Borderlands 3 SteamDB ProtonDB Steambase ✔️ ✔️
Call of Duty (2003) SteamDB ProtonDB Steambase ✔️
Call of Duty: Black Ops III SteamDB ProtonDB Steambase ✔️
Catherine Classic SteamDB ProtonDB Steambase ✔️
Chantelise - A Tale of Two Sisters SteamDB ProtonDB Steambase ✔️
Conan Exiles SteamDB ProtonDB Steambase ✔️
Crashday Redline Edition SteamDB ProtonDB Steambase ✔️
Crazy Machines 3 SteamDB ProtonDB Steambase ✔️
Cryostasis SteamDB ProtonDB Steambase ✔️
Crysis SteamDB ProtonDB Steambase ✔️
Danganronpa V3: Killing Harmony SteamDB ProtonDB Steambase ✔️
Dark Souls: Prepare To Die Edition SteamDB ProtonDB Steambase ✔️
Dark Souls: Remastered SteamDB ProtonDB Steambase ✔️
DEAD OR ALIVE 5 Last Round: Core Fighters SteamDB ProtonDB Steambase ✔️
Destiny 2 SteamDB ProtonDB Steambase ✔️
Devil May Cry 5 SteamDB ProtonDB Steambase ✔️
Divinity Original Sin 2 - Definitive Edition SteamDB ProtonDB Steambase ✔️
Doom (2016) SteamDB ProtonDB Steambase ✔️
Fall Guys: Ultimate Knockout SteamDB ProtonDB Steambase ✔️
Fallout 3 SteamDB ProtonDB Steambase ✔️
Fallout 4 SteamDB ProtonDB Steambase ✔️
Far Cry 5 SteamDB ProtonDB Steambase ✔️
FINAL FANTASY X/X-2 HD Remaster SteamDB ProtonDB Steambase ✔️
FINAL FANTASY IX SteamDB ProtonDB Steambase ✔️
FINAL FANTASY XIII SteamDB ProtonDB Steambase ✔️
FINAL FANTASY XIV Online SteamDB ProtonDB Steambase ✔️
Forts SteamDB ProtonDB Steambase ✔️
Gears 5 SteamDB ProtonDB Steambase ✔️
Gothic 1 SteamDB ProtonDB Steambase ✔️
Gothic II: Gold Edition SteamDB ProtonDB Steambase ✔️
Gothic 3 SteamDB ProtonDB Steambase ✔️
Gothic 3: Forsaken Gods Enhanced Edition SteamDB ProtonDB Steambase ✔️
Grim Dawn SteamDB ProtonDB Steambase ✔️
GT Legends SteamDB ProtonDB Steambase ✔️
GUILTY GEAR XX ACCENT CORE PLUS R SteamDB ProtonDB Steambase ✔️
Halo: The Master Chief Collection SteamDB ProtonDB Steambase ✔️
Haven SteamDB ProtonDB Steambase ✔️
Heavy Rain SteamDB ProtonDB Steambase ✔️
HighFleet SteamDB ProtonDB Steambase ✔️
IMSCARED SteamDB ProtonDB Steambase ✔️
Industries of Titan SteamDB ProtonDB Steambase ✔️
Injustice 2 SteamDB ProtonDB Steambase ✔️ ✔️
JUMP FORCE SteamDB ProtonDB Steambase ✔️
L.A. Noire SteamDB ProtonDB Steambase ✔️
LEGO Batman 2: DC Super Heroes SteamDB ProtonDB Steambase ✔️
LEGO The Lord of the Rings SteamDB ProtonDB Steambase ✔️
Little Nightmares SteamDB ProtonDB Steambase ✔️
Lord of the Rings: War in the North SteamDB ProtonDB Steambase ✔️
Mafia II Definitive Edition SteamDB ProtonDB Steambase ✔️
Marvel's Avengers SteamDB ProtonDB Steambase ✔️
Mass Effect Legendary Edition SteamDB ProtonDB Steambase ✔️
Metro 2033 SteamDB ProtonDB Steambase ✔️
Microsoft Flight Simulator Game of the Year Edition SteamDB ProtonDB Steambase ✔️
Monster Hunter Rise SteamDB ProtonDB Steambase ✔️
Mortal Kombat 11 SteamDB ProtonDB Steambase ✔️ ✔️
Mortal Kombat X SteamDB ProtonDB Steambase ✔️
Mutant Year Zero: Road to Eden SteamDB ProtonDB Steambase ✔️
Resident Evil 6 SteamDB ProtonDB Steambase ✔️ ✔️
Resident Evil 7 Biohazard SteamDB ProtonDB Steambase ✔️
Resident Evil 8 Village SteamDB ProtonDB Steambase ✔️
Resident Evil Revelations SteamDB ProtonDB Steambase ✔️ ✔️
Resident Evil Revelations 2 SteamDB ProtonDB Steambase ✔️ ✔️
Rise of Nations: Extended Edition SteamDB ProtonDB Steambase ✔️
Sacred 2 Gold SteamDB ProtonDB Steambase ✔️
Scrap Mechanic SteamDB ProtonDB Steambase ✔️
Serious Sam 4 SteamDB ProtonDB Steambase ✔️
Serious Sam: The Random Encounter SteamDB ProtonDB Steambase ✔️
Seven: Enhanced Edition SteamDB ProtonDB Steambase ✔️
Sleeping Dogs: Definitive Edition SteamDB ProtonDB Steambase ✔️
Sonic CD SteamDB ProtonDB Steambase ✔️
SOULCALIBUR VI SteamDB ProtonDB Steambase ✔️ ✔️
Space Engineers SteamDB ProtonDB Steambase ✔️
Spyro Reignited Trilogy SteamDB ProtonDB Steambase ✔️
STAR WARS Galactic Battlegrounds Saga SteamDB ProtonDB Steambase ✔️
Stealth Inc 2: A Game of Clones SteamDB ProtonDB Steambase ✔️
Strange Brigade SteamDB ProtonDB Steambase ✔️
Super Lucky's Tale SteamDB ProtonDB Steambase ✔️
Super Meat Boy SteamDB ProtonDB Steambase ✔️
Syberia SteamDB ProtonDB Steambase ✔️
Tesla Effect: A Tex Murphy Adventure SteamDB ProtonDB Steambase ✔️
The Bureau: XCOM Declassified SteamDB ProtonDB Steambase ✔️
The Elder Scrolls Online SteamDB ProtonDB Steambase ✔️
The Elder Scrolls V: Skyrim SteamDB ProtonDB Steambase ✔️
The Elder Scrolls V: Skyrim Special Edition SteamDB ProtonDB Steambase ✔️
The Evil Within SteamDB ProtonDB Steambase ✔️
The Lord of the Rings Online SteamDB ProtonDB Steambase ✔️
Tokyo Xanadu eX+ SteamDB ProtonDB Steambase ✔️
Tomb Raider SteamDB ProtonDB Steambase ✔️
Tomb Raider I SteamDB ProtonDB Steambase ✔️
Tree of Savior SteamDB ProtonDB Steambase ✔️
Ultimate Marvel VS. Capcom 3 SteamDB ProtonDB Steambase ✔️
Warframe SteamDB ProtonDB Steambase ✔️
Wasteland 3 SteamDB ProtonDB Steambase ✔️
Watch_Dogs SteamDB ProtonDB Steambase ✔️
Watch_Dogs 2 SteamDB ProtonDB Steambase ✔️
WORLD OF HORROR SteamDB ProtonDB Steambase ✔️
Yakuza 0 SteamDB ProtonDB Steambase ✔️
Yakuza Kiwami SteamDB ProtonDB Steambase ✔️
Yesterday Origins SteamDB ProtonDB Steambase ✔️
You Need A Budget 4 (YNAB) SteamDB ProtonDB Steambase ✔️