Texture compression and backup utility for S.T.A.L.K.E.R. Anomaly modlists.
S.T.A.L.K.E.R. Anomaly and its modpacks represent a labor of love by hundreds of modders, culminating in a unique and memorable gaming experience. However, the ecosystem ships many texture assets uncompressed. On hardware with limited VRAM, this causes stuttering, hitching, and outright crashes during gameplay. ATAK compresses those textures to BCn block compression formats, dramatically reducing VRAM pressure with minimal visual difference.
Works with GAMMA, EFP, and any Anomaly-based modpack.
Grab the latest binary for your platform from Releases:
| Platform | File |
|---|---|
| Linux x86-64 | atak-vX.X.X-linux-x64.tar.gz |
| Windows x86-64 | atak-vX.X.X-windows-x64.zip |
| macOS (Intel + Apple Silicon) | atak-vX.X.X-macos.tar.gz |
No installation required.
Linux / macOS:
tar -xzf atak-vX.X.X-linux-x64.tar.gz
chmod +x atak-linux
./atak-linuxWindows: Extract the zip, run atak-windows.exe in Windows Terminal or PowerShell.
ATAK defaults to Mod Output Mode — a non-destructive workflow that outputs compressed textures to a separate MO2 mod folder instead of modifying your originals. This is the recommended approach.
Setup:
- Launch ATAK and go to Settings
- Set your MO2
modlist.txtpath - Set output mod name (default:
ATAK) - Go to Backup Manager and create a backup — still recommended as a safety net
- Go to Scan & Compress and press [r] to compress everything
- Add the output folder (e.g.
mods/ATAK/) as a mod in MO2 - Place it at the top of your load order and enable it
To compress in-place instead (replaces original files — make a backup first): Disable Mod Output Mode in Settings. Then follow the backup-first workflow below.
In-place workflow:
- Go to Backup Manager — create a backup first, always
- Go to Scan & Compress
- Press [m] to compress a single mod first — verify it looks right in game
- If happy, press [r] to compress everything
- If something looks wrong, restore from backup
- Create compressed LZMA archives of your full Anomaly mods directory
- Restore individual mods or your entire modlist from backup
- Verify archive integrity
Non-destructive compression that reads your MO2 modlist.txt to build a virtual filesystem — the same merged view MO2 presents to the game. Only the winning file for each texture path is compressed (respecting load order). Output goes to a single flat mod folder you add to MO2.
- Your original textures are never modified
- Incremental updates — rerun after adding mods, only new files are compressed
- Delete the output folder to force full recompression
- If scan shows 0 textures, check your modlist.txt path in Settings
ATAK scans for uncompressed DDS textures and classifies them by type using filename patterns and directory paths. Only textures explicitly matched by a profile are compressed — nothing is touched blindly.
Default profiles cover the most common texture categories:
| Profile | Format | Detection method |
|---|---|---|
| Normal / bump maps | BC5 | _bump, _normal, _nrm, _norm suffixes |
| Sights / Reticles | BC3 | scope_reticles/, bonus_sights/, *crosshair* |
| UI / Icons | BC3 | textures/ui/ path |
| Diffuse / color | BC3 | _diff, _base, _col, _d suffixes |
| Weapon textures | BC3 | textures/wpn/, textures/rwap/ paths |
| Character / hands | BC3 | textures/act/, textures/MK/ paths |
| Sky textures | BC3 | textures/sky/ path |
| Terrain / detail | BC3 | textures/terrain/, textures/detail/ paths |
| Items | BC3 | textures/items/, textures/item/, textures/usable_items/ paths |
| Particle / FX | BC3 | textures/semitone/ path |
Already-compressed textures (~24,000 in a typical Anomaly install) are detected and skipped automatically.
Unmatched textures are never touched. Files that don't match any profile are shown in scan results but excluded from compression. Add patterns to profiles.json to include them.
ATAK uses BCn block compression — a GPU-native format that decompresses in hardware with no performance cost. The tradeoff is a small, usually imperceptible quality loss during the compression step.
| Format | Field value | Alpha | Quality | Size | Linux GPU | Best for |
|---|---|---|---|---|---|---|
| BC1 | BC1_UNORM |
No | Good | 0.5 bpt | Yes | Opaque diffuse, environment |
| BC3 | BC3_UNORM |
Yes | Good | 1 bpt | Yes | UI, general alpha textures |
| BC5 | BC5_UNORM |
No | Excellent | 1 bpt | Yes | Normal maps only |
| BC7 | BC7_UNORM |
Yes | Excellent | 1 bpt | No (CPU) | High quality diffuse, weapons |
bpt = bytes per texel
BC5 is required for normal maps — using BC3 on normal maps produces incorrect lighting. Do not change the Normal Maps profile format.
BC7 on Linux is CPU-only — no GPU acceleration available. Expect 40-60 minutes for large jobs. For faster Linux compression, use BC3 for all profiles (the default). Quality difference is minimal at normal viewing distances.
Mip chains: ATAK generates a full mip chain during compression using cubic filtering. This allows the engine to load lower-resolution versions of textures for distant objects, reducing effective VRAM usage further. Keep your in-game texture quality setting at High — lowering it on top of BCn compression will reduce visual quality unnecessarily.
Config lives at:
- Linux:
~/.config/atak/ - Windows:
%AppData%\atak\ - macOS:
~/Library/Application Support/atak/
{
"modsDir": "/path/to/Anomaly/mods",
"backupDir": "/path/to/backups",
"workerCount": 1,
"backupThreads": 4,
"backupLevel": 6,
"scanExclusions": [".*", "downloads", "Downloads", "G.A.M.M.A. UI"],
"modOutputMode": true,
"modOutputName": "ATAK",
"modlistPath": "/path/to/MO2/profiles/Default/modlist.txt"
}workerCount— concurrent texconv processes (compression only). Each worker pegs one CPU core. Default: 1backupThreads— 7-Zip thread count for backup/restore operations. Default: half your CPU threadsbackupLevel— 7-Zip compression level 1-9. Default: 6scanExclusions— directory names to skip during scanmodOutputMode— non-destructive output mode. Default: truemodOutputName— output mod folder name. Default: "ATAK"modlistPath— path to MO2modlist.txt. Required whenmodOutputModeis true
Finding your modlist.txt:
- Usually at
<MO2 install>/profiles/<Profile Name>/modlist.txt - In MO2: click the profile dropdown → "Open Profile Folder"
Controls which textures get compressed and how. Created on first run from embedded defaults. Edit freely.
{
"minFileSizeBytes": 1024,
"excludePatterns": ["fx_sun*", "fx_*", "lut_*", "*#small*", "*cube#*"],
"profiles": [
{
"name": "Normal Maps",
"format": "BC5_UNORM",
"generateMips": true,
"maxTextureSize": 0,
"patterns": ["*_bump.*", "*_normal.*"],
"exclude": []
}
]
}Top-level fields:
minFileSizeBytes— skip files smaller than this. Default: 1024excludePatterns— filename glob patterns never compressed regardless of profile match
Per-profile fields:
name— display name in scan resultsformat— compression format. See table abovegenerateMips— generate full mip chain.truefor most textures,falsefor UImaxTextureSize— cap output resolution.0= no limit. Set to1024on sky/terrain profiles for 4GB VRAM cards. Textures smaller than this value are never upscaledpatterns— glob patterns matched against filename or full pathexclude— optional per-profile exclusions
Pattern syntax:
*matches any characters except/- Patterns without
/match filename only:*_bump.*matchesrock_bump.dds - Patterns with
/match full path:*/textures/wpn/*matches any file undertextures/wpn/ - Matching is case-insensitive on all platforms
- Order matters — first match wins. Put specific patterns before general ones
Community profiles available in the profiles/ directory in the repository:
default.json— conservative BC3 defaults (same as embedded)quality.json— BC7 for weapons and characters (Windows GPU recommended)
Note on BC7: BC7 GPU acceleration is not available on Linux — CPU-only, ~40-60 min for large jobs. Windows benefits from DirectX GPU acceleration. For faster Linux compression, keep all profiles at BC3 (the default).
Benchmarks and feedback welcome — open a GitHub issue or post in the community Discord.
Default profiles use BC3 for all textures except Normal Maps (BC5). BC3 produces minimal visible quality loss at typical Anomaly viewing distances and compresses quickly on all platforms.
For higher quality weapon and character textures, copy profiles/quality.json from the repository to your config directory — this uses BC7 for weapons and characters. Recommended for Windows users with GPU acceleration.
For 4GB VRAM cards, set "maxTextureSize": 1024 on Sky and Terrain profiles in profiles.json to reduce VRAM usage further beyond BCn compression.
- BC7 GPU acceleration not available on Linux — CPU fallback, slow on large jobs
- Cancelling a compression job deletes the in-progress file — originals untouched
- 7-Zip backup progress is sparse on large solid archives — the archive is growing even when the progress bar appears stuck
- If the app crashes during backup/restore on Linux, run
pkill 7zzif you notice high CPU/RAM usage afterwards - Mod Output Mode without a valid modlist.txt will show 0 textures — check Settings if this happens
Requires Go 1.21+.
git clone https://github.com/noisethanks/atak
cd atak
go build -o atak-linux .Release build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-ldflags="-s -w -X main.version=v0.2.0" \
-o atak-linux .S.T.A.L.K.E.R. GAMMA is a large modpack for S.T.A.L.K.E.R. Anomaly maintained by Grok. Join the community on Discord.
- texconv (Texconv-Custom-DLL) — MIT — matyalatte
- 7-Zip — LGPL v2.1 — Igor Pavlov
- Bubble Tea — MIT — Charmbracelet
- Bubbles — MIT — Charmbracelet
- Lip Gloss — MIT — Charmbracelet
Full license text available in-app via the About screen.
If ATAK saved your playthrough, consider supporting development:
Made by mrchocolate

