I don't know whether its that I know more now than months back, your common accent, or how well you explain and cover all this, but you are extremely helpful
@@stayathomedev would you happen to know how I might be able to pair-up my grid tiles with an adjacency matrix to practice path algorithms on? Not for anything specific, I just want a way to visually see a shortest path highlighted and I'm just trying to get some kind of system to cross it over to tiles.
Great video series. It's refreshing that you actually explain how the engine works and how to optimize. Most videos I see are hacky approaches which is annoying as beginner trying to learn the proper way to do things.
very nice, i work procedural workflow in blender and want to switch to and be able to create in unreal. unless there will be a way to transform geometry nodes system into unreal engine, until then, these videos are so helpful, thanks a lot, way you explain is clean and on point.
Hey! Thanks! Glad you are finding them helpful. There are some procedural mesh nodes available in Unreal to construct meshes at runtime. You obviously have way more control in C++, but there are ways to procedurally generate geometry.
@stayathomedev , great video. But there is one thing I don't understand as a UE newbie.. Where is BP_HexTile used exactly? BP_HexGrid uses the HexTile mesh to render the grid and I don't understand where I can use the BP_HexTile to manipulate the single tiles.
I think you are meant to drop the BP into your level directly. That's what I've been doing anyways. Since he builds the BP through the construction script, just dropping it into the level is enough to make it work. If you'd like the grid to not always be there, you'd probably want to find another way to spawn the BP in your logic. Hope this helps.
So, I tried the changing the material color based on height, but it doesn't change the hex colors. I was asking on the Unreal discord, & someone was saying something about making sure a dynamic material instance was created at run time? Any idea what I could be doing wrong here? My elevation parameter also had a default value box underneath, could that be related?
Hey! Check the scale of the instanced meshes in the BP, both the parent object and the instances. Then check the size of the actual mesh being used. If you head to the discord server, you can send a screenshot and I'll help the best I can.
A small newbie question here, How do I make the connection between the Material and the Blueprint. I am a bit confused and I can't find the right words to search on google
Great tutorial, but it would be great to be able to reach the source files, they can't be found on your patreon side and the Discord link provided has expired or been used the maximum amount of times.
I'm trying with just 10k instanced meshes (the chamfer cube) and its chugging pretty hard on construction, and whenever I click on the component in the outliner. Is that normal?
Found IT. In CPP You have to set the UPROPERTY on the UInstancedStaticMeshComponent to VisibleDefaultsOnly UPROPERTY(VisibleDefaultsOnly) UInstancedStaticMeshComponent* InstancedStaticMeshComponent; If you dont the cpp will act way slower than the blueprints.
It's definitely not fully optimized. Instances work great until you're in closer and half the meshes are behind you. I'd probably chunk it a bit more into segments so you're never loading more than so many at a time. Something to look into for the future. Thanks for posting the fix!
@@stayathomedev Doing UPROPERTY(VisibleDefaultsOnly) hides the big giant array of transforms you get when you load up a bunch of instances. Apparently, that's a nono in the array control in the editor. It fixes ISM, HISM, and Light Weight Instance which all generate a big ol list of transforms. I haven't tried chunking yet it'll be something to look at If I need to proc gen more.
By the way,How do I add rise and fall animations for instance? This question has puzzled me for a long time.I try to use "Random float in range"and add time line,sine etc.But it didn't work out very well.
I am having an issue with my Tile_BP. I have set everything up in the same way, but for some reason when I check the "Instance?" box everything just dissapears. If I disable either the set node with Base Water Height float, or the Set node with Tile Height, half of the hexagon grid appears for either after compiling, however neither are effected by the height strength variable. Am I missing something? I feel like I've watched from 10:07 to 11:43 a million times and everything looks identical.
@@stayathomedev I want to make a procedural tile based game, but I want to manipulate the tiles. There are new light weight instances, but only one dev make two videos and they seems to have some problems until now. The light weight instances can be converted into actors automatically. Thats sounds interesting.
For some reason my water tiles aren't getting the wave noise individually. Instead, the normals are being applied once to all of the water tiles as if they were one object. Can you point me in the right direction?
Hey! I literally just checked because of your comment and...yes...I need to consider the overall scale and adjust the noise scale as well. I'll play around and post a fix.
@@stayathomedev That explains why I was losing my mind trying to figure out why it stopped working haha! I've tried to recreate everything so far on my own and thought I messed up somewhere on the way. I tried to fix it by splitting the "New Instance Transform Location" in the "Update instance Transform"-Node and connecting the X & Y pins directly back to the width/heigh displacements but (seemingly logically) that resulted in the same problem. I'm working on a small project which will have tiled levels (but free movement) after not having actively worked in Unreal since ~4.19 so your channel is an absolute lifesaver!
Just at first glance...the noise scale needs to decrease when the scale increases...will figure out the function and post it....For example...setting the Scale to 2 and the noise scale to .25 recreates the noise pattern to scale for me.
@@stayathomedev After working on it some more it seems that my problem with the scaling of the hexes seems to have fixed itself somehow, but now with it working I see what the problem you're describing with the noise scale seems to be (with the effective noise getting smaller when the scaling is adjusted as the noise is absolute). Though I've also run into something else that I can figure out, after integrating noise via the add-on in Video 3 your hexagons are scaled in height while mine are just put in a different location (resulting in holes/flying hexagons) - I can't figure out when/where you made a change (if any) that results in this 😅.
Here's a BlueprintUE link to the full hexgrid BP: blueprintue.com/blueprint/2nvflrv3/ You might be adjusting the X and Y locations as well...the noise only affects the Z axis in the linked BP.
I followed the tutorial, though my tiles are still changing hight when dragging. I've deactivated the setting like you showed in BP_Tile, unfortunately it doesn't have any effect. Also, the BP_Tile child actors nested under BP_HexGrid in the Outliner are all named "BP_Tile", without different numbers. Is that the reason - and if so, how can I fix it?
Had the same problem as you, I fixed it by deactivating it in the BP_Hexgrid and not in the BP_Tile file. The Hex grid handles the generation, that's why it kept updating while moving.
Great video again !! :) I have a lil question if you have time... I was working on a grid a bit like yours (and i would have loved to see your videos sooner xD) but i think i can't use instanced mesh ... because i need to access on each tiles separately (for having a context menu and other stuff like this)... so actually i just use a blueprint who spawn each tiles as actors, wich contains statics meshes... and for the performance, i just pray for the god "Nanite" xD Do you think there is a better way for me to deal with ? (sorry for my english)
Hey! I'd have to check into Nanite and see what it does for rendering time. I've JUST moved up to UE5 so still playing around with things. Regarding your examples...you could use instanced meshes (depending on what functionality you need when accessing each tile) and whenever you interact with a tile instance (collision, click, etc) you can actually SWAP out that instance mesh for a static mesh actor that can be manipulated more easily. Then return back to an instance when done. You can also get decent mileage out of custom data values. I will actually be touching on the swapping example in an upcoming video because I want to be able to interact with each individual tile also!
@@stayathomedev Haven't had the time myself to check it out, but there's a new feature since 5.0 called 'Light Weight Instances'. It suppose to allow you to swap between an Instanced Mesh and an Actor. So, much less manual labour. Also really good production on your first view videos 🙂
@@iddkfa803 Thanks! I appreciate that! I've done some brief research into the "Light Weight Instance". Will definitely check it out more once we begin interacting with all these tiles we're creating.
I cant get my instances to show any material... The height randomizer works fine, but no materials. I've watched the videeo multiple times and have exactly the same settings as you do in the video. Any help?
so glad you took the time to explain what instanced meshes are
I don't know whether its that I know more now than months back, your common accent, or how well you explain and cover all this, but you are extremely helpful
Thanks! Glad it's helpful!
@@stayathomedev would you happen to know how I might be able to pair-up my grid tiles with an adjacency matrix to practice path algorithms on? Not for anything specific, I just want a way to visually see a shortest path highlighted and I'm just trying to get some kind of system to cross it over to tiles.
Great video series. It's refreshing that you actually explain how the engine works and how to optimize. Most videos I see are hacky approaches which is annoying as beginner trying to learn the proper way to do things.
Thank you! Worked great and I'm learning a lot. Gonna plow throw this series and see what I can achieve
this comes really handy! thanks very much for the video!
very nice, i work procedural workflow in blender and want to switch to and be able to create in unreal. unless there will be a way to transform geometry nodes system into unreal engine,
until then, these videos are so helpful, thanks a lot, way you explain is clean and on point.
Hey! Thanks! Glad you are finding them helpful. There are some procedural mesh nodes available in Unreal to construct meshes at runtime. You obviously have way more control in C++, but there are ways to procedurally generate geometry.
Any chance you could also do a tutorial on how to make the really pretty water & grass materials like you did ~ 8:59?
@stayathomedev , great video. But there is one thing I don't understand as a UE newbie.. Where is BP_HexTile used exactly? BP_HexGrid uses the HexTile mesh to render the grid and I don't understand where I can use the BP_HexTile to manipulate the single tiles.
I think you are meant to drop the BP into your level directly. That's what I've been doing anyways. Since he builds the BP through the construction script, just dropping it into the level is enough to make it work. If you'd like the grid to not always be there, you'd probably want to find another way to spawn the BP in your logic. Hope this helps.
@@Bloodwurm74 no it doesnt work I dont know how the BP_HexTile and the BP_HexGrid are connected
Are there any tipps to further improve the peformens after 4200 tiles it needs quit a few sec to load and if I make like 10k I get no responce from UE
So, I tried the changing the material color based on height, but it doesn't change the hex colors. I was asking on the Unreal discord, & someone was saying something about making sure a dynamic material instance was created at run time? Any idea what I could be doing wrong here?
My elevation parameter also had a default value box underneath, could that be related?
Lunch break over... Video is finished and just one bug... My instanced meshes are really small and I don't know why.
Hey! Check the scale of the instanced meshes in the BP, both the parent object and the instances. Then check the size of the actual mesh being used. If you head to the discord server, you can send a screenshot and I'll help the best I can.
A small newbie question here,
How do I make the connection between the Material and the Blueprint. I am a bit confused and I can't find the right words to search on google
After playing around by myself... I figure it out :))
I just forgot to assign the material to the mesh hehe :3
@@chriss-fox You could have also called Set Material after the call he shows to Set Material Mesh.
Great tutorial, but it would be great to be able to reach the source files, they can't be found on your patreon side and the Discord link provided has expired or been used the maximum amount of times.
I'm trying with just 10k instanced meshes (the chamfer cube) and its chugging pretty hard on construction, and whenever I click on the component in the outliner. Is that normal?
Found IT. In CPP You have to set the UPROPERTY on the UInstancedStaticMeshComponent to VisibleDefaultsOnly
UPROPERTY(VisibleDefaultsOnly)
UInstancedStaticMeshComponent* InstancedStaticMeshComponent;
If you dont the cpp will act way slower than the blueprints.
It's definitely not fully optimized. Instances work great until you're in closer and half the meshes are behind you. I'd probably chunk it a bit more into segments so you're never loading more than so many at a time. Something to look into for the future. Thanks for posting the fix!
@@stayathomedev Doing UPROPERTY(VisibleDefaultsOnly) hides the big giant array of transforms you get when you load up a bunch of instances. Apparently, that's a nono in the array control in the editor. It fixes ISM, HISM, and Light Weight Instance which all generate a big ol list of transforms. I haven't tried chunking yet it'll be something to look at If I need to proc gen more.
By the way,How do I add rise and fall animations for instance? This question has puzzled me for a long time.I try to use "Random float in range"and add time line,sine etc.But it didn't work out very well.
I am having an issue with my Tile_BP. I have set everything up in the same way, but for some reason when I check the "Instance?" box everything just dissapears. If I disable either the set node with Base Water Height float, or the Set node with Tile Height, half of the hexagon grid appears for either after compiling, however neither are effected by the height strength variable. Am I missing something? I feel like I've watched from 10:07 to 11:43 a million times and everything looks identical.
Okay this is weird, they're just very very tiny. anyone have a fix for this? Seems that the scale is broken
Which Kind of Instances are the best? ISM, HISM, Auto-Instanced or Light-Weight Instances?
Depends on use case. I'm using instanced but may switch depending upon tile interaction. What's your goal?
@@stayathomedev I want to make a procedural tile based game, but I want to manipulate the tiles. There are new light weight instances, but only one dev make two videos and they seems to have some problems until now. The light weight instances can be converted into actors automatically. Thats sounds interesting.
For some reason my water tiles aren't getting the wave noise individually. Instead, the normals are being applied once to all of the water tiles as if they were one object. Can you point me in the right direction?
i can not get the ISM to assign right color to elevation
at all not sure what I'm doing wrong follow vid 3 times any one else having trouble 5.1
Great video! Is it possible that the random height modification broke the Scale-option?
Hey! I literally just checked because of your comment and...yes...I need to consider the overall scale and adjust the noise scale as well. I'll play around and post a fix.
@@stayathomedev That explains why I was losing my mind trying to figure out why it stopped working haha! I've tried to recreate everything so far on my own and thought I messed up somewhere on the way.
I tried to fix it by splitting the "New Instance Transform Location" in the "Update instance Transform"-Node and connecting the X & Y pins directly back to the width/heigh displacements but (seemingly logically) that resulted in the same problem.
I'm working on a small project which will have tiled levels (but free movement) after not having actively worked in Unreal since ~4.19 so your channel is an absolute lifesaver!
Just at first glance...the noise scale needs to decrease when the scale increases...will figure out the function and post it....For example...setting the Scale to 2 and the noise scale to .25 recreates the noise pattern to scale for me.
@@stayathomedev After working on it some more it seems that my problem with the scaling of the hexes seems to have fixed itself somehow, but now with it working I see what the problem you're describing with the noise scale seems to be (with the effective noise getting smaller when the scaling is adjusted as the noise is absolute).
Though I've also run into something else that I can figure out, after integrating noise via the add-on in Video 3 your hexagons are scaled in height while mine are just put in a different location (resulting in holes/flying hexagons) - I can't figure out when/where you made a change (if any) that results in this 😅.
Here's a BlueprintUE link to the full hexgrid BP:
blueprintue.com/blueprint/2nvflrv3/
You might be adjusting the X and Y locations as well...the noise only affects the Z axis in the linked BP.
Is your discord still active? Link is dead
I followed the tutorial, though my tiles are still changing hight when dragging. I've deactivated the setting like you showed in BP_Tile, unfortunately it doesn't have any effect. Also, the BP_Tile child actors nested under BP_HexGrid in the Outliner are all named "BP_Tile", without different numbers. Is that the reason - and if so, how can I fix it?
Did you uncheck the construction update on move option?
Had the same problem as you, I fixed it by deactivating it in the BP_Hexgrid and not in the BP_Tile file. The Hex grid handles the generation, that's why it kept updating while moving.
Great video again !! :)
I have a lil question if you have time... I was working on a grid a bit like yours (and i would have loved to see your videos sooner xD) but i think i can't use instanced mesh ... because i need to access on each tiles separately (for having a context menu and other stuff like this)... so actually i just use a blueprint who spawn each tiles as actors, wich contains statics meshes... and for the performance, i just pray for the god "Nanite" xD Do you think there is a better way for me to deal with ? (sorry for my english)
Hey! I'd have to check into Nanite and see what it does for rendering time. I've JUST moved up to UE5 so still playing around with things. Regarding your examples...you could use instanced meshes (depending on what functionality you need when accessing each tile) and whenever you interact with a tile instance (collision, click, etc) you can actually SWAP out that instance mesh for a static mesh actor that can be manipulated more easily. Then return back to an instance when done. You can also get decent mileage out of custom data values. I will actually be touching on the swapping example in an upcoming video because I want to be able to interact with each individual tile also!
@@stayathomedev interresting ! Thanks for the answer, and i'm waiting for your next videos
@@stayathomedev Haven't had the time myself to check it out, but there's a new feature since 5.0 called 'Light Weight Instances'. It suppose to allow you to swap between an Instanced Mesh and an Actor. So, much less manual labour.
Also really good production on your first view videos 🙂
@@iddkfa803 Thanks! I appreciate that! I've done some brief research into the "Light Weight Instance". Will definitely check it out more once we begin interacting with all these tiles we're creating.
9:10 What is down there? >.
What annoys me in such films is that a professional shows fragments of a blueprint and then we don't know why it doesn't work.
0:44 Media Offline
PLEASE FOR THE LOVE OF GOD LINK THE FILES TO THIS PROJECT CUZ THESE VIDEOS DONT SHOW SHIT
I cant get my instances to show any material... The height randomizer works fine, but no materials. I've watched the videeo multiple times and have exactly the same settings as you do in the video. Any help?