Giter Club home page Giter Club logo

ue5-style-guide's People

Contributors

allar avatar altoretrato avatar ap3lsin4k avatar arnaud58 avatar cosmomyzrailgorynych avatar danlvr avatar drichardson avatar flassari avatar kgasmalla avatar louisgv avatar michaelgold avatar peralysis avatar schultzcole avatar shentoza avatar skylens-inc avatar yashrajbharti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ue5-style-guide's Issues

How should I handle name collisions from class variables to function variables and locals?

This is an arbitrary example but let's say I have a funciton

void SomeClass::SetTarget(AActor* InTarget){
    Target = InTarget;
    ...
    AActor* localTarget = Target; // is local the right prefix for this?
    ...
}

Traditionally in previous teams I've always named the member variable as m_target in this case but I know that's not recommended. I have seen some instances of Epic using My as a prefix but that sometimes doesn't look right either.

I could rename the function parameter to be (AActor* InTarget)

Then what about if I need a local function variable do I name that localTarget?

I've yet to find consistent unreal specific guidelines for dealing with these 3 scopes since I thought I read that using this-> isn't typically recommended?

Texture Suffix

I'd like to propose updating the texture suffix convention as follows, which includes:

  1. Adding the missing Height/Displacement map. This should actually really by _D (as UE4 calls it Displacement), however that conflicts with the Diffuse/Albedo/Base Color map, which should really be _A (since it is an Albedo map in PBR), but that is already taken too, so _H seems like a good compromise. Unless the Diffuse/Albedo/Base Color map is changed to _BC (since UE4 calls it Base Color).
  2. Swapping the Alpha/Opacity and Ambient Occlusion suffix's as the engine refers to Alpha/Opacity simply as Opacity so it makes more sense for it to be _O.
Texture T_    
Texture (Diffuse/Albedo/Base Color) T_ _D  
Texture (Normal) T_ _N  
Texture (Roughness) T_ _R  
Texture (Alpha/Opacity) T_ _O  
Texture (Ambient Occlusion) T_ _A  
Texture (Height/Displacement) T_ _H
Texture (Bump) T_ _B  
Texture (Emissive) T_ _E  
Texture (Mask) T_ _M  
Texture (Specular) T_ _S  
Texture (Packed) T_ _* See notes below about packing.
Texture Cube TC_    
Media Texture MT_    
Render Target RT_    
Cube Render Target RTC_

Virtual Production Naming Conventions and Best Practices

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful with Virtual Production that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Chaos Naming Conventions and Best Practices

I haven't been able to dive real deep into Chaos pipelines, so far all my current game dev experience has been on teams that have still been figuring it out.

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful in Chaos authoring that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Runtime Virtual Textures

Add entry for Runtime Virtual Texture Assets.

In spite of the name, URuntimeVirtualTexture is a sub-class of UObject, not UTexture. Therefore, it probably should not be prefixed with T_, since it cannot be used where textures are normally used.

I propose using RVT as the prefix, as Runtime Virtual Textures are abbreviated like this in the documentation.

Assuming this is good with anyone who cares, I'll have a PR for the change in a bit.

Conflicting namespace between SoundWave and Animation (A_)

Sound Wave and Animation have the same prefix of A_. It seems that the Sound Wave's "A_" was supposed to stand for Audio, but I think since the suffix "SW_" is not used anywhere, it's better to use "SW_" than "A_".

I would like to know what's the reason behind this convention?

Lack of direction around Data Asset naming

Is it possible to add the general convention for how Data Assets are named?

I came looking for how I should name them and the only mention is an asterisk and "it depends" which left me a bit in the dark how to proceed and what standard practice is normally.

I think it would massively benefit future readers having a naming convention for a type which is supposed to be the correct way to manage a lot of data.

Niagara Naming Conventions and Best Practices

I haven't been able to dive real deep into Niagara pipelines, so far all my current game dev experience has been on teams that have still been figuring it out.

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful in Niagara authoring that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Niagara prefixes

Niagara has more asset types than Cascade. Whereas Cascade had Particle System, Niagara has:

  • Emitter
  • System
  • Module
  • Function Script (similar to module, both implemented by UNiagaraScript)

