What I learned
Conclusion
Dark souls combat has a lot of important gameplay juice that I never noticed, that makes the game so much better. For example I decided to make a greatsword when I realised how good it feels when your attacks have some impact and nice buildups as well. To really show that great part of the game. It also felt rewardring to learn unreal engine, and rapidly getting the hang on the program.
If I did this project again, I would have wanted to focus more on completing core features in a more polsihed state. As I added features like blocking and souls-like jumping that were not used in the end.
Visual scripting
The basics of Unreal visual scripting was really easy to learn compared to programming languages with code, while also being quite fast to use. But I also found big weaknesses along the way, a lot of simple code could get unnecessarily complicated and it could really impact on how easy or difficult the functions where to read. But the more I worked with Unreal blueprints, the better I understood how to structure and use it's blueprints to achieve what I wanted.
Pros & Cons
When I compered C++ code and blueprints on its performance, I noticed a quite big difference. It ran a lot faster if you used C++. This is due to Unreal needing to translate the blueprints into C++ code, as well as C++ giving more control to optimize your code. But it was not a problem for this type of project due to the scale and purpose. Another weakness in blueprint scripting was the lack of control, C++ has a lot more function when it comes to for example saving and loading data. While also giving you more control to get the specific behavior needed.
The faster prototyping of Unreal blueprints makes it entirely in itself worth choosing for this project. Creating blueprints, variables and functions is just fast in general compared to C++. I also noticed blueprints are faster to iterate on, they are much quicker to modify logic on and more tweakable to use how you like. Another positive feature for me in blueprints is how easy it is using for visualizing the game flow. It is easy to follow the flow of the project and understand what happens and comes next, this makes it easier to debug and use breakpoints.