Blueprints & C++

If I start a project in Blueprints, I am still able to access C++ components correct? Why would a project have the option to start in blueprint or C++ if both options are available during development? Or is there a limitation in C++ if I start a Blueprints project?

If you start a blueprints project, the engine doesn’t generate the required files to work in C++ by default, I think the idea being that if you’re choosing to go that route you probably don’t know much about C++ and therefore it would be risky to have you poking around the files. Other than that, I’m not really sure of a specific reason.

If you start a BP project, but decide you want to work in C++ as well, you can generate the appropriate files and the Visual Studio project files by either right clicking the .uproject file and selecting generate VS project files, or by using the same option in the File menu of the editor.

Thanks, “Generate Visual Studio Project” from the file menu will not disable my blueprint capabilities right? I would still be able to use my project like I normally would in Blueprint, but now C++ options are unlocked for me. Is that accurate?

No, it will not.

That is accurate.

You could use C++ if you start a blueprint project or blueprints if you start a C++ project. You are not limited if you choose this or that at start. If you start with some template … for example a first or third person template and you choose blueprint then you would get a blueprint actor with some basic movement (idle, walk, run jump) with some prepared input nodes (for mouse, keyboard, gamepad and touch) and no C++ one. If you start a C++ project you need a compiler but you could still add blueprints afterwards. If you don’t have a compiler installed yet and would get a clue how it would look like if you start with C++ project you could just download the ShooterDemo example via the launcher. You could see lot of similar icons but not blue but grey (and in the C++ section) this time. However you could still hit right mousebutton an choose to add a new blueprint class or c++ class.

I would say:
BP:
+) Fast to create and change something. Drag, drop, push start button.
+) Better for stuff that usually would require some printed flowchart on the wall anyway (like the behavior tree of an AI, or statemachine in an anim-blueprint).
+) Many, many, many tutorials
-) Slower than C++. But there is (experimental) BP->C++ converter now and you should code event based anyway.
–) Projects could get broken and start with disconnected nodes after you restart your project if you rename/copy/paste/delete/move/undo/redo stuff in a way that was not expected. Should not happen but happens and is a huge time consuming pain because you could not just go into that red codeline that was reported by your compiler/debugger and fix it there but are pretty much out of luck because nobody could help you at this state (especially if your project is no clean hello-world anymore and nobody could tell you what went wrong just at your project).

C++:
++) No broken wires after you restart the IDE.
+) Faster. Especially if you would generate a lot of stuff in loops.
+) Well integrated into Visual Studio.
-) Requires a few more GBs for the compiler to start (at least on windows).
–) Less tutorials, examples, …

Thanks for the feedback! Very informative!