ai-behavior-trees-util…
Engine-neutral behavior tree and utility AI code for NPCs in any language: Blackboard, reactive composites, decorators and…
Finds and shrinks what makes a Unity 6.3 LTS build too big: Build Report reading, uncompressed textures, glTFast models, PCM audio and per-platform levers. Use when an APK, AAB, WebGL build or Steam depot is over a size limit or the download is too big. Not for frame rate
Claude Code
$ npx -y skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size --agent claude-code
Codex
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a codex -y
Cursor
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a cursor -y
Gemini CLI
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a gemini-cli -y
GitHub Copilot
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a github-copilot -y
OpenCode
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a opencode -y
Windsurf
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill unity-build-size -a windsurf -y
name: unity-build-size description: > Finds and shrinks what makes a Unity 6.3 LTS build too big: Build Report reading, uncompressed textures, glTFast models, PCM audio and per-platform levers. Use when an APK, AAB, WebGL build or Steam depot is over a size limit or the download is too big. Not for frame rate (`performance-optimization`), build scripts or stripping (`unity-build-pipeline`) or store uploads (`steam-publish`).
Bring a Unity player build under a size limit: measure the thing that is limited, fix the few assets and settings that dominate it, rebuild, and prove the result runs. Targets **Unity 6.3 LTS (6000.3)**; the scripts were exercised against glTFast 6.20.0 projects. Keep an existing project's version from `ProjectSettings/ProjectVersion.txt`.
Script paths below are relative to this skill's folder. Both scripts are read-only, standard-library Python 3.10+.
A build has several sizes, and fixing the wrong one wastes the user's time. Find out which file is limited and by how much, then read **only** the matching reference:
| Target | What is usually limited | Read | |--------|-------------------------|------| | Browser (itch.io, portals, own site) | each file in `Build/` (itch.io: 200 MB per file) and the compressed download | [references/platform-web.md](references/platform-web.md) | | Android (APK, AAB, Google Play) | the download Play computes from the AAB | [references/platform-android.md](references/platform-android.md) | | iOS (App Store, TestFlight) | the thinned download per device | [references/platform-ios.md](references/platform-ios.md) | | Windows, macOS, Linux (zip, jam, Steam) | the archive, the installed folder, or Steam patch size | [references/platform-desktop-steam.md](references/platform-desktop-steam.md) |
If the user names a number but not the file it applies to, ask that one question. With no hard limit, pick what the user pays for (download, installed size, patch size) and say which one you measured. Write down the current size of that file before you change anything: it is the baseline you compare against.
Build once (or use the last build of this Editor session) and summarize the Build Report:
python scripts/build_report.py ~/Library/Logs/Unity/Editor.log --top 20
Log paths: Windows `%LOCALAPPDATA%\Unity\Editor\Editor.log`, Linux `~/.config/unity3d/Editor.log`, batch mode the `-logFile` path. Categories say *what kind* of data dominates; the asset list says *which files*. The sizes are uncompressed and in MiB, so they are not the download size: always compare against the file you measured in step 1.
When the Unity CLI is installed (`unity --version`), it can make the build and keep its log: `unity build . --profile "<Build Profile name>" --output-path <output path> --log-file build.log`, then run `build_report.py build.log`. Without it, use the Editor's Build Profiles window or the project's build script.
# --platform: the one you ship, as Standalone, Android, iPhone or WebGL python scripts/check_unity_build_size.py path/to/Project --platform WebGL --max-texture-size 2048
Without the right `--platform`, that platform's texture overrides are not checked. Each `WARNING` names a file, the setting, an estimated build cost and a `fix:` line; `NOTE`s are context. The checker cannot know which assets a build references, so cross it with the Build Report: an asset no shipped scene uses costs nothing.
Smallest change first, one category at a time, so the next measurement shows what each fix bought.
and they have no Texture Importer to fix. Run the checker's `fix:` command, or move the images out; read [references/gltf-textures.md](references/gltf-textures.md) before the first one.
Max Size, per platform if needed (Pattern below). An override with an explicit Format ignores Compression, so set that Format to Automatic or a compressed one. For download size on DXT/ETC formats, Use Crunch Compression shrinks the files further at some quality cost.
where stereo adds nothing.
loaded; `Assets/StreamingAssets` is copied byte for byte. Move out what nothing uses.
source, `gltf-heavy-geometry`), animation compression on clips, and in the Lighting window a lower Max Lightmap Size and Lightmap Compression when lightmaps top the Textures category.
platform reference's settings; stripping levels and `link.xml` belong to `unity-build-pipeline`.
folders that must not ship.
1. Build into an **empty** output folder (a stale folder or a leftover debug folder skews the size). 2. Rerun `build_report.py` and the checker; the categories you touched must have dropped. Measure the limited file from step 1 again and report before and after as numbers. 3. Launch the build the way players get it, reach gameplay, and look at the assets you shrank. The platform reference says how (a Web build needs a server). When you cannot run the target, build for your own platform and launch that, and say which one you tested. 4. For CI, `build_report.py build.log --budget-mb 400` exits
<img src="docs/assets/awesome-gamedev-agent-skills-banner.png" width="820" alt="awesome-gamedev-agent-skills — game-dev skills for AI coding agents.
Engine-neutral behavior tree and utility AI code for NPCs in any language: Blackboard, reactive composites, decorators and…
Engine-neutral game audio technique: bus layout, volume sliders in decibels, loudness, ducking music under dialogue, adaptive…
Builds and tunes game cameras, engine-neutral with Godot and Cinemachine 3 mappings: 2D follow with deadzone and look-ahead,…
Plans, generates or sources, and validates consistent game art: style guides, sprites, pixel art, tilesets, icons and textures,…
Builds engine-neutral branching dialogue with Ink, Yarn Spinner or a small JSON graph runner: lines, choices, conditions,…
Designs engine-neutral enemy and NPC AI: picks FSM, behavior tree, utility or GOAP, and builds perception, steering and A*…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.