Home General Discussion

Naming conventions and structure?

polycounter lvl 5
Offline / Send Message
Pavolin polycounter lvl 5
Hello everyone!
I'm currently trying to research some naming conventions and structure that game artists use and why. I've currently hit a dryspot and is in need of more information.
So my question is how do you name your assets, how is your mapstructure and why is it like that? Do you change your way you name things when you work in a development team instead of working alone, why?

Would appreciate any answer very much! (If you have any article on the matter it would mean a lot to me if you posted it. This is for a school project so I'll need references and such)

Thank you and have a great day!

Replies

  • Autocon
    Offline / Send Message
    Autocon polycounter lvl 15
    I am a big fan of well named things as it makes it easier to find assets and find assets created by others at the studio. At ND we have a pretty good naming convention that most people stick to fairly well.

    It goes level name (between 3 and 5 letters for the level name) followed by a descriptive one word for the type that prototype is (like rocks, cliffs, foliage, building) and then you can make more nested levels of different types within that first type if you need to specify more (so like buildings/windows or buildings/doors) followed by whatever you want to name your asset (like layered-cliff-a)

    For Uncharted 3 on the horse chase level a lot of my stuff was set up as followed.

    horse-rocks-layered-med-a
    horse-plants-reeds-short-c
    horse-cliffs-smoothedge-curve-b
    horse-oasis-tents-tent-a
    horse-oasis-objects-rugs-hanging-a


    So in a folder they would look like...
    horse/rocks/layered-med-a
    horse/plants/reeds-short-c
    horse/oasis/tents/tent-a
    horse/oasis/objects/rugs-hanging-a

    So Oasis has a Tents and Objects folder as these type of assets were limited to the Oasis used in a cutscene. Horse being the level name, Oasis being the first main folder, Tents/Objects being secondary folders and rugs-hanging-a being the name of the asset.

    I like this set up and name things as such at home as well.
  • 3DKnight
    Offline / Send Message
    3DKnight polycounter lvl 17
    It's a pretty common naming cov. Usually the location or the level it was used in is there at the start so people know where it belongs and you can easily sort by it's location in long lists

    Map_Type_Desc_Number

    so

    A) Horse Chase Map
    B) It's a Rock
    C) It's a Layered type of Rock which is Medium in Size
    D) It's the First Variant (A)

    usually objects that can be used everywhere can be given "generic" in front

    Though some engines allow meta tagging, which allow for simpler names.
  • 3DKnight
    Offline / Send Message
    3DKnight polycounter lvl 17
    well take in context the game. Uncharted is setup like a movie, it is a very linear story and every set is pretty unique, they rarely reuse large environmental assets from very speicifc plot points elsewhere in the game.

    apart from generic vegetation and scatter props I imagine.


    If you were working on other open world games, then usually they woudl be sorted by area. Im sure in RD:R, the mexico set peices were not going to be used in the american setting, and vice versa.

    It is more important that you want to make sure assets are used and labeled where they are ment to be used, then you can sort them by its type. Very often in larger studios objects can be dumped in where they are not ment to be, naming coventions in this manner prevents that
  • Pavolin
    Offline / Send Message
    Pavolin polycounter lvl 5
    Could you give me some examples on how you guys over at ND name your textures/materials/etc? Do you use _diffuse for diffuse or do you use just a _D? According to http://udn.epicgames.com/Three/AssetPipeline.html (which is quite specific for UDK I guess) they recommend using asset type in the beginning, for example, SM_ for static mesh. Is this something you use?
    How do you guys organize your packages. We are currently doing a package and in that we have 3 maps. One for meshes, one for textures, and one for materials. How is it done over at ND, or any other company for that matter?

    Really appreciate the answers guys! It helps me a lot with my school project. It is also very intressting to see how other people and companies handle this matter.
  • Lazerus Reborn
    Offline / Send Message
    Lazerus Reborn polycounter lvl 8
    I'm a entry level and use pretty much the same structure for naming conventions in my personal work. Though since i'm working solo and want maximum reuse i often separate a lot of work into separate .upk's (udk packs), which can be loaded easily into the map.

    As for different maps, i assume most use the same conventions for the sake of simplicity.

    horse/oasis/objects/rugs-hanging-a-N.tga
    horse/oasis/objects/rugs-hanging-a-S.tga
    horse/oasis/objects/rugs-hanging-a-D.tga

    I have a preference for "_" instead of "-" especially when using UDK since it reads easier. Again thats personal preference and may cock up some parsers in different workflows so.

    The general key to naming conventions is to make it searchable, easy to find/differentiate and know what it is. Lastly, Consistency is the crux of working, everyone has to follow the same conventions otherwise it'll mess everyone else up.
  • JacqueChoi
    Offline / Send Message
    JacqueChoi polycounter
    Character Artists have it easy unless folder structure = Memory Packing

    >_<

    Then we enter a world of pain.
  • Andre.Jonsson
    Offline / Send Message
    Andre.Jonsson polycounter lvl 5
    @Lazerus Reborn
    How do you search for a diffuse in your example? If it's just "D" that indicates that it is a Diffuse isn't it quite easy to find results with objects that have a "D" in their name (For example Door)? Sorry if I don't quite understand, I can be stupid sometimes.

    @JacqueChoi
    Care to elaborate, JacqueChoi? :) I haven't done much on the character front.
  • Justin Meisse
    Offline / Send Message
    Justin Meisse polycounter lvl 18
    speaking from my own experience in the MMO biz, character naming conventions get just as messy and convoluted as environments.

    Perhaps category folder names like /trees and specific named assets like DeathWoods_TreeLarge_01 inside the tree folder. So designers can look and say "hmm, at this point, the player hasn't been in the Deathwoods for 10 hours so if we reuse the Deathwoods trees for the Necromancer's tower it will feel new again".
  • JacqueChoi
    Offline / Send Message
    JacqueChoi polycounter
    Oh.

    For character kitbashing, it's usually easy to have a folder structure and naming like:

    Hat
    Head
    Hair
    Accessories
    UBody (Upper Body)
    LBody (Lower Body)
    Feet

    And then at burn or build (or somewhere in the process I'm unfamiliar with) it will just breakup and distribute each texture pack into any arbitrary texture pack that a level might need.

    But in an engine like UDK (the setup I'm familiar with) is each folder is their own package (UPK). So there isn't a lot of opportunity to GROW beyond that.. for instance.

    Example:
    Imagine you initially planned for 10 unique heads. But each texture package can only hold 5 heads. Common sense would dictate you split the head textures into 2 packets.

    Lets say:

    SHead (Skinny Head)
    FHead (Fat Head)

    Then partway through production, someone decides to add 5 more heads, 3 Skinny and 2 Fat: The naming becomes:


    MHead
    MHead1
    FHead
    FHead1

    Then imagine they want to add 4x diffuse texture swaps for each head. It ends up being a bit of a clusterfuck.

    >_<

    Something like that works really well for AGILE development. But from my personal experience, Agile has always VERY quickly becomes fr'AGILE'.
  • Justin Meisse
    Offline / Send Message
    Justin Meisse polycounter lvl 18
    In an MMO it's not unheard of to have 1,000 unique models of player gear - ooooof!
  • Lazerus Reborn
    Offline / Send Message
    Lazerus Reborn polycounter lvl 8
    @Lazerus Reborn
    How do you search for a diffuse in your example? If it's just "D" that indicates that it is a Diffuse isn't it quite easy to find results with objects that have a "D" in their name (For example Door)? Sorry if I don't quite understand, I can be stupid sometimes.

    Let's start with something easy then. I have a rock model & its maps that needs to be imported into the engine library, so lets name it appropriately.

    RockSet1_Arch_1.ase
    RockSet1_Arch_1_D.tga
    RockSet1_Arch_1_N.tga
    RockSet1_Arch_1_S.tga

    L7YdSs3.png

    Now RockSet1 is a generic library for filling out the environment, with as you guessed rocks. The groupings, Materials, Mesh & Textures, hold each respective files accordingly. This of course makes like easier to find files and search within the UPK for whatever i need.

    Now suddenly, i decided to add a set of variant texture maps to Arch_1;

    RockSet1_Arch_1.ase
    RockSet1_Arch_1_V1_D.tga
    RockSet1_Arch_1_V1_N.tga
    RockSet1_Arch_1_V1_S.tga

    RockSet1_Arch_1_V2_D.tga
    RockSet1_Arch_1_V2_N.tga
    RockSet1_Arch_1_V2_S.tga

    If you never planned for the variants and can't change the previous names or structure then I'd most likely do the following;

    RockSet1_Arch_1_D_V2.tga
    RockSet1_Arch_1_N_V2.tga
    RockSet1_Arch_1_S_V2.tga

    In some cases i'll pack an entire .UPK set such as RockSet2 onto a single UV map. Making variations much easier since a single variation spans the entire pack:

    RockSet2_D.tga
    RockSet2_N.tga
    RockSet2_S.tga

    To cut a long explanation short, I'd just search for the set/the model name/Instance/or Grouping in UDK.

    As long as you're organised from the start, keep to a set of strict rules, then you should be fine.

    Making sure everyone else follows them is a whole other story though.

    *Disclaimer this is just my own system born from OCD and organising/searching through a few thousand models.
  • JoshVanZuylen
    Offline / Send Message
    JoshVanZuylen polycounter lvl 5
    Pretty much the same as these guys, except I throw a M_ mor materials. T_ for textures. SM for static meshes.
  • fmnoor
    Offline / Send Message
    fmnoor polycounter lvl 17
    I'm a personal fan of adding initials as a prefix to scene files, so you can track down the original owner / artist at a glance without having to check through P4. Also helps with accidentally naming a file the same as another artist.
  • Autocon
    Offline / Send Message
    Autocon polycounter lvl 15
    3DKnight is correct, we rarely directly share assets from one level to the next. Are levels are created so each one has a distinct feel and look to them. We globe trot a good amount so the rocks in Horse Chase should look different than the rocks in say Chateau which was based in France.

    With that said, we do often times reuse the same asset in multiple levels, but things like shaders/vert blending changes. If you want to use an asset in your level, you just break off a variation for your level so you can make all the adjustments you need/want to that asset without effecting the other artists.

    An example would be, a few of the rocks I created for the Horse Chase level I reused the same model for the end of the game level Sandlantis, but the shaders/vert blending were different. Since we use tiling textures and vert blending over unique unwraps on most things you can get a ton of variation and make one asset look very different from the level it was originally used in with a different tiling texture and painted blend.

    Another reason for this is that on the current generation of consoles we do not have physically based shaders so different lighting scenarios will change the way each shader works. If we have rocks that look fantastic in an open sunny environment, they might not hold up when they are in a deep dark cave. Not without physically based shaders that is.


    As far as naming on textures/shaders its set up basically the same. But since we use a lot of tiling textures on assets meaning multiple assets use the same shader/texture we dont have as many shaders. So we would have something like "horse-cliffs-layered" and there would be like 5 models associated with that shader. And that shader is blending 2 different texture types together.

    In terms of naming textures we use -color -normal -spec-map for things. Our in house shader tool will look for the -color when you click to add in a diffuse texture, a -normal to add a normal map and so forth. Speeds things up a good bit.
Sign In or Register to comment.