UnrealFest 2022 Talk: "Building Tools Quickly"
At UnrealFest 2022, I gave a talk on creating tools in Unreal using Blueprint and Angelscript.
Last year I submitted a talk to UnrealFest 2022 and was lucky enough to have it accepted - I tried to cover a fair amount of topics from high to low level on the subject of building tools and workflows, and keeping your team in the loop via documentation and deep linking of content and tools.
It also touches on usage of Hazelight's Angelscript integration in Unreal, which I love, and talk about in more detail below!
You can watch the full talk on YouTube here:
Talk Takeaways
I do waffle a bit in the talk, but some general takeaways could be:
- Build small reuseable chunks of modular Blueprint or script
- Chain things together to make more complex tools
- Editor Utility Widgets can do a lot of heavy lifting
- Blutility buttons and Asset Action Utilities are great for quick simple tooling
- Give Angelscript a try 😉
Angelscript vs. C++ and Blueprint
I find Hazelight's Angelscript integration to be much faster and easier to prototype and build tools & gameplay systems, than both C++ and Blueprint in Unreal.
C++
C++ is ultimately the most powerful, but it's slow - even with Live Coding, there's a limit to what you can do without shutting down the editor and recompiling, which can take a while depending on what you've changed.
In the vast majority of cases, I don't actually need to work in C++ because most of what I need to write in-editor tools is already exposed to Blueprint, and therefore is automatically exposed Angelscript too.
The syntax of C++ is also a little more gnarly, what with all the pointers and dereferencing etc. - technical details you don't need to worry about in Angelscript. Since my background is in scripting rather than engineering, I prefer something a little simpler - even if it is a little more restrictive.
Blueprint
Blueprint is great for context-sensitive search and exploring the APIs, callbacks and events Unreal makes available to you, but I find that the extra axis of "worrying about which order the nodes and pins are in" just wastes my time.
Maybe this is just me, but I tend to get sidetracked from solving actual problems by wanting to make sure that node graphs are well organized and easy to read... something which I find comes a little more naturally with text script, because you only have one axis, and lines of code only execute in the order in which you wrote it. 🍝
Angelscript
Angelscript strikes a nice balance for me, since you have access to 95% of what is available in Blueprint, and some stuff that is not available to Blueprint too. The only big sticking point for some people will be lack of BP Interfaces, but I find that doesn't affect me much - it probably depends how you like to structure your game architecture.
Another main benefit is the ease of text diffing/merging in version control - this is simply not possible in Blueprint right now, so it's basically impossible to "branch" your work or shelve changes and easily bring it back later. Obvious BP does have diff/merge support, but it's way clunkier and error-prone than merging text.
Obviously your mileage may vary, but after many years of working on multiple projects using the Angelscript integration, I would really feel the lack if I had to go back to just using C++ and Blueprint with no "happy medium" in between!