Naming Assets

This has been lying as a text file on my desktop for a while to improve upon. I thought I’ll put it up and see what comments I get.
At the same time I’ll use this opportunity to announce that I finally have a domain http://pranav.tekchand.net (after patiently waiting to snatch it up). The site currently just links to this Windows Live Space and other online profiles. It also has some contact information.
As for this post it is still loosely laid out from thoughts I scribbled (excuse me for that).

ArtFileNaming.txt
Use project, model-character/object name, a serial/version number, change and/or separate changelog.txt

When a programmer requests art work from an artist s/he should also suggest a file name depending on what component (variable in code?) it would be used for. Since a programmer might have already spent some time thinking of appropriate variable names and is much more used to that process than most artists.
For example, for a contrail/jet stream effect, an artist (**) gave the texture pranav_sky_alpha.png, which was then renamed to StreamTile.png since it was a tile-able texture to be used in the jet stream effect from the sky diver’s hands. The examples could go on – like this particular video required for project XYZ: XYZ.avi, XYZ_Subbed.avi XYZ_Subbed_4.avi, XYZ_Sound.avi,  XYZ_640x480.avi, (and many more).

When creating an art requirements list, the PM/Lead/Art director should also spend a little time on names.

Artists should be encouraged to think of more meaningful names as well.

A proposed convention:
[Project Name]/[Asset Name].[Revision Number].[Optional change description].{extension}

Project Name: Project for which the asset is currently intended for.
(More sub directories to sort/classify the asset; examples:  Characters, Objects, Vehicles, Videos, …)
Asset Name    : Name of the asset.
Revision Number: An increasing number for the times the object has been modified. Think of this as the ‘incremental save’ feature in 3Ds Max, where it automatically adds/increases a number at the end of a file name.
(A decimal may be used for intermediate saves)
Optional change description: A few keywords describing the change made. Alternatively, there could be a "Changelog.txt" in the same directory as the asset. Which would contain the Revision Number (or full file name) followed by the description of the change made.

Examples:
TheAwesomeGame/LeadCharacter.3.TextureApplied.max
TheAwesomeGame/LeadCharacter.3.1.ModelTweaked.max
TheAwesomeGame/LeadCharacter.3.2.UVMapTweaked.max
TheAwesomeGame/LeadCharacter.4.TextureChanged.max
.3 and .4 are files that the artist would submit to the PM/Lead/Art Director (or whoever requested the asset). 3.1 and 3.2 are just saves made at ‘good stopping points in time’ by the artist.

Rationale:
Time is saved when a month after inactivity on a particular asset, some changes are requested. The ‘noodles’ of file names and locations becomes difficult to un-jumble. Minor/Subtle changes made to an asset may get lost and need to be re-done. For example, say the only change between two versions on an asset in the ‘soup’ is that certain normals were flipped to look correct in an engine. When the artist opens the unchanged file a month later, it might not catch his/her attention and those changes are lost, requiring more changes when its spotted again later.
I’m all for using a revision control software, but it seems like a bit of an uphill battle; It takes time to train a new hire/fresher – even many programmers seem to have a hard time getting used to the concept (I blame their choice of ‘bcoz’ instead of ‘because’, even if they type at 40+ wpm (citation/check if that is good/its just a number that popped into my head), when they’re fresh out of school). So expecting an artist to have time to/be willing to/be mentally built to (they’ve trained themselves to be right brained, as programmers were busy doing the opposite) learn version control may be a little more difficult. It seems like fixing certain details that they don’t think about often might make it easier for everyone. (And slowly get them used to the concept of version control, starting with such file names – embrace. extend. extinguish. 😉 ).
Additionally, all versions are available immediately in the same location – as compared to having to pull out specific versions from the version control software/system – since changes are mostly tracked per file name. Also considering most version control systems will probably store the whole file since it is (most art assets) binary (Yes, thank you, ‘future commenter’, mercurial could be set to do binary diffs and will keep older verisons compressed saving some space.) – you might as well have them all available in place.
Another minor benefit of naming this way is that the assets can be quickly sorted by age. (Yes, I’m aware of a sort by date, but try sending a file across to someone using some of those LAN/intranet messengers floating around.). I name photographs as "YYYY[MM]DD [Location/Event] (Number) [Optional caption/detail keywords].{extension}" for the same reason.

I hope to get some constructive comments to make this post better/more useful for everyone. What tools/conventions do you use?

PS: For those of you who can’t comment because you aren’t signed in or don’t have an account, please email me your comments/ideas/suggestions at my [firstname]@[lastname].net ([subdomain]@[domain] from the link mentioned above.) I’ll include them/make changes accordingly.

I’ve also signed up at the swimming pool again and now manage to swim 20 laps (1 kilometer) every time I go.
Swim Lap Log:
earlier (last year) 1×7-8 tops
Signed up again this year
1lap x 14times or so..
2×10.. (also jumped from 10m diving platform) (20 laps in all achieved)
Took a week off to get over a cold. Watched the YouTube videos Tejas was looking at, I just needed to get my head out of ‘competition mode’. I guess when I learnt to swim back in school I was training to race and my style/technique before watching the videos was expending too much energy.
6,6,6,4 (laps with open turns, commas for 1-2min pauses)
6,6,7.5+0.5FAST (I knew I was going to stop after the last lap so I gave it all I had left "FAST").
15May2009: 8, 8, 3.1+0.9FAST
16May2009: 10, 9.2+0.8FAST
17May2009: 12, 7.2+0.8FAST
18May2009: Pool closed on Mondays
19May2009 12, 7.1+0.9FAST
20May2009: 14, 5.1+0.9FAST
21May2009: 19.1+0.9FAST (20laps without a break target achieved! was projected for Saturday evening.) Timed lap a while later: 33 sec for 50m.

Advertisements
This entry was posted in Organizations. Bookmark the permalink.

One Response to Naming Assets

  1. Tejas says:

    The post reminded me of an article on gamasutra I read eons ago about technical artists – http://www.gamasutra.com/view/feature/1651/the_codeart_divide_how_technical_.phpWhile I somewhat agree with the artists learning the naming convention, it would be just as much work to get them to start using revision control software, of course it would be a pain in the *$$ if they were to do it from the command line, the way you love to, but doing it from a GUI or maybe using one from an artist friendly version control tool like one of those from Unity (Asset Server) or the crysis one could be helpful as well. (Lets make a game on the crysis engine, using the excuse that artists would have an easier time managing the assets XD). Further I guess these conventions should be taught to the people in the first week when they join the company. Just like the naming conventions which are laid out for each project, naming conventions for artists should be decided by someone, preferable the technical artist so that the programmers don\’t have to worry about trivial stuff like how the art assets are named.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s