Why compare programming methods?
Programming is a vast and exceptionally difficult section of game development, this means that any edge you can get is to be used to maximum effect and to be considered greatly. To ensure I've had a thorough think about what type of programming would be best for my project, I've decided to use a secondary source of information (linked below and in the bibliography) to see the key differences between C++ and Blueprints, both being my main choices due to me having previously decided on Unreal engine as the game engine I should use.
https://codefinity.com/blog/Blueprints-vs.-C-plus-plus-in-Unreal-Engine
Blueprints
Blueprints are quite a recent invention, their realtively simple nature (in comparison to traditional code) as well as their ability to be used for the majority of things a game needs makes them a very useful and often invaluable tool to programmers needing to get the job done without the horrors of missing semi-colons and lines upon lines of code.
Advantages -
The main advantages of using blueprints are varied, but below I have listed a few -
Blueprints are more visual
The user interfaces are more user friendly
Drag and drop
Rapid creation of prototype games
Debugging tools
Execution paths
These may all seem trivial, but to a programmer these can mean getting a project done or having the computer come up with 500 errors as you sob over your cup of coffee at 4 in the morning. Blueprints being more visual helps you make sure that you have included everything that you need for the code to run properly, this becomes even more useful when the execution paths are looked at as you can see the order that code runs in, possibly preventing the programmer from missing any logic errors. Furthermore, debugging tools such as the engine telling you if a cast will fail or if a condition will always be negative or positive means that programmers won't have to spend hours clawing over why certain conditions never seem to be met or why a reference they used won't actually set any code off (as the engine will tell you if you mention an actor which a cast will fail to). Making this even better, you can drag and drop different blueprint nodes straight into the IDE, this helps as you don't need to remember lines of code and only certain words so that you can search for them in the search abr when adding a new node. This of course makes the interfaces more user friendly and allows for rapid prototyping of game ideas, something I feel will be very useful incase I run out of time near to the end of the project and decide that there's no time to lose on making all the code perfect for what amounts to a demo or a showcase.
Negatives -
The main disadvantages of using blueprints are varied, but below I have listed a few -
Performance overhead
Struggles with extremely complex projects
Extra visual complexity when actors and other blueprints grow in size
These issues ensure that Blueprints aren't always going to be the perfect programming language. For example, performance being lower can mean a lot on a 2D game where the general belief is that it should run on the majority of systems due to the simple graphics. None of these above mentioned issues really matter for my project though. The code I do shouldn't be even close to being considered a massive project, this means that visual complexity just won't be an issue, and neither will the performance. The website obviously states that Blueprints aren't amazing for large projects due to the performance hits, but on smaller ones it really shouldn't be noticable on newer hardware.
C++
Using c++ is more akin to doing what most people see game development as, going through lines and lines of complex notations and terms that noone but a coder would recognise to just make the game work! Most of the time, c++ and c sharp programming is done in visual studio, a universally accepted IDE that comes straight from Microsoft itself.
Lots of code work depends on the code being perfect with syntax and well organised enough that logic errors won't pop up out of nowhere, this can be achieved through notes and proper planning, but for a full list of advantages and disadvantages you can just look below.
Advantages -
The main advantages of using C++ are varied, but below I have listed a few -
Very efficient
Flexibility and control
Scalability
The main draw of using traditional c++ in Unreal Engine is to get a better amount of control over what the engine does and how it does it. With c++ you're able to finely optimise game mechanics and different things the project does which leads to better overall optimisation. This optimisation is only made better by the code not needing to be translated to be understood by the game engine. The thing with Blueprints is that the code needs to be unwrapped (put simply) to have it be understood and run, this can lead to performance issues and c++ is able to avoid these disastrous problems.
Another thing is the use of c++ for larger projects, despite visual code like blueprints getting more difficult to understand as the project grows in scale, you are able to ue c++ and other coding languages very easily without getting too lost in what everything does. In normal code you can leave notes at each lines by doing a double slash (//...), this means that anyone reading your code can understand it with minimal issues and so minimal stress, keeping morale high and saving time on tricky to remember explanations.
Negatives -
The main disadvantages of using C++ are varied, but below I have listed a few -
Higher complexity
Higher development time
Syntax and logic errors
The drawbacks to using normal c++ code are exceptionally bad for the project I'm currenty doing, for example; you can't just take a part of the code out and replace it with some different code and expect it to run like you can with blueprints, this mean iterative coding doesn't really work with c++. Another issue is that small mistakes can cause syntax or logic errors, despite syntax being relatively easy to fix, the logic errors can be hard to discover and hard to fix without the execution lines like blueprints have. Furthermore, the inability to just keep replacing code until a project works like you can with blueprints means that you need longer to get the project into working order, this means that using c++ would likely lead to the project being unfinished by the end of the development cycle. This is something that can't be risked and that special attention will be paid to.
Above is the comparison sheet that the website creator made.
Conclusion
In conclusion, I believe that despite the freedom of creation and the potential of c++, I have to choose Blueprints to code with for this project. The issue with choosing c++ isn't just about the pros and cons I mentioned above, but also about experience. All my previous projects have been done with bleuprints and I don't see how I can learn a brand new programming language to a workable standard in the space of a couple of weeks. This isn't it though, I can also understand the need for things like quick development and being able to drag and drop code, both being offered by blueprinting. This choice is no doubt the correct one for the project and I can always use both if I end up needing to do something you can't do with blueprints as Unreal Engine will let you use them both independently in the same project without any errors or issues with development.