|
Quick! What's the difference between the following groups of file names?
Group 1 1.fbx 2.fbx 3.fbx
Group 2 BuildingShopSmall.fbx BuildingShopLarge.fbx BuildingSkyscraper.fbx
The biggest difference is that by looking at the names of the files in Group 2 you can already start to get an idea of what is included in that file, while the files names for Group 1 are so ambiguous that it's impossible to know what's in the file. Clearly, if you were going to be naming files for a game you would want to follow the structure of Group 2.
So...why did all the files in one the games I was working on end up getting named like the files in Group 1? (Yes we actually had model files named 1.fbx, 2.fbx, etc) Looking back these are the three main things that contributed to our horrible naming conventions on that game:
- To start with our group was still in FIEA learning about game development, so we didn't know entirely what we were doing. (Even after school, I still feel like I don't know what I'm doing half the time)
- Secondly, we were tasked with creating a working prototype for a game within two weeks so we felt like taking time to setup proper naming conventions and folder structure would take away from our development time. (Just in case you couldn't guess this is always the wrong answer)
- Finally, we completely underestimated the impact of having no structure until we were only a day or two away from finishing the prototype and wasting tons of time trying to find the particular files we needed at the right moments.
In the end we really screwed ourselves over towards the end of the project and since then I have always tried my best to emphasize good naming conventions on every game that I am on.
However, even with the best intentions, a tight structure can start to unravel if not maintained properly. Here are some of my suggestions on how to get your naming conventions setup well (can't guarantee that they are the best way but it's the way I do them) and how to maintain them:
Setting up good naming conventions
- When setting up dates use the Year/Month/Day formula. If you do it this way then all your files will start in date order if you sort them by name. Also make sure that the Month and Day always have two numbers. Example: 2012-08-30
- When you have files that are part of a group include the name of the group at the beginning of the file name. If you do this and sort your files by name it will automatically group them together. Example: BuildingsSkyscraper.fbx, BuildingsStore.fbx
Maintaining good naming conventions
- Document all your naming conventions and make sure it's in an easily accessible location. That way team members can easily look up the structure if they either forgot or have never dealt with having to name a file in that structure.
- Perform routine checks on the file names for the game. This doesn't have to be a long, drawn out process. You could quickly look through a couple of files every few days to see if all naming conventions are being maintained.
- Finally, you want to try to build an understanding around the team that having and maintaining proper structure is important. This can take some time and there's no right way to accomplish this, but if you can get your team to be proactive about naming conventions then it will reduce the potential headaches in the future.
Those are only a few ways of creating and maintaining good naming conventions so if you have any tips please post them here so we can all learn!
|
Personally I stay away from ambiguous names, like numbers that represent something. Acronyms and abbreviations are okay, but only if they are descriptive and readable at a glance. So, I don't like, say, brc001d.level, but rather brc_plains.level. Still, if you have lots and lots of content, more descriptive names might not be possible (without using additional suffixes etc.).
In the early days it was harder, with the old 8.3 naming limits in the PC world and 11.3 in some flavours of UNIX. Back then it could be hard to come up with descriptive filenames. These days with essentially unlimited filename lengths, totally agree, no reason not to have descriptive filenames.
One warning about filenaming conventions. It's possible to get too precise. For example, if you choose to encode the fact that a texture has an alpha channel in the naming convention, in some circumstances it can be excessive and thus gets ignored by the team. Example, a tree texture. The naming convention may require '_al' to indicate that the texture contains an alpha channel, but it's probably not required. So according to the Naming Conventions, the texture should be named ABC_Tree1_al.tif But in practice everyone on the team knows that tree textures always require an alpha channel, so in practice the texture gets named ABC_Tree1.tif Perhaps better not to require the '_al' element in the naming convention, or to allow exceptions for texture types that always require an alpha channel.
One suggestion, for maximum convertability (is that even a word ?) between different game engines/realtime systems is to never using spaces in filenames. Instead use Underscores or Dashes. Current Windows and Mac operating systems understand spaces in filenames. But some old school legacy command line utilities won't recognize spaces. So if the utilities are asked to process a file named 'ABC Tree1.tif' the utility may expect a file named 'ABC', won't find it and will abort or return an error. If you name your texture 'ABC_Tree1.tif' you'll have no such problems.
I totally agree about staying away from ambiguous numbers. Even if you're saving multiple copies of a file for redundancy sake it's best to just use a version control program or at least put something at the end of the file name to remind you what's different in that file versus other versions of that file.
Excellent advice on making sure not to use spaces in your file names! I've seen this done sometimes but as you stated most operating systems don't have a problem handling them. However, it is still best to not to use them since there's no benefit in using spaces.
In the next few days I plan on doing a blog post about folder structure but I'm still trying to figure out the best way to present the information.
It's great to see how willing the Video Game community is in helping each other out, and hopefully it stays that way!