Edit: Please refrain from bashing the Editor, Epic, or Blueprints itself. This is not the point of this thread. I want you all to think of this as more of a way to help out not only yourselves (if you are stuck learning something new relating to BP) but also to newer devs that comes into the engine. What are the struggles? If someone could write the answers for those struggles… what would they be.
So, I wanted to do a poll, but to be honest, everyone learns differently and some may have had difficulties in certain areas while others breezed right through them.
I guess I’ll start off.
I had trouble learning the Game Framework and Blueprint Communication. I had no real game programming experience before jumping into Blueprints but I did have some other programming experiences prior to that.
If you could highlight key words, that would be great!
Doesn’t matter the subject, as long as it’s linked directly to Blueprints.
Doesn’t matter the experience either. You could have 2 months to 2+ years and still not know parts of the system.
Also, are there any areas that you have no experience in, but would love to learn that you haven’t for whatever reason? This will be very helpful in me coming up with a training program to get game developers mastering the power of Blueprints.
Oh there are Several reasons why I find this engine very difficult to try to make a RPG game in. Because I’m stuck in my dialog system for my game and need to get the audio to match up with the text, and do the decisions and consequences widget, but because of the communication troubles between all the islands because to communicate you need to understand the engine’s logic but I don’t understand it…For to communicate in the blueprints you have to talk to all the little islands, the problem is the sea contains over a thousand of these little islands, and this makes the communication complex but because they also contain their own separate little classes, it makes it even harder…because each island can’t talk to the other unless you give it access to talk to it and you have to wire up HUNDREDS of these access talk points in between all the islands just to get them to talk to make a game component or make a game feature or make the game.
THE BUGS…The engine usually plays up when you try to go back later on to adjust or change something that’s been hard coded into the engine. This is when the blueprints start to become unpredictable because of all the Many File Dependencies its linking up to… So once something has been hard coded (not talking about the Engine Content here) but about the Blueprints. its best to leave it.
ENGINE CONTENT FOLDER has no lock on it that I know of to prevent any accidental saves or rewrites, so if you change anything in that folder, it can corrupt the project. cause builds to fail causes null references. and if you migrate that project over into a new engine when anything in the engine content folder had been accidentally changed, , it might corrupt the engine content also of the new engine that you are migrating the project over into. Forcing you to have to re-write all of the blueprints of the project all over again in the new engine just to prevent any engine content issues.
The engine comes in a thousand little bits and pieces. This was the main foundational concept that Blueprint Communication is all built upon by having everything all separated off into tiny little islands by putting them in their own separate classes just served to make the engine more complex to try to communicate with and more HUMPTY PRONE… and the more pieces you have to try to link up to talk to, the more nodes, the more nodes, the slower the engine becomes because of having to handle all the many access communication points needed between all the many islands…
The editor felt more like running DISK DEFRAG than an editor because it often took a very long time to fire up the project.
You had to either A) Construct all the game components yourself. whether you wanted a score counter, or other game feature you couldn’t just pop in a ready-made score counter from a ready-made library of widgets, BECAUSE THERE WAS NO LIBRARIES OF WIDGETS Game Features TO CHOOSE FROM so you had to build it from scratch, you also had to construct all the widgets by hand or B) Follow Online Tutorials to show you how to make them…There was no library of widget Textures to style your windows with, you had to make them yourself or import in suitable textures…
3D MODELS
There was NO Auto Rigger in the engine, you either had to rig it all yourself, or get someone else to rig it for you or use Mixamo. . There was NO Skeletons to target other than just only using the humanoid Rig as far as I can see so how can we target insects rigs and other legged creatures ??? No 3d modeling program to create new meshes from. Can’t change the skeletons if there are any issues with the bones or the mesh. Can’t seem to add in any virtual bone slots to the skeleton if the real bones don’t already exist in the slots. I thought a virtual bone was supposed to go in an empty bone slot to take the place of a real bone to save you from having to rig up all the missing bones
yourself outside the engine in another program. there are also no guarantees that the 3d program you use to prepare your rig with is fully compatible with Unreal Engine if you don’t have every single setting in your 3d program exactly right… I consider this ‘Jumping through all the hoops of other programs’ settings to be a bit of a nuisance. When the engine should have these things already built into itself so you can deal with all the issues in just one program instead of having to muck all around with the settings of several other programs…
9): Engine dosen’t always delete things properly from itself and sometimes causes Ghosting issues with old redundant deleted data
and can cause issues with the triggers, and I don’t think there’s any way to delete any file redirectors without manually going through
all of the directories of the project, because I can’t see any file redirector list to show what directories they maybe in.
The Engine is also not backward version compatible. Creates issues with migration if your engine version is
too far behind so you have to play frogger with the engine versions to try to catch up.
You need to have a ton of knowledge about the system and have a programing background in order to know how to
construct up all the logic of these blueprints and talk to all the different classes, depending on how complex the game is
you are trying to make…
little islands…
The biggest problem in developing an entire project in Blueprints, or at least its core classes, is the circular dependency which can lead your project to the end if you are not versioning it correctly, because you won’t be able to load it anymore in the editor. This has happened to me once, and to fix it manually, inside each .uasset file, was basically impossible.
In C++ this is easily solved by using forward declaration, but in BP’s there’s no such technique yet. So, this is, by far, the most important thing (IMHO) you should care about when core developing in Blueprints.
There are some good practises for that, using Blueprint Interfaces, for example. You can, also, monitor this through Reference Viewer (RMB over a BP class in the editor)
But basically you should be aware of advantages and disadvantages of an Object Oriented software, which is the UE’s case, in comparison to ECS and other common game dev architectures.
This will lead you to a better understanding of the good practises over the UE.
The following is not directly related to learning Blueprints, but I believe it’s important to know as a game programmer:
Another big problem I’ve faced using BP was using **Git LFS versioning **which, sporadically, turned my BP uassets into a 50kb file when commited. Logically it was not even opening inside the editor after that…
I suggest you to choose **SVN **if you are willing to use version control. At least I’ve not heard of big problems so far.
tozan’s post is almost a direct feedback to the Unreal Editor and the Engine itself, which still pretty valid and we share the same opinion in most cases, but I suggest you to forward it to one of the Engine Feedback sections to get the desired visibility
I agree that the lack of proper documentation can be frustrating. But, we have access to the source code…plenty of documentation there
In this thread I wanted to discuss more about Blueprints itself, using them.
Not really a bash against BP or the Editor. We all have our qualms about it. Again. Think of this as more of a way to help out not only yourselves (if you are stuck learning something new relating to BP) but also to newer devs that comes into the Engine. What are the struggles? If someone could write the answers for those struggles… what would they be.
No, I don’t know alot about Object Orientated Software, except I guess for the disadvantages and limitations that I’m coming across when trying to piece together my game up in this engine. Version the uassets correctly? Can you explain what this circular dependency means?, Do you mean just having to keep up to date with the latest engine version?, or if you don’t and fall too far behind the versions then the uassets you create in the older version wont load up in that newer engine if you try to migrate or load them in??? If this is the case, then that means playing frogger with the engine until you catch up to the latest version.
We haven’t even gotten to Arrays NESTED inside other arrays yet which this blueprint system don’t like that I’ve noticed… But the batch file has no trouble at all in nesting multiple arrays inside of each other or in nesting labels and flags inside of each other. And because of this powerful nesting ability, I can set up all kinds of many special conditions up for the game storylines and flags even though the game is all in text form for the 1st stage of its development. But in the Blueprint System I think it has trouble in trying to do nesting…, I think it has some trouble in trying to nest arrays inside of other arrays, the blueprints don’t seem to like it.
The whole foundation my game is built all upon nesting things inside of each other so why can’t these blueprints just do the same ???
The Blueprint System wants me to build my foundation all up instead on all these little floating islands that are out in the sea. And as you
know the sea is very tippy and unstable because its got waves, its not always calm… (instability).
BUILD ERRORS: This is a pain, you spend 2-6 or sometimes more hours in waiting for your game to build depending on the size and then an error pops up in the build window and instead of continuing on and just building it and letting you just run the game, if it find just one little error in red then on the final last leg right at the end of the finish line, it informs you 3 or so hours or so later saying the build has failed. wasting many hours of your time…Or sometimes the engine comes up with ERROR UNKNOWN. Sometimes the engine dosen’t even know what the error is…
It might also have trouble in storing things up in Bulk like a bulk save system, since the Data Structs can only save up so many variables before the engine starts all slowing down the longer the struct variable list gets… Yet I have nearly 1700 Game Variables in the batch file, and how is it going to store up all of this in the Blueprints Save Game Instance system??? Can someone enlighten me about doing bulk save data systems if the Blueprints do support this?, Can it store it all up in a data table to load it up into the game instance somehow into the memory so the game can keep track of everything between all the systems in the game? I don’t understand the unreal docs on this because I aint a blueprint specialist. I don’t want to have to try to hook up 2000 set variables either for every single variable that’s in the game just to try get the game to remember all of the storyline events and flags and values… Otherwise I will run out of space on the blueprint graph and end up with too many set nodes which will slow the engine all down.
But I never run out of space in my batch file. I can have thousands of arrays. That’s why I found my game much more easier and faster to write it up in a simple batch language. For i used notepad to write the game out with instead of using a text authoring RPG adventure editor.
What you mean that the Source code is where all the documentation is of this engine? There should be also plenty of documentation also on the Blueprints system. Yeah in this engine you have to learn how be a good pilot you need to learn How to Fly it well when everything goes all dead wrong, not just only when the weather is fine. . Because this engine is like venturing into the Bermuda Triangle. For when you get up high into the clouds you soon lose your bearings don’t always know where you are, or where the plane is at, funny things start happening to your plane’s instruments as they sometimes go all haywire on you. , Because the engine has its own stormy tropical periods and revenge moods with file dependencies, and you need to know not just how to do things right in the engine but also need to know how to deal with all the bad weather that comes up when things start to go all wrong.
I find it amusing that there are alot of tutorials out with instructors showing you how to pilot well in fine weather but little to NONE I see written of how to get you out of all the trouble when the weather starts to turn bad when the engine wants to play it or when the engine has you flying all upside down when you come out of the clouds when all along you think you’re been flying level with them. or find the sea is all full of fog, and when you hit the water you think is just wind turbulence hahaha. And then you come up to the Thousand Talking Islands of Blueprint Communication where you might have to do fifty or more things to the blueprints to set up something that should be simple but because
its a thousands islands and not one hundred, it takes alot more setting up to do…
Alright, so you have issues because you don’t know OOP or rather didn’t know OOP when you started. Have you learned since then? What nodes did you find hard to use or understand? What nodes do you still have trouble with? Is there something you haven’t touched at all in Blueprints?
Software Versioning or Source Control are essential tools for every developer (Programmers & Artists) in a project.
You would choose which system fits better on your project.
About circular dependency: is a hot topic, I’m sure you can find a lot more information on the internet, but in a nutshell this situation happens when File A have dependency on File B, and File B has dependency on File C, and File C has dependency on File A, so the compiler does not know which one to load first. Files can be libraries or BP Classes.
In Blueprints this is a very critical subject because Blueprint Scripts are generated at runtime, that means you will only have access to your script code (visually, with a beautifully working interface) after loaded by the editor, that can face a circular dependency and not load at all…
These two has nothing to do with Engine’s version, if that’s what you were trying to point out.
Sincerely, I believe this is not the right thread for you to expose your complaints about the Editor bugs, the Engine’s architecture and Blueprint Bugs, this is diverging too much from what the thread was intended to be and, as I said before, this is not getting the right visibility you probably want. Unless you are tring to point out the hardest thing to learn in Blueprints are the bugs from the Editor and how the engine was architected…
@VictorBurgos:
I think that the most notable problems and confusing subjects that shows up in BP’s section are about GameMode, GameState and PlayerState classes. There’s a lot of misunderstanding on their differences and their roles on the pipeline (even I had to learn on how to use them properly after doing lots of different projects due to lack of a specific, complete material on these subjects). If you want to make a training program I highly suggest you to make a complete analysis on which methods to extend, how to properly extend their states, how to make a fluid game mode loop, and things you won’t learn by reading only pure technical docs.
Flippant -> “Not showing a serious or respectful attitude” what? This is my thread and you are veering off topic. The answers I provided you are 100% factual. Just because you don’t like it, doesn’t make it any less relevant, true, or serious.
“Under-served market” means what exactly? People whining about lack of documentation? And don’t know how to get the answer for themselves? This is actually the market I am trying to serve.
Aye, I am definitely going to be covering the Game Framework, in respects to both Single Player and Multiplayer. Going over each class in depth, why they are important and how to use them properly to your advantage.
It won’t be something that is like a zombie-click fest, paint by numbers. I want people to actually learn what each part of the framework does, when and why to use certain nodes or workflows and how to find the answers on their own, or come up with solutions with the toolset they don’t even realize they have.
Personally, the most important and valuable thing in making videos/tuts is to share the **developer’s **experience and HOW they’ve solved certain problems. This triggers not only begginers, but higher level developers too.
No I didn’t know about OOP but as an individual I had written up a 223 thousand line batch version of my game containing around 40,000 lines of text dialog between 9 party members, it was an RPG SCI-FI Game with over 100 different systems and worlds in it (that’s the reason why there’s more dialog in this game than usual). So to put this type of game up in the blueprints system was going to be quite a feat to try to do…I wanted the planets to be open worlds environments but that might be asking too much from this Engine since you can’t have big huge terrains on every planet so you have to look also at resource space..
So what do i find the hardest to try to do in this blueprint system? It was the game’s Dialogue system.. The dialogue system is easy
for me to set all up in batch code, but very HARD to try to set it all up in the Blueprint system., because of the Thousand Little islands Communication talking system that the blueprint relies on is why I found it lot more harder than what it should be.
So there are things in this engine I cannot resolve on my own. so i have to come on here to get help, but not all my questions get answered on here.
For me it has been figuring out how to set up a proper environment for testing multiplayer features/replication. Results are very different depending on how you setup things in the editor, closest I ever got to the results of a packaged project was using a single process for each client. But that also resulted in other weird behavior and horrendous stability.
Another thing I guess is measuring performance, for example - how long it took to do a certain task.
You can’t really expect everything to be served on a silver platter with this engine. It is most certainly possible, look at @mid_gen’s amazing terrain generator nicknamed Cashgen. Been a while since I used it but back then it was incredible - can only imagine it being a hundred times better by now.
I would definitely like some more information on how to use the Framework. Most of it that is available is just general information. For example, the documentation states that the GameMode class only exists on the server, and defines the rules for the game. I’m assuming this means that a lot of the rules you would have in a multiplayer game like score to win and game timer are transferred from the GameMode to the GameState class at the beginning of the match so that information is visible to all clients.
Keep the questions coming!!! Definitely trying to alleviate all concerns as possible, especially with the framework.
GameMode definitely only exists on the server. GameState is replicated to all. One of its purpose is to get information around to everyone since everyone has access to it.