8000 Home · steamtricks/steamtricks Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Jimmy Berry edited this page May 18, 2017 · 10 revisions

Support

Reporting 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)

Development

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 becomes 570-Dota_2)

If you are unfamiliar with an app's ID follow browse files steps above, then:

  • go up two directories (should see directories like common or workshop and a bunch of files like appmanifest_###.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
    • 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

Packaging

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).

Clone this wiki locally
0