-
Notifications
You must be signed in to change notification settings - Fork 1
Home
- IRC #steamtricks on freenode.net
- steamtricks Discord
- Github issues see below
- steamtricks/steamtricks-data: issues related to specific games fixes
- steamtricks/steamtricks: general issues
To run steam without steamtricks, close steam and then run:
NO_STEAMTRICKS=1 steam
Managing steamtricksd.service:
systemctl --user start steamtricksd
systemctl --user stop steamtricksd
systemctl --user restart steamtricksd
-
journalctl -f --user-unit steamtricksd
: watch log (remove -f to view history)
Full development:
git clone https://github.com/steamtricks/steamtricks.git
git clone https://github.com/steamtricks/steamtricks-data.git
ln -s ../steamtricks-data/data steamtricks/data
cd steamtricks
# run via
./src/steamtricks --watch
Already using a distro package and just want to work on game fixes?
git clone https://github.com/steamtricks/steamtricks-data.git
# set C_DATA_DIR to ~/path/to/steamtricks-data/data
# in ~/.local/share/steamtricks/steamtricksrc
Verifying a game after making a change to one of it's files is the easiest way to trigger steamtricks
to apply fixes and thus test changes. Keep in mind that if none of the files were changed steam will not re-aquire them and thus will not trigger an app update for which steamtricks is listening.
To find the location of game files:
- right click on game in Steam -> Properties
- click
local files
tab - click
browse local files...
button
To generate patches for files that need to be fixed (once in game directory):
git init
git add [file_to_be_changed]
- make changes
git diff > something.patch
For those familiar with tools there is plenty more than can be done.
To work on a new game:
- create directory in steamtricks-data/data in the form
$APP_ID-$APP_NAME
- replace any spaces in
$APP_NAME
with underscores (example:Dota 2
becomes570-Dota_2
)
- replace any spaces in
If you are unfamiliar with an app's ID follow browse files steps above, then:
- go up two directories (should see directories like
common
orworkshop
and a bunch of files likeappmanifest_###.acf
) -
grep "Portal 2" .
(name from Steam) and open file it indicates
Example for Dota 2
(appmanifest_570.acf
):
"AppState"
{
"appID" "570"
"Universe" "1"
"name" "Dota 2"
"StateFlags" "4"
"installdir" "dota 2 beta"
"LastUpdated" "1475895332"
"UpdateResult" "0"
"SizeOnDisk" "16410114392"
"buildid" "1381157"
"LastOwner" "76561197996479361"
"BytesToDownload" "42463872"
"BytesDownloaded" "42463872"
"AutoUpdateBehavior" "2"
"AllowOtherDownloadsWhileRunning" "0"
...
}
Note the appID
is 570
.
File structure for an app fix:
- data/$APP_ID-$APP_NAME
- 00-pre: executable script
- 00-remove: list of files or glob patterns to remove
- *.patch: -p1 formated patches to apply relative to app or steamruntime
- starting with 10 and in increments of 10 (example:
10-first.patch
,20-second.patch
) - the patches are applied in sort order
- the spacing is useful for adding patches in between later
- starting with 10 and in increments of 10 (example:
- 99-post: executable script
Optionally, if fixes need to be applied specific to game buildid (in manifest), which is useful for games with "betas" that are used to play older copies buildid specific subdirectories can be used. All changes in root will always be applied first.
- data/$APP_ID-$APP_NAME
- [root changes]
- 0: applied where buildid >= 0
- same file structure shown above for root
- 100: applied where buildid >= 100
- 200: applied where buildid >= 200
Note that the last directory condition to be true is used and no other directories are evaluated. Using the above example for the following buildids:
- 25 -> 0
- 100 -> 100
- 199 -> 100
- 200 -> 200
- 201 -> 200
For changes that apply to multiple revisions one can use symlinks, but be sure they are relative and not absolute. For example, continuing with the above:
ln -s ../100/10-common.patch 200/10-common.patch
If it becomes apparent that further structures (like arguments (ex. $buildid) to pre/post scripts) are needed please file a pull request or issue to discuss.
Any changes that a distro specific should be handled by checking the actual feature that is the issue. Preferably check a library version or config setting that way the change will apply to other distros with same change or stop once a distro changes that item or updates lib. Such changes should be handled with conditionals in patches applied to bash scripts as well as 00-pre and 99-post.
A good place to start when looking for fixes to implement is the archlinux wiki on Steam Game specific troubleshooting
-
make install
(for bothsteamtricks
andsteamtricks-data
) - patch distro steam package with dist/patch/steam-invoke_steamtricks.patch which starts
steamtricks
whensteam
starts
For an example see OBS home:boombatower:steamtricks.
To install from this repo on openSUSE which contains development builds:
zypper addrepo -p 95 http://download.opensuse.org/repositories/home:boombatower:steamtricks/openSUSE_Tumbleweed/ steamtricks
zypper refresh
zypper dup --from steamtricks
Replace last part with normal openSUSE versions (see OBS link if unsure).