So is there any difference between a native function (coming by default with the engine) and a custom function you may create in a blueprint?
And same question at graph level. So is there any way to differentiate native and custom functions? Maybe is there a naming convention for those you created or it just doesn’t matter?
I would think of Native Functions more as Parent Functions. All custom BP classes inherit their variables and functions from a Parent Class (like Actor for example) The functions in Actor can be called by the child classes that we create in addition to the custom function we implement. Some complexity can also be added by calling a Parent Function and then adding extra things to it.
Here is some more reading on it if you’re interested: https://docs.unrealengine.com/en-us/Resources/ContentExamples/Blueprints_Advanced/2_5
Probably a bit stylistic but IMO, best way to differentiate is to add categories to custom functions (and variables). Its handy for grouping them together so you can find them quicker too.
Yes, BP functions are generally slower because they need to run in the Blueprint VM. But if you use BPs in a reasonably efficient way, it probably won’t be noticeable unless you’re doing some pretty heavy stuff. BP Nativization can help in those cases (found one example here: C++ and Blueprints speed comparison - General Discussion - Unreal Engine Forums).