When I started using unreal it was obvious that blueprints were very powerful. They are an enabler for people who can't code in C++ and a great way to data drive logic, avoiding code bloat if used correctly.
As a coder though its taken me a while to start feeling their power. I think there are several reasons for this:
- I know C++, its a powerful tool, everything that you can do in blueprint (nearly) you can do in C++, and more.
- My early use of blueprints got messy fast. Partly this is through not knowing how to use them, and partly because things like math expressions do not map well to blueprints.
- The project I am working on is not a "normal" game. It involves more logic surrounding word associations and no shooting, or cool looking characters running around.
Early logic that I put into blueprints fairly quickly migrated back to C++ and everytime I did this it seemed to be for the better.
Now the core gameplay is up and running though I find blueprints start coming back into things. This is happening as I start pushing towards allowing content creators to make MM awesome.
This means hooking up animations, level enclosures, particles effects.
To keep things sane I've adopted something similar to a object-view model. The C++ and some background data (dictionaries of words, basic logic paramaters for the different mode's we have) drive the gameplay logic and send events to blueprints.
Blueprints respond to these events however they like. They can reference whatever assets they like. They can tick in the background and be made as complicated as their designer wants.
Each section of a level in MM can now load a blueprint actor which can pull in all the cool stuff. Events are then sent to the blueprint actor using the awesome blueprint event binding system. Right now blueprints respond by adding particle effects and by animating skeleton that can query level progress through some simple data exposed to the blueprint actor.
Next up the blueprints will be allowed a little feedback, for instance they will be able to pause gameplay while they run an animation.
It'll be interesting to see where this ends. I'm happy with the idea of keeping logic within C++ with it's concise statements and amazing debugger, and to see where expanding blueprints ability to make things look great goes.
Overall I'm very happy with the way unreal has integrated C++ and blueprints but as a long time proponent of simple scripting languages I do wonder if there is a missing bit in the middle.
Perhaps this will help you with your initial approach to blueprints, perhaps it won't.