4:10 you can also just select the instance and press ctrl+e. Super useful shortcut. Only uses the level editor viewport context though, so if you press ctrl+e intending to edit a component of a bp class it will still think you want to edit whatever is selected in the level editor
Thats a really nice topic. I'm experienced Unity developer which is working on full time, and a beginner unreal engine developer that tries to make his own game on off times, your topics and explanations are very clear. Keep going on man!
Ah, I didn't realize blueprints weren't technically prefabs. Coming from Unity, I just figured that's the UE way. Thank you for clarifying this. Your channel is so valuable to me.
Yep. We have also been using Packed Level Actors as prefabs in our asset packs. Far faster, more performant, auto optimizes meshes, merges materials and makes editing easier and less destructive.
Yea and you dont want to use any of these the best way to go is using the merge and turning it in to a normal static mesh -supports nanite -cheaper to run -way better performance And there are manny manny more reasons But making a level instance first will help you making ajustments
I use level blueprints for global variables and events. For everything else, I use blueprints. It's more organized and modular. If I remember correctly, Unreal 3 required everything to be done in the level blueprint.
I’ve been saying this for years. People complained about Unity not having nested Prefabs for years, but Unreal has NEVER had any official Prefabs at all. You can’t trust 3rd party plugins for such core systems and with most Unreal users being falsely convinced that Blueprints are prefabs, a true prefab system might never be officially added to the engine.
unreal is a lot more inheritance based so it doesn't assume you'll be needing prefabs i suppose. so level instances are likely to be the best we get. But the use of prefabs in unity is a lot smoother than working with level instances here i'll happily agree!
I would say that something similar to the prefab system was actually in the engine a couple of versions ago. Namely, archetypes in Unreal Engine 3. These assets actually worked as prefabs. It was a good feature, but it's a shame that it was removed... :(
This was probably the case up to circa last year or early this year. UEFN now is adopting scene graph and a prefab component system that is very similarly structured like Unity using verse as their language. You’ll see it popping up more and more in the upcoming couple of years.
Hmm didn't know about level instances, thats cool! However, in terms of performance, I kind of question if any of these options are really much better than putting them in an actor...soley because any object (including static meshes) that you place in your world are actors. When you drag a static mesh into the world, it creates a static mesh actor (which is just an actor with a static mesh as the root component). In the level instance case, you're effectively creating 3 static mesh actors.
is doesn't save anything in the amount of actors your create but it can prevent you from making a whole class just to group some meshes together. the difference between 1 actor with a bunch of static mesh components (as you'd do it through a blueprint) and a bunch of static mesh actors combined into a level instance isn't all that huge, but it does prevent a whole new class that needs to be created. Of course, just a class existing by itself doesn't tank your framerate or anything, so as far as real world performance goes, it really doesn't matter one way or the other. It's more about the convenience of grouping a few objects together in a way that might be bothersome to do in a blueprint. The added fact that we can avoid making a whole class for that is just a nice little bonus
I would be interested to know if Level Instances get placed into the HLODs. Blueprints do not. I also personally usually use Blueprints for prefabs because I also use the event scripts for numerous features such as actor ambient sounds, actor rotations, box collision triggers, etc.
one thing i found thats really bad with level instances is that they dont block loading. so when you spawn the player on top of a level instance, if the level instance doesnt load in time the player will fall through the level instance. i really wish there was a fix, i couldnt find one, cause i dont want things popping in to the world once the player loads into it
yes this is really annoying! especially for big level instances it can be a real pain to deal with. only real way of dealing with all that is making your spawn area stuck in the persistent level, which can be limiting..
im new, if i wanted random chests to spawn all over the world in random places could i still use this and add some kind of variables to change where they spawn each time?
for that, just make a blueprint. This video isn't about avoiding blueprints but instead on how you shouldn't make a blueprint just to put a few parts together like you would do for a prefab in engines like godot or unity. You have a chest, that's a very specific kind of object with it's own very specific kind of functionality, that makes sense to make into it's own class (blueprint)
Really interesting technique here. I'm curious, what sort of real world performance improvements does this create? Compared to say, a blueprint with recieve tick disabled?
in practice, very little. only the overhead in memory that a basic actor would have (transform data, some functions, and so on) The actor class itself is 1080 bytes so about 1KB of memory per instance. By the time you'd run into that problem, you're likely bottlenecked elsewhere already that has more impact. Still, every bit can be worth it if it doesn't impact your workflow too much (but if it is bothersome to deal with, making actor classes and using them as prefabs is fine)
@@thegamedevcave I'd still love some way of grouping things without having a new object class created every time I did, would also be great if the child actor system was overhauled, it's better than it was but sometimes I just wish I could say "Unreal, stick one of these to one of these"!
So a bit unrelated issue but its been scaring me; Unreal Editor NOT THE PROJECTS but the editor stops launching and crashes when initializing. It starts at 9 then goes to 18 percent and stops until inevitably crashing. I verified my version and cleared out / emptied any full caches and deleted saved and intermediate files and its the same. I believe it has to do with shaders compiling because i closed a project early when it was compiling so it went unfinished. Im also thinking an anti-virus program is intervening with it? Cool viseo btw; love the content and helpful videos. Keep up the good work! ✌️
In the epic games launcher go to your engine version, open the little dropdown menu and verify. Some engine file may have gotten messed up, verify will check and redownload damaged files
I have one question what if want to have the same character from example and when I Chenge the original to Chenge every one but I also want to add some extra aspect like hat's, and other version in the other's. Unity the are system that call Nesting Prefabs for this but how you can do that in unreal engine ?
but this are still not prefabs like the unity prefabs, its just not the same and no one uses it in UE to create complex interactive/scripted objects the closest to unity prefab in ue is actually the blueprint itself, thats what is used for complex objects or connections of multiple bps that being said, blueprint is just a universal name, but they can be purely c++ native objects and not even be available as a blueprint in editor
this is the closest thing to unity's prefabs. but you're right. unreal fundamentally doesn't work the same way as unity, it's a lot more inheritance based than composition based. So blueprints in practice are how you put together complex objects. But that's the point, when something isn't a complex objects and rather just a simple collection of objects. usually for decorative purposes or with very simple logic of a few objects that reference each other, making them into a level instance might make more sense than setting them up as a blueprint. By no means should you be "prefabbing" all your objects as level instances but neither are blueprints the only option you have for combining objects into a predefined collection. Knowing of both options and when to use either one is helpful.
Its a collection of objects that can be easily instances together. Since unity is so much more composition based, every complex object is a prefab in unity
@@thegamedevcave they are not technically instanced together in terms of instancing for performance, it just some objects together, in unity a prefab can be just empty gameobjects, in unity scripts are added to objects to add any functionality, but not required at all
A level is just a collection of objects, so is a prefab. Unreal's workflow isnt as smooth working like this but this isnt as strange as you may think. Godot also doesnt make a difference between levels and prefabs for the same reason i believe for instance
4:10 you can also just select the instance and press ctrl+e. Super useful shortcut. Only uses the level editor viewport context though, so if you press ctrl+e intending to edit a component of a bp class it will still think you want to edit whatever is selected in the level editor
Thats a really nice topic. I'm experienced Unity developer which is working on full time, and a beginner unreal engine developer that tries to make his own game on off times, your topics and explanations are very clear. Keep going on man!
Ah, I didn't realize blueprints weren't technically prefabs. Coming from Unity, I just figured that's the UE way. Thank you for clarifying this. Your channel is so valuable to me.
Yep.
We have also been using Packed Level Actors as prefabs in our asset packs.
Far faster, more performant, auto optimizes meshes, merges materials and makes editing easier and less destructive.
Yea and you dont want to use any of these the best way to go is using the merge and turning it in to a normal static mesh
-supports nanite
-cheaper to run
-way better performance
And there are manny manny more reasons
But making a level instance first will help you making ajustments
I use level blueprints for global variables and events. For everything else, I use blueprints. It's more organized and modular. If I remember correctly, Unreal 3 required everything to be done in the level blueprint.
For global variables you can also use a Developer's settings.
please keep making these Unity to Unreal videos. it will be more and more usefull as days go by. #LeavingUnity
I’ve been saying this for years. People complained about Unity not having nested Prefabs for years, but Unreal has NEVER had any official Prefabs at all. You can’t trust 3rd party plugins for such core systems and with most Unreal users being falsely convinced that Blueprints are prefabs, a true prefab system might never be officially added to the engine.
unreal is a lot more inheritance based so it doesn't assume you'll be needing prefabs i suppose. so level instances are likely to be the best we get. But the use of prefabs in unity is a lot smoother than working with level instances here i'll happily agree!
I would say that something similar to the prefab system was actually in the engine a couple of versions ago. Namely, archetypes in Unreal Engine 3. These assets actually worked as prefabs. It was a good feature, but it's a shame that it was removed... :(
This was probably the case up to circa last year or early this year. UEFN now is adopting scene graph and a prefab component system that is very similarly structured like Unity using verse as their language. You’ll see it popping up more and more in the upcoming couple of years.
actually they already confirmed that sooner or later the whole scene will be build with prefabs like trees, everything, they even showed it
Great explanation, thanks! This is one of those topics I have to keep coming back to and this is the best yet at explaining things.
Nice! Thanks for sharing this with us ❤
Any time!
Hmm didn't know about level instances, thats cool! However, in terms of performance, I kind of question if any of these options are really much better than putting them in an actor...soley because any object (including static meshes) that you place in your world are actors. When you drag a static mesh into the world, it creates a static mesh actor (which is just an actor with a static mesh as the root component). In the level instance case, you're effectively creating 3 static mesh actors.
is doesn't save anything in the amount of actors your create but it can prevent you from making a whole class just to group some meshes together. the difference between 1 actor with a bunch of static mesh components (as you'd do it through a blueprint) and a bunch of static mesh actors combined into a level instance isn't all that huge, but it does prevent a whole new class that needs to be created.
Of course, just a class existing by itself doesn't tank your framerate or anything, so as far as real world performance goes, it really doesn't matter one way or the other. It's more about the convenience of grouping a few objects together in a way that might be bothersome to do in a blueprint. The added fact that we can avoid making a whole class for that is just a nice little bonus
@@thegamedevcave Gotcha, thanks for clarifying!
I would be interested to know if Level Instances get placed into the HLODs. Blueprints do not. I also personally usually use Blueprints for prefabs because I also use the event scripts for numerous features such as actor ambient sounds, actor rotations, box collision triggers, etc.
one thing i found thats really bad with level instances is that they dont block loading. so when you spawn the player on top of a level instance, if the level instance doesnt load in time the player will fall through the level instance. i really wish there was a fix, i couldnt find one, cause i dont want things popping in to the world once the player loads into it
Try "OnLevelLoaded" then SpawnActorFromClass in your player BP. That should spawn your player after the entire level has loaded.
yes this is really annoying! especially for big level instances it can be a real pain to deal with. only real way of dealing with all that is making your spawn area stuck in the persistent level, which can be limiting..
im new, if i wanted random chests to spawn all over the world in random places could i still use this and add some kind of variables to change where they spawn each time?
for that, just make a blueprint. This video isn't about avoiding blueprints but instead on how you shouldn't make a blueprint just to put a few parts together like you would do for a prefab in engines like godot or unity. You have a chest, that's a very specific kind of object with it's own very specific kind of functionality, that makes sense to make into it's own class (blueprint)
Really interesting technique here.
I'm curious, what sort of real world performance improvements does this create? Compared to say, a blueprint with recieve tick disabled?
in practice, very little. only the overhead in memory that a basic actor would have (transform data, some functions, and so on)
The actor class itself is 1080 bytes so about 1KB of memory per instance. By the time you'd run into that problem, you're likely bottlenecked elsewhere already that has more impact.
Still, every bit can be worth it if it doesn't impact your workflow too much (but if it is bothersome to deal with, making actor classes and using them as prefabs is fine)
@@thegamedevcave I'd still love some way of grouping things without having a new object class created every time I did, would also be great if the child actor system was overhauled, it's better than it was but sometimes I just wish I could say "Unreal, stick one of these to one of these"!
So a bit unrelated issue but its been scaring me; Unreal Editor NOT THE PROJECTS but the editor stops launching and crashes when initializing. It starts at 9 then goes to 18 percent and stops until inevitably crashing. I verified my version and cleared out / emptied any full caches and deleted saved and intermediate files and its the same. I believe it has to do with shaders compiling because i closed a project early when it was compiling so it went unfinished.
Im also thinking an anti-virus program is intervening with it?
Cool viseo btw; love the content and helpful videos. Keep up the good work! ✌️
In the epic games launcher go to your engine version, open the little dropdown menu and verify. Some engine file may have gotten messed up, verify will check and redownload damaged files
Pure gold!
Handy for sure :) thank you
I have one question what if want to have the same character from example and when I Chenge the original to Chenge every one but I also want to add some extra aspect like hat's, and other version in the other's.
Unity the are system that call Nesting Prefabs for this but how you can do that in unreal engine ?
If i understand nested prefabs right you can just put 1 level instance into another level instance. Should be pretty much the same
but this are still not prefabs like the unity prefabs, its just not the same and no one uses it in UE to create complex interactive/scripted objects
the closest to unity prefab in ue is actually the blueprint itself, thats what is used for complex objects or connections of multiple bps
that being said, blueprint is just a universal name, but they can be purely c++ native objects and not even be available as a blueprint in editor
this is the closest thing to unity's prefabs. but you're right. unreal fundamentally doesn't work the same way as unity, it's a lot more inheritance based than composition based. So blueprints in practice are how you put together complex objects. But that's the point, when something isn't a complex objects and rather just a simple collection of objects. usually for decorative purposes or with very simple logic of a few objects that reference each other, making them into a level instance might make more sense than setting them up as a blueprint.
By no means should you be "prefabbing" all your objects as level instances but neither are blueprints the only option you have for combining objects into a predefined collection. Knowing of both options and when to use either one is helpful.
Ue5 plugin Prefabricator
Whats is a prefab? Unity dudes talking about that a lot 😂
Its a collection of objects that can be easily instances together. Since unity is so much more composition based, every complex object is a prefab in unity
@@thegamedevcave they are not technically instanced together in terms of instancing for performance, it just some objects together, in unity a prefab can be just empty gameobjects, in unity scripts are added to objects to add any functionality, but not required at all
Making a whole level for a prefab seems like a really stupid idea.
A level is just a collection of objects, so is a prefab. Unreal's workflow isnt as smooth working like this but this isnt as strange as you may think.
Godot also doesnt make a difference between levels and prefabs for the same reason i believe for instance
Comin from Unity, I'm not sure what you're seeing as a big deal.
its actually very good idea for level design in ue, they are still not prefabs the way unitys are