I'd like to see these added to the style guide. I don't have a strong opinion about any of the following proposals, just using them to start the conversation.

Proposal 1

Separate prefix for each type, suffix for 1 variation (function script, which is almost the same as a module under the hood).

Asset Type Prefix Suffix Notes
Niagara Emitter NE_
Niagara Module NM_
Niagara Function Script NM_ _S
Niagara System NS_

Proposal 2

Same prefix, different suffix for each type.

Asset Type Prefix Suffix Notes
Niagara Emitter N_ _E
Niagara Module N_ _M
Niagara Function Script N_ _F
Niagara System N_ _S

Proposal 3

Reuse current ParticleSystem prefix and add suffixes for each type.

Asset Type Prefix Suffix Notes
Niagara Emitter PS_ _E
Niagara Module PS_ _M
Niagara Function Script PS_ _F
Niagara System PS_ _S

Update style guide plugin to UE4.20

Hello! I love this guide, but unfortunately, the plugin is not for sale nor updated for the latest engine version.

I would love a mass rename tool. Thank you!

Style guidelines for postprocessing buffers

I'm picking up postprocessing effects and their buffers have turned out to be one of the most asinine things I've seen in UE from a stylistic perspective. "We'll just give this a custom depth buffer of 2 because this is where we have our outline effect" or "Let's set the custom stencil buffer to 3 because this is where we have our desaturated effect". If we pretend this was in a code review for first-party code, I would reject any PR I saw that desaturated objects with object.Foo = 3. How is anyone supposed to know what that means without having either A) wrote the desaturation or B) asked someone who did??? At a minimum I would expect the word "desaturate" or a layer name there in first-party code.

I don't have strong feelings on the exact way to address this since I don't have much domain experience with postprocessing yet, but it seems like there are plenty of ways this legibility could be improved via a style guide. E.g. "Map the custom buffers to an enum so people can figure out what they do, and use the enum when setting the buffer via C++/blueprint". That doesn't help in the case of setting the property value in instances at edit time in the level, but there are potential improvements that could be made there as well.

Nanite Best Practices

Is it too early to have level best practices with Nanite? I guess I'll find out.

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful with Nanite authoring that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Location of functional testing assets

Use of Unreal's functional testing features involves the creation of *.umap files that are intended to be run with the automation tools, not played directly by developers or users. Currently the guide explicitly states that ALL map/level files should go in a single directory, but I'd suggest that functional test levels should be called out as an exception to this rule.

More generally, it might be good to establish convention for storage of tests and fixtures in general for those following TDD.

Levels / World Building Naming Conventions and Best Practices

Is it too early to have level best practices with the new level tooling? I guess I'll find out.

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful with Level / World authoring that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Open Call for All Proposals

This guide needs to be upgraded to a V2 and target Unreal Engine 5.

I'm looking for all feedback and proposals of any kind as to what this document needs, where to take it, anything.

If you've used this guide, please consider helping and shaping the future of Unreal Engine projects everywhere. It is astounding how many people use this guide and you can help make it better for everyone. Even if it just means reporting pain points.

You can engage however you want. Pull requests, issue creation, talking in the discord linked in the readme, becoming a sponsor, raising awareness, flying me out to your studio so I can take a look at your stuff privately and extract only pipeline information, planting trees, etc...

Section 0.3 - Broken Link

Inside of section 0.3, within the text:

When working within a team or discussing within a community such as Unreal Slackers

The provided link shows that unrealslackers.org is now an expired domain.

Linter

I saw that the Linter plugin was removed. Any chance it will be open sourced or a replacement be made?

Physics Asset

It's simpler for the Physics Asset prefix to be PA_ instead of PHYS_ as you always mention the object as a Physics Asset and not just Physics. Also PA_ is easier to write and shorter keeping the length of the files name 2 characters shorter. Which in my case means better and more readable :)

Missing Texture Suffix for Metallic

The current set of texture suffixes do not include a definition for the Metallic channel.

Since M is taken by Mask and the suffix needs to be a single identifier to support stacking, and there are no great synonyms for metal I propose the suffix C, since metal conducts and is also not taken by the other texture issue #25.

Really I don't care what the suffix is, just want to standardize something. I don't have access to many existing projects, so if a suffix already exists lets use that instead.

WB versus WBP

