How to organize game assets, and why folders stop working

Every asset folder becomes unsearchable at roughly the same size. Here is what actually goes wrong, and the three ways out.

All posts

Browsing every pack at once in Tessera, with filters for kind, license and tag.

Everybody starts with folders, and folders work. They work at fifty files, they work at five hundred, and then somewhere between one thousand and ten thousand they stop working, always in the same way and always without warning.

It is worth understanding exactly what fails, because the failure tells you what to replace it with.

#What folders are actually bad at

A folder is one classification. You have to choose, once, whether this file is filed by what it is, by where it came from, or by which project you got it for. Whichever you choose, the other two questions become unanswerable.

  • Filed by kind, Models/Trees/, and you cannot find everything from the pack whose license needs crediting.
  • Filed by source, Kenney/Nature Kit/, and you cannot find every tree.
  • Filed by project, SpaceGame/Art/, and you have four copies of the same asset and no idea which is the original.

So people duplicate, and the moment there are two copies of a file, there is no longer a fact of the matter about where it lives. That is the real failure. Not clutter, ambiguity.

Two other things go wrong at the same size:

Archives become invisible. A zip you never unpacked is a black box to every search your operating system can do. Most people have gigabytes of these, and the contents might as well not exist.

The pack's own structure gets destroyed. To use anything you unzip it, and then you tidy, and the readme and the license file get deleted as clutter. That structure was the only documentation the pack had.

#The three ways out

Tags instead of folders. One file, many labels, so you can ask for trees and for that pack. This solves the classification problem cleanly. It does not solve archives, and it does not solve licensing, and it depends entirely on you tagging things, which in practice means tagging things for about three weeks.

A general asset manager. Tools like this exist and are good at pictures. They are built around images, so 3D models, HDRIs, audio and fonts get thumbnails they cannot generate and metadata they do not have a field for. And none of them have an opinion about licenses, because for photography and design work, licensing is somebody else's department.

A library that keeps packs whole. Which is the approach Tessera takes, so treat what follows as the argument for it rather than a neutral survey.

#Keep the pack, index everything

The idea is that the pack is the unit, not the file.

A pack comes in as its author assembled it: readme, license file, folder structure, all intact. Nothing is flattened into a heap. Then everything inside it is indexed, including the insides of archives that are never unpacked, so search reaches into a zip you have never opened.

Searching across every pack, including inside archives
One search across every pack, every file and the insides of archives that were never unpacked.

That gets you the two things folders could not do at once. The pack still exists as a thing, with its license and its source attached to it, so "show me everything that needs crediting" is a real question with a real answer. And the file is reachable by what it is, regardless of which pack it came in, so "show me every tree" works too.

Collections do the tagging job on top, by hand or by a rule that keeps itself current, and because they point at the files rather than copying them, a file being in six collections is still one file on disk.

#What this does not fix

It does not make a badly made pack good. If the author named everything model_01 through model_94, you still have to look at them.

It does not decide anything for you. A library that renamed and reorganized your files would be worse than folders, because at least you made the folders.

And it does not require you to migrate. If your assets are already on a drive in a structure you know, Tessera can read them where they are rather than copying 300 GB onto your main disk, and your existing project references keep working because nothing moved.

#The test worth applying

Whatever you use, including folders, ask one question of it: can you list every asset in your game that needs a credit line, in under a minute, without opening a file manager?

If you can, your system works, and you should ignore all of the above. If you cannot, that is the gap, and it will not be fixed by a tidier folder structure. It is fixed by recording the license and the source when the asset arrives, and by keeping the pack intact so there is something for the record to be attached to.

Install Tessera, or read your library and collections.

Something to add, or something wrong? Say so in discussions.