UE4 Support, naming convention for Assets etc.

Hi, I'm new here and I'm wondering why all the game based tutorials offered here are mostly recommending/dealing with the Unity Engine but not the Unreal Engine or Godot etc. In this case I would like to see some more options within the tutorials so that I'm not determined to only one game engine. 


Is there any tutorial that teaches me what I have to note if I want to create assets which can be used in both engines? 

What I already know is that both engines do use a different API (Unity/Blender = OpenGL, UE4 = DirectX) and that I would have to bake the texture sets differently for each API. 


I also would like to get teached in how to optimally organize and name the asset folders/assets/textures/materials etc. if I want to use different LODs (e.g. 4 LODs) or if I want to have multiple texture sets for one asset.

Should I use namings/suffixes/prefixes etc. like e.g. sm_asset_1_new_lod0, t_asset_1_used_a_lod0_base, m_asset_1_used_a_color_1 or is there a more efficient way and how should I achieve this when I use high- and low poly meshes for texturing/baking them within Substance Painter?

  • Jonathan Gonzalez(jgonzalez) replied

    UE4 is something we've covered in a few tutorials in the past. As of right now we don't have any plans to add more UE4 content to our library as we're focusing more on Blender and utilizing Blender with Unity. I wouldn't mind teaching UE4 myself but we're a small content team so our resources are limited. 

    A while back I wrote an article on Importing and Exporting Game Assets, so something like that could be looked into for UE4. It wouldn't be a course, but an article that covers small tips and tricks like that for UE4. 

    For naming conventions that can vary quite a bit. There is no "one ideal way" to approach it. In general I'd say whatever works for you then use that. Naming and organization is all about how to improve your workflow so you're not struggling to find what you need. Typically for my Unity projects I may have these types of folder:

    • Models
    • Prefabs
    • Materials
    • Scripts
    • Animations

    Just by looking at those folders you know exactly what they are. As far as naming specific objects, that can be a bit different. If I have multiple variations of an object, say rocks, I'd start off by calling them Rocks followed by a number or specific designator. For example if I had 3 rocks of different sizes I'd have Rocks_Large, Rocks_Medium, Rocks_Small. You could also use numbers (Rocks_1). If you add the designator first, it may slow you down. If I'm looking for the medium rocks and I start ALL of my objects with the size, then I'd be looking through a lot of unrelated objects to finally find the one I want.

    Same is true for use in baking. Most of the time people will just name it "high" and "low". So if I wanted to bake a character's details I'd have a high poly character, Character_High, and a low poly character, Character_Low. It doesn't have to be complex, it just needs to make sense to you and/or your team. 

  • bango replied

    jgonzalez

    Well, first I want to thank you for the reply. I'll take a look into the article you've linked here ASAIC.


    Regarding to baking with Substance Painter I've noticed that e.g naming materials or assets with suffixes like _low etc. propably can become messy when I want to export them because I wouldn't need this suffix for the final asset at the end, especially if I want to use multiple texture sets/materials e.g for different LODs . 

    Therefore I was thinking about if there is a better way to name the assets or materials efficiently without needing to change the namings of the texture maps afterwards.


    Regarding to folder types I still don't know which workflow would be better:

    A main hierarchy as in your case, where each folder contains only the corresponding file types or a hierarchy in which all file types belonging to an asset are subordinated?!

    E.G. 

    Assets

    -> Asset 1

          -> Animations

          -> Textures

          -> Materials

          -> Scripts

     Characters

    Environment

    etc.

  • Jonathan Gonzalez(jgonzalez) replied

    bbango My experience baking high poly assets down to low poly assets in Substance Painter is limited. I've done it a handful of times, but I don't remember having multiple materials for high and low poly assets. Maybe we're talking about different things. When I want to bake onto a low poly asset, I just import that asset into Substance Painter. From there I click on the Bake Mesh Maps option:

    From there I provide a high poly mesh to bake within those settings here:

    Where it says "High Definition Meshes", that's where I provide the file for the high poly model. As far as I know this doesn't import any additional materials. Along with that, I don't see why you'd need two sets of materials. The high poly mesh is essentially just used to capture details from it which are baked onto the low poly mesh. Only one set of textures and materials would be exported. You don't even need to add _low or _high to the meshes. These could be in separate folders altogether if it helps you. 

    I think you're over analyzing the naming structure, just find what you feel works best for you. For the folder hierarchy you will more than likely always have your main folders and child folders within them. For example a common setup for a larger project for me would be:


    Animations

    -Character

    -Enemy

    -General

    Audio

    -Music

    -Sound FX

    Scripts

    -Player

    -Enemy

    -Utility


    You can create folders how you posted, but the problem starts when you have multiple assets. If you have 10 different assets you then have ten separate folders. The problem then becomes finding a specific file if you forget what it's attached to. For example if you have a unique script you used for health and you have it within one folder but you forget where, you then need to search for it. 

    It's much easier to find something based off a general category. In this case you know you're looking for a script, so you'd find it within a scripts folder. Think of it as an upside down pyramid. If you know the general category you can then refine your search until you find what you want. If you have everything in specific folders, you have to start off with that refined search first. In either case it really comes down to personal preference.

     I would recommend looking at multiple projects on say Github to get a better idea of how people organize their projects and go from there. Also don't forget to check out Epic's own naming convention here: https://wiki.unrealengine.com/Assets_Naming_Convention 




  • bango replied

    jgonzalez 

    Yeah, you're right! I'm spending definitely too much time thinking about optimal namings and organizing structures. This is probably one of the reasons why I'm stuck at the moment. On my current low poly asset I basically used to use more materials than needed because I was told that using a material for each object of an asset would be the only way to be able to hide those objects in Substance Painter if you want to paint something that's underneath them. But now I've seen another way which seems to be more efficient and I'm going to try out this workflow in the next days.

  • Christopher (captainkeeper) replied

    Sorry to resurrect, but I wanted to point out another resource in addition to the unreal wiki page linked in a previous comment. 

    https://github.com/Allar/ue4-style-guide 

    I have adopted a lot of these concepts in to Unity and have found it helpful. It is great just having a reference to go back to if you are debating something with yourself or someone else.