[FONT=Palatino Linotype]Introduction
Hello
This is a long feedback about what I think might be worth improving in Unreal 4 in general and Blueprint in particular.
I started Unreal 4 one year and a half ago and I’ve been intensively coding and prototyping for the past 6 months. And I’m here to make my report.
Before anything, I need to tell you about how I use Unreal 4 and what is my experience with it just so you can put my thoughts into perspective.
I’m 25, I’m a Game Designer and a self-taught programmer-ish.
I’ve been working with Blueprint since my beginnings on Unreal 4. I can make almost any feature a shipped game would need, within its limits. I’m using only Blueprint because I believe it is the future of programmation for Game Designers. It is our gate to become prototypers. It is a tool that make us a huge asset in the team. Being able to quickly prototypate and test features is a huge benefit. Not to mention the fact that it makes us more receptive to our programmer needs and way to communicate.
You got it, I bloody love Blueprint. It reminds me of old Warcraft 3’s World Editor which I started on at the age of 12. It was using GUI, a simplified version of the JASS code used within their game engine. Well, Blueprint is as simple as GUI but a thousand times more powerful. I feel like a kid again. I even have some muscle memory that make me use World Edit’s shortcuts within UE (Q to hide all windows). When using Unreal 4 in general and Blueprint in particular, I feel at home.
What is my report about? It’s about making our working environment so imbricated with our muscles and reflexes that we’re like pianists when using it. It’s also about reporting some strange behaviors I encountered (that might come from my mistakes, or not).
I love Unreal 4 and Blueprint especially and I would love to see it last for decades. That’s exactly why I’m here doing that feedback and that’s why I’ll only talk about what and how to improve things I’ve noticed.
[FONT=Palatino Linotype]The Feedback
I made different categories that are explained here, in the order they appear:
New Functionalities - things I’d like to see either exposed to Blueprint or simply added to the engine
Editor Quality of Life - things that would make working within the editor even more enjoyable
Blueprint Editor Quality of Life - things that would make working with Blueprint a dream
Editor Bugs - ‘bugs’ I’ve encountered regarding the editor as a whole
Blueprint Editor Bugs - ‘bugs’ I’ve encountered regarding the Blueprint editor
Both quality of life categories are aimed at gaining 1, 2 or even 3 seconds on every little tasks we’re doing in the editor.
[FONT=Palatino Linotype]New Functionalities
[FONT=Palatino Linotype]Outline Material Settings
I’m using the public resource MI_Outline to outline the interactible elements in my game. And it is very restricted in terms of use. I can’t dynamically modulate the width or the color for instance. It is something I would love to be able to do and I believe a lot of type of games would benefit from it as well.
[FONT=Palatino Linotype]UMG Drag and Drop
It is relatively easy to set up a drag and drop operation. But everything related to it is quite obscure at first sight. Payload, dragged image, mouse capture, dragging over the other widgets firing off. Everything looks a bit confusing and would need clarifications imho. Would be also great to be able to trigger a drag and drop operation out of a single click and make it so another click release the drag and drop operation. I wouldn’t mind being forced to hard code it in Blueprint but so many things are out of our control (how start drag and end drag events fire for instance) that I can’t really do that.
[FONT=Palatino Linotype]Advanced Mouse Cursor
I wanted a mouse cursor that has several ‘stances’ and several possible colors. That means code in the Cursor. Surprisingly enough, it is very hard to achieve. I tried many things and every solution had flaws. The solution I’m using currently has flaws.
Built-In Mouse Cursor solution: All worked fine until I started to travel from levels to levels and my Cursor was not updating anymore. It lost the reference to its owner because its owner was removed during level loading. And I couldn’t seem to be able to find a reference to it anywhere in my code. Solution aborted.
Slate Mouse Cursor solution: I don’t know Slate much but I made a simple setup that displays my cursor, I had tons of problem regarding Z order and my cursor going in front of or behind my widget elements. Solution aborted by lack of knowledge and will to invest time in it.
Custom Cursor that follows mouse on tick: The solution I’m going for right now. The only problem is that a drag & drop operation captures mouse button what freezes the mouse cursor.
I can’t seem to find a proper solution to my problem whereas I’m convinced it should be a very easy setup.
[FONT=Palatino Linotype]Translucent Materials
I can still see particle effects through a translucent material that has a 1 opacity value. I can’t seem to be able to tell a translucent material to still cast shadow. I don’t understand why a Opacity 1 translucent material does not have the same color than an opaque material using the same texture. I used that feature to make my translucent walls in my action RPG prototype but maybe I’m using it the wrong way or maybe I should not use it at all for that purpose. I’m not an artist, I don’t know much about the technical part of what I’m talking about. But I thought it was worth mentioning anyway
[FONT=Palatino Linotype]Prefabs
When I’m talking about Prefabs, I’m talking about being able to edit the properties of a Child Actor. Coming from Unity I feel like it’s a basic feature but it might not be. I’m working with random content a lot and I feel the lack of a proper prefab workflow that would make my life a LOT easier when creating the content of my random world generator.
[FONT=Palatino Linotype]Child Widgets
I would love to be able to create 1 single ‘widget_Button’ and use it everywhere while still being able to bind its press event on the parent widget.
[FONT=Palatino Linotype]Networked Level Streaming
I would like the possibility to say to a Streaming Level to be loaded but not rendered by the server machine. That would make my client players able to navigate through the world while still being able to interact with the level even if the server player is not with them. Right now I’m working around that by putting almost every gameplay stuff on the persistent level but it is not a valid method for a shipped game as it raises several other problems, first of them being performances. I do understand that what I’m asking for would make the server player laggier than other players in case of a massive split in the world map.
[FONT=Palatino Linotype]Navmesh Character Move
I tried but didn’t find a way to make my PlayerCharacter move using the navigation mesh. I was forced to socket its camera to an AICharacter and reference that AICharacter as the actor I’m supposed to move when using my movement inputs. I don’t know if I was being a complete noob or if there is no other way to do that. In any case I felt like it was something that should be easy to do and it was not so I’m mentionning it here.
[FONT=Palatino Linotype]Child Blueprint Class Default
If I have an array of Weapon_Class filled with Child Blueprint of that class, I can’t get any information on the class default of these child classes. All it returns is the default value of the parent class. It sounds logical but it is not practical. I’d like the possibility to get a child’s class default values without being forced to spawn it beforehand.
[FONT=Palatino Linotype]Editor Quality of Life
[FONT=Palatino Linotype]Content Browser Access
Would love to have access to the Content Browser button wherever I am (no matter the tab I’m currently working in). Would love to be able to have access to Content Browser 2, 3 and 4 easier than finding them in the windows list. For instance, I could hold down the Content Browser button for 1 second to pop a selection of the other Content Browser. Would be also nice to be able to do that with the ‘Find in content browser’ option, holding it to select what Content Browser should pop to show the asset’s folder.
[FONT=Palatino Linotype]Save Open Content Browser
It doesn’t seem that the editor saves the fact that I had 2 content browsers open. When I restart my editor I always have one. Either that or I always close it. But in that case we’re going back to the fast access to them.
[FONT=Palatino Linotype]Save Content Browser Display
Per Content Browser. Would be neat to be able to set up CB#1 in column display while CB#2 in miniature. I’m using CB#2 for environment and CB#1 for coding (for instance) and both need a different display. And that would be saved per CB, even if I close them.
[FONT=Palatino Linotype]Customize Toolbar
I would love to fully customize the options the different toolbars give me. For instance I don’t want to test my game simulating a smartphone, ever on X project. Yet I missclick on it twice in X days, twice too much because I also missclick twice every X days on lots of other buttons that I never want to use on that particular project. I just want to get rid of them and if I ever need them I’ll go search them in the window list for instance.
[FONT=Palatino Linotype]Delete Temporary Files
Rather than having to open the window explorer and manually get rid of the Intermediate and Saved folders, I would love to be able to do it from within the editor (while still being able to stipulate that folder X should not be removed).
[FONT=Palatino Linotype]Restore Open Assets
Everytime I’m failing to click on that pop-up window I feel dumb. Is there another way to open previously open assets? I don’t know but I would love to see that window never go away if I don’t close it purposely. Maybe there’s an option for that already, maybe that should be an option rather than an automatic thing. I don’t know but I feel like there’s something to do with that ‘oh I missed it, I won’t ever be able to open exactly what was open now’ feel.
[FONT=Palatino Linotype]Folders in Collection
I would like to be able to simply have a list of folder shortcuts in my Collections. I don’t want to have to scroll down my hierarchy to find the folder I want. Especially if there’s one ART folder at the topmost and one TOPDOWN folder at the very end with 20 folders in between. Putting a folder into a collection would not put every assets of that folder in the collection but rather a simple shortcut to that folder. When I click on it, it prompts a content browser window that shows that folder.
[FONT=Palatino Linotype]Blueprint Editor Quality of Life
[FONT=Palatino Linotype]Blueprints Customized Shortcuts
The one feature I’m dying for. I’m used to go fast. Really fast. I’m used to customize my softwares after I got the grasp of what I could do with them. I’m used to turn into a pianist. Here I can’t. I would love to be able to customize these ctrl+key instant node creation shortcuts. It is so powerful. Even if that does not come soon, please make Control + P spawn a PRINT STRING rather than EventBeginPlay that I merely create once every Blueprint.
[FONT=Palatino Linotype]Fast Node Connection
I don’t often spend time joining nodes together, but when I do, I go fast. But I shouldn’t have to. There’s one feature that would make that task last for at least 10 times less time. If I start dragging an empty execution pin while holding CTRL, every node I drag the execution route into would automatically be connected to the node I started dragging with. When I stop dragging, it stops and does nothing more.
[FONT=Palatino Linotype]Comment Bubble Z Order
It was a feature I loved. It was quite useful to organize our Blueprints and I hope we’ll have it back!
[FONT=Palatino Linotype]Comment Bubble Resize QoL
When I’m trying to resize my code comments while zoomed out at the maximum, the interactible areas to resize the comment are so thin that I always have to concentrate a lot to get them. It is really frustrating and I think it would be cool to increase the size of these areas (at all levels of zoom but especially the farthest).
[FONT=Palatino Linotype]Comment Bubble Zoom Text Display
We once had the possibility to display / hide comment text at a certain level of zoom. It was quite useful when had to look at a big blueprint. I miss it when organizing my code sections.
[FONT=Palatino Linotype]Multiple Research Tabs
I didn’t find a way to open two (or more) research tabs in order to switch from one keyword to another quickly. It would be a nice addition.
[FONT=Palatino Linotype]Blueprint Grid Snapping
Would be very easier to organize our code if every node size was standardized (X units over Y units) and moving at the same pace (X units at a time), no matter the current selection. Currently snapping is different if I select one node, a bunch of nodes or a comment bubble.
[FONT=Palatino Linotype]Copying Custom Events
We used to have a simple ‘_copy’ name that was appearing, now it is reset back to ‘CustomEvent’ when pasting a custom event. That feature was quite useful. It would also be even better if it would copy/paste the replication settings as well.
[FONT=Palatino Linotype]Navigation Shortcuts
Previous/Next shortcuts work in Blueprint but in a strange way. I don’t really know what to say about that nor can I explain what ‘strange’ means here. I just know that I press ‘previous’ and I find myself lost in the middle of something I was not expecting. Maybe it brings me back to the Parent function I was previously looking at, I don’t know but sometimes it fails to work. It’s a shame because it is a brillant idea and being able to ‘previous / next’ easily between a function to another is very handy.
[FONT=Palatino Linotype]Spawn AI Exposed on Spawn
I don’t know why exposed variables don’t appear when using the ‘Spawn AI from class’ node but I believe that it should.
[FONT=Palatino Linotype]Reordering Child Widgets
Never found a way to reorder the widgets that were inside boxes (like moving stuff from up to bottom in a vertical box). It is not really hard to work around it but it would certainly improve the overall quality of what you can do using Widgets.
[FONT=Palatino Linotype]Widget Hierarchy Organization
While working on a widget, it would be neat to be able to create folders to organize its content. Folders would have no impact on how every elements are rendered and we would have the option to turn their visibility on and off in the editor.
[FONT=Palatino Linotype]Editor Bugs
[FONT=Palatino Linotype]Quantity Scroller Behavior
I’m talking about the scroller that replaces our mouse cursor when hovering a variable value that can be increased or decreased. It behaves horribly sometimes: it lags because I increased the value by 100 000 with a tiny little mouse movement. Sometimes it lags as it changes the value. Sometime I fail to catch it with my mouse because I got my focus on ‘window resize’ tool instead.
[FONT=Palatino Linotype]Child Actor Replication
Having a Child Actor that replicates inside an Actor that replicates leaves a ‘Ghost copy’ of that actor on every Client machine. That ‘ghost copy’ behaves weirdly, depending on how hard the ghost glitched the game I suppose. For me it was half the actor was existing on the Client but not on the Server (whereas it was a replicated actor, a copy of an actor existing on the server).
[FONT=Palatino Linotype]Viewport Blueprint Lags
When working on the parent blueprint of a dozain of child blueprints that all have references to several different child actors, everything lags in the Blueprint viewport when moving components. I have a quite strong computer but it lags anyway. I understand that moving an element on that parent blueprint moves it on every child actors, but maybe it should only apply when I hit recompile? Because currently it’s almost impossible to work efficiently on that kind of blueprints.
[FONT=Palatino Linotype]Hierarchy Lags
While browsing hierarchy folders that contains the same kind of blueprint I was talking about (parent, tons of childs, tons of child actors in them) the hierarchy starts lagging hard. It’s even worst when displaying them in miniatures. I’m talking hard lags like every action I do take 10 seconds to complete (selecting an asset, dragging it or right clicking it).
[FONT=Palatino Linotype]Blueprint Viewport and Child Actors
I believe Child Actors are the worst experience I had in Unreal 4. Even if everything I mention about them up to this point was fixed, there would still remain that section. When I’m adding a ChildActor to an Actor, I can’t directly select it in this Actor’s viewport. If I click on it, it does not select it. I have to find it in the component hierarchy and select it. It might not seem to be a problem at first sight. Except if you have 10 child actors on a Blueprint. Every one of them is named ChildActor_0X and I can’t directly select them in the Viewport. I can’t know which one is what without selecting them one by one in the hierarchy. I could rename them all but it’s just the beginnning of the random creation process. If I have a hundred different customized Blueprint that all have a dozain of child actors in them, I’ll have 1300 to find in the hierachy and rename. That’s a lot of time consumed just because they can’t be selected directly in the viewport. It’s even worst when you start considering that I might have a LOT of changes to make to them (like moving, deleting and adding new ones). Manipulating Child Actor is such a tedious task currently.
[FONT=Palatino Linotype]Thumbnail Camera & Child Actors
once again. They are messing up with the automatic picture thumbnail of the assets in the hierarchy when viewing them as miniatures. Example: I have a PlayerCharacter_BP and a DungeonTile_BP. The PlayerCharacter_BP contains a SkeletalMesh and that’s all, the DungeonTile_BP is empty. The thumbnail picture for the Character BP shows only the SkeletalMesh (logical, there’s only that in this Blueprint). Now I add a ChildActor to my DungeonTile_BP. And then, on the PlayerCharacter_BP thumbnail I can see the ChildActor I just added to the DungeonTile_BP. I don’t know why that happens nor if it is so easy to reproduce as I say.
[FONT=Palatino Linotype]getAttachChildCount(0)
Or something of the sort. I sometime insta-crash on compiling my Enemy_Class because lots of child classes of that class have several additional components. Not sure how that happens and under what circumstances.
[FONT=Palatino Linotype]Rotation Replication
I believe that section will be all about me not finding a particular option or doing some mistake somewhere in my logic. I made two top-down prototypes as learning projects and both times I encountered the same strange behavior: when I ask the Server to rotate a Player Character that has movement replicated, 4/10 the client’s character does not rotate on the client’s machine (but does on the server). I don’t know if there’s any settings that I might be missing regarding the character’s rotation that would be bypassing a networked information of rotation.
[FONT=Palatino Linotype]Play Loading Time
When forgetting to compile a Blueprint that has a lot of references to other Blueprints before hitting play, that takes a while to start because it is recompiling every Blueprints that have the reference to the one we forgot to compile. Fair enough, we shall not do that. But sometimes, I don’t know under what circumstances, even if there’s no Blueprint not compiled when I hit play, it takes AGES to launch, exactly as if there were. Like literraly a minute or so. I don’t have any more detail about that unfortunately. I’m restarting my editor and everything is fine again.
[FONT=Palatino Linotype]Public Variables Reset
When modifying a public variable of an actor on the scene, this variable value might be reseted to the class default’s value under certain circumstances. These circumstances are unclear but it happenned to me after an editor crash.
[FONT=Palatino Linotype]Hidden Editor Buttons
The ‘change preview mesh’ button is hidden.
The ‘sync’ button is hidden. When working with SVN and source control I was searching for it and didn’t find it. It was because it didn’t have an icon in the list of buttons that were clickable, it looked like the title of the dropdown menu.
When creating new asset in the hierarchy, sometime I fail to realize that I can scroll down the menu to see more categories of assets I can create (in the fast access categories).
What I mean by ‘hidden’ is ‘not looking like buttons’ or ‘not looking like something I can interact with’.
The ‘change preview mesh’ button literally made my studio change a part of our importation workflow because we thought the feature was missing. Only by , I was giving a lesson to my students the day after and I accidently missclicked on that button only to realize it was the thing we were looking for.
[FONT=Palatino Linotype]Collision Settings Scrollbar
When entering the Collision Settings of the Project Settings window, we always need to change the size of the window to make the scrollbar appear. Else it is hidden and we can’t scroll down to see all of our collision presets.
[FONT=Palatino Linotype]Content Browser Column Size Reset
The column sizes of my Content Browser keep resetting everytime I close my editor. I’m talking about the columns that display the name of the asset / its type / weight and so on and so forth. Anytime I resize it, it resets the next time I’ll open up the editor.
[FONT=Palatino Linotype]Blueprint Editor Bugs
[FONT=Palatino Linotype]Custom Event and Zoom
Warning: I started this list of things a while ago (back in 4.10) and this is something I’m not sure to have encountered in 4.12. When creating a custom event in a Blueprint while being at zoom out, we can’t rename it right away. Usually we can rename it right after we created it (it automatically focus the custom event node we just created and gives us the possibility to write immediatly). Even worst, it goes bugging and we see the node as if we could write the name but it doesn’t do anything. We have to compile the Blueprint to make the bug go away. I never tried to create other nodes when that bug occured though.
[FONT=Palatino Linotype]Blueprint Editing Locked
Sometimes all of a sudden (maybe after creating a Custom Event?) I can no longer modify a Blueprint I was just working on. I have to hit CTRL+S to be able to continue editing it.
[FONT=Palatino Linotype]Blueprint & Structures
They are not friends. The rule looks like ‘once you’ve made and used a Structure in a Blueprint, you’re done modifying it’. If you happen to add a parameter to it, every thing might turn into a mess. Or not. Not sure on what it depends. ‘Turning into a mess’ means: everything is fine after I add a parameter. Then I close and open up my editor. Everything is fine. I hit play, it says one of the Blueprint that is using the structure has errors and has not been compiled. I open it up and see an array of the structure I modified disconnected from a function parameter it was attached to. I connect them again. Hit play. Everything is fine. Then I close and open up and here we go again, fine, play, error, open it up, wires disconnected. I worked around that by deleting the culprite nodes and recreated them (I avoided spelling the functions the same) and everything worked fine again, even after an editor reboot.
[FONT=Palatino Linotype]Conclusion
Here is the end of my list of things I’d love to see improved.
If you made it so far thank you very much.
Feel free to ask me any question if you need more details about something. I tried to be short but I’m much of a talker and unfortunately English is not my mothertongue so some things might have sounded clunky. Sorry about that.
If you are interested in my work, you can check what I’m doing with my free time here and you’ll hear about the project I’m working on full time soon!
[FONT=Palatino Linotype]Good luck and have fun in your projects