Summary:
I would like to be able to make minor changes to game files in a reliable way. I also need these changes to be persistent and survive game updates/file verification. The goal is to bring a smooth out of the box experience for more games on Steam.
The optimal solution that I envision is to have Steam allow for hooks that are run after a game update operation completes. Perhaps as an entry in config/config.vdf. I think this feature would be esoteric enough that a UI is not required.
I realize that Valve may have a policy of not making changes to their partner's/developer's game files. I hope though that you could at least facilitate your users in patching the games themselves in an easier fashion.
Thank you!
Personal note:
I have been using ChimeraOS for a long time now which has a built-in solution for this. I recently got my Steam Deck (yay!) and was met with the stark reality of games that I was used to being able to play out of the box on ChimeraOS not being playable on SteamOS. I would love to see this problem addressed on SteamOS so that more users can enjoy even more games!
The problem:
NOTE: My perspective here is not only one of a Steam user myself, but also as the maintainer of ChimeraOS (a SteamOS alternative) and wanting to provide the best out of the box compatibility for all games on Steam to our users and users of SteamOS.
There are some games, particularly older games (and some of my personal favourites!), which require editing of their install script file (usually installscript.vdf) in order for the games to work smoothly out of the box with Proton on Linux.
For example:
BIT.TRIP RUNNER
GRID (2008)
Sonic CD
Mirror's Edge
The Turing Test
Dirt 2
Sometimes an install script patch is simply to suppress an ugly dialog popup which is hard or impossible to navigate in BPM or Gamepad UI. Sometimes a patch is needed for the game to work at all.
Additionally, there are sometimes quite complex tweaks such as adjusting game config files to unlock higher resolution options or enable gamepad compatibility out of the box. We can currently apply these through launch options, but it would be better to offload these elsewhere so that the launch options can be used for other things by our downstream users.
The solution:
Here I lay out a few possible solutions and their pros/cons. Solution 5) is the one I think has the most merit.
Apply the patches in the game launch options
The problem with this method is that launch options execute too late. The "first time setup" process has already run so any changes made to the install scripts at this point is moot. This can work for certain types of patches, but does also clutter the launch options for downstream users.
Apply the patches in a one time script run outside of Steam
This would mostly work, however, it can't apply patches to games that are not installed yet, and the patches can be removed if a user selects to verify the game files or if there is a game update.
Run a service which watches changes to relevant game directories and applies the patches dynamically
This is what we do in ChimeraOS and it works quite well. However, it is not easily possible to provide the same level of functionality to users of SteamOS. Furthermore, having a hook in Steam would make this a much cleaner, simpler, and more reliable implementation.
Have Steam execute a user specified command BEFORE "first time setup"
This is speculation on how Steam works internally so I could be wrong, but I expect that Steam looks for an install script to decide whether to launch the "first time setup". In some cases (Sonic CD), the change needed is actually to ADD an install script that is missing, in which case I expect the hook would never be called.
This method would also be quite specific to install script changes and not apply as well for other types of changes such as config file changes which may be reverted after an update or file verification initiated by the user.
Have Steam execute a user specified command AFTER a game completes downloading or updating
This seems like the best option as it directly addresses the problem: how to automatically edit game files after they are updated/downloaded by Steam.
It would cover all possible use cases (including potential future ones) and be usable by anyone using Steam without any additional services or software required.
Summary:
I would like to be able to make minor changes to game files in a reliable way. I also need these changes to be persistent and survive game updates/file verification. The goal is to bring a smooth out of the box experience for more games on Steam.
The optimal solution that I envision is to have Steam allow for hooks that are run after a game update operation completes. Perhaps as an entry in
config/config.vdf. I think this feature would be esoteric enough that a UI is not required.I realize that Valve may have a policy of not making changes to their partner's/developer's game files. I hope though that you could at least facilitate your users in patching the games themselves in an easier fashion.
Thank you!
Personal note:
I have been using ChimeraOS for a long time now which has a built-in solution for this. I recently got my Steam Deck (yay!) and was met with the stark reality of games that I was used to being able to play out of the box on ChimeraOS not being playable on SteamOS. I would love to see this problem addressed on SteamOS so that more users can enjoy even more games!
The problem:
NOTE: My perspective here is not only one of a Steam user myself, but also as the maintainer of ChimeraOS (a SteamOS alternative) and wanting to provide the best out of the box compatibility for all games on Steam to our users and users of SteamOS.
There are some games, particularly older games (and some of my personal favourites!), which require editing of their install script file (usually
installscript.vdf) in order for the games to work smoothly out of the box with Proton on Linux.For example:
BIT.TRIP RUNNER
GRID (2008)
Sonic CD
Mirror's Edge
The Turing Test
Dirt 2
Sometimes an install script patch is simply to suppress an ugly dialog popup which is hard or impossible to navigate in BPM or Gamepad UI. Sometimes a patch is needed for the game to work at all.
Additionally, there are sometimes quite complex tweaks such as adjusting game config files to unlock higher resolution options or enable gamepad compatibility out of the box. We can currently apply these through launch options, but it would be better to offload these elsewhere so that the launch options can be used for other things by our downstream users.
The solution:
Here I lay out a few possible solutions and their pros/cons. Solution 5) is the one I think has the most merit.
The problem with this method is that launch options execute too late. The "first time setup" process has already run so any changes made to the install scripts at this point is moot. This can work for certain types of patches, but does also clutter the launch options for downstream users.
This would mostly work, however, it can't apply patches to games that are not installed yet, and the patches can be removed if a user selects to verify the game files or if there is a game update.
This is what we do in ChimeraOS and it works quite well. However, it is not easily possible to provide the same level of functionality to users of SteamOS. Furthermore, having a hook in Steam would make this a much cleaner, simpler, and more reliable implementation.
This is speculation on how Steam works internally so I could be wrong, but I expect that Steam looks for an install script to decide whether to launch the "first time setup". In some cases (Sonic CD), the change needed is actually to ADD an install script that is missing, in which case I expect the hook would never be called.
This method would also be quite specific to install script changes and not apply as well for other types of changes such as config file changes which may be reverted after an update or file verification initiated by the user.
This seems like the best option as it directly addresses the problem: how to automatically edit game files after they are updated/downloaded by Steam.
It would cover all possible use cases (including potential future ones) and be usable by anyone using Steam without any additional services or software required.