GitHub - Allar/ue5-style-guide: An attempt to make Unreal Engine 4 projects more consistent
In any Identifier
of any kind, never use the following unless absolutely forced to:
\\
#!@$%
PascalCase refers to starting a name with a capital letter and then instead of using spaces, every following word also starts with a capital letter. For example, DesertEagle
, RocketPistol
, and ASeriesOfWords
.
If one of your game characters is named 'Zoë', its folder name should be Zoe
.
All of a project's assets should exist in a folder named after the project. For example, if your project is named 'Generic Shooter', all of it's content should exist in Content/GenericShooter
.
Assets
or AssetTypes
Assets
is redundantAll assets are assets.
Meshes
, Textures
, or Materials
is redundantWant to view only static mesh in Environment/Rocks/
? Simply turn on the Static Mesh filter. If all assets are named correctly, they will also be sorted in alphabetical order regardless of prefixes. Want to view both static meshes and skeletal meshes? Simply turn on both filters. This eliminates the need to potentially have to Control-Click
select two folders in the Content Browser's tree view.
Not doing this also prevents the inevitability of someone putting a static mesh or a texture in a Materials
folder.
This can be seen as a pseudo-exception to 2.6.
There are certain asset types that have a huge volume of related files where each asset has a unique purpose. The two most common are Animation and Audio assets. If you find yourself having 15+ of these assets that belong together, they should be together.
For example, animations that are shared across multiple characters should lay in Characters/Common/Animations
and may have sub-folders such as Locomotion
or Cinematic
.
This does not apply to assets like textures and materials. It is common for a Rocks folder to have a large amount of textures if there are a large amount of rocks, however these textures are generally only related to a few specific rocks and should be named appropriately. Even if these textures are part of a Material Library.
MaterialLibrary
If your project makes use of master materials, layered materials, or any form of reusable materials or textures that do not belong to any subset of assets, these assets should be located in Content/Project/MaterialLibrary
.
This way all 'global' materials have a place to live and are easily located.
This also makes it incredibly easy to enforce a 'use material instances only' policy within a project. If all artists and assets should be using material instances, then the only regular material assets that should exist are within this folder. You can easily verify this by searching for base materials in any folder that isn't the MaterialLibrary.
The MaterialLibrary
doesn't have to consist of purely materials. Shared utility textures, material functions, and other things of this nature should be stored here as well within folders that designate their intended purpose. For example, generic noise textures should be located in MaterialLibrary/Utility
.
Any testing or debug materials should be within MaterialLibrary/Debug
. This allows debug materials to be easily stripped from a project before shipping and makes it incredibly apparent if production assets are using them if reference errors are shown.
accidental delete:
shedlight blueprint
Naming conventions should be treated as law. A project that conforms to a naming convention is able to have its assets managed, searched, parsed, and maintained with incredible ease.
Most things are prefixed with prefixes being generally an acronym of the asset type followed by an underscore.
1.1 Base Asset Name - Prefix_BaseAssetName_Variant_Suffix
All assets should have a Base Asset Name. A Base Asset Name represents a logical grouping of related assets. Any asset that is part of this logical group should follow the standard of Prefix_BaseAssetName_Variant_Suffix
.
For unique but generic variations of assets, Variant
is a two digit number starting at 01
. For example, if you have an environment artist generating nondescript rocks, they would be named Rock_01
, Rock_02
, Rock_03
, etc. Except for rare exceptions, you should never require a three digit variant number. If you have more than 100 assets, you should consider organizing them with different base names or using multiple variant names.
Depending on how your asset variants are made, you can chain together variant names. For example, if you are creating flooring assets for an Arch Viz project you should use the base name Flooring
with chained variants such as Flooring_Marble_01
, Flooring_Maple_01
, Flooring_Tile_Squares_01
.
1.1 Examples
1.1e1 Bob
Asset Type | Asset Name |
---|---|
Skeletal Mesh | SK_Bob |
Material | M_Bob |
Texture (Diffuse/Albedo) | T_Bob_D |
Texture (Normal) | T_Bob_N |
Texture (Evil Diffuse) | T_Bob_Evil_D |
1.1e2 Rocks
Asset Type | Asset Name |
---|---|
Static Mesh (01) | S_Rock_01 |
Static Mesh (02) | S_Rock_02 |
Static Mesh (03) | S_Rock_03 |
Material | M_Rock |
Material Instance (Snow) | MI_Rock_Snow |
1.2 Asset Name Modifiers
When naming an asset, use these tables to determine the prefix and suffix to use with an asset's Base Asset Name.
1.2.1 Most Common
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Level / Map | Should be in a folder called Maps. | ||
Level (Persistent) | _P | ||
Level (Audio) | _Audio | ||
Level (Lighting) | _Lighting | ||
Level (Geometry) | _Geo | ||
Level (Gameplay) | _Gameplay | ||
Blueprint | BP_ | ||
Material | M_ | ||
Static Mesh | S_ | Many use SM_. We use S_. | |
Skeletal Mesh | SK_ | ||
Texture | T_ | _? | See Textures |
Particle System | PS_ | ||
Widget Blueprint | WBP_ |
1.2.2 Animations
Asset Type | Prefix |
---|---|
Aim Offset | AO_ |
Aim Offset 1D | AO_ |
Animation Blueprint | ABP_ |
Animation Composite | AC_ |
Animation Montage | AM_ |
Animation Sequence | A_ |
Blend Space | BS_ |
Blend Space 1D | BS_ |
Level Sequence | LS_ |
Morph Target | MT_ |
Paper Flipbook | PFB_ |
Rig | Rig_ |
Skeletal Mesh | SK_ |
Skeleton | SKEL_ |
1.2.4 Blueprints
| --- | --- | --- | --- |
1.2.5 Materials
| --- | --- | --- |
1.2.6 Textures
| --- | --- | --- | --- |
1.2.7 Miscellaneous
| --- | --- | --- | --- |
1.2.10 Sounds
| --- | --- | --- | --- |