Hello,
I’ve been working in games for past 16 years primarily in level design, have worked in Source Engine, CryEngine, Lumberyard, id Tech 5/6, and UE2/3/4. (Note: I’ve never worked in Unity!) Over that time I’ve worked with C++, Lua, Flowgraph, C#, Perl, Python, DoomScript, Unreal 2 UScript, Kismet, and… JavaScript (Shudder).
Of all these scripting languages, I’ll have to say Blueprint is objectively one of my favorites to work with. I love that blueprint is object oriented, you can create your own data types, it has interfaces, it has pointers, replication, rpcs, etc. However, blueprint has a few limitations I really wish could be addressed:
- Exclusive Checkout - Almost every unreal 3+ project I’ve worked on has had this problem, but basically when a file is moved into a binary format most game teams typically set that file type to be an exclusive checkout in p4 or similar source control program. I can’t tell you how many times people have had to fight over the main player blueprint on various projects. This isn’t a problem just for logic, a lot of game teams keep logic in c++ and data tuning for actors in blueprint. So someone may want to go in and tune jump height from 1 to 1.2 but can’t for a day or two when someone is doing some major blueprint task or c++ task that requires updating the blueprint.
Plus, locked blueprint files can sometimes break build machines or package build if there’s any automated edits.
-
**Merging/Diffing **- Similar to the above, in p4/git/beyond compare you can’t merge blueprints… This stinks. And while blueprints can be diff’d in the unreal editor, its much more difficult and less powerful than beyond compare or simply using p4.
-
**Debugging **- The debugging tools are really neat but just can’t compare to stepping through code in Visual Studio and other IDEs. Plus, as powerful as blueprint is, anything complicated especially if replicated over the network is a bit scary to leave in blueprint code. Imagine heading up to cert and ending up with a crazy bug you have to debug in wirey blueprint. For my current and previous teams, it basically means we don’t ship or plan to ship blueprint code unless its pretty simple.
-
Code Review - I don’t know of any code review tools that support blueprint, but c# is supported by many of the most popular tools. Blueprint is very powerful, you’re basically coding, and as you write more powerful code you should be reviewing it so you’re not damaging your project or introducing crazy bugs.
-
**Text Based Editing vs Visual Editing **- This is maybe more of a preference, but doing math in blueprint is just harder & more time consuming than text.
-
Powerful IDEs - The blueprint editor is pretty awesome, but there’s some even more powerful text IDEs, my preference would be visual studio + visual assist but I’m sure others support c#.
So based on all these problems I’d like to request a text based scripting option in addition to blueprint, ideally C#, and would like to suggest avoiding Lua/Perl/Javascript. My understanding is the reflection layer is already setup in UE4 so adding other scripting languages & supporting both wouldn’t be too difficult? If so please add this!!
You’re also likely to attract new customers from the Unity world who may not be comfortable moving to UE4.
Also I realize a lot of the above problems are solved in C++ but it has its own problems, primarily iteration speed due to compile times & accessibility. Lots of Unity/Game Devs/Gameplay Programmers are comfortable in C#/script languages but not C++. On my current and previous UE4 teams often times engineers still prototype in blueprint knowing things will be moved into C++ since its just much faster to get things working in blueprint.
Also not at all suggesting blueprint is replaced. Blueprint is still very accessible, great tool to attract beginners, and artists/designers who are less technical.
I see a team at microsoft started a c# plugin but being on a smaller game team we try to avoid taking third party plugins which may or may not be supported. Maybe its a jump start if Epic decides to take it on!
As always want to say UE4 is great, love working with it, and glad Epic continues to do great improvements to the engine & tools. After seeing all the amazing updates coming in UE5 was hoping we could see some updates in other parts of the engine too.