I’d consider myself a programmer. I understand C++ and many programming languages in general. However, working with C++ in UE4 feels overly complex for simple tasks. I feel like I can do the same thing 20x faster with blueprints, and I’m not even confident with blueprints yet.
I feel dirty for using Blueprints. I feel like I could do everything I need to do through Blueprints…but I can’t break that mindset of “I should be coding this…”
It seems like UE4 was designed to use Blueprints. C++ seems to have taken a backseat to blueprints to produce game functionality. Hard coding seems to more focused on fine tuning your game mechanics or creating classes to use inside BP.
Anyone else just feel dirty about using BP?
Development is all about using the best tools to complete a task in the fastest time/highest quality that you can. C++ is just a tool. I used to be one of those “C++ only, everything is is for babies” kind of programmers, but I’ve started branching out and realizing C++ is just a tool that does some things well.
Blueprint is another such tool. It allows you to very rapidly prototype or implement features, or to quickly implement classes in such a manner that designers/artists can start to do some of the menial tasks while the developers take the heavier work in the engine.
That being said, I haven’t seen a reason to even make a C++ project yet in all of my playing around, as Blueprint seems powerful enough to do basically everything I could want. I can’t think of anything I would need C++ for that I couldn’t in some fashion do within the Blueprint system
As a programmer look at yourself as a “information artisan”. Lines of code are just one way to manipulate the information flow of the program to achieve what you want. But there are many other techniques such as the UE Blueprint system. Remember, the important thing is to achieve your goals.
For now I have the following approach: prototype as much and fast as possible using blueprints. Then, if I need, I convert some complex blocks set in a single custom BP block. If this is not enough I try with pure C++ (but for now this never happened).
This is how I felt with Kismet (UDK version of BP) Like, for some reason it all just seemed ‘fake’ to me and I thought it was untrustworthy compared to actual coding. It took me a long time to code something in Uscript when all I had to do was connect a few nodes in Kismet.
I’ve broken that mindset now though and hope BP has everything I need so that I don’t need to muddle my way through coding again.
I actually really like BP. As a developer, I see the advantages from a team standpoint when it comes to reusability and safety inside BP.
BP separates the developers from level designers and artists. Its easy enough for level designers and artists to use, while still being safe, think Type Safety. They have the ability to test and change things without directly affecting the source code, in a very easy manner - something that a developer should be quite thankful for.
Additionally, it should free up time that the developers have to spend on individual tasks. Instead of having to go directly to source code to reuse the same classes, you can extend the functionality of BP via the source code and delegate out these monotonous tasks to your level designers. Leaving the developers to tasks such as extending functionality of the engine and more complicated game development tasks.
As a developer, it took me a long time to understand that languages, extensions(such as resharper or spy++), etc. Are just more tools I can put into my toolbox. The whole idea around programming in itself is taking monotonous tasks and automating them. When something on the development side seems “cheap” it may just be that it’s freeing up your time to work on more appropriate tasks.
I see this way, C++ is where you create fondaments of a game, base classes which define base mechanics of gameplay. For example in UE4 there no default inventory system anymore, you need to make your own, so you create it in C++ in the way suitable for you game and blocks ofr it in Bluprint, so desiners can make items etc… In other words you can do tools for your designers and artists to help out making levels.
You could very likely code an inventory using only Blueprints as well
I’m imagining a blueprint base inventory that contains an array of item blueprints with accessors, mutators and events through an interface.
I find it difficult to think of anything you would HAVE to use C++ for that you couldn’t somehow get done with clever blueprinting