I’ve implemented large projects in C++ and Blueprints, and both have their advantages - C++ has other strengths other than being faster than blueprints.
Heres three reasons why you might want to continue learning C++:
C++ is great for setting up the core logic for your game
C++ is great for establishing systems and setting up a framework and structure for your game, and after this you can use Blueprints on top of this for more designer-oriented tasks. (Like an OnUsed function for an Inventory Item)
Exposed functions
Although BP offers lots of functions at this stage, there are still many functions that aren’t exposed to Blueprints. When building a large project, at some stage you will likely find that a function you require isn’t available to BP.
Spagetti Code
C++ is great at algorithms and manipulating arrays, etc. You’ll find that in Blueprints complex functions often become very difficult to read, where in C++ a well written algorithm is much easier to understand.
To sum it all up:
This isn’t to say that Blueprints aren’t useful - they are incredibly useful. C++ and BP each have their own strengths, and you should take advantage of both scripting languages.
I personally develop all the Class Hierarchy and core logic in C++ and develop more Content oriented stuff in Blueprints.
C++ is still going to be worthwhile to learn for UE4. Being able to cook blueprints to C++ helps with the performance gains that C++ had over blueprints, but it doesn’t fix that fact that so many things just can’t be done in blueprints. If you don’t want to do anything outside of what blueprints allow, then you may be fine, but personally I find something new I can’t do in blueprints on nearly a daily basis. Also, even if blueprints can do something, sometimes C++ can do it much easier.
My philosophy is to use each tool for what it does best. I use C++ to do the heavy lifting and to define all my objects, then I use blueprints to hook them all up and configure all the settings.
I want to do the best in the shortest time because I am the only programmer in an indie small team.
I thought the most important advantage of C++ is that it is faster and as a person who was learning UE4, faster codes were not an issue till now.
now that I can convert blueprints to c++ I need to know other certain C++'s advantages over Blueprints.
for years blueprints have been developed exposing more and more features to it. are there still some critical functions not exposed to Blueprints? if so what are they?
I must know them to see if I am gonna need them in our games.
Here are a few things my game does that I couldn’t use blueprints for:
I override AGameMode::InitNewPlayer to pull command line parameters into UE4.
I added a Custom Movement Mode for climbing that queues up moves into UE4’s predictive movement system (super important for smooth network play and also enables the network replay functionality).
I added an expression parser to turn a math formula from a string into an expression that can be evaluated.
There have been other things in the past where I had to use C++, but then later those functions were added to blueprints, such as showing or hiding the mouse cursor and stopping an AI tree.
Maybe just start developing in blueprints and then if you run into a wall where you have to use a little C++, then you can handle that when the time comes. That is what I did and it seems to have worked well.
If you really don’t want to learn C++, you certainly can do Blueprint-only development. Dartanlla’s suggestion is good too, if you’re really passionate about Game Development, learning text-based programming is probably a good idea eventually anyways
I can do things faster in BPs. I only wanted to know if BPs have been developed enough to make an entire game without touching C++, not being worried about performance and some functions that are not probably exposed to BPs.
It depends on where you want to be on a personal level too its not just purely objective, if you see yourself as a budding programmer then you really should get into text based languages as they are alot closer to the metal than visual scripting. If you are using C++ just to get access to speed improvements and a few functions you cant use in Blueprint then perhaps your focus is more on the design end and personally I dont think Im any less of a decent game system designer because I focus more on Blueprint.
Spaghetti code is just something text based programmers say to scare people really, obviously any poorly designed system will end up as a mess of wires its just in C++ you cant see the wires to make a fair comparison. Most programmers will use flow graphs of some description before or while they are doing text code and/or in the design of databases.
Its a shame there isnt a higher level view of BP in the editor to see how the BP classes, interfaces etc all interconnect like UML. Text based programming is still obviously faster and more flexible but it all depends on the skill of the person using the tools so if you feel youre better for using either I say dive in