Mixing Blueprint and C++

“Have to” is a strong word. If you are running into performance issues with your blueprint solution, then absolutely start identifying systems / sections of your current blueprint that you could migrate over to a UObject/AActor/Component/Whatever.

For example, if I have a “Wall Climbing” blueprint that allows my character to climb surfaces, it’s potentially pretty expensive. It’s probably doing some raycasts, managing a state machine, driving animations, etc. It’s also very independent in that it doesn’t really care what character is trying to climb what wall, it’s generic. It’s just a system that allows a certain behavior. That’s actually the perfect match for a Component. You could create a new Component (“WallClimbingComponent”), implement your functionality, and then just add that component to any characters you want. You have the same functionality, without the overhead a blueprint may entail.

Does that make sense? Basically, feel free to author whatever in Blueprints if that’s what you’re comfortable with. Once you have a system done, maybe consider moving it to C++ if you feel it’s pretty stable and you aren’t changing it much.