{"id":47262778,"url":"https://github.com/steamtracking/gametracking","last_synced_at":"2026-04-03T02:02:16.782Z","repository":{"id":22714545,"uuid":"26058799","full_name":"SteamTracking/GameTracking","owner":"SteamTracking","description":"🛢 Dumping things, so you don't have to","archived":false,"fork":false,"pushed_at":"2026-04-01T15:33:13.000Z","size":666358,"stargazers_count":292,"open_issues_count":0,"forks_count":41,"subscribers_count":52,"default_branch":"master","last_synced_at":"2026-04-01T20:39:47.237Z","etag":null,"topics":["half-life-2","left4dead","left4dead2","portal","portal2","protobuf","reverse-engineering","valve"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SteamTracking.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-11-01T18:10:38.000Z","updated_at":"2026-04-01T15:33:17.000Z","dependencies_parsed_at":"2024-01-05T19:36:11.732Z","dependency_job_id":"403c5d20-df80-4e06-b310-e3adf88cdc9d","html_url":"https://github.com/SteamTracking/GameTracking","commit_stats":null,"previous_names":["steamtracking/gametracking"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SteamTracking/GameTracking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SteamTracking%2FGameTracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SteamTracking%2FGameTracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SteamTracking%2FGameTracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SteamTracking%2FGameTracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SteamTracking","download_url":"https://codeload.github.com/SteamTracking/GameTracking/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SteamTracking%2FGameTracking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31326851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T01:42:14.489Z","status":"online","status_checked_at":"2026-04-03T02:00:06.642Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["half-life-2","left4dead","left4dead2","portal","portal2","protobuf","reverse-engineering","valve"],"created_at":"2026-03-15T00:21:34.783Z","updated_at":"2026-04-03T02:02:16.768Z","avatar_url":"https://github.com/SteamTracking.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Game Tracker\n\nTracking things, so you don't have to.\n\nThis repository contains shared tooling and scripts used by the individual game tracking repositories. Game updates are processed entirely via GitHub Actions using a [reusable workflow](/.github/workflows/gametracking.yml).\n\n### How it works\n\nEach game has its own repository (e.g. [GameTracking-Dota2](https://github.com/SteamTracking/GameTracking-Dota2), [GameTracking-CS2](https://github.com/SteamTracking/GameTracking-CS2)) which contains:\n- `.github/workflows/update.yml` - workflow that calls the reusable workflow in this repository.\n- `files.json` - a mapping of depot ids and which files to download from them.\n- `update.sh` - the script that runs when the game is updated.\n\nWhen a game update is detected, the game repository's workflow calls the reusable workflow in this repository, which checks out both repos, builds the tools, downloads the relevant game files using [SteamFileDownloader](https://github.com/SteamTracking/SteamFileDownloader) based on the game's `files.json`, and runs the game's `update.sh`.\n\nSteamFileDownloader is a lightweight depot downloader that downloads files normally, but for pak01 VPKs it only downloads the chunks actually needed to export the requested file extensions.\n\n### Tools\n\nBuilt by [`tools/build.sh`](/tools/build.sh). When a commit is pushed to this repository, CI builds the tools and uploads them to GitHub Releases. Game repositories download the pre-built tools from there.\n\nSome tools live directly in this repo, others are included as submodules. Tools do not self-update. When a submodule tool is modified, its reference in this repository must be updated manually by running `git submodule update --remote` and pushing the result.\n\n### Manually re-running a game update\n\nEach game repository's update workflow can be triggered manually via [workflow dispatch](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manually-run-a-workflow) in the GitHub UI. This is useful for re-processing a game update after fixing a tool. Note that the reusable workflow (`gametracking.yml`) in this repository is only called by game repos, it does not run directly here.\n\n### Shared scripts\n\n- [`common.sh`](/common.sh) - common functions for dumping protobufs, processing VPKs, fixing encodings, and creating commits.\n- [`tools/build.sh`](/tools/build.sh) - builds the required tools (available as submodules). Requires .NET, Go, and CMake.\n\nSupports both Linux and Windows runners.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteamtracking%2Fgametracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteamtracking%2Fgametracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteamtracking%2Fgametracking/lists"}