-
Notifications
You must be signed in to change notification settings - Fork 0
Steam First Time Setup
install Regular or Custom First-Time-Setups on the fly
tinkergame can start the first-time setup game dependency installation using iscriptevaluator,
which is usually triggered by Steam "magically" without any obvious traces.
Being able to control iscriptevaluator programmatically not only opens the door to many new useful features,
but also offers the possibility to enhance the Steam-default install-mechanism of Steamworks-Shared dependencies.
Some Origin games may not run the First Time Setup automatically from Steam if the evaluator script denotes "mode" "2". In such an instance the evaluator script may only run if a compatibility tool using Manifest v2 for its toolmanifest.vdf file is used. TinkerGame does not do this as Manifest v2 tools run inside of the Steam Linux Runtime, and TinkerGame does not work in this instance. Therefore it stays on the default Manifest v1, and so Steam does not trigger the First Time Setup for apps which denote "mode" "2". See #767 for some discussion around this.
The regular default steam mechanism works as follows:
The iscriptevaluator tool (~/.local/share/Steam/legacycompat/iscriptevaluatorexe) usually is started automatically with Proton
before the game itself is started with two different command line parameters (coming from Steam):
-
legacycompat\evaluatorscript_$GAMESTEAMAPPID.vdf(hereinafterEVALSC): This vdf file contains all packages which are supposed to be installed on the first run of the game (so on Proton Wineprefix (re-)creation) The file does not exist though; it is temporarily auto-created and removed directly after it was used for the installation. -
--get-current-step $GAMESTEAMAPPID(hereinafterGECUST): This command is called as long as the first command is not finished yet, and its only function is to update the current installation state for the Steam status requester.
The functionality in tinkergame requires some modifications (but also offers additional options):
(using tinkergame)
- Find and use a Proton version
Before the iscriptevaluator installation can even be started, tinkergame needs to find a usable Proton version and searches in the following order:
- in the current gameconfig (see Configuration-Files) (allow minor Proton version mismatch)
- in the default game template (see Configuration-Files) (allow minor Proton version mismatch)
- check for variable
$EARLYPROTwhich contains the absolute path to a proton binary - read the file
STLEARLYPROTCONF(~/.config/tinkergame/protonearlyproton.conf) which defines the variable$EARLYPROT
When a Proton executable is found, it is used to launch the above iscriptevaluator commands.
Initially, only the EVALSC command is important as it triggers the creation of the required EVALSC file:
- Capture the
EVALSCvdf config
As the EVALSC is not available, tinkergame starts a capture function, which saves the file as soon as it is available.
The storage directory used is described under Metadata-Support.
If the file is already found there, it is directly used, and the capture is skipped.
- Start the First Time Setup
The captured EVALSC can't be used directly with iscriptevaluator,
as the path to the directory which holds the corresponding installer file is unknown.
It can be either in the game directory or in the Steamworks-Shared path (or in the tinkergame Download Dir '$STLDLDIR', when rolling a custom one).
Fortunately, the game directory is inside a variable, and Steamworks-Shared is hardcoded and can't be changed by the user and, therefore, is always "$STEAM_COMPAT_CLIENT_INSTALL_PATH/steamapps/common/Steamworks Shared"
(which should resolve to ~/.local/share/Steam/steamapps/common/Steamworks Shared on most systems)
tinkergame automatically finds and sets the correct winepath for each of the install packages and inserts it as the linux_install_path variable in EVALSC (which is empty by default)
(a hint to the formerly used foreign_install_path string was found in this excellent wiki - read it!)
A Windows variant of the path (auto-created with some bash expansions) is seded into a copy of EVALSC
and finally, the iscriptevaluator install process is started using the modified EVALSC.
-
Updating the Steam Status Requester
GECUSTWhileEVALSCis running, Steam repeatedly triggers theGECUSTcommand to fetch the Installation Status for the Steam Requester. This works the same way in tinkergame with the additional feature that the currently running Installation exe is shown inside the same Steam Requester as well.

- When the installation is finished, the start process continues as usual
Using tinkergame, it is straightforward to start a customized Steam First-Time-Setup for a game and Re-Create it's Compatdata and Wineprefix simultaneously.
The CUSTOM variant is basically identical to the REGULAR one; the decision on which of both is used depends on the launch situation and the Evaluator Scripts
WARNING: Please be careful, as this includes save data for the game, and deleting the compatdata folder will cause Steam to sync an empty game save to Steam cloud; however, by default, tinkergame will create a backup in ~/.config/tinkergame/backup/ See Backup-Support for more info
A Compatdata and the Wineprefix inside can be simply recreated for a game, either by clicking the Extra Button from the Main Menu or via the Command Line.

