# Game assets and VPK paths (/docs/guides/game-assets)

Locate CS2 archives and recover missing player models or map geometry.

Player models and map geometry come from the installed game archives. Keep the application's copied `assets/` directory beside the binary for fonts, icons, grenade data and radar files.

## Automatic discovery [#automatic-discovery]

The default `vpk_path` value is `auto`. On Linux, discovery checks Steam roots under `~/.steam/steam`, `~/.steam/root`, `~/.local/share/Steam` and the Flatpak Steam directories. When launched with sudo, it also checks these locations under `/home/$SUDO_USER`.

Discovery reads `steamapps/libraryfolders.vdf` to find additional libraries. Each candidate ends with `steamapps/common/Counter-Strike Global Offensive/game/csgo/pak01_dir.vpk`.

## Set a custom archive [#set-a-custom-archive]

1. In Steam, browse the installed files for Counter-Strike 2.
2. Locate `game/csgo/pak01_dir.vpk`. Keep its companion archive files in place.
3. In **Debug**, find **Directories** and set **VPK Path** to the absolute path of `pak01_dir.vpk`.
4. Save the active profile in **Config** and restart CHUDCS2 to apply the path to the model loader.

Use the archive file itself, even though the current tooltip describes a directory. For example, a library at `/mnt/games/SteamLibrary` uses this profile field:

```json
{
  "vpk_path": "/mnt/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive/game/csgo/pak01_dir.vpk"
}
```

This is a fragment to merge into a profile. See [Configuration](/docs/concepts/configuration) for file locations and validation. Set the value back to `auto` to restore automatic discovery.

## Missing models or geometry [#missing-models-or-geometry]

Check the terminal for `AgentParser` messages. A failed custom archive does not fall back to automatic discovery. Correct the path or restore `auto`, save and restart.

Verify that the process can read the index archive and its companion files. If automatic discovery fails under sudo or with a custom library location, set the absolute archive path explicitly.

**Maps Path** is a separate setting. Pointing it at a map directory does not replace **VPK Path** for player model loading.