I suppose that WBP_ should be selected as preferred, because the BP letters are included in all other blueprint-related things. Promoting WBP_ prefix will lead to more consistent style, imho.

From section https://github.com/Allar/ue4-style-guide#124-blueprints- ,

Asset type Prefix
Blueprint BP_
Blueprint Function Library BPFL_
Blueprint Interface BPI_
Blueprint Macro Library BPML_
Widget Blueprint WB_ or WBP_

and from https://github.com/Allar/ue4-style-guide#122-animations-

Asset type Prefix
Animation Blueprint ABP_

PC_ for LiDAR point cloud data

Propose using PC_ as a prefix for LiDAR point cloud data imported from LiDAR scans and AR point cloud data.

Note that these datatypes aren't supported by the base Unreal editor but are supported by standard plugins supplied by Epic.

UE5 Installation

Hi!
How does one go about installing the linter to UE5?

Marketplace only seems to works with UE <4.

UI / UMG / Slate Naming Conventions and Best Practices

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful with UI / UMG / Slate that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth or http://discord.gamemak.in/, or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Lumen Best Practices

Is it too early to have Lumen best practices? I guess I'll find out.

I'm looking for any and all insight on how to manage, name, and really just best practices of all kinds. Literally anything useful with Lumen authoring that is helpful to know and conform to.

Please discuss here, on the Gamemakin Discord at https://discord.gg/Kdq5dth , or just create pull requests with your contributions. If possible, please include ways you've seen these in practice, pros and cons, possible alternates. Feel free to contact me through other secure means if you would like to talk behind an NDA or encryption.

Auto-opening a saved report in the browser is missing the protocol

Since there is no repository for the linter plug-in itself, I have to post this here.

Problem

When the linter plug-in is saving a report file (happens with both JSON and HTML), it tries to open the file in the default browser. However, it only passes the file path to the browser, which will NOT cause the browser to actually open the file, but instead interpret the string in any way it sees fit. In my case it starts a web search for the file path.

Solution

Prepend the file protocol prefix to the string passed to the browser. (file:///)

Where to put Static Meshes?

I'm a beginner, so this will feel stupid (and I feel dumb for asking), but where are Static Meshes and Textures supposed to go?

The readme example shows an Art folder that also has Animations and Sounds, so I guessed there at first. But then, the readme also mentions an Environment folder later on ("Want to view only static mesh in Environment/Rocks/?").

So, is it Content/Art/Subfolder or Content/Environment/Subfolder?

Also, I suggest that it gets clarified in the readme for newbies like me.

Work files?

Have there been considerations to adding a section for structuring of work files? Like .blend .psd .afdesign etc. Or at least mention why it falls outside the scope of the guide if that's the case.

Modular Gameplay Best Practices

Looking for any and all guidance about modular gameplay. This includes things like the Gameplay Ability System as well as the actual 'modular' named new bits in the engine.

Animation Sequence and Sound Wave prefix conflict

Problem

In the Asset Name Modifiers section of the style guide, it was stated that:

Asset Type: "Sound Wave" Prefix: "A_"
Retreived from 1.2.10 Sounds

However, the prefix used by Sound Waves conflicts with the prefix used by Animation Sequences.

Asset Type: "Animation Sequence" Prefix: "A_"
Retreived from 1.2.2 Animations

This conflict would mean that if one were to search audio assets using "A_", they would instead find Animation Sequences too, and vice versa.

Proposal

Change the Animation Sequence prefix from "A_" to "AS_".

This refactor would also conform well with the prefix for Level Sequence, which is "LS_".

Struct prefix clashes with Static Mesh

Not that it makes life complicated... But thought I'd raise this in case it's worth addressing to keep all prefixes different?

Curently both Structs and Static Meshes have the S_ prefix. Would it be worth having a different one for the Struct? Something like STR?

More Detailed Folder Structure?

I would like to propose a GUI folder, with sub-folders for e.g. menu, gameplay, cinematics.

While the example folder structure given is probably meant as a rough draft it would be beneficial to make it more definitive and complete, so setting up new projects gets easier for less experienced teams.

Linter v2 for 4.26?

Will there be a linter for 4.26?
I am trying to start here and I saw that the linter is not available for 4.26

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.