ShintTools

Unity Project Structure: Best Practices for Indie & AA Studios

How to organize a Unity project so it scales past 10 contributors without merge hell. Folders, addressables, asmdefs, and review automation.

·10 min read

Unity projects do not collapse from technical debt. They collapse from merge conflicts on .meta files at 2am. Below is the structure we recommend after auditing 60+ studios from 3-person indies to 80-person AA teams.

Top-level folders

Assets/
  _Project/        # all your code, scenes, prefabs, configs
    Scripts/
    Scenes/
    Prefabs/
    ScriptableObjects/
    Settings/      # render pipeline assets, input actions
  Art/             # raw art (textures, models, animations)
  Audio/
  ThirdParty/      # untouched external packages
  Plugins/         # native binaries, .dll, .aar
Packages/
ProjectSettings/

Underscore-prefixed _Project sorts first in every file picker. Everything you wrote is in one root.

Assembly definitions are not optional

Without asmdefs, every script change recompiles every script. With asmdefs, you cut iteration time by 70-90% on projects past 500 scripts.

_Project/
  Scripts/
    Gameplay/
      Gameplay.asmdef
    UI/
      UI.asmdef
    Networking/
      Networking.asmdef
    Tests/
      Tests.asmdef  (references all above, type: TestAssemblies)

Rule: every gameplay system gets its own asmdef. UI references Gameplay, never the reverse.

Addressables over Resources

The Resources/ folder is loaded into RAM in full at build time. On a 4GB Quest 2 build, that's a guaranteed crash. Use Addressables for everything you don't ship statically:

  • Scene-specific prefabs → addressable group per scene
  • Localization assets → addressable group per language, downloadable
  • DLC content → remote addressable groups served from CDN

Source control hygiene

  • Force Text serialization (Edit → Project Settings → Editor → Asset Serialization).
  • Use Smart Merge (UnityYAMLMerge) configured in .gitconfig for scenes/prefabs.
  • Never commit Library/, Temp/, obj/, Logs/.
  • Always commit .meta files — losing them detaches references silently.

Automating the rules

None of this matters if it's a wiki page nobody reads. The ShintTools Unity plugin scans your project locally and reports drift: assets in wrong folders, missing asmdefs, addressable misconfiguration, Resources/ growth. It runs offline — no source code leaves your network.

Free tier: 500 scans/month, one engine. Enough for a 5-person team to keep a project clean. Indie and Studio plans add CI integration and custom rule packs.