The First-Time-Setup is automatically executed as well - either as Regular First-Time-Setup or as Custom First-Time-Setup.
First-Time-Setup implementation supports the following source EVALSC files:
- a copy
REGULARof the temporary regular one (looks like the temporary one created/fetched from Steam can only be initially created when the function is started directly from Steam - not sure yet) in$EVMETAID/${EVALSC}_${GAMESTEAMAPPID}.vdf(= for example ~/.config/tinkergame/meta/eval/id/evaluatorscript_1091500.vdf) - a
CUSTOMcreated one in$EVMETACUSTOMID/${EVALSC}_${GAMESTEAMAPPID}.vdf(= for example ~/.config/tinkergame/meta/eval/id/custom/evaluatorscript_1091500.vdf) - a custom
ADDON, which is installed additional to the previous one (= f.e. ~/.config/tinkergame/meta/eval/id/addon/evaluatorscript_1091500.vdf) - (a
SKIPone)
The priority between REGULAR and CUSTOM depends on the launch constellation as follows:
-
First-Time-Setup started manually
- if neither a
REGULARnor aCUSTOMfile exists, the Create Custom GUI opens (automatically when started with Extra Button, and via 2nd GUI parameter when started from the command line) where aCUSTOM(orADDON) file can be created - if one of both exists, all required variables are autodetected (if possible) and the Regular First-Time-Setup is started
- if neither a
-
First-Time-Setup started automatically
- if neither the
REGULARnor aCUSTOMfile exists, the regularFirst-Time-Setupis started, which also catches theREGULARfile for later use - if the
REGULARfile does exist and theCUSTOMfile does not, theREGULARone is used - if both the
REGULARand theCUSTOMfiles do exist, theCUSTOMone is used - if only the
CUSTOMfile exists, it will be used - if an
ADDONfile exists in the "addon" subdirectory as well, it will be started after the previous one
- if neither the
tinkergame offers the option to also create a First-Time-Setup Evaluator Script via GUI, either started via Extra Button from the Main Menu
or via Command Line.
Open GUI to create a Steam First Time Setup:
tinkergame createfirstinstall|cfi <gameid> <a|c|r|file>
where the single letter as optional last parameter stands for the file which is used as a template to pre-enable the available packages:
- a (the
ADDONfile will be used as a template) - c (the
CUSTOMfile will be used as a template) - r (the
REGULARfile will be used as a template) Without a template shortcut, no files are preselected. The location of the available packages isGLOBALEVALDIR(i.e. /usr/share/tinkergame/eval/packages/) The path could be expanded with a custom one; generally, more features could be added, and this wiki probably is missing some features which are already implemented.
When done with selecting packages, one can choose from the following options:
-
SAVE AS ADDON(The created file will be saved as anADDONfile for further use) -
SAVE AS CUSTOM(The created file will be saved as aCUSTOMfile for further use) -
INSTALL WITHOUT SAVING(The created file will be used immediately for installation without storing it permanently)

If the last parameter is a valid writeable path, the created file will be stored under that filename!
The whole iscriptevaluator process can be skipped by simply creating the Metadata file
$EVMETASKIPID/${EVALSC}_${STEAM_COMPAT_APP_ID}.vdf (= ~/.config/tinkergame/meta/eval/id/skip/evaluatorscript_${STEAM_COMPAT_APP_ID}.vdf)
EVALSC files without any package are skipped early automatically as well.
This skips both the Regular and the Custom First-Time-Setup
The First-Time-Setup process is triggered either automatically or manually.
Depending on the availability of the EVALSC files, the Setup is either a Regular or a Custom First-Time-Setup
(see Evaluator Scripts for file descriptions)
- when on game launch the
[Compatdata](https://github.com/360900/tinkergame/wiki/Compatdata)/ Wineprefix does not yet exist - when on game launch the
EVALSCfile does not exist in Metadata
WARNING: Please be careful, as this includes save data for the game, and deleting the compatdata folder will cause Steam to sync an empty game save to Steam cloud; however, by default, tinkergame will create a backup in ~/.config/tinkergame/backup/ See Backup-Support for more info
**
This can be done either by simply clicking the RE-CREATE WINEPREFIX Extra Button from the Main Menu
or by using the Command Line:
tinkergame createcompatdata|ccd <gameid>: (re-)create Compatdata for
(optional 2nd GUI parameter opens Create Custom GUI to configure custom setup)
When started manually, the Steam-internal requester showing the installation status doesn't open; that's why the Notifier is used here instead.
Note: Steam does not even have to be running for the manual install method!
Customizing the Steam First Time Setup process is pretty complicated and might require some more optimizations and improvements. Future work depends on general feedback
Quick Links
- Changelog
- Installation
- Usage
- Main Menu
- Global Menu
- Tray Icon
- Modding
- Platform-Specific Documentation
- Tweaks
- Utilities
- Advanced