Code Guidelines

Random notes

C++ and BP is closley linked

BP relies on C++ for all it does. Every node in BP is in C++

You can extent BP easy with C++. You can make functions and variables exposed to BP.


The recommended amount of C++ vs BP differs a lot between projects.

Typically in a large game projects, 80% c++ and 20% bp.

You should always start of with learning and mastering C++ first (even if they are programmer).

Helps close the gap with the rest of the team.

C++ more performence

C++ better for managing large and compleex systems, or math.

Some thing simply can be done in BP or is diffuclt/sub optimal

Save games

platform/device spec function

control input menus

spec hardware, sdk and other intergations.

A good balance between c++ and bp will greatly improve workflow and collaboration in large projects

BP is faster for creation and prototyping

BP is faster for iteration

Better for understanding and reading flow

More flexiable and accessible to the wider team

--- C++ Best practices

In larger projects, most classes should, at all times, be made in C++, but extended in BP.

C++ has core functionality and most important variables

The BP class is the one that is placed in the world.

BP has minor functionality, audio/visual effects functionality and content references

Thigs should generally be in C++ when...

Functionality that is used in more then one places

Used per tick, especially if it concerns many actors.

complext in nature and bug prone or maintennace heavey

likley to be extended signifcandtly later

concering complex and cirtical features such as save games, networking

important variables, enums and so on.

And things typically in BP

the majority of content references

anything that is straightforward and/or visual in nature

one of functionality, isolated functionality, not part of core architecture

functionality that is still being prototyped and rapidly iterated on.

Anything else that would not get any benefit being in C++ in terms of performence, scaling, bug proof and so forth

C++ variables and pure functions greatly improve BP workflow. Slips casting.

Blueprint C++ libaries are great if you want a function that need access across many different BPs.

Mostly useful for stateless functions.

Even if most fonctionality in C++ it should be standard to provide deletgates and events. Invite content team to participate, prototype and tweak.