Finally a good teacher explaining complex concepts with simple examples. A rare gem in the messy ocean. I will definitely steal the cash/ATM example. Brilliant!
Super helpful! keep it up! It'd be great to see 2 extra scenario breakdowns. Multiplayer/replication example a object that has multiple static mesh components on it, represented as a singlar actor (e.g. a table with items on it)
Hi, I have issues with compiling the plugin in Unreal 5.3.2. Says there's an error I need to rebuild manually from source. Lyra project doesn't open anymore because of the plugin. Could you help?
Thanks for the video but I have a problem here. I acknowledge that LWInstances need the same static mesh that blueprint actor is using, but how we transform a blueprint actor that does not have a static mesh coupled in it without it disappearing?
It seems very finicky using it in runtime. I tried spawning some actors in runtime and converting them to lightweight instances. They dissapear, but if i shut down the game they show up as instances in the editor. What if you want them to become instances on the go ? Spawn them and then make them instances? there isnt much about it online
You also need to do this in development editor and not ind ebug game I've noticed or else the chairs just disappear. Thanks for the tutorial, it was great!
Hello, every time I try to add a static mesh to the InstancedStaticMeshComponent (the step at 5:13) the editor instantly crashes. Do you know why this might be happening? Edit: Nevermind, I watched your other video and figured it out.
Hello, your video has helped me a lot, I have some questions, in which class do you activate the GameFeature plugin? Why do you use the CreateUObject method when you load and activate this plugin?
I NEED YOUR HELP!!! Great video thank you, needed badly. I followed your video until @2:11. When typing "static" there is NO list that shows up for me. In your video there is a list. I can't continue until the list shows up. What am I missing? I followed all your steps. I'm using Unreal Engine 5.0.3. I have hundreds of different meshes that are repeated thousands of times. Please help.
In UE 5.1 preview 2 the meshes disappear as they are converted to LWI, even if restarting the editor. Damn this looked like a super nice feature, too bad the implementation is lagging behind for now.
If I follow the steps between 1:00 and 1:24, without editing any blueprints, will I have an instanced mesh? For example, I make a window, I add a Hierarchical InstancedStaticMesh as you've shown. Now, if I duplicate the mesh by doing simply copy and paste, will the second mesh require calculation or will it be instanced? I tried to do so, and it created another statichmeshcomponent under the main one. I wanted to know this, I only found the procedure in your tutorial, thank you in advance.
Thank you for sharing your dev notes. A quick question, do you know how to load/activate these features at run-time? For instance, if player completes a certain task, it grants a new feature. Based on other presentations, this feature is great to create game patches and DLCs, as it is used in Fortnite for seasonal packs. Thank you.
That is supercool!! And makes my thought about buying an instance pool plugin obsolete 😅 This will push my Keeper-Like Gridmap to a more performant Level
Thanks for the Info. You mentioned below that this can be used for Interaction. I wasn't able to get the Interaction part to work. Say I have 30 Gold Coins to collect (BP_GoldCoin). The GoldCoin BP has a collision box that destroys them when the character collides, or presses a key for pickup. From what I see, the class representation has and input for the BP Actor Class, but the representation is a static mesh. How do I expose the Collision Box so that the coin can be picked up ? Thanks again
Hey, thanks for the video! Anyway I have a unique problem that editor always crashes after I try to convert BPs to Lightweight instance. I did everything correctly, including the last restart. Seems like it doesn't work on version 5.0.3 anymore.
@@GarethNoyce I've been trying this for months and my editor always crashes no matter what I do. It sounds like a good idea, but until Epic put time into correcting this feature there is nothing we will be able to do to make it work.
ISM, HISM, Auto-Instancing and now Light Weiht Instances: I think i'm losing track of the advantages, disadvantages, and intended uses. What does the new technology offer in terms of performance compared to the old ones?
Hey Amir thanks for free ctf sample, is flag logic c++ ? im trying to 2 base but 1 flag version (think like a flag in middle and players trying to return flag to their base
Hey Safak, thanks for the kind words! You can find the logic in "Blueprint/B_CaptureTheFlagScoring.uasset", You can customize it to only activate one Flag pad. It might need a bit of work. Fun fact , initially I did exactly what you said , I had only one flag in the middle but then changed it to two flag version.
When you say "We are only storing its transform...". This is not entirely true, under the hood those are just good old HISM components which properties are hidden. Nice video though!
Thanks for the kind word! You might be confusing lightweight instances with HISM, The use of HISM is only for the rendering side of Light instances. In fact, Lightweight instances are not only meant to be used for actors with meshes. you can have a lightweight instance of an actor that is entirely data-oriented and does not require rendering. I only use LightWeightInstance Static Mesh so I could show a visualization of how the system works in the video but you can use lightweight instances without any mesh or rendering. it's more than just hiding properties. You can refer to How the engine now treats Tracing and casts, you no longer get an actor but instead an ActorHandle which is just an id of the Actor that has been traced. In fact, The majority of the engine has been changed to accommodate lightweight instances. I suggest you look into LightWeightInstance Manager to see how the process is implemented under the hood. When you convert an actor to a lightweight instance, The actor is removed from the world and only its Transform is stored which is mapped to a Handle Id then the moment you convert the instance back to an actual actor, the actor gets created at the transform. Few places I would recommend looking at , if you are interested in learning about Light Weight instances : 1 - ALightWeightInstanceManager 2 - FLightWeightInstanceSubsystem 3 - FHitResult, Where instead of an actor you get a "FActorInstanceHandle HitObjectHandle". Let me know if you still need more info , I'll be glad to help out😊
You mention that other information about the actor, in addition to the transform can be added. How would you add additional value types (float, boolean, etc) about the actor?
Sure, You can take a look at the ALightWeightInstanceManager::SetDataFromActor, So what you can do is to Create you own manager derived from "ALightWeightInstanceManager" then override the function called "SetDataFromActor". Then within the function you can customize what you wish to store when the actor is converted into a light weight instance. You also want to inherit from the FLWIData structure and add the properties you need and to in order to tell the manager to use your new struct, you can override AllocateInitData and allocate your own struct instead.
After some time, I've been unable to succeed. As someone with no prior C++ experience, this is beyond what I am able to accomplish. Would you be willing to make a short tutorial of how to add a few other basic variable types, in addition to the transform? I'm working on a voxel game like Minecraft, where each block is an actor that gets converted into a LW Instance. However, since each block requires more data than a single mesh and transform (such as block id, material, even shape), I am unable to implement all the visual differences for blocks that have been converted into LW Instances.
Nice video but I have a question. You showed how the LightWeightInstances become the real BP_Chair once you interact with them but is this also reversable if you dont interact anymore? Maybe with one of the functions you mentioned?
Thanks for the kind words! Yeah so the system does not automatically convert it back to Light weight instances, but you can do it manually by calling "ConvertActorToLightWeightInstance" and pass the actor you want to convert to a Light weight instance as the parameter.