#blueprint
1 messages · Page 298 of 1
so i'm doing this in editor time not runtime
even a preview mesh it's still on runtime if you preview it
You can get cdo value that's about it.
you just use it as a placeholder for the final mesh
bassically just for a preview mesh to be shown on the AI Spawner so I can see what it's gonna spawn without clicking on them
Reference = instance of a clasd
You can get the class default object
Basically a cdo is created for each class
You can get the class default value from the cdo.
well thats what I've tried to do
create a preview actor and set it's mesh from the preview mesh variable
spawn actor
destroy actor
on whatever action
spose thats a way of doing it
Can blueprint data asset contain function?
The class can, yeah.
The native class can but the DA asset is like read only structure right?
Still not sure why DataAsset can't be extended, but PrimaryDataAsset can. 🤷♂️ But there's not much difference besides asset manager handling.
You can have BP classes of data assets too. That you can then make asset instances of. The BP class can have functions.
I think it's really just the AssetManager integration.
If you wouldn't have that in between your own BP classes, you'd create multiple different Assets in terms of AssetType I guess.
So this is meant to collect them all under "PrimaryDataAsset".
I guess one could expose the PrimaryAssetId stuff to a generic UDataAsset. Not sure it would ever be "okay" to generally expose it. If at all with some changes to UCLASS specifiers so they can expose it on UObject and then "un-expose" them on Assets they don't want it on.
Just keep in mind that those functions should, in theory, remain const.
Yup, I limit it to initialising stuff
Like granting abilities.
Yeah basically getters.
Another useful thing is if you have something optionally applied on top.
E.g. we had some setup a while ago where Designers could supply a simple float, but also an Object that could alter the float based on whatever they wanted to do.
So just exposing the float was mäh, so we made it private and return the float if the object is invalid and otherwise ran the float through the object.
I meant more that as a BP user, you are not allowed to create a normal UDataAsset. Like for assets you don't want asset manager functionality with. Cause for whatever reason they didn't put Blueprintable until PrimaryDataAsset.
Or some utility functions that make sense. E.g. I had one DA that had a BitMask with Directions the player can Mantle in.
And a function then to check against that BitMask based on the current direction, without ever actually exposing the BitMask.
Yeah I guess they simply don't want BP users to create custom UDataAssets.
@frosty heron
so this is my tooltip widget, u mean i can change the root location of it somehow ?
sure can
you do manage that on where you gonna display it to
did mine on Hover -> Get the position of the hovered element -> Move the tool tip widget to where the element/button is + some offset.
hm so i wouldent be able to do that on the behavior tool tip widget tho
i mean it uses th hover function really
so its kinda the same
@frosty heronacctualy by changing to top layer in the shown widget bp´s translation
works aswell
easy peezy
Every time I restart my project one of the events of an interface gets "removed" making it a custom event that doesnt work like intended. I even tried to add a new function and use that one and even removed the interface all together and created a new one and added that to the class, but it still gets removed when restarting my project. Anyone have an idea on how to fix this?
you may have a function that has the same name as the interface? 🤷♂️
Not identical, CheckingPath & CheckingPathRecent 🤔
But also tried CheckPath and PathCheck. All get removed
I just noticed another event on a different interface has the same issue. Also removed, also not working anymore 😦
hmm how can i make a widget update while hovered ?
OnHover-> Update?
while its shown
can i like "unhover hover" maybe that would be best
or im not sure...
solved it 🙂
There is OnHovered and UnHovered event
Hey all, I am trying to get the texture of a material replaced with a downloaded image during runtime. This does not work but am I at the right path?
how does repnotify work? I get that it creates a function and i should put stuff in there, but how does it replicate?
You set it on server. Server occasionally checks if values are changed and sends changes to clients.
Your material you have on that Mesh has a TextureParameter slot named Texture? If so your code looks fine.
oh so it is mainly paired with a run on server rpc call?
Correct. Replication only goes from Server to Clients.
Setting it on client will only overwrite whatever the server told that client to set, it will never reach server or any other clients.
okay but how does it send stuff to the server
whatever i put in the repnotify function gets sent to the server?
I have this in my material
i get the part that the server sends stuff to the clients like shown here
But what does repnotify actually do
and why does it create a function
Are you setting the material as the material to be used in that slot on Mesh? ATM you're only creating a new material in that code above and leaving it unset anywhere.
You send the value to the server through some RPC. Or the server determines it in some other way.
Repnotify is just a function that runs when the value arrives back on the client. For example if you want to set a player's Color. You set it on the server. It replicates, Repnotify runs which you can then use the color to set it on a mesh or something.
And to pick that color originally, a player might need to ServerRPC it to the server where it can be set.
Yes the material is set in that slot. After the set texture in the BP I don't do anything else.
Then you're not actually setting it in the slot. You're GETTING the material that is in that slot, and then you're creating a new material with that material as the type. None of this is telling your new material to be the material in Mesh's Slot 1
Drag off of mesh and do... Set Material or something. It should have a slot and material, you'll put the new material in the material and change slot to 1
Hmmm can't find something, set static materials?
Oh, I thought that was a Componnet.
You should have a StaticMeshComponent somewhere that has that mesh set, that also has a SetMaterial call.
OK I added the component and I can get the function but not sure how to connect it.
also I suppose I will have to use this BP inside the game instead of the mesh I use now
if I go down the static mesh component route. Is there a way to download an image and replace the texture of a material during runtime so all meshes in the game get the new texture?
this works! But I will have to replace all of my existing object with this BP now
for this BP I want to get only image1 and image2 from the JSON object. What is the best way to do it?
No , you have to manually do it , or write some code to automate the texture change .
If you follow instanced static mesh route then the suggested texture change is possible
what you want to make better
This is my interface method inside BP_Pickup Item.
BP Pickup item inherits from BP_ItemBase.
I also have some setup in BP_ItemBase for that interface. NOw i want to set my BP_Pickup's to default. (because before editing these to smth else, it was already calling the parent even if there was no parent node.)
So how can I convert this into default?
Like it should automacailly call super::GetInteractionType?
if Interaction type is variable and it's already implemented in the parent, then just don't implement interface in this children, like remove it, don't overwrite it, unless you want to have some special different logic how you get interaction type from the children
just remove this interface event
when you click 2 times it actually gets added under Functions
so remove it from there
then children will work the same way parent work (so I guess it's just getting Interaction Type variable that is on the object
Aha. I understood now.
Thats great man. Thanks. Always wondered how inheritance worked in BP that way.
when you have Implementable Event then it's a bit different if you want the same logic to happen from parent and then extra from children then you would call to parent
I was double clicking and creating new events for inherited ones, and was afraid of deleting them. 😄
yeah, i can simply right click to node and call parent node, then execute my stuff.
that would be a lot of stupid work to implement the same thing in the childrens when there is already one in the parent
so in these where you only Get, if you dont want for function use something else than what is in the parent then you leave it as it is
Thanks, now its much more clear. I was wondering why my inherited items wont calling the parent.
I was double clicked and leave it as it is.
you have to remove it from Functions
exactly
Thanks, this info is so handy for me now. I can easily handlke inherited interfaces now.
need to be cautious because somtimes we like to click things and when you forget to remove it it will actually override the parent and then it might not work 😄
Yes, I will check the functions always in the children. D:
Hey guys,
I am using Compositing for rendering the main camera view. There's a CameraActor which outputs the scene view.
It works fine when I'm working on the level separately and using PIE sessions.
But, when I use Open Level to load the level from my Main Menu, the CameraActor is just ... not there?
I can see it in the Outliner, but in the scene view, there's no Gizmo for Camera, the compositing element says 'Missing Camera'.
So, the Camera actor breaks when loading the level from another level, but works fine when I'm working on the level in PIE.
How can I fix this?
It's been a while since I've used unreal, so I'm wondering if I'm making a basic mistake and simply not seeing it. In the image, the blue cubes and pillars do not have the AC_Navigable component, so when my function goes off, it shouldn't create cubes if those meshes are within the area checked, yet it still does, and I'm not sure why. I should also note the walls do not have the AC_Navigable component, and those do not get a cube, which is working correctly.
Trying to make it so that the everything afte "Climbing Up" is triggered only when I press the button E (as shown in my Enhanced Input). This does work BUT it stays working. How do I make it so that when the line traces stop detecting a wall, they turn off and I have to interact with the button again to fire it off. The "NOT boolean" stuff seems to be wrong I think
wtf
I am trying to dispatch an event to my player character whenever a widget button is clicked but the nodes dont want to go together. How do I do something in a separate blueprint when a widget button is clicked?
You don't have to attach the Player with the dispatcher here
In your player get the widget object get the dispatcher and bind a function to it .
I used a sequence to be able to get the image2 but I would like to do it in parallel
And in your widget just call the dispatcher
How are you handling the trace to get the hit results?
It is still not working here
You never call 'Bind Event to On Clicked'. You have to connect it to the execution path. (white lines) Having the node in the graph does nothing if it's not connected.
I'm using a multi-box trace by channel, testing against visibility. I checked the actors' collisions to make sure they're blocking, and they are.
I binded it to beginplay, is that the best approach to this?
I'm not sure what the line trace is supposed to be doing but anyway. Just set Button Pressed to true on 'Started' and false on 'Completed'.
As I can see the download image is a asynchronous function , you can stack up the calls , let's say you can have an image array iterate them call download image and it will do , and you will be having a parallel execution experience
That's not what you've shown. The Bind Event node isn't connected to any execution path. Unless you mean thats what you intend to do and yes, that can be perfectly valid. It's hard to say if it's the best place for what you're doing but if the button exists to create the binding at the time you should be fine.
Show how you've set it up.
And if you have added in a sequence too , you will be getting the result once the download is completed so you already have asynchronoucity, for parallelism you can use threads but I won't suggest you that
I think the whole top code is wrong honestly. Original idea was to Press E to start line tracing to detect wall to begin climbing (begin climbing code starts in the bottom right). But what I'm really trying to do is that when I enter an actor's box collision, I want that to start the begin climbing code. So --> character enters very specific wall with a box collision, climbing code begins
Code is written in the ThirdPersonCharacter BP btw (the default one)
I might not be understanding what you're asking, sorry
Nothing jumps out. You'll probally need to add some break points and step through at points to see whats happening.
Okay, I'll do that. Thank you
essentially im trying to replace "Event Tick" with "character overlaps specific box collision"
hi, do you know when a widget displayed on the viewport has the player controller has owner? what BP function attach the controller to the widget?
Can you explain what you are trying to achieve
in my widget i try to get the owner of the widget
it's a player controller
but my player controller doesn't controll any pawn...
is it because i spawn the widget before the player? but the function get player controller return my player controller
but the get controlled pawn return nothing
that node return empty, when the get Owning Player return the player controller
which is strange because i can control my character
with my player controller
same here, te get player controller return the PC
but the get controlled pawn return empty
What get display name is printing
my player controller
but the controlled pawn doesnt print anything
You can directly get player too , if you want
i spawn my character, and posses it
and it works
but when i print just after that: get Controlled Pawn it's empty
a character is not a pawn?
yes after the possession
it returns empty...
It is. Could be that it’s not possessing properly, you’ll have to debug. For one, your code is missing safeguards against nullptr returns.
but if it was not possess, i will not be able to move my character no?
In theory, sure. But lots of things can go wrong, and we don’t know what’s your possess vehicles function and whether it’s done right
For one your target for that func is GM and no idea if your screenshot is from the GM
There may be some delay between the actual possession and function call like the character gets possessed after couple frames
Yes
That too, I think possession can take more than one frame
yes it's from the game mode
So if you are trying to get the controlled pawn in the same frame of possession you will get empty response
that will be annoying 😄
Yes that is why in Player we have onposses callback
make sens
Which gets called upon successful possession of player
so normally after the on possess callback i should be able to print the get controlled pawn? correct?
Yes
ok, i will try
I figured it out. It was working correctly, but I forgot to half the debug box extent, so everything was twice as big, causing a lot of overlapping boxes which made it look like it was creating boxes where it shouldn't be.
@unreal hatch Not entirely true. A MaterialInstance that you create in the Content Browser is the same as one you create in code, an instance. So if you apply that Instance to all of your meshes, and you get that specific instance and change it's texture parameter, it will change for everything using it.
thanks that was that!
But is it an event attached to the controller?
if i want to have local controller, i cant keep the Get Player Controller(0) when i possess the pawn
because i'm a pawn i should not have the callback event available without giving a controller?
Bro the similar dispatcher is available in both the pawn and Player in player controller it is called onposses pawn and in Player it is called onpossed
You can use it as per your liking
Im trying to check if multiple slots exist, but I think I'm doing something wrong
am I missing something here? I just want to trigger the visibility if 20 game slots exist
It's unclear from this much code
Need to see a better portion to understand what you are doing
if you're talking to me, this is all of it. I want to check if ALL the names exist in an array, not if ANY
this is what I don't know how to do, I think I need to use for each loop with break but I can't figure out how
ok that's en event i need to overwrite 🙂
What are you trying to achieve in broader picture @dreamy sail
I think I figured it out already it works like this
So if it breaks then what
actually no lol
so what I'm trying to do is this : Check if all the 20 slots exist, and if they all do then I make a static mesh visible.
it's just a logic based on how I designed my level completion, I save a slot each time a level was finished, so I want to show a medal if all the levels are finished
it's probably a bad design but Im too deep into the project to go back and switch it
Have a bool called bisallslotspresent
On your for each loop if something doesn't exist set this bool to false then break
On complete of the loop as a break will still complete the loop use this bool to switch visibility
Make sure you are switching visibility on completion
alright I'm trying now, thanks
Does that mean that if I replace the materials in the static mesh with MI then if in the BP get a reference to this MI I will be able to change the texture across all instances of the mesh?
I got confused. Do I have to create a BP and get a reference to the MI inside it?
No no , if you have applied the mi to all the meshes you are targetting
Then changing the texture in one mesh will change all the textures in all meshes as they share the same single instance
OK, but I want to download an image and then somehow change the texture. I think this is possible only with a Dynamic Material Instance?
That's what I was saying, to iterate and use the dynamic material to all of them .
But you can use the same material for all of the meshes .
This is what I have and works now. The standing Sign is a Static Mesh Component. How would a Material Instance work?
I plan to replace all my objects with this BP manually now (if I can avoid this it would be great)
You can search for may be better code where you can group meshes by material and change them , but unsure how to do that . A not so good implementation would be have a dynamic material cache class / bp which will download all your textures asynchronously you can poll a texture from the bp and use it
This can be thought through and optimised
is this looking good ? I mean it works, but Im so confused when it comes to For Each Loop with break that I'm never sure if I did it right
Looks good as of now , you can design this better using maps and stuff but right now if will work
Make sure to check the bool true
so I have like 4 of these, identical, for each difficulty level, will this make the loading time slow if I do 4 of these ? I only do it once per level
basically checks 80 slots
yeah
Looping 80 times is not slow as per a cpu which is running per say unreal engine
Would they be checking the same slots?
there are 80 different slots, split in 4 categories , so each logic will check 20 slots. idk if this answers, not sure what you mean by "same slots"
Slot names. Just curious why so many slots. What are they for?
so there are 4 difficulties, and there are 20 levels. I assign a slot for each level when its completed, for each difficulty
I designed it bad from the beggining and now I have a few things that are depending on this, such as medals for each level/difficulty
in this case today I wanted to have a way of checking if all the levels are completed for a specific difficulty and then assign the full game completed medal/open a reward/celebration map
Far easier to just have a single SGO that has an int Array. When a level is completed, add the level index to the array (making sure it's not already in it).
Then you can just load the SGO, and check the length of the array matches the total number of levels. Easier to manage and scale. You could even keep a second array for uncompleted levels. Remove from uncompleted and add to completed.
Even having a single SGO per difficulty would be easier to manage.
will this also help performance ?
Hard to say specifically but it could. It just doesn't seem right to do an 80 loop when you don't need to.
ok, thanks a lot
I'm gonna try and re build this then
can someone help not sure whats going on with my interaction interface
every single time i restart the interaction interface unplugs
The more curious question is why you need an interface to get a train?
Hey there, another QQ !
Is it better to have a game instance that loads the game save at "init" or have my loads/saves all done in the Game_mode ?
If you are using blueprint only, performance isn't your priority.
Also looping large data is bad in blueprint.
But 80 iteration may not be relatively expensive, it depends on the operation.
You need to profile if it matters.
i've set up my equipment in a separate BP along with my attack combo montages and put that into an interface. Now i'm trying to get that information and attach it to my character in game but it doesn't seem to be working. I have gotten it to work on a previous file i was working on. The only difference is my current character is a child BP or the main character BP. Am I using the wrong node?
Looks like it should work
Is your equipment model correctly sized?
yep, it all worked before I modularized it
I was thinking Snap to Target for Scale might be making it too small to see if it wasnt
Is this a multiplayer project?
nah, it's stuck under my character lol. and none of the animations attached to current weapon are playing
Is the socket name correct?
If it's stuck under the character it means it attaches, but might not be able to find the socket
No. GameInstance init is just a general initializer for the game. Savegames are always related to a player.
Consider two players playing on the same machine with different preferences. Their settings need to be loaded independently, and it's likely that the second player isn't connected at init, and you can't even know if that player will be the same player every time.
Even moving past that, lets assume you could load the settings on Init of gameinstance. Sure. But what about your gameplay progress? Most games have multiple saves allowed. Usually at the very least there are 1-6 slots. Some games even allow named saves up to 100s per user. You shouldn't even load these until a player enters a LoadGame widget with the intention to load the save, because it's pointless if they're just going to start a new save. Once it is loaded and selected though, you can store that savegame in the GameInstance so that it can be referenced to pull data off of once you load into the level.
Based on this info the only other thing comes to mind is you might be overriding the begin play on the child bp. if it works on the base class but not the child
If that's not the case you need to dive deeper because the screenshot seems fine
I prefer just having a 'CurrentSaveSlot' var on the game instance that things then read when required to handle the save/load stuff themselves. With an event dispatcher for 'SaveRequested' and 'LoadRequest'. The game instance just serving as a middle man but not actually handling the saving/loading itself.
Selecting a save to load would just set the CurrentSaveSlot. Might have a smaller save for the specific save slot for denoting the desired level to load but beyond that, I like having stuff do it itself. I find it easier to manage.
hm.... maybe i'll join the vc and see if anyone can help me e_o..
thank you
Gets even easier when you don't have to manually read the savegame stuff. If you use Serialize, it becomes a simple manner of spawning stuff back in, or getting already created things like subsystems, and simply putting all of the data back to exactly how it was when you pressed Save.
I set the SaveGame though a GI subsystem through widgets. NewGame widget sets it null. LoadGame widgets will load and set it. When the game loads, I take one of two paths. Either the save exists and there should be no initialization, simply replace things. Or there was no save, and you should run an initializer that sets up gameplay for the first time.
As in, nothing actually reads from the SaveGame itself for anything. Which is nice.
I assume the serialize stuff is c++ wizardry. 🙃 Still need to look into how that works.
https://www.tomlooman.com/unreal-engine-cpp-save-system/
I will be looking at this later.
A question: Is there really no way to editing UAsset files without the editor? I have a problem with a Control Rig BP but I cannot fix it because editor crashes whenever I try to open it. What's more is that I definitely know where the problem is and but cannot do anything about it.
The problem: Using two binding pins in multiply node with 3 values in RigVM.
Solution: Remove the damn third pin.
Reality: No, you are not allowed to have nice things in life, such as making a small change in a large file for which you forgot to commit the changes for 4 very productive hours.
Thank you very much for your detailed explaination! (:
Don't think so, no. Source Control and revert the change that caused it to break?
Ah 4 hours of no commit
Rip
I usually over commit like every 5 minutes and have trouble finding the correct version when I want to go back to a point, today I wanted something different 🙂 Thankfully there was an autosave in Saved/Autosaves/blabla so I just lost 2 hours or so, of course, as it is usually the case in the interweb nowadays, it took me 6 hours to find out that there is an autosave folder since nobody but one person in this Discord channel mentioned that 🙂
If you use p4 you can also shelve in between
Doesn't need to be committed every time
With git you could stash I guess
Stash has to be done manually afaik. I do really have to figure out p4, git kind of dies out when project gets bigger. There are also the inconsistencies with the editor, so whenever I have to stash or revert a commit, I practically have to quit the editor and load again.
What are some ways you can optimize A* pathfinding in blueprints? At the moment I can only get about 20-30 tiles in length on an open flat grid before I start getting lag spikes to generate the path
pooling nodes might be a first angle to look at - if you are recalculating everything from scratch each time, that will do a lot, i imagine
Unless you mean the default NavMesh stuff
is that what HPA* is? I was thinking about making another grid and grouping tiles like that
like pathfinding on a grid with bigger tiles first to get a starter path to reduce the tiles to search but im not sure how that works with obstacles
nah this isn't the navmesh just a bp
that gets deeper into it. pooling is meant to reduce memory allocations, depending on how you are handling your lists
Oh gotcha. At the moment I'm just adding everything to arrays and adding/removing as needed
yeah, i believe that may be the first point of interest... hmm
Sounds like a good place for me to explore! I appreciate your advice!
here's some of the background of what is going on in the c++ side of things
https://www.unrealengine.com/es-ES/blog/optimizing-tarray-usage-for-performance
I have a system that allows me to move a character in a direction by setting their velocity in that direction, but I need instead to be able to move them to an exact location in a set amount of time by setting their velocity. I'm not great at math, does anyone know how I'd accomplish this?
Timeline is for anything with fixed length.
You probably just want to use interp on tick.
No, I need this to be velocity-based as it will need to interact with other forces in the world
Unfortunately interpolating their location is not an option
Also, this is not an issue for my purposes. That's the reason for the nodes feeding into "set play rate"
I don't see the issue, you do want to evaluate that on the tick anyway, not timeline.
Velocity = Current Force + any other external force
and I don't see how interpolating is not an option, things happend over the frame meant to be interpolated unless you want snappy result
I need the timeline so I can use a curve.
You are using character movement component, I suggest to not fight with the established system.
set max walk speed for maximum velocity then play with the acceleration to reach the desired velocity over time.
if all you want to accelerate then decelerate then you don't need a curve
I need to be able to use different curves to give different actions unique feelings, and I need to be able to set the exact distance the character moves and the exact amount of time it takes them to get there. If you know a way to do this without using a timeline that still allows me to use curves and still allows other physics forces to apply to the character, please let me know.
I really don't understand how this is "fighting the system", it just seems like a math problem.
I am also bad with math but my understanding of timeline is that it works for things with fixed time length. If you are doing a movement with input press and there's no deterministic time, then timeline is imo not a solution / usable for this case.
The timeline is absolutely usable. It currently works. There is no issue with using a timeline
My problem is changing the math to input a distance instead of a velocity
Think of the timelines as something you might be using to tweak the acceleration / deceleration patterns of a character, instead of the concrete movement from point a to point b
Again, the timeline is not the issue.
The timeline is doing exactly what I need it to. I just need to be able to feed in a distance rather than a velocity
do you wish to force the players position by 'teleporting' it according to the timeline?
No, I'm trying to move them by setting their velocity
Using velocity instead of location set is extremely important
but that's the issue with time line. It will give you result when the variable are deterministic.
For example, if you change the distance / velocity mid way, you will get undesired result.
so you just need the right velocity? do you know the distance, and time needed, what is the problem?
The problem is that if I multiply the velocity as I'm doing now by the result of the curve, the character will always come up short of the desired distance
for the reason stated X_X
Yes, and this is a problem that can be solved with math. None of the suggestions offered so far actually address my needs
I think I would use timelines maybe for stuff like shmup enemy patterns where no collisions or such matter, just making pretty patterns. For concrete world navigation I would consider something different I think, but your specific use case is perhaps unclear
like is this a guard moving from point a to point b, do they have to navigate obstacles, other characters etc?
No, this is for player aerial attacks tracking to enemies based on a minimum and maximum allowable distance and angle
tracking to enemies indicates to me you really want a dynamic system capable of reacting to the changing target position properly
i do not
so they just fire once, on a pre-determined path, arcing nicely?
The game gets their current location and moves the player to the point the enemy was when the attack initiated
yes
Hi all, I want to make a system where if the player is holding an item and they press left mouse, depending on what item they are holding something different will happen obviously. I want to know if there is a better way to implement this system without just a giant list of booleans and branches?
Sounds like timeline is fine then if the ariel attack is finished in pre-determined legnth, what's the curve look like
there are several different curves depending on the attack being used
well im curious what the data is like
are you just lerping between 0 - 1
where 0 is minimum velocityt and 1 is maximum velocity
not linearly, no, but the timeline is 1-0 and it lasts 1 second.
So from maximum velocity to a stop?
@fossil patio maybe something like this?
directly setting velocity in timeline and using that value to calculate again, will not give you the desired result.
I do not want to set the velocity at all. I would like to set the distance and time and have the required velocity to be calculated by the math itself
well from what I seen on your screen shoot you are setting velocity.
anyway
i don't think I can offer help
Yes, like I've stated multiple times, I would like to INSTEAD set the distance and time
will take my leave
Is there a way I can get something to tick while an event is running - without using event tick? Like I want WallClimb to run a forever tick before the branch
just use tick
I need to use WallClimb because I'm calling this event from another actor
Event Tick -> WallClimb
things that happend every frame belong to tick.
in before someone said timer which is not really a solution and can be more harmful when used incorrectly.
okay ignore this ^, I can't do Event Tick -> WallClimb anyway because the definition of WallClimb is being defined in my first screenshot
I don't understand.
Event Tick from another character -> Get instance that has the WallClimb method -> WallClimb
but that sounds like a bad design
Let me explain. WallClimb is currently being defined as shown in this picture. As in, I'm telling UE5 that WallClimb = all the stuff it's connected to. This is in ThirdPesonCharacter
In another actor, I have OnComponentBeginOverlap -> CastToThirdPersonCharacter -> WallClimb being called. So if I overlap that other actor, it initiates the code that is attached to WallClimb
Event Tick and Wall Climb can't connect to one another in the screenshot, so I was trying to find a way if I can initiate a loop or something so that the WallClimb code is consistently being fired as long as I'm in the collision of the other actor
Have a bool in your TPS on Tick that allows the WallClimb to be evaluated or not. Call it bWallClimbing or any other name that make sense.
SomeComponent-> Begin Overlap -> Get Other actor -> Cast to your Character -> Set bWallClimbing = true
SomeComponent->EndOverlap -> Get Other Actor -> Cast to your character -> Set bWallClimbing = false
okay hang on i gotta rebuild the other actor blueprint cuz it got corrupted for some reason
Are you saying something like this? TPS is first pic and Other Actor is second pic
I want it to tick every frame once I'm in the collision box. Also I can't connect event tick to wall climb cuz wallclimb is a custom event in the same actor as the event tick
the branch stops you from doing the internal logic of wall climb when it's set to false
if bWallClimb == True -> Do your wall climb stuff
if bWallClimb == False -> Do nothing
PlayerCharacter Event Tick -> Wall Climb
Even if the branch == false works with the event tick instead of the wallclimb?
Event tick is called every frame
evaluate your WallClimb every frame (on tick) in where ever the method is declared. I am guessing your Character blueprint
Event Tick -> Wall Climb
have a boolean that determine if WallClimb should be evaluated or not
If the bool is false, do nothing
If the bool is true, do your wall climbing logic
You can then set the bool externally, e.g. when you are overlapping with a component and when you stop overlapping with the said component.
if you can't follow along something like this, then stops and just look at foundational materials with events, data types, and branches.
if my game is crashing on steam for some players, due to dx12, and they can still run it but they need to go and add -dx11 in Properties, is there away to prevent this ? some autoswitch thing or something if it crashes
Find out why it crashes or force it to always run in dx11
bear with me here i've been working on this all day, my brain is fried - it's the last piece of the puzzle. You mean something like this right? How would I go about connecting the two things in white?
Dont hook anything on Climbing Up false
False do nothing
if true do your wall climb stuff
set these to be your ClimbingUp
on overlap -> True
On End overlap false
you don't need this Climb Tick
oh my god you are a life saver
thank you so much
I'd been working on this code for 2 days straight I was about to call it quits for the night thank you @frosty heron
I think rather than brute forcing and get stuck, try to learn the foundation materials.
You gotta learn what you gotta learn.
Yeah I need to read up on the docs a little more - I had half-followed a tutorial to get the original code to work so like I wasn't thinking from a foundational perspective
Fairly new to all this but im learning 🙂
what will this impact ? performance wise
"Blueprint Runtime Error: "Accessed None trying to read property CountdownTimerRef". Node: Set Countdown Graph: EventGraph Function: Execute Ubergraph BP Time Powerup Blueprint: BP_TimePowerup" how would i fix this please help I've been trying to make a countdown timer for days not
and I might just be going crazy aftyer all the sleep I've missed
You are trying to access a null ref. Show your code
I might be going crazy for th easiest thing in the world but it's been days bruhhh
pls if anyone knows how to create a simple countdown timer that increase/+10 msecounds when colliding with an object/powerup please
you don't appear to be setting those to anything at all anywhere
Timer widget reference is not set.
You probably should watch blueprint communication video by epic. Sure it's 2 hours long but better than being stuck for days.
When you create your timer widget with widget on construct, set the timer widget reference to the return value of the widget you created

Couldn’t tell you
Better to just try things lol
Im adding language settings to my game. Does anyone know which of these nodes i need to replace cmd culture=fr for 5.3
I've built my logic in a component BP which interacts with a child actor BP of the parent. However, the parent BP is the one that's actually connected to the ABP. Is there a way to get the parent mesh without adding the component to the parent BP? I do not want it to have all the stuff I added but I do need this for the animation overlay to work e_o...
nvm figured it out
Sorry, are you saying that you have a blueprint component on an actor but only the child and not the parent?
Parent
Child
Component
🤔
yes, but i need to get the parent and it's not working
From the component?
In a TLDR, it is nothing more than writing values into a string. And then pulling them back out. The interesting thing about serialization is that you can save properties from one class that are the same name and serialize them to another class as long as their names are the same. Because it's essentially nothing more than a long list of "SomePropertyName=SomeValue, SomeOtherPropertyName=SomeOtherValue"
yes, from the component
Should just be able to use "Get Owner", which will get the child. The child has access to the parent functions.
Unless I'm misunderstanding 🤔
If you need the specific functions from the child (thus the parent). Do Get Owner --> Cast to <class>
i...might have to show you 😅
do you have time to vc? if not i'll wait til tmw and see if anyone is on
Not atm, no.
But Get Owner will return the blueprint the component is attached to. If that blueprint is a child of the parent you need, you already have it...with the child 🤔
it's not working 😅
it says the bp class is unknown
How are you setting Parent Character
i forgot to set it
but that being said, now that it is set the animation overlay still isn't working
why not
I did nothing but glad you got it working 😄
lool, i'm very new to this. sometimes the mistakes are just dumb 😂 . very helpful to have a sane person talk at me
You managed to find a sane person? 
i mean, more than me e_o
For the allowed interaction part, you could always make the book allowed interaction with a gameplay ability and set its blocked by tag when another player has an active status tag. If you have GAS enabled that is...
That’s true I could use GAS, I actually already kind of solved this and also am using a replicated book for if it’s in use.
bool***
Nice. Im working on terminal type interactions for my game right now using MVVM and GAS. This plugin might have some nice interaction examples.. interested.
Thanks for bringing it up!
Hi guys! How do I define a custom Equals/NotEquals node?
For some reason it doesn't work for interfaces out of the box
I don’t think that’s a thing
^
What are you trying to do with this
Already figured it out 😄
static bool EqualEqual_InterfaceInterface(const FScriptInterface& A, const FScriptInterface& B) { return A.GetObject() == B.GetObject(); }
UFUNCTION(BlueprintPure, meta = (DisplayName = "Not Equal (Interface)", CompactNodeTitle = "!=", Keywords = "!= not equal"), Category = "Utilities")
static bool NotEqual_InterfaceInterface(const FScriptInterface& A, const FScriptInterface& B) { return A.GetObject() != B.GetObject(); }```
What are you trying to do?
I want to just check if interface poitner A == interface pointer B
why?
I have a lock on function that remembers the target from previous iteration
however it saves it as an interface rather than an actor/object
says who?
how does comparing interfaces even help you?
to call relevant functions on it
if you just want to check if a reference implements an interface
you will just do DoesImplementInterface
the cast Succseed there because interface is just multiple inheritance in a sense.
but not sure how what you do does anything gameplay wise
that is not what I want to do, mate 🙂
yeah you do you
thanks 😄
can't make everyone happy
this guy over here just helped me over 5 times
do not under-estimate the need to clarify the exact nature of problems - human communication is notoriously noisy and error prone
please do not diss people who nevertheless are engaging with your issue, even if your needs are not instantly gratified
Guys anybody worked with eos device id grant
All I’m saying is if someone tells you plainly and clearly “that’s not what I’m trying to do” and you respond “yes it is” without seeking further clarification, it comes across as intentionally provocative and antagonistic
Not even remotely helpful as a response
It does seem like ColdSummer didn't understand what the user wanted and then tried to push their understanding onto the user.
I'm just surprised you can't compare two interface pointers in Blueprints
I assume the GetObject call is also not a thing.
Fwiw, if there would be a Blueprint only person trying to do this, saving the interactable pointers as just objects or actors and using the interface on those but never storing them as such would also solve it.
The standard in blueprints is to store / work with an object reference to a object, then call interface functions on that object reference.
My understanding is that this is the standard in CPP as well. Epic games seemed to have designed the interface system with the understanding that this is how it would generally be used. This would be the reason that you cannot compare interface pointers in blueprints.
ColdSummer questioned the non standard and unsupported use of an interface pointer in blueprints. He then suggested the standard and supported way.
At least, those were his actions, I believe the communication of that was poor.
I think playercontroller0 is automatically created when I leave all game modes blank in project settings and play simulated games. By the way, if I call get playercontroller with index 0, it comes out blank, can I know why?
I have some animations for prone movement with root motion, and the root motion works only when I use a montage, but I want it to work as same as I use normal animaitons in the Animation blueprint, as I have prone moving right start, loop, and end
been handling a few forms of data with data tables and names (well, gameplay tags that=the data table row names), but wanted to explore my other options just in case
Is there a way to pull an arbitrary data asset from the ether without having it set up anywhere in advance the way you can pull a data table row with a row name? not having much luck just guessing at node names if so.
LoadAsset maybe? ( or AsyncLoadAsset )
If you want to pull data from a data asset, that data asset must be loaded in. You must ensure its loaded in from some sort of pre-defined hard reference, or manually load it in.
This would be a "pre-defined hard reference".
Got it. Not simple to update any of my existing systems to use assets instead, then, even if I can see a few advantages.
If you wish to use root motion on something that is not an animation montage, the animation instance must be configured properly. There is a RootMotionMode variable that should be set to RootMotionFromEverything.
If you are using an animation blueprint.
If you are not using an animation blueprint.
its important to note that the PlayAnimation node will force the mesh to be in "UseAnimationAsset" mode. This is why we setup the mesh to be in that mode before hand.
This also means that you cannot use the PlayAnimation node if you are also trying to use a animation blueprint. As using an animation blueprints requires the mesh to be in "UseAnimationBlueprint" mode.
First thing that PlayAnimation node does is change the mode.
void USkeletalMeshComponent::PlayAnimation(class UAnimationAsset* NewAnimToPlay, bool bLooping)
{
SetAnimationMode(EAnimationMode::AnimationSingleNode);
SetAnimation(NewAnimToPlay);
Play(bLooping);
}
I want to adjust the set viewport through the get player controller on widget. I succeeded in the empty actor blueprint, but I can't do it on widget because there is no world context. Can advise me?
Widgets do have world context. It's provided through the controller that owns the widget. What's the actual issue your having?
If you look at the screenshot I uploaded, when you click the button, you bring the player controller and set it with a new camera. But it didn't work, so when I debugged the get player controller, there was a blank
Use GetOwningPlayer.
I tried it, but it's not coming out again. Did I get the wrong way to use it?
So it doesn't print the name of the player controller?
yeap dosesn't print at widget blueprint
Add a break point to the 'Print String' to check it's actually being triggered.
There's literally a blank in the log
This works for me. How are you creating the widget? Also, whats the warning in the log you've shown?
editor utility widget create button widthget and button event is being processed by button widthget
Ahhh, controllers aren't created during editor time. That'll be why. What are you trying to do?
I'm going to turn on the simulation mode and switch the camera from the tool
I don't believe Player Controllers are create during simulation.
I understood about this. I'm going to use it in gamemode, and I actually succeeded in making an actor blueprint and making it into the same logic. Now I'm going to change it to event tick -> button click here
Hello all, I download two images with a then but I want to do some action after both images have been downloaded. What is the node that can allow me for both images On success to trigger and then continue?
Look at the 'Set Viewport Camera Info' function. This is probally want you need. It's on the Editor Utility Subsystem.
here is what I have. But I want to create the dynamic Material Instances only after both images have been downloaded
Have a counter, when completed increase by 1. When counter equals the desired total (2), do you're other logic. You might be able to us a Do N as an alternative.
ah a counter. good thinking. Not sure what a Do N is I will look it up. If I chain the two download. On success of the first, download the second and then do a sequence where I create two Material Instances?
So in game mode, widget blueprint can't get playercontroller?
I don't understand why the Ector Blueprint is getting a player controller and not the editutility wideget
Editor Utility Widgets don't have a player controller as they are handled differently by the editor. EUW are designed to be displayed without a player controller as player controllers aren't created until you actually play.
This works. I not great as it downloads the images in sequence and not in parallel but it will do for now.
As a reminder, Editor Utility Widget won't be included in a build either.
Do N is just allows the execution to pass through N number of time. So setting it to 2 means it'll only let it go through twice. We check the counter to see if its the value you want.
Do N and == ?
in the image above is a Do N node and another that check equal but I don't know how to search for them lol
Just Do N and it's a standard equals check used for ints.
lol found it! the the menu gave me like hundrends of options and it was hard to spot!
Yea it can be with Do N. You'd think exact matches would appear at the top. 🤷
Which Aim Offset tactics you are using for multiple weapons etc guys?
- Using Transform Modify Bone
- Using AO_Offset by creating your own derived from Idle anim etc. Which one is better for many tools like axe, pickaxe etc.
AO without a doubt. Having to manually modify on a per bone level will drive you insane. Some many things you'd have to factor in and you'll end up in edge case hell. I believe you can expose the AO asset that's used and dynamically set it.
Great! Thanks for feedback. Yeah, everytime i need to edit a bone, its getting really disguisting. But for example do I need to create for every animation for AO?
Like Idle_Hatchet, and Idle_Hatchet_AO.
Idle_Pickaxe, Idle_Pickaxe_AO.
What is the scalable way of doing it? I want to start clear to that. 😄
Thanks to this, the concept has been organized to some extent.
The wideget blueprint can get a play controller, but my work process is to "create" the wideget blueprint in editor utility wideget. Does this generated wideget not get a player controller because it's in editor mode after all?
That's right, EUW don't have a player controller because they aren't created at editor time. They are handled differently as part of the editor UI of which doesn't use a player controller.
That's right, but for me, it's an event when I press a button in the wideget blueprint
I'm not sure what you mean. If your using EUW, you can't use the player controller as it doesn't exist. Player controllers only exist during play. (Simulate isn't Play and is handled differently, of which controllers still aren't created)
What are you actually trying to do? As in the end goal?
My goal is to create a wbp in euw and update it to euw when I press the button in wbp.So I didn't make everything in euw because I can't get a playcontroller
That doesn't really highlight what you're end goal is. I can see it something to do with a camera but you've not really stated the purpose.
Let me rephrase my statement, there are no player controllers created during simulation. Even if you create a normal widget, there are still no player controllers for it to use. Instead it falls back to the editor to display the widget.
Player controllers are only created when you actually play the game.
Ok my goal is to move the camera view through ui in game mode
You can't use camera components as the view for the editor camera. The closest you can do is setting the editor camera to match the location/rotation of the desired camera as I mentioned above.
Camera components require a camera manager which in turn need a player controller...
You want to look at the Level Viewport Camera and set its location/rotation on the editor subsystem.
Yes, you've taught me a lot, and now I'm going to make it with that
thank you
I have a list view, that when visible I want to have it default to select the first item in the list. I do not know what Im doing wrong but It does not want to select it. Also, how do i prevent it to not select the entire box if is select to far down in the list? (green box in the last image.)
Hello there, a question about Widgets, Boxes, Childs and Casting:
Is there a way to specify that one Widget Element, in this case Horizontal Box, will hold only one Class of Blueprints to avoid unnecessary casting?
Like in this example above where the question mark is I know I could just cast to WBP_Letter and it would work, but I usually hear from programmers than extensively casting is not good, and that part of the code would run all the time.
casting isn't a problem, it's a very important key, but you can use a blueprint interface to identify the widget class you want and call functions
Casting to an already loaded object is basically free
You don't need to worry about it
But yeah if you don't want to cast then you'd use an interface
but I usually hear from programmers than extensively casting is not good, and that part of the code would run all the time
Either you have misunderstood them when they've said this, or any programmer that has said this to you needs to be ignored. They either do not have a fundamental understanding, or they are too lazy to explain a basic thing to you and are giving you a lazy answer.
If you know that there are only Letters in that parent, casting here is perfectly fine. It's intended even. This class is already going to be linked to Letters, so casting causes NOTHING extra.
At runtime a cast is nothing more than a pointer conversion. You have a pointer to the instance of a Letters widget but it's of a type that the creator of UMG knew about, it's a UWidget. So it's up to you to cast that back to your type to use it from their generic getters. A blueprint cast node also contains an IsValid check, which is super cheap, literally the same cost as the literal IsValid node. There's nothing running all of the time, or nothing loading, nothing like that.
The only time that it would be worth considering avoiding casting here, is if you're making some sort of generic parent that can house a lot of children, and you don't make a baseclass of those children. This might warrant an interface. But chances are if you're not a programming UI engineer that is making a special parent for the project that can be reused nicely, this is highly unlikely.
Hello, whenever I kill an enemy this sound trigger, but when I kill 20 enemies at once the sounds overlap and become very loud, how do I make the sounds cut off if new sound is played?
I think there was a setting for this in the sound cue settings
max count or something I dont remember the name
Hey fellas. I am currently working on some aspect of my project and came across a strange behavior in my for-loop-function (watch video for what is happening).
What I am trying is to get all "BP_Rotateable[..]"-Actors and create a Map[DisplayName, Struct[Rotator]].
But as you can see, somehow my for-loop doesn't trigger twice (for each found actors in the level). Instead, it just triggers once. And furthermore it also doesn't save the correct rotation-values into the map!!!
Is that a bug?! Does anyone know what is happening here?
It likely does run twice. BP breakpoints are... fragile. More likely what is happening is these two things share an identical display name. Adding something to a map that already exists will just overwrite it.
Put a print in the loop body to confirm if it's running once or twice
genius! that was fast and even more surprisingly seems to be correct. The second rotateable-actor is from another map i dragged into the world/level.
which is why the rotator gets overwritten with it's own rotation values which are 0/0/0
Display names are just that. I wouldn't rely on them much for coding. You can try swapping that to GetObjectName. But I'm also curious why you need names here and can't just use pointers for the key?
Object name should at least be unique, it'll always have that incremented integer on the end of it.
it was my first attempt and i thought would be enough to get the reference to that object. should have used GetObjectName instead, but i really need an unique identifier and an easy way to get them which is why i use "GetAllACtorsOfClass"
thank you for your fast response and help!
@random vine @runic terrace @maiden wadi thanks a lot, very informative answers 🙇♀️
Why not use an object reference for the key?
i want to create savefiles and didn't want to use the whole object (so the whole object doesn't get saved as a key...or something like that) so i though using simple strings as keys would bebetter
It wouldn't be reliable to use object names for this either
Everything will be deleted and spawned again when you reload, the names might be different
ugh... thats bad
The object references would also break tho
this seems to limit all sounds in the project? instead of limiting specific sounds?
I think this one?
not in the project settings, in the cue itself
the cue you're playing
Aaaaand, this is another example of why object serialization and replacement savegames are awesome. 😄
Can even save and replace pointers. 👍 Makes life easy.
Actually wait. Are these placed in the map itself?
If they're things placed on the map, they can be saved as pointers, or will be able to be looked back up with the same object name. Maps always load objects the same.
But then the moment you decide to do some changes on the map your previous save files will get broken
oh I see, do you know why this is grayed out?
thanks 🙂
wait nvm this seems to be under the voice settings
not sure if it applies to your use case
it works for me
Hey all, I pass a command line argument "-cfurl=someurl". The parse command line returns a map of strings. How can I get the value for "cfurl"
I see a find node. I'll give it a go
What is the easiest way to the command line arguments? can I do it from inside the editor?
find did the trick
@maiden wadi @runic terrace
I came up with this solution. I think, it serves best for what I need. Still not sure if GetObjectName is better than GetDisplayName but I think I go with GetDsiplayName for now.
display name is what it is called in the world, object name is the class name
I Assume
Display name is just a user friendly name. SomeActorThing, rather than SomeActorThing_03, etc.
Object name is the literal object's reference name. SomeActorThing_03, or the third SomeActorthing that was placed into this outer.
Hi! Is it possible to move an actor to my cursor with editor utility? I can't find the way to convert the mouse's 2d pos to the world pos.
As an FYI, you it's not recommend to use the display names to distinguish actors for saving. The names things get assigned are based on the order they are spawned in which we have no control with in BP. You could have 'SomeActor_04' but after everything been reloaded could become 'SomeActor_07'.
Project screen to world? Might only work at runtime
Does Unreal have Tuples?
only in c++
Hi I have a question about Widgets again using Blueprints.
I have a Horizontal Box and Widgets inside, every some time I want to delete these Widgets permanently, also from memory.
I found three Nodes; Clear Children (easily clear all children), Remove Child or Remove From Parent (both needs to be looped). All of them kind of work, but given these are different Nodes I wonder what are the differences.
There isn't a difference really. Clear children does a looper over it's children and calls RemoveChild. Remove from parent is from the other direction, from the child widget. All of them achieve the same thing.
As far as entirely deleting, you simply need to remove them from the widget hierarchy, and remove all references to them. Garbage collection will come along later and actually delete them.
I see, in this case I will simply "Clear Children". Thank you again.
Just to add, some nodes can accept arrays, even though they don't look like they do. It'll just call the function for all the objects in the array without having to manually loop through them.
any idea why when I migrate blueprints to another project, nodes are missing?
found it. new project didn't have plugins required by the blueprint installed
I'm basically starting to do research, but is it possible and viable to run EQS from blueprint ? like not from behavior tree but to actually make EQS, get results and use them in blueprint.
Short answer is yes. I've used it a few times with little problems. You just have to remember the EQS are performed Async.
Got it, thanks!
any idea on this issue?
Is it possible to see the call stack in blueprints?
Why is it that I can't see this line trace anywhere?
i want it to start a line trace a step in-front of me, and the end of the line trace should fall down on the landscape till it reaches the floor
ive done this before but somehow seem to forget every time
The start and the end location is the same
End location should be start + offsets
it is start + offsets
look, i copy paste exactly the same code of the start
and then i added -400
to go straight down
Exactly so you are starting and ending the same point
I might be blind, where did you -400?
but i want it to bee the same point
and im also using 2 cameras
You draw debug and not seeing anything?
and i dont see any debug
Did the node gets run though?
No error like accessed none?
Try print string next to the line trace, make sure its printed.
its getting draw probably somewhere in the middle of your map because you take forward vector which is local I guess and gives small numbers like 20 20
print x and y basically and then look there in the world for these coordinates
@snow halo right, you need to translate the vector to the camera location
Amberleaf solved it
Start location = camera location + forward vector + offset
End location = start location + offset
I now just tried this one and i still dont see it
but that would point the line trace back to me
good idea
thats what i had before
Start location = camera location + forward vector + offset
End location = start location + offset
i mean.. start with printing if this event even fires?
add + 1000 to Z
still nothing
Well I would start with printing the x and y and see what it gets me, then compare it with where I'm in the world right now, and then also look if it is actually line tracing in there (wrong location because of wrong input data, but at least it's getting draw). Also did you dd +1000 to the starting Z, and then plug it right?
No it shouldn't 0o unless your offset shoot back at the camera
ok heres what i did
You might interpret the code differently? Maybe post the attempt
i tried doing this instead
and here this caused my line trace to work properly, but it was at the exact zero point of the map
Print string the camera location.
the first time i press
location is 0,0,0
the 2nd time I press
location is exactly where it should be
after that if i press again it doesnt work
Single player right?
yes
Hmm might have to look around some more. Normally 0,0,0 is for components that are not attached properly
maybe its something with how are you getting the ref to the c haracter and first time you click its not there?
get character ref first before you shot linetrace, if its valid then dont cast and use variable, if its not valid then cast and set fresh reference
- Create variables for things you need like the bounds of y and z, speed multiplier adjustment for inputs
- inputs trigger changes in y and z
- tick can do the math in between get and set continuously
That helps a lot, thanks!
@runic terrace When you're here ping me please
Im here
Do you remember the spline method for baking attacks animations ?
I have a little problem with that
I want the Sphere Traces to follow my weapon, because atm sometimes the sphere traces are faster than the weapon in the animation
When I set the resolution to 20 the traces are too fast and when I set to 10 they are too slow
I tried to find a good number of resolution with calculs of the duration of the animation etc.. but I can't find a solution
I thought it was the "Use constant velocity" of the Spline so I unchecked that, but when I uncheck it, my traces don't spawn all along the Spline, it creates gaps between each sphere traces (as it's not constant, which is logic)
The resolution setting shouldn't affect the duration at all
if the duration set to 0.5 seconds, resolution of 10 will fire 10 traces in 0.5 seconds. if it's set to 20, it will fire 20 traces in also 0.5 seconds
I understand that but when I say that it affects the duration I mean related to my attack animation
For example, in my animation the sword moves horizontally but not at a "linear" speed
So somtimes the Sphere traces are in front of the sword
I mean the animation is too slow related to the sphere traces
So the problem is the traces move at a linear speed but the animation moves differently? Even if it's the same duration?
Exactly
So I thought to uncheck the "Use constant velocity" but then it does not fire the good amount of traces of the "Resolution" float variable
No keep that checked
You can apply a float curve before getting the spline position
Can adjust the curve to match the animation's motion
So I need to create a Curve float automatically to match the animation's motion ?
But that "Curve" is already created when I store my Spline upstream
I mean the curve is the spline itself
tbh it would get way too cumbersome at that point
Some points are close to each other, and some points are far
That's what I was afraid about..
Maybe I need another method so
if you have a skeleton, attach spheres to sockets?
@odd kiln You're already creating the spline points automatically right?
I tried to do that but, when my animation is too fast, some sphere traces do not spawn, so it creates gaps
Yes
So you are already looping through the animation data?
Why not store the socket positions directly for every frame?
Yes, I'm creating the Spline upstream. I play the animation in the editor, and it creates Spline Points from my "Base" socket of the weapon
Does it create a point for every animation frame?
Yes if I use the "AnimNotfiyState Tick" event
If my animation has 25 frames, it creates 25 Spline Points
The thing is that between frame 1 and frame 2, the points are very close to each other
Ok that's great, so instead of getting the Trace Position at Time you can directly get it by the Point Index
But between frame 18 and frame 19, the points are far from each other, as at this frame the animation is really fast
Oh wait, so your animation data itself jumps too far in a single frame?
Then it's not a problem with the spline
For example : Frame1 position = 0 ; Frame2 position = 5. So the animation is making 5 unit distance between Frame1 and Frame2. But between Frame18 and Frame19, the animation is making 30 unit distance
Yes exactly, this is my problem
Maybe with the "Point Index" you say it can work better ?
No
Then reading animation data wouldn't cut it either since there is no info between the two frames
it would still jump
You'd need a different method
Yes exact
Or maybe when I create the Spline Points, I need to place the Points equally ?
Atm they are not used but
When I spawn the traces by "Time" it's not following correctly so I thought maybe with points like Spynora said
The goal is to have a "persistent" collision following my Sword correctly during the animation, even if it's too fast and jumps between 2 frames too far
and what's wrong with having a physics body on the sword which does all the collision detection for you?
I don't know this method. It could also work even with framerate drops ?
it's usually how you do things like that...
only thing to keep in mind is that you may have to enable CCD in the physics settings if the sword moves really fast
"continuous detection"
Every people I saw told to use the Traces
yea, how many games did they release?
With the "PhysicsBody" detection can I get infos like the Traces do ? Impact point etc..
I guess 0
So in my Weapon Skeleteon, I add a Capsule Physics body, right ?
If you are doing effectively small radar pings at 2 points far from each other, and want to keep that system, you will need to calculate the extra pings in between yourself
yea in the physics asset of the weapon
if it is a skeletal mesh
if it's a static mesh which you just attach to a socket, you would add the body in the static mesh viewer
It's a Skeletal Mesh, because I need to attach it to my Character
yea, and physics collision with CCD does all that for you
you can attach a static mesh to a socket from a skeletal mesh, too
then it follows the socket which it get's attached to
Yes but when I create the Sword in Blender, and do my animations, I need to attach the Sword to my Character so I can see if the animation is looking good
And for that I need a bone, right ?
That's why I kept the bone from Blender into UE5
afaik you could do the same in blender
if you set the parent relation to be the bone on your mesh
Oh so I don't really need a Skeletal Mesh for my Weapons ?
And a Static mesh is more performant I guess
I can attach it and replace it
I will try to import my Sword again without Bone and add a PhysicsBody
I did not know that Static Meshes could have PhysicsBody collisions
And in terms of performances, does PhysicsBody takes a lot of resources ? Framerate etc.. ? Or it's ok ?
probably performs better as what you (or anyone else) would come up with traces and BP overhead
Thank you very much Ben I'll try this method right now!
So all the detection will be made in the Blueprint of the Sword itself
Rather than in the Character Blueprint
the sword would just receive the OnComponentHit event which fires if the physics scene detects a collision/hit
Because my Sword is an Actor (child) attached to my Character
Yes so I have to make the "Detection" code into the Blueprint of the Sword itself
But if it's an OnComponentHit, can I pass through multiple enemies with a single attack? Won't it block the first hit it encounters?
i can't say for sure what happens when you hit 2 enemies within the same frame, sorry
Not the same frame, but two enemies side by side
I guess I have to test to see what is happening
Thanks a lot
@spark steppe The convo was about melee hit detection.
When fps is too low, there will be issues with tracing.
We proposed baking the data instead, which is what I end up doing for my game.
Collision comp with CCD does sub stepping but I'm not sure if that can be a silver bullet when the fps is too low. Imagine 2 fps as the windows between the swing. I'm not sure if collision alone is enough.
I have a character blueprint with a lot of scene components (collision boxes for hitbox system) and only the first time i open the bp after launching the editor, it freezes everything for like 20 seconds.
What surprises me tho, is that if i open any other character bp first, and then my bp, i experience no editor freezing.
Does someone have any theories on why it happens?
Also, I'm trying to use the Physics Body hit detection but when I use that, my Sword is "blocked" physically bu the collision of the Enemy.. I can't get to pass through him ?
Can't use block, change to overlap.
Block will do what it says.
So I need to change the collision responses or the "OnComponentHit" node ?
Can't tell you with certainty.
Personally I have to go back and tweak as well when doing collision check.
Iirc component hit is for blocking
Overlap for overlap
I would not worry tbh, seems normal.
Not really. If i open my heavy bp first it freezes. If i open another character bp first and then the heavy one, there is no freeze
because probably some things are cached already and dont need to load again
you might try some things like copying bp and checking if then new one is faster but its just magic if its gonna work 😄
if i close project and i have 20 bp closed and then i open them again sometimes it takes 30-50seconds to load them all
If i remember correctly has something to do with EOS. By opening an empty character bp, it does something related to EOS in 0.something seconds, if i open my bp first, it logs that it took 20something seconds to do the same
So probably thats where it is freezing
question, encountering weird issue where blueprint implementation of interface gets lost everytime i open the engine
this is in UE 5.4.4
check if you have interface added in the parent of the class, also are you doing anything in c++ or only blueprints?
i am doing stuff in C++ but the interface is purely blueprint
change name of interface
its probably interfering with something from engine
can you show your interface as well with events?
ye
but 99% just changing interface name will fix it
together with maybe deleting, recompiling etc.
maybe you have function with the same name in the blueprint?
or event dispatcher
or even variable named like that
the renaming worked
if you really want to keep the name then probably reseting, recompiling, deleting redirections etc. etc. and then changing the name might be back but maybe something is corrupted and will be hard to flush
oh i renamed it
closed it
then opened it
renamed it back to what i wanted it to be
closed and reopened
and it's back to normal
haha, nice 😄
what's weird is
that was the only interface that got affected
my other two blueprint interfaces didn't have that issue
its random or something got bugged and couldnt get saved because it was detecting some function with the same name and because it didnt get saved, but event was created it saved the event but didn't know the source so it dropped it etc. had that happen, wouldn't worry if its fixed
i might test 5.4.4 on my weaker laptop to see if 5.4.4 is as unstable as it was on release
eye sea
i'm trying to add a weapon trace but for some reason, my bps are not picking up the anim notify state for only some of my montages but it picks them up for others.
i'm not sure what's going on?
I can't use the "OnComponentHit" node without enabling "Simulate Physics"... is it normal ?
Maybe try to not "overlap" two ANS I think it could cause some issues (I'm not sure)
yeah, you might also enable collision
show your code
I'm trying to get that with a Sword
So how can I enable Simulate Physics but still have the Sword attached to my Character ?
use on component overlap instead
But overlap is missing frames
because it overlaps your character
change the collision settings
so it ignors your character
or add your character as ignored actor
my audio compoenent is set to auto play and it plays on start as it should however when i connect play quantized it doesnt play at all why is this
How to add to ignored actor please ? Can't find it
the component got a function called "add actor to ignore" I assume
I tried the "Ignore Actor when Moving" node
yeah should work
Does not
The node says "Does not affect movement of this component when simulating physics"
maybe you need to add a delegate
So I need to add the "Ignore Actor when Moving" node + uncheck collision response ?
can you DM me and open anydesk, maybe I can help
ot google remote desktop
It's ok I had to add "Ignore Actor when Moving" node in the Character Blueprint also
But now the issue is that when my animation is playing, the "OnComponentHit" does not work
It only works when I move my Character
what we need to do is making the sowrd ignor the actor, so it doesn't overlap it
That is ok but now how to make the "OnComponentHit" event trigger when the Character plays an "Animation Montage" ?
i think it's my event tick causing the issue. i need to review my set up again
I think it's my event tick.
maybe you can use notify state to make your own trace check for the sword
I tried traces but I have missing traces when my animation is too fast
If the distance between two frames is too big, it does not fire a Trace
it should do it however the animation is fast or not, can you show me that code
It's a basic Multi Sphere Traces by Channel
why you use a custom event
This event is in the Event Tick
is it in the animation state?
I have a boolean that is set to "True" in my Animation Notify State to fire this Event Tick (Hit_Trace)
that's why you miss frames
The issue is that if my FPS are too low, it skips frames
use the notify state
yeah beaacuse you use event tick, while you need to use asynce phisycs tick
Inside the "AnimNotifyState" I should call this Trace ?
yeah much better
You mean the "Received NotifyTick" Function ?
yeah
Because I don't see any Asynce Physics Tick
but if you will use a tick in the character, it will pass frames, you better use ASync Physics Tick
that's if you will use the character BP to run the traces
but it's better to use the notify state
So the AnimNotifyState is using Async Physics Tick and the Character Blueprint is using another thing ?
But now how to get my Socket Locations inside the AnimNotifyState ?
I think it goes side by the animation frames, I assume
Thank you I will try that
The Sphere Traces node asking me a "World context object" pin
sue the mesh component owner
I still see "Gaps" between my Sphere Traces
Look
can you show me the code
This is the code
And screenshot above the rendering
In the Character blueprint ?
yeah
Still the same
I think it's the frames then
frames just teleports to positions
Exactly. In my animation, there is a long distance between 2 frames (frame 10 and frame 11)
And it creates a big gap
Between the two traces
hi how can i disable movement?
i tried everything
i use the right reference
i tried set movement mode : None
I tried disable movement etc
nothing seems to work
k
how do you get the time a quartz clock has been running since the first bar
everything looks fine
use print string to see whether the reference is valid or not
ok
oh it works actually
how do i enable movement then?
i wanna get it back after the animation is done
use enable movment maybe
but there's no such thing
try to ype movement what you get?
@runic terrace You said earlier that I could spawn my Traces along a "Float Curve". But do I have to manually create this curve in the curve editor ?
And how to do that based on the graph you made last time ? I'm trying but I don't know how to link both
I'm having an issue where my node setup succeeds, then it fails multiple times in a row even though it's only supposed to run once. I think it may be trying to 'process the url' before the nodes that put together my url (the append nodes mostly) finish putting the url together to be processed by the 'Process URL' node. Maybe I need a way to verify the append nodes have finished before processing the url? I'm using the Varest plugin by the way: https://www.fab.com/listings/5b751595-fe3e-4e85-b217-9b5496ab6d3f
If anyone has any ideas for what I'm going through and maybe a fix for it, I would super appreciate it as I'm on a deadline. Thanks!
I don't think it succeed, it actually fails all the time, but the string prints the URL anyway, the process URL function doesn't accept that URL
Are there other methods for saving data in game other than save game? Save game seems dumb if I have to pass every value into it, I can see it's use for simple things and even structs for more complex stuff. But I don't think it's the right tool for the job. I am looking for a solution that saves everything Midgame, down to the smallest thing
It might be that you are not utilising save game to its full potential.
For instance if you have access to cpp, variables can be marked as save game. Afaik they will be serialised (saved to disk) automatically on game save. This also allows for objects to be saved too afaik.
More info
Hm that might be what I am looking for, thanks
@frosty heron Sorry to bother you but you told me that you are using baking data for your attacks animations, right?
Now how you read them ? In the Event Tick ?
Do you spawn each Trace at a constant velocity ? Or do the traces follow correctly your weapon ?
@odd kiln my data consists of array of time stamp and socket locations. They are stored inside anim notify state
On anim notify Tick -> process every data in an array from last processed time to current time.
Then set last processed time to current time.
This way I am guaranteed to simulate points regardless of fps. Say if the fps is too low and the ans get "skipped". OnAnimNotify end will be called anyway and it will process all the array data.
But this method is cumbersome if you don't have automation.
One you will have to input the data manually.
I would just dive into learning cpp if that's the case.
Because unfortunately in bp you can't access the ANS inside montage asset to store the data.
Also can't play montage at given time and record the data
Honestly kinda surprised there's nothing out of the box to address what would be a common problem for a game engine.
@odd kiln btw to answer the last question, yes it follows the "weapon" correctly but the weapon it self is irrelevant at this point as the data is baked. So the trace will happend with or without the weapon. So it's not modular in a way that I can't use one montage asset for multiple weapon.
You can bake just the hand positions and then transform the socket locations of the weapon by the hand transform. It'll allow you to use the same montage/anim for different weapons.
Nice idea
The length can be an offset
Didn't think about that 
Hi everyone,
I'm working on an Unreal Engine project where my enemy character performs a jump. However, when the enemy jumps, it tilts to one side and then quickly returns to its original position, which is not intended. The animation itself is correct and properly imported into the engine, and there's no issue in the anim graph.
The issue also occurs when the enemy isn't doing anything else and just starts jumping from the Event Begin Play.
Has anyone encountered a similar issue or know how to fix this behavior? Any help would be greatly appreciated!
Thank you in advance!
Hello. I have a spline ladder. The parent object has a blueprint interface. This should make the constant raycast turn green. But It does not. Do spline ladders not get affected by the raycast to their parent?
Does anyone know how with quartz clocks you can get the time elapsed since bar 1
Not sure what this is about? Can you elaborate? Are you perhaps trying to make a network clock?
No im trying to play an audio component starting from a certain amount of time since bar 1
I'm not aware of anything that allows the type of granularity. I don't even think the sound component would know what a bar is.
You'd have to calculate it yourself based on the current audio position.
Thats why im using quartz clocks
Ahh... As part of meta sounds. (still need to look at that) After a quick skim it doesn't look like theres anything specific but you can subscribe to the quantization events. It returns the number of bars, the beat and the beat fraction. I'd imagine you could calculate it from this.
hey guys any one here worked with variants for changing materials while app is running , for example the user would change a wall material to choose the product or what ever i am having problem with saving the user data i tried couple ways to store the changes but i failed i need help with this is there any tutorial or video or scrip type guide i can use ?
user data will be saved from username and password getting from api
and i will get that name and pass and some how need to store the changes with the username and password tag in my local pc
You left the scope of tutorials about 17 ideas ago :P
ye i know ... its going to be hard, just wanted to see if there is one , i find a way by the way just let you guys know :
from ID i will get from laravel api after downloading textures and auto setting them up to variant i will use the ID of the textures every click the customer dose it check the ID and save it as a number int , so every texture should be unique i am not sure how is going to work but ye i think i find my way
if you need a key value pair where the key have to be unique, then use TMap.
we have back end developer he will set up servers and api i dont care about unique part xD
just unreal part to create a http request and get that ID and textures from server and use it as a variable type of thing
This is likely a dumb question - but i cant find the answer anywhere else online, if i want to use a random number (in this case for rotation), for one thing, HOW can i get an instance of that exact same random number to plug in elsewhere (i.e. case use i want to set the random rotation of one thing, then offset something else by that exact same random rotation)
Store in in a variable.
that doesnt work in my use case as i use the same blueprint again and again - where the seed is being overwritten by pcg
You'd still store it as a var but if you need to use the same value across different blueprints, you'll need to store it externally and pass it to the relevant BP.
hmmm let me clarify the use case
@dark drum have you done strafing before for A.I?
as paatym said, store / cache variable.
What ever reading the seed, if a valid seed already generated then just read the stored value instead of generating new one again.
so i have these cacti which i would like to deform due to the blast wave of an explosion. It is the exact same blueprint which is spawned using PCG. The deformation works fine but the problem is that i would like each cactus to have random rotation, and then still be deformed from the direction of the explosion. If i could use the exact same random number again, i could offset the explosion direction in the opposite way, so it would be deformed the right way.
So within the same one instance of cactus i would like to use the exact same random number twice, and in a different cactus, use a different random number twice
He already told you solution, you need to store the return value of random to variable and use it elsewhere you need. It's pretty simple.
Not specifically, why what's up?
just can't get the right value for the direction when focusing actor 😦
it's doing tap dancing
As in a lock on type of thing?
and im saying this doesn't work, as the variable is now constant across all of the instances of cactus - which is not what i want
lmao wait i didnt connect up exe
its not final setup right? you need to plug Set
ye 😦
trying to make the enemy circle the player
hmmmmmmm that works for keeping the rotation my mistake - maybe the problem is elsewhere?
Assuming the NPC is set to face the player character and strafing is enabled on the AI controller, just add movement input using the right vector. You can then add movement input on the forward vector to control the distance.
I kinda struggle with the animation. It just tap dancing at certain direction
it looks a bit like you are overthinking it, just be aware that each time you take from Random Number it will generate it as new one, so you need to always store it and then use the stored variable if this needs to be consistent, if everytime you plug it can be random then you don't have to store it, just think about what needs to be random but consistent and what can be fully random each time