One of the guys on our project wanted to change the way sound folders are organized, and I realized I have fairly strong feelings about the subject. Most of this is just curmudgeonly ranting, it is not Truth, but still:
My experience is keeping folder hierarchies flattish cuts down on minor daily annoyances, both with source control and navigating: say you’re editing the raw content data in one folder, then you go to save, so you have to click up, up, then down, down to get to the proper destination directory; whereas scrolling through a long list of files usually just requires a keypress or three.
To make this work, when using Explorer, everyone will want to do View->Details, otherwise sure, the screenfuls of icons would be overwhelming.
Keeping the raw content separate from the cooked (content you're actually going to ship in the distribution) is important, to simplify not just the authoring/final build process but the process of giving publishers, associates, marketers builds.
One idea that occurs to people frequently is to use the directory structure to describe the files. So instead of zombieAttack.qrx and zombieIdle.qrx you'd have a \zombie folder that contains Attack.qrx and Idle.qrx. This is appealing at first but it's nice to know if you've accidentally dragged the zombie attack sound into the yeti folder. And if the code can assume that every sound name is unique that can gives you an advantage - you can use the asset name as a unique ID. (I don't believe there's any reason any more to have an asset manager that builds .h files with asset codes baked into them - maybe I'll post on how we get around that someday.)
It's not *that* hard to rearrange your hierarchy later (though source control can make it harder) so don't fix a theoretical problem now ("This might get messy"); wait for it to become an actual problem.
When would I start subdividing a folder? When it hits around 500 files, or when all of the files of a subcategory no longer fit in a couple of pagedowns. That is, once you've got enough zombie_xxx files that it isn't just a keypress to find the one you want.
One last thing: I don't use spaces in file and folder names, I use underscores or intercaps. Using the command line to do things with files has become vanishingly rare, but typing in those quotes to find a file with a space in the name is still annoying on those rare cases where I need to do it.
Curmudgeonly ranting over.
A few more things I'd add, from a fellow curmudgeon:
* always use lower case
* never, ever, use a period in a directory or filename
* best bet is to only allow a-z, 0-9, and underscore in directories and filenames
* don't use the project name in directories or filenames (project names change, and future projects will appreciate not having to rename everything)
* establish sensible naming conventions at the start of a project, and stick with them
* keep in mind the X360 only allows filenames up to 42 characters
Posted by: AlanL | July 05, 2009 at 07:37 PM