#blueprint
1 messages Β· Page 372 of 1
Any Help?
Hello, I tried reaching out on the maker's discord server but it's basically dead so I'm coming here to see if someone can help me.
The Problem:
I was following a Lasers Tutorial and while making the reflective cube and setting up that logic I saw the save Icons on the other children and saved them in the middle of me making it and I fear as a result of that my lasers have stopped working entirely and I'm not sure how to fix it in a timely manner? If someone knows how to fix this issue that would be much appreciated.
I'm not sure what the issue is exactly my first thought was because I saved things Since I didn't change anything I just added some more logic in a separate blueprint
If anyone knows the cause or how I can fix this to get it working again that would be great.
I'm in a bit of a rush.
Thanks!
@crimson briar @frosty heron @chilly root Not sure why it does that. I don't follow FFrame code well enough to understand why this thunk is pulling out the UBlueprint instead of the UUserWidget but...
By the time this is called.
DEFINE_FUNCTION(UKismetSystemLibrary::execDoesImplementInterface)
{
P_GET_OBJECT(UObject,Z_Param_TestObject);
P_GET_OBJECT(UClass,Z_Param_Interface);
P_FINISH;
P_NATIVE_BEGIN;
*(bool*)Z_Param__Result=UKismetSystemLibrary::DoesImplementInterface(Z_Param_TestObject,Z_Param_Interface);
P_NATIVE_END;
}```
You get this debug info. The object being pulled from that first P_GET_OBJECT is UWidgetBlueprint rather than W_HUD_Frontend that I passed it. And of course the UWidgetBlueprint doesn't implement that interface, the UserWidget it manages does. So false return.
TLDR, if you want a type check. Use the class version. π But neat to know why it breaks on the other.
Could use more context on this? Is the tutorial free to view? Uncertain what the lasers and such are.
Yes, It was a two part series. And the reflections were in this video here: https://www.youtube.com/watch?v=aUFg3iZ9un0&t=998s
This tutorial series will cover creating a basic laser system like you would see in puzzle games like portal. Lasers will be made to bounce and be rerouted with specified objects. In this part, we will be adding a wall that reflects the laser as well as a cube that can redirect it.
Subscribe for more Unreal tutorials - https://www.youtube.com/@...
The thunk isn't relevant. It's the declaration:
/** Checks if the given object implements a specific interface, works for both native and blueprint interfacse */
UFUNCTION(BlueprintPure, Category="Utilities", meta=(DisplayName = "Does Object Implement Interface"))
static ENGINE_API bool DoesImplementInterface(const UObject* TestObject, TSubclassOf<UInterface> Interface);
You just specify an object. The picker is there to pick assets. When you pick a blueprint, that's the blueprint. Not even the class. There's no way that is can understand from context that the CDO should be checked.
Well up until that point it's passing around my class's CDO
I don't think that's true. Event the tooltip from your blueprint picture is the UWidget and not the CDO or even the UClass. It's the UWidgetBlueprint.
Yeah fair. I think I was looking at the stack's context.
Wtf? Why are you tagging someone who hasn't messaged in two days just to bring up a stupid religious discussion?
That's a weird setup for UE you have here
Hi!
Using Sub Object Data System. I've added a StaticMesh Component to a Blueprint Asset.
Now I'm trying to edit it so it reference some StaticMesh asset, I do not find no node to do so.
From bluetility.
Thank you
are you in a tank ?
im binding my unit card to show a tool tip widget.
Though everytime i hover with my mouse it seems to call pre-construct everytime...?
Is this normal?
that keeps adding stats
So does that mean that Get Tool Tip Widget respawns the widget. Im confused
Iβm not surprised.
It gets added and removed.
Its comment even talks about getting called multiple times.
Yall got it wrong jesus was asian
Hi everyone! I'm making a mobile horror game (similar to Granny) in Unreal Engine 5. I need help setting up the controls:
Left side: A Virtual Joystick for movement (Forward, Backward, Left, Right).
Right side: No joystick, just a touch area to look around (Swipe to rotate camera).
Crouch Button: A UI button that triggers the Crouch/Uncrouch function.
Does anyone have a good video tutorial or a blueprint screenshot that shows how to set this up using the Enhanced Input System? Thanks in advance
Hello, before going further, is it ok to use the sequence node like that?
just for clarity.. or i should avoid?
π
My eyes
Do you ever intend on those assets not being valid?
If not, personally, I wouldn't check for validity. Let the errors flow so that you can fix them during production instead of silent failures.
At least log that they're not valid.
well.... you can use it like that but lets just say that each of the empty sequences is getting called
that was the purpose of my question
ok i will avoid then π
I do it with reroute nodes placed like you use the sequence node
yes that becomes spaguethy because of the distances
those curved connection are sometime reallya annoying π
yes during testing and when i don't have them i can still continue to test
it's visual and not mandatory so it's ok, if they are not valid
You can do a reroute to the top case too. That line doesn't have to be straight.
You could collapse the nodes in each sub-sequence to a function or collapsed nodes to save space (and then probably not even need the sequence)
You can still test without the validity checks. BP shouldn't crash anything.
yes that's true
hooo that's cool
i didn't know that
Banned in 3.2.1 π₯
btw, you can right click those getters and convert them to validated get. Does the same thing with less nodes
That's only useful when you have one condition
hooo amazing again a cool node π
If you have an AND or an OR, it is less useful
just be careful with the insides of those collapsed nodes.
They don't work like functions. If you want all the execution paths to reach the end, you have to do that yourself.
It's not like functions that return to the caller when hitting the end of an exec line
yes, exactly
yes i understand it, that's really usefull because when we do that the function start to become longer and longer ----> until the end of the screen
like that we can collapse code for more clarity!!
I don't want a function juste for visibility so that things is really cool
BP has a number of useful things to make it more tidy and organized that people just don't use or know about.
yes that's why i come ask here π
the entry point was that
the result is that
it was for clarity of the code
because i didn't know collapse code π
reroute node are spaghetty
and becomes annoying because they are curved
sometimes π
It was not supposed to be bought with another pluggins?
Add more
i'm not 100% sure but the BPVM might just compile that large sequence block out
it's beautiful and horrific at once
Hey can someone help me soo ive just created a dash in unreal its been applied to my camera rotation but it allowing me to dash up if im ground and looking toward the sky id like to remove this possibility?
Change the pitch to 0.
That is the preparation for the most holy god class
Hey i don't find that node into the player controller : https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Game/Feedback/PlayDynamicForceFeedback
Any Idea Why?
Instead of a giant sequence, you could define events or functions and then just put those on the switch. You'd save a lot of whatever that is.
the solution was collapse Node (to avoid create useless functions)
I mean, they're not really useless...
When you create a function just for formating, yes π
doesn't exist inside a function π
I did say events or functions. π
no i was asking why i didn't find the function inside the player controller, but it was because i was inside a function
Ah.
Stop exagerate π
Stop exagerated that my screenshot was the worst things you saw today π
Any plugins, or other paths, for adding adds to your game? I mainly want those adds that lasts for 10-30 seconds, common in many mobile games. Thx.
Let's be fair, 10-30s ads aren't that bad. My partner was playing random shit on her phone and there were ads that took minutes.
That's fair enough. But most mobile games have them.
I do wonder if people wille ver do the thing quake live tried to do back in the day (or was it quake 3?) - sell ads on in-game billboards. I'm sure somebody else has tried it...
Exactly. I would actually find it kinda fun to see random ads if they were appropriate to the setting.
Make the world feel a bit more alive.
Guy is talking about PC ads though.
He did specifically say "common in mobile games".
Yes, Street Fighter V actually.
Turns out companies and players alike do not like to have their logo plastered on children's skulls
Children's skulls? I think I may be missing some context there π
Though I'm now thinking of a mortal kombat version where instead of ripping out their heart, it turns into a can of pepsi π
He asked the same question in #industry-chat and specified his desire for windows ads.
Oh he said it in the other channel. My mistake!
Yeah.

No worries, intended to be displayed at the side of the menu, not fullscreen.
That is, if possible. Luckily steam kicks people like me out, so gotta go somewhere else.
Not sure what the end goal is though. If you want to profit from the ads, just make a mobile game.
Ads for money as a side quest, making games just for money I find soul-quenching. Iβll see what happens.
SFV has Dhalsim whose main design gimmick is his collar made of children skulls.
Each character could get a logo on some part of their design to advertise.
Dhalsim's was on his skull collar
Oh dear.
Surely they're meant to be shrunken heads, not children's skulls?
Could have put it on his loin cloth or something.
hi. Been poking around with the Lyra project, does anyone have any recommendations on the best lobby blueprint to utilize that integrates with it easy-ish?
Specifically children's heads.
I always thought Dhalsim was more chill than that. Oh well.
Tbf it is to pay tribute to children dead during a plague in his village
Hi all what variable type would a UI Material be?
Material
The UI-ness of a material is a property of the material, not a different object type.
I'm trying to register A material iv'e made to it but its not working
Its a flipbook material im not sure if that changes anything
Correction, it will take the material but not a material instance?
If you want an instance, you can use MaterialInstance or MaterialInterface (can take material or instance)
Thanks the interface was perfectπ The others would block it
FViewport::ViewportResizedEvent doesn't it mean it's a c++ code only? is there a way to have that in blueprint?
Bind in cpp and call a blueprint implementable event for bp use.
The delegate probably needs to be BlueprintAssignable for binding in bp and with the case of ViewportResizedEvent, its not. So you will need to get your hands dirty.
I'm trying to understand the gameplay tag system, but I just can't seem to grasp it. Is there anyone within the project who can show me or share it with me?
It's just FName but with steroid.
on top of having hierachy for better categorized tag, no more hard coding strings or name.
Where do you keep the blueprint and VFX files? I can't quite picture it in my mind.
what's gameplay tag got to do with VFX?
burn fire ligth poison effect on me and enemy
depends on how you use them. I am just gonna guess you are trying to figure out GAS.
while they use Gameplay Tag, the usage of Gameplay Tag is not exclusive to GAS and goes beyond that scope.
you can literary do anything you like, gameplay tag is pretty much just Name but with hierachy.
in the case of GAS, you will have to look at Gameplay Effects.
they apply tags to target / actors.
does anybody know the reason why I cannot use the hotkeys to bring any macro node sometimes?
like, its really annoying when, despite having the right settings, and worked smoothly in a different project on the same version, hotkeys for macro nodes don't respond at all
I can still bring the non-macro nodes like branch and delay, but any macro nodes won't come up
Like which ones? And what engine version?
5.6.1
all macro nodes
forloop
foreachloop
increment
decrement
etc
can't understand why it happens
and a simple restart won't fix it
actually for each loop node has no hotkey by default
I made one myself
It does if you drag off of an array and press F
At least I'm 95% sure that's not a 5.7 thing?
Either way. Ew. 5.6. Here are some matches, here's some kerosene. I advise drowning it and lighting it up.
not sure how it is in 5.7, as I haven't tried it yet
Does anyone know what's causing my mesh to act weird? I circled my right leg in the red circle. CPL is my CalfPoleLocation and RTL is my ReachTargetLocation. My foot bones and mesh seem fine, the thigh and calf bones are fine, but the thigh and calf mesh are messed up
hi, so lately I've been trying to upgrade my knowledge about coding and I was wondering. let's say i want to create a weapon base template. What would be the real difference between using a structure or using a base class (in which I would create all the variables needed) and create childs of that class? My english is not perfect so i hope my question sounds clear enough, otherwise i can rephrase
To answer this question correctly, I'd have to ask where you plan on keeping said struct with the weapon data? And if you're using a struct, how are you doing weapon visuals?
i'm not quite sure I understood you're question. What Im trying to understand is what's the difference between creating a structure with all the variables (2d texture for icon in inventory, integer for max ammo and so on) and then adding that structure to my actor or to simply create all the variables in my actor and set them as public and create childs of it (since all the child share the same variables). Then i'd set those manually in each child.
btw i checked the weight paints and it's correct, like for the right leg's thigh and calf it's correctly assigned to the thigh_r and calf_r bones
got an issue with a child actor. I cast it, but I cant access the dynamic material parameters inside the actor, either nothing pops up or the material field cant be filled in. any ideas? I also tried setting it to another variable to make it easier to access, but the new variable cant access anything at all, no functions or variables.
Ah. In that case there's no real difference. It's just organization.
Though I would make mention that you should learn datatables or data assets. You don't normally want to keep stuff like icons, images, names, etc on the weapon class itself either in or out of a struct. This is static data that never changes and you need this data even without the weapon actor a lot in like UI or spawners and such.
update: i switched to the TwoBone IK node in the animation blueprint rather than the control rig and it worked perfectly. unsure why the control rig can be messy sometimes
I've been poking around with the Lyra project, does anyone have any recommendations on the best lobby blueprint to utilize that integrates with it easy-ish?
okay thank you for your reply !
okay thank you I get it better now !
Instanced struct would be really nice here.
The system can be trully modular.
Need description? Just add description fragment.
Need buff on the weapon? Add the buff fragment.
And so on.
You can look at the Lyra project
Use Uobjects instead of structs in Bp, Datatables can work too Uobjects are more convenient but slightly more expensive
If you want to use structs maybe create them in c++
I guess I was wrong about this, but I thought multi-sphere traces were supposed to generate an array of every single hit event within its collision, and not just the first one?
It will stop at the first blocking hit.
but returns every overlap hit.
There a good way to parse those overlapped components? I'm only seeing the Hit Results
the traces will return you the hit results from overlapped component and Stop at the first blocking hit,
think of a flame thrower, it can go through animals but will stop at the wall.
Hmmm
So in a situation like this, where the sphere trace is hitting geometry and then overlapping the cube, which is what I'm tracing for. What would be the best alternative method to get a result that does give me that cube, and an impact point on the surface of the cube?
overlap by object type
or other means
you may want to make your own custom trace profile too.
or custom collision profile.
So, almost embarrassingly, I did make a custom trace profile. I just didn't know how to apply it to the BP in question, so I sorta moved it to the back of the solution-queue in case other methods didn't work out.
Nevermind I got it
That works great actually. Thank you kindly.
My UI is not referencing the correct player. so my health bar is not updating correctly on clients. when I plugin self to my char reff it gets the server instead of the char that its in (the client) so my char reference does not work
there's not enough info to work with.
what class is this on? post the whole picture
Its in my char blueprint
This code inside of my widget does not call correctly
It does not call at all on client
@paper smelt does the print string gets called on client?
So the widget is created on client too?
I'm asking if the widget is created on the client.
When you play as the client, do you see the widget?
Yes
The widget is there but the health bar does not get updated because the char reff is not getting set correctly
for some reason
As long as the character is replicated that shouldn't be the issue
Is your health component set to replicate?
The health system works
Make sure to tick replicate on the health comp.
but its not set to replicate
Tick replicate on your comp
thanks lol
Didnt think it would be that simple
Also
noticed you have some japanese in ur bio I can read about one letter as im learning it. what does it say?
Koru Saama. Cold summer
Thanks π
@paper smelt just some 2 cents. Don't use child actor component, they are cursed as f, even epic staff avoid them.
Also I see you have some cpp class. Instead running Rpc, you can override Acknowledge Possession to have a callback on client. Do your widget on that function and skip the Rpc all together.
instability, serializing issue, crashes.
Can you not just use a camera component instead of a child actor component?
does anyone here know how to make a 2.5D aim at cursor in 3d space? I've been stuck for days trying to get it to work and would appreciate any help π
Ahh ok. Yea if there's no actual logic on the child BP's you'd probably be fine then.
Using different camera components and the set view target with blend would require you to disable all the cameras not in use and activate the one you want to switch to with the view target. Not the most elegant solution though.
I dont understand, can anyone help?
Set its mobility to movable. In short, you're trying to move something marked as static. (immovable) If it should move, update the mobility flag accordingly.
It's a button on a jukebox though, AFAIK I am not moving it at all. I just dragged 5 BP_JukeboxButtons onto my BP_Jukebox ? Wouldnt tha tbe fine to be Static?
Weirdly enough, my first placed button does not throw a warning
It's telling you that you can't put a static component attached to a mobile one.
So either your jukebox's root needs to be static, or your buttons need to be mobile.
It is, weirdly enough when I set my buttons to Mobile and back to Static, the message goes away for a while. But eventually comes back
Is the jokebox's root and the mesh you're attaching them to static?
what are Uobjects?
π
Actually, looking at this closer. Am I reading correctly that this is trying to attach something to itself?
They're the top of the class hierarchy in Unreal. Most things inherit from them. ActorComponents are UObjects. Actors are UObjects, DataAssets are UObjects, Datatables are UObjects, Assets like StaticMesh and SkeletalMesh are UObjects.
does anyone here know how to make a 2.5D aim at cursor in 3d space? I've been stuck for days trying to get it to work and would appreciate any help π
Need more clarity on what you mean by 2.5D
So I have this logic here to aim an arrow at the cursor; the arrow is a placeholder for now. When I say 2.5d it's a sidescroller. I've managed to get the arrow to aim at the cursor. Still, I want it to be able to rotate over the mesh when, at the moment its just stopping at the top unless I manually change the direction of the character and then it works on the other side, so I'm trying to create a way for the character, mesh to follow the cursor also and rotate instead of having to use my keyboard to rotate the mesh if that makes sense, ill sends a video of what happening at the moment.
Ah. And everything is technically a flat plain left right up and down, right?
Need the editor open, sec.
This code is in your controlled Pawn, right?
I'm not too sure what you mean by a flat plain, like the constraint of the level. This would've been so much easier if I knew the sidescroller variant existed, but I've been working on this project for a while and thought it would be quite hard to migrate everything over, so I'm trying to see if it works in this one.
yes its on the character blueprint
By flat plain I mean that your visuals are in 3D, but your gameplay all happens on the Z and X axis. Or Z and Y, which ever. But either X or Y axis aren't used in gameplay.
I'm still quite new to Unreal, I'm a uni student studying game dev, so sorry if what I say doesn't make any sense,
so the y-axis is like the depth and I have tried to flatten that in the logic I sent
So Y axis is like towards and away from the camera?
so thats in the level viewport, i assume thats waht you mean by way from the camera?
Test this out then. This should do what you're after.
okay thank you, ill give it a go!
It maths out a "trace" against an invisible plane at the location of the arrow along the Y direction. Then finds the rotation from that hit point against the plane and rotates the arrow in that world direction from itself.
Er
Wait, I derped a part. missed the add again.
oh I see, I thought actor were at the very top of the hierarchy
Ah, alright, anyway if it does work, you're an actual lifesaver my friend projects slowly coming close to being due hahah
one more thing, i see your cast node doesnt have the execute pins like mine, is this just beacusae i need to use an eventt tick or something like that?#
You don't need to cast to yours. You can just cast it to PlayerController. But right click the node and convert to pure cast.
Or hook it up before the set rotate, either way.
okay sweet thank you.
its working! just the cursor aim is inverted, would i need to multiply it by -1 to have it invert the other way?
Inverted? O.o Like the arrow is looking away from the cursor, or?
yeah the arrow is looking away from the cursor
Can you share your current code? Cause that doesn't sound right unless your arrow is inverted in scale.
this is the setup
Ah, cause you have the look at rotation backwards.
You want to look from the arrow to the hit point.
so i need to swap target and start around?
Correct
can you reference the weight of an object? want to make an ability that grabs things of a certain weight
Looks like PrimitiveComponents have a GetMass()
nice
If you have connected things, you'd need to walk up the attachment hierarchy til you find the root most component and then iterate through it's attach children to combine all of them.
I am trying to make a tool for UE where if I have a entity selected in viewport, on a key bind press it rotates inclemently based on its set rotational increment. I have it working with Editor Utility Widget as a button but dont know a way for it work with a custom keybind. Would anyone know how to achieve it on keybind?
Ehh
Whats the difference to the Gizmo tool ?
I am trying to make certain tools like snaped rotations, scaling and bunch of other world building tools. At work, our bread and butter are things like this for environment art. Is there a way to bind the UEW button output action through cmd? That way I can just making it all on buttons and sliders but still give aritsts an option to bind those however they please.
This kind of feels like a new editor.. Uhh.. What do they call those? Like where you can go into the geomtry edit mode, landscape mode, normal click and select mode, etc. AFAIK these all have their own keybind layers and whatnot. I've never made one myself though so might be off base here.
Any built in functionality for sorting an array of objects based on a property in the object?
e.g., an array of data assets with an integer field, and sorting based on the integer
None automatically as far as I know. I think one of the BP libraries offers some predicate functions that'd let you do it. If you have C++ capability to make a library you could make your own function fairly easily that you could bind to a BP function.
Pretty sure its an editor mode. I don't believe you can make them from BP only though.
yeah I can try looking around for the function but if that doesnt work out I might switch the project out to C++. Its just that I haven't messed around with C++ and packaging it into a plugin.
does anyone know how I can make the player only be able to hear things within a certain range? Like only hearing dialogue if NPCs are talking within the players hearing range?
Hello, Is there a way to find where i bind all event dispatcher? i don't remember where one of them is
Sound Attenuation
(You can create one from the content browser)
You can search in blueprints for the name using the search in all tool.
When we debug the self is empty? we can't see the data inside the self?
ahh cool thank you
Self is current bp..
and no it doesn't show you instances iirc
So how do I know if I pass the data correctly ?
we can't do that?
the idea was to sent to the triggered even, the data of myself
like that the one that will triggere the even will know the data of the object as well
i think i'm in the wrong place π
Hey everyone!!
I'm currently setting a gameplay tag using a evaluator when an actor is destroyed. I'm trying to debug this by setting a break when enter on the tree however, it does not toggle. Any advice?
You can print string self
What does this other body index return? Can I use this to get the instance of Instancedstatic mesh component?
That's usually what it is, I believe.
not really clear. Can you post your code and be more descriptive.
For instance I can't tell what "evaluater", or what does not "toggle" or what "enter on the tree" mean.
No, it's not used on instanced static mesh components. With it being an overlap for a dynamic mesh component, it refers to the mesh piece used to make the overall mesh.
If you don't assemble the mesh using different pieces, it'll most likely only return 0.
That also makes sense.
it returns -1
Oh wait, i'm thinking of something else. Body index is related to the collision capsules used in a skeleton. What's ending overlap? Does it have a physics asset setup to define the collision on the skeleton?
Im trying to detect instances of Instanced Static Mesh component
You'll need to provide more context.
Also for clarity, -1 on the body index normally means the thing it relates to doesn't have per-body collision. (Usually related to physics bodies) But with you mentioning ISMC, body index isn't want you're needing.
yes and for context,
Im moving vehicles that are instances of a ISMC, they are overlapping with an actor and I wanted to get a hold of those vehicles that have triggered overlap
Oh, it looks like it should be the instance index. π€
let me try it
OverlapInfo.Item = ISM.InstanceIndex ?
My head dont compute that, but i've never seen "item" either π
Apparently i lied. Im using Item myself π
I remember that body index only available on static mesh , am I wrong?
So it means I can use that index for getting the instance
That's what I'm doing atleast
altho im not using that specific event with "getBodyIndex" , but it seem to return the same value
I need to setup the collision of my instance for it to detect overlaps first
I know what you mean, your pawn made of several parts(collisions shapes) , you want get the index of the one ( collision part )
if by "you" means me then no
ohh, sorry, I misunderstood.
yes It returns Instance Index
chat is my BP evil
It's not evil at all. I might move a few things around to reduce crossing wires, straight up that exec line, etc.
But overall it's fine. What makes you think it's so bad?
it's for a mod for a VR game, i'm a mod dev, so i was thinking of making a tool that forcefully closes the game (also making it host only to prevent trolls from closing everyones game)
im still a noob at blueprint so yeah
Whats the point of the line trace and impulse stuff? Seems redundant if you just want to close the game.
leftovers from a gun that actually shoots
Why would you need a tool for that? Isn't there some way to quit normally?
Yeah, I wasn't really looking at what it did.
-# it's for a mod that tests the DSVR SDK's capabilities
and why do you need a tool to force close the game to test that?
I was testing get control rotation vs getting rotation from "Get player view point" why are they slightly different sometimes? It's very very minute difference but usually there's like a tiny difference IE: (Y: 148 on one while the other is Y:150)
and which should I use for an ranged aiming system (where im aiming towards in my POV)
I used GetBaseAimRotation
Yeah. Unless you're doing something locally with the client's own local auth control rotation values, GetBaseAimRotation is usually safer in places that aren't the owning client.
Rite, forgot about pawn that gets controlled locally.
GetBaseAimRotation should work even for them depending on the case. I don't recall if GetBaseAimRotation does the compression for the local client though. For pitch.
whats the difference ebtween that vs controller rotation though?
For a start if your game is multilayer (mine is).
Clients only have access to their own controller.
So client A can't access Client B controller->control Rotation
But luckily epic already replicate that controller rotation via GetBaseAimRotation.
You can think the value as what the pawn is looking at, what the player is looking at, or what the AI is looking at.
yea but if it's for aiming then won't (whoever or whatever) is aiming always have access to their own controller?
I mean
Why would they need access to anyone elses
Like animBPs
Not sure what you mean by is aiming always have access to their own controller.
Btw don't want to make this more complicated if you not doing MP
consider using Blueprint Assist
So like for example this is what I'm doing right now (and yes it is for multiplayer). This is my "Bolt" which is being shot from a crossbow. The idea is getting the rotation & location of my camera and use that to line trace the location where I want my bolt to travel to. Not sure if this is the most correct way to do it though (I kinda can already see a flaw IE: If server detects a hit on a player but player gets out of the way during projectile travel since it's not hit scan, would it stop mid air or would it continue, etc)
Right now this seems to be working except the bolt seems to not really be properly aligned with where I'm looking
a tiny bit to the right
Think it's because it's calculating from the server's location/rotation and I havent done any local prediction yet so yea
Not an easy question to answer as there are soo many ways you can approach this.
Each with pros and cons.
And I don't even know how I will go forward my self, I am not much into the combat yet.
Anyway gotta go to bed. Best of luck and probably ask that question in #multiplayer where the wizards are.
Will do thanks!
For a quick moke up, you can probably try to spawn the projectile locally when the client fire.
Inform server that you fire and have server spawn that projectile.
When the server version of the bolt is replicated to the client that predict, you can interpolate the client version to server version position.
I dont think there's a scenario where everything is perfect. In real world, latency is a fact.
You just have to go with the one that you can tolerate enough.
no yea I understand the netcode stuff
I'm just not sure why it's firing from a different position (or rather, it's going towards a different position) when shooting from client vs when shooting from server
one variable is clearly different locally vs server im just not sure which and why
I'm checking it out right now but i'll have to find a way to have it be the same locally / client and it should only be affected by latency
Hello im wondering if anyone can help me out? im trying to create an actor compent based on stats like health,food,Thrist,Stamina and Mana (for spells latter on)..i created all the variables and ect..instead of using the begin play. I want to create an fuction ..i know how to set/get but im confused at what goes inbetween those nodes...if possible for a video example
can someone help me with a replicated health bar not updating for client?
like for 5 mins?
client can actually damage the enemy and they do lose hesalth. But ui updates for client only when server hits the client
show code
show the code path that updates the UI
You want to create a function for what?
Its a 1v1 game and its a health variable with repnotify and it uopdates in the function. Here's a photo. The print string on the last photo are being called when client hits server but ui just wont uodate for a reaosn
for stats like updating and drain things like health,stamina and ect - its gonna be in an actor component so i can just plug it into actors..edit and go - got all the varieables but dunno how to start the coding
you typically want to handle the damage and setting the hp on server only, then let the repnotify call the update
So the first thing after AnyDamage should be HasAuthority
doneπ«‘
Just start.
BeginPlay -> set ActualStat = MaxStat
Tick -> set ActualStat based on StatRegen
Get that working first
I was about to say, doesn't the icon on AnyDamage mean it only works on server?
Or am I misremembering
sure, one min!
just set the replicated variable.
Let the onrep be what triggers clientside stuff
directly to the nodes fdrom the authority?
Might not even need HasAuthority, I think Damage is gated anyway. Worth checking.
What comes after that set
should be nothing
Later you'll want more stuff to detect dying etc
any chances you can show an visual example? coz i can't work out what node the = is supposed to be.
oh I need The regen varaiables too? gonna need to add them
just the equal
What I'm saying is to set the current values to max values on begin play, and on tick do the regen
HP = MaxHP, Mana = MaxMana
etc
Roger! let me do that
hm, ui still not getting upated when client hits server. Only when server hits client the ui for both gets uodated
Then whatever is doing the damage isn't happening on server
you need hits to happen serverside
alright, thanks for your advice. Will have a look and let you know! thanks again
understood that haha
i take it the tick is the event tick one?
is this right? it looks kinda werid
At Begin Play, you are setting Health = Health
Every frame, you are setting health to 0, then setting it to be = to your regen
Seems like you just randomly hooked stuff up.
Why are all these stats integers anyway?
waiit dose the max health need to be on the output side? coz its not letting me plug it in that way
oh i choose the wrong thing lol - they were supposed to be floats
Shameless plug. π In this video, you can do the same thing for other stats so it's not limited to oxygen.
In this tutorial, Iβll show you how to create an oxygen supply meterβideal for underwater games, space environments, or any scenario where oxygen management is key. Weβll start by setting up a dedicated folder and blueprint, then dive into adding components to the game state and building out the logic to track and adjust oxygen levels.
Yo...
dont not mind shameless plugs - they help β€οΈ
Yea, they can sometimes prevent a 30 minute back and forth. There is a pt2 as well that covers showing a simple bar. Nothing fancy but should be something you can build on once you understand the different pieces.
i think the stats accidently being an interger really didn't help
but should hopefully get the hang of it - now i can see it in front of me xD
@dark drum can i dm u?
I'm going to use an event dispatcher, but I don't want to use a heavy cast to actor. Do I need to use the Bluprint interface and the event dispatcher together? Is there another way?
If that actor will be loaded anyway when you need dispatcher. Just cast
Casting is not heavy. To utilize an event dispatcher, you require a reference of the type that has the definition available to it, and the class would need to be loaded regardless if you're doing it within blueprints. Interfaces are meant to have a similar API between classes that don't share a hierarchy and that would need different logic between these different classes.
Guys, I have a stupid question.
Assuming my actor has a certain angle in world space (so its rotation is not 0) I am trying to add an angular impulse (make it spin) but with the rotation that follows the local space axis - currently by doing this it spins but along the world space axis (so it doesn't respect its relative rotation) - how do I fix this?
vectors
you want to add an angular impulse in the local forward direction
so forward x somenumber is your impulse
assuming you want to roll, idk which axis you're talking about here
The yaw @faint pasture
but the actor itself has a 10Β° pitch
And all I want is for the angular impulse to respect that 10Β° pitch and rotate along the new "up" vector that is well, 10Β° slanted
the local forward vector of.. what? the actor or the component?
since the impulse is applied on the component mesh
Anyone know why I cant connect thies two pins?
@faint pasture is this right? or have i done it the wrong way again?
What are you doing, are you just hooking things up randomly?
You need to understand what you're doing here.
@faint pasture given that the impulse is applied in world space to the component and not the actor, what kinda forward vector do I need? I tried both to no avail (actor forward and component forward vector)
(I also tried up vector)
Like, it spins but still along the world axis and not the actor's axis
get the whatever vector of the thing, probably the flipper here
although if this is pinball you should use a constraint set up as a motor IMO
I spent 4 hours trying to make that work and I just gave up, I'm exploring different ideas
The world has a forward vector, as does the actor, as does a component, etc etc.
That thing is so weird, especially the angular drive and the constraint
no i set the health float then get the Maxhealth node but it doesn't really connect unless that other node is there ..instead of asking what im doing - point out what the hell im doing wrong otherwise i wont learn
it's not bad at all, constrain it to only be able to rotate around the axis you want it to rotate, then set up the drive params.
The act of triggering the flipper is just setting the angular target.
On god I've tried everything, I'll setup it again one more time and hopefully you can help me out
In my game I'm tracking progress to unlock stuff through the savefile, because I'm not really sure how else I'd do that, but I have this issue where I can't really add new unlockables without telling my playtesters that they have to delete and remake their save file. It makes sense to me why, because the save file is already created, so I can't add new data to it rather than just reading and modifying the data that's already there if that makes sense, but was wondering if there was a workaround for this?
Not entirely sure if it's the right channel but I'm using blueprints for my savefiles so 
What does adding a new unlockable look like in the save?
What is the record of what has been unlocked
@faint pasture okay I got it setup and now it just reacts to the ball approaching, stays in the middle and swings back and forth - how do I actually apply an impulse to it and have it stick in the up / down position?
You don't add impulse, you change the target orientation
let the motor do its thing
Tune the stiffness and damping to taste
Literally just adding an integer to an array to track the unlock progress, although thinking about it now it might actually be fine now that the array is a part of the save object? They might just have to delete and remake the file the first time now that the patch has been pushed to make sure the new save file has the array in it
the record of what's already been unlocked is just an array of booleans, might have jumped the gun on asking without checking with a second unlockable though, I'll test that rn please hold 
@faint pasture yeah but here's the thing: if I do it via blueprint (add a 25Β° angle) it does absolutely nothing (the EIS input fires, I checked) - but if I add the 25Β° angle on the details panel (so before runtime) when I press play it swings right into place - I noticed that if i add a small impulse after I set the angle it works - but it feels weird, hacky and stupid and I'm probably missing something
Like, this works, which is painfully stupid
sleeping
The phys sim is sleeping? Is there an "awake, you idiot" node?
disable sleep on the flipper
haven't found a "stay awake" setting, but setting the sleep mode to custom and then the multiplier to 0 means it will always be awake right?
You may want to consider using a gameplay tag container or a set (not an array) of names just to make your life easier, rather than trying to remember which index of the array is which, or what that number means.
turn off inertia conditioning while you're there, I've seen problems with that
Thanks for all the help
epic should have a "most beautiful blueprints" contest every year, i would love to see if anyone has as pretty blueprints as me π
#blueprint message that's my winner of the year
i am w i n n e r
Procedural generated blueprint
This is so true actually lmao, I changed it up so I'm using a map now, still works the same but it's gonna be much easier to keep track of than using a google doc with all the unlocks and which index they're tied to lmfao
This is in my ignite spell actor, for my quell spell actor, how can I on overlap collision, destroy this specific component, it's a cascade particle system for the emitter.
Drag from the Return Value and promote it to a variable. Then destroy it by using this variable.
Not sure if there is a way for the particle itself (without any blueprint callign it) to destroy itself on a specific overlap, never done it with particles.
This is my quell logic on the left
This is my ignite logic on the right
But it still ainβt deleting?
If it has the tag, it goes from true on the branch
Are ignite and quell separate spells?
Yeah separate actors
Are you intending the ignite sets an area or thing on fire and quell gets rid of the fire?
Specifically what is ignite meant to do?
Put a cube on fire in this case, quell gets the fire destroyed
Ok so do that. Why does quell check if its owner is a fireball?
What does it mean to be set on fire, that a fire actor is spawned?
The simplest setup I can think of is like this.
Ignite spawns Fire
Fire does whatever
Quell does an overlap and destroys any overlapped Fire
Thatβs what I am trying to do
Fire cascade particle component is spawned yes
When the fire projectile particle is overlapped with the cube
Spawned in what actor?
The fire projectile actor
So you intend the projectile to hang around the whole time until the fire goes out?
The projectile IS the OnFire effect, basically?
It delete the fire particle if it gets on overlap with the tag so in this case, the cube has that tag. Then a fire particle is attached to the club
I'd rather have the projectile spawn an actor representing something being on fire.
Why not do it like this:
Projectile spawns Fire actor when it hits.
Quell does an overlap check, destroying all overlapped Fire actors.
Easy, simple
Just give the fire actor a sphere hotbox and the particle component.
how to make sure the points dont touch each other by a certain radius or length?
Not simple, isn't there already a guassian sampler node?
Hello everyone ! I've got a problem : I'm trying to code in BP a pipe puzzle (the ones in which you connect an energy source to a receptor by rotating pipes and such) but I can't get any print for side detection.. I've already got the rotation part covered tho. Does anybody have an idea ? Thanks in advance !
I've left it as is, is it a problem in that situation ?
well I'm detecting if the collision boxes overlap so does it need one ?
I can't check overlapping boxes with that ?
so I need to make it scene components or something like that ?
well that's what I'm trying to find out since no Print are displaying despite overlapping
Overlapped Component == The component on this actor that was overlapped.
You're currently checking "Other Actor" which is the other actor that caused the overlap and setting that actor as "Pipe Connected" and checking if one of Pipe Connected's components are == to this actor's components, which it won't be.
You probably just need to swap it to use "Other Comp" instead.
This is probably a very stupid question... but given a spring arm and a camera (that work)... how do I clamp the camera from going "too far in" and clipping into the character's mesh?
That is, when my pitch goes too far
Hey all,
Any idea on how to debug a state that gets entered through an evaluator? Breakpoints aren't working when this happens :/
Hello all, if anyone has faced this kind of issue and knows anything about it, please let me know. I am stuck with an issue related to Cesium and Exponential Height Fog.
Cesium renders the world on a spherical globe, while Exponential Height Fog in Unreal is calculated relative to a flat, world-space height axis, which effectively makes the fog behave like a horizontal plane. Because of this, when I move further away from the Cesium origin, the camera looks like it is far from the Cesium tiles, but in reality it actually goes inside the fog area. Eventually, everything I see becomes the fog color and nothing else is visible.
I canβt use two fog actors, and I canβt shift the Cesium origin due to some project complexity.
I also canβt make the fog volumetric, because I already have volumetric clouds and performance is a concern.
So what else can I try to make this work?
Hey guys! I am a beginner into unreal and stuck to this problem... So please look if you have got something for me...
ok in game animation sample project we have a beautiful turn in place setup but want it to qwork like that of the lyra project is there a way to configire it like that with out writing the entire lyras turn in place system
by lyra style i meant if rotation exceeds certain threshold then then instead of accumulate rotate in that direction as per controller rotation yaw
tried using brach in the function get rotation Mode to return relase if yaw. abs more than 85 but character animation does not behave like that
Do anyone know if there's resourse on using the 'Mover' plugin? I'm looking for initial setup and overview of setting up basic movement from scratch.
Everything I can find just says to enable the mover examples. π π₯²
GASP has an 'example', what are you struggling with?
Setting up movement would be through ProduceInput via the IMoverInputProducerInterface instead of your usual InputActions.
Most of it. π
Like setting up the input cmd and then how it would relate to the movement modes.
There's the unreal fest talk from last year about mover, i think the recent GASP talk has more info (from the same guy as the unreal fest talk).
Yea, I've seen that and had a poke around the examples but when it comes to setting something up from scratch I'm stuck.
What exactly are you trying to do? adding a new movement mode or setting up the input?
adding a new movement mode requires c++ ( at least that's what it says on the documentation), haven't done that yet
Just trying to setup some basic movement similiar to what you'd have in the template projects while I try to understand the system. So i guess both.
And yea, i think there's something to do with creating a child struct of FMoverDataStructBase which you can't do in BP.
So in ProduceInput you're feeding the data as you would normally, only to the FCharacterDefaultInputs struct (which inherits from FMoverDataStructBase) instead of the usual.
here, you would get the same value of IA_Jump, but feed it to the struct, and adding the data to the struct (assuming it exists)
Syntax is a little different in blueprints.
You would also need to bind to OnPreSimulateTick to register the collection first
void AMoverCharacter::ProduceInput_Implementation(int32 SimTimeMs, FMoverInputCmdContext& InputCmdResult)
{
MoverDefaultInputs.bIsJumpJustPressed = bJumpJustPressed;
InputCmdResult.InputCollection.AddDataByCopy(&MoverDefaultInputs);
}
Kind of an abstract example...hopefully this is somewhat helpful.
I got ue5.7 and it dosint show a already made character for you to play as so I dont know how to make my own character for the game
you use "first person template" or "third person template" etc and it will have starter content including a usable ready made character
Got it thanks
Yea, that did help thank you. Using the walking movement object in mover, I was able to do this to get it to actually move which is a start.
Nice, also IIRC to differ from the 2 jumps Booleans, the latter would be for air time (e.g. to check if the movement mode should be falling)
the first is being checked for the actual Jump() .
Is there any move object for jump? from what I can see, it's not handled by the default walking.
It is handled by CommonLegacyMovementSettings.. i think?
Thanks i'll check it out.
His videos helped me a lot to get the hang of motion matching
https://www.youtube.com/watch?v=20BbDaFYN_o
I was just looking at the mover component but if it's explained as part of motion matching I'll check it out.
mover plugin example shows a lot features of this component, I just went through all levels in the map folder this week
No. Jumping is an action that will cause the MoverMode to go from Walking to Falling.
There is no MoverMode for jumping.
If walking itself doesn't handle it (we made our own walking MoverMode), then it would be done via an Instant Move Effect or whatever they are called.
And yes, the "Jump Just Pressed" boolean is supposed to be only true in the frame that the key was pressed, not every frame it is held.
We don't use the Default Movement Inputs anymore either though.
Yea I've had a poke around but it's like being given a jet engine and then trying to make your own. I was looking for a more stripped back, bare essentials I can build my knowledge from.
Yea, I figured as much. π
Mover is pretty simple in that regard. Although I can't comment on BP usage. We ripped out BP support for it.
Yea on the face of it, conceptually it does seem pretty simple. Just a case of figuring out the different pieces and how they all connect together
Yop.
yup , I found it's more important to understand c++ part of the mover samples , read that cpp code first
Am I right in assuming that the mover just handles velocity (including angular) for a given actor based on the movement states. So ultimately everything boils down to calculating the desired velocities based on the active state?
You basically have a MoverComponent which has multiple MoverModes and optional MoverTransitions. Each MoverMode can also have optional MoverTransitions. Each SimFrame, Mover/NPP asks you to "produce input", which is just the struct it will sent to the Server and then perform the local move with. And each move is divided into a "GenerateMove" and a "SimulationTick" call. GenerateMove is basically meant to create a set of data that is meant to be used in SimulationTick to actually perform the move. E.g. "I want to move with 100,0,0 Velocity." SimulationTick then takes that and tries to move with it.
Yeah, sort of. You get 2 Input Params and one Output Param. The first Input Param is the stuff you "Produced" from actual user input. The second Input Param is the previous State of the Simulation. The Output Param is the new State of the Simulation.
Aka "PreviousState" + "Input" = "Output/NewState".
What that exactly boils down to is up to each MoverMode.
There are also LayeredMoves (that get "layered" on top of the current MoverMode) and InstantEffects. Think they also added Modifiers and such, so it can get a bit more complex, but those are used when needed and more an optional thing.
I don't think we really use Layered Moves much in our setup.
Instant Effects would be things like a teleport.
Other than that, you have two types of transitions you can do. Transition being MoverModeA -> MoverModeB.
The first one is within the SimulationTick of a given MoverMode. Here you can set the new MoverMode in the Output Param, in case the logic within SimulationTick determines that it should change. An example:
Walking might notice that, after moving forward, it can't find a valid floor anymore, so it changes to Falling.
There is a small thing about "refunding time", which has to be understood when working with this, but yeah.
The other transitions are actual objects that can be placed onto the Component or individual MoverModes. Component ones are aways evaluated. MoverMode ones only on the active MoverMode.
Example for those would be a transition that checks if you want to go into MoverMode_Swimming based on same transient WaterState.
Since you don't necessarily want to have a manual transition in every MoverMode, hardcoded into SimulationTick, you can use those Transition Objects for more generic transitions.
E.g. we have one that puts us into a MoverMode_Vehicle, whenever the player is inside a vehicle seat. Which can be at any point, as even NoClip players could enter a vehicle during debugging.
So that Transition sits on the MoverComponent.
But yeah, in theory, simple system. Can get complex if you start using all its little tools.
Don't necessarily think this is a plugin that should be used in Blueprints, but I leave that up to you.
Would you recommend Mover if the game is just dirt basic character movement 10% of the time, and sitting in a physics driven vehicle 90% of the time?
Battlefield but you have 10 hp and a pistol
Yeah, but I would equally recommend the CMC tbh.
and vehicles
Mover + NPP isn't really cheaper once you add back all the fancy stuff that the CMC supports and Mover is lacking.
Mover fully replaces CMC right? Like can you basically ditch the entire ACharacter class?
I still think turning the CMC into something modular is better, but well.
Yes and no. It doesn't need the CMC and also no ACharacter (you make your own Pawn for it). And it can also be used for non-characters, like a platform.
BUT, Mover doesn't have all the features that the battle tested CMC has.
To me the most important thing is that ejecting from a moving non-predicted vehicle is smooth, and that the CMC is doing nothing while you're in the seat
RootMotion support is pretty bare minimum. There are no fancy "Land on Platform + Jump off of Platform" thresholds. Stuff like that.
I might test it out later on singleplayer stuff. Always interested in removing that stupid ass separation of needing two sets of code for common things just because one is an actor and the other has to be a Character and you can't easily inject your own parent of the two.
Mover + NPP will correct you once you eject. CMC will too.
We "trick" Mover into thinking that it's doing BasedMovement while being attached.
I coded that into the MoverComponent directly.
As soon as the UpdatedComponent is attached, it runs through a different code path that returns the attach parent etc. as a MovementBase, so you won't get corrections while attached.
And we then, on top, put the player into a MoverMode_Vehicle, which doesn't do shit, despite yeet you back into Falling/Walking if you exit the vehicle.
You mentioned root motion support is bare minimum. I've noticed the dedicated play montage node. Is this as far as it goes?
ok so Seated is basically BasedMovement but you can't move and don't run all the math that would be involved with moving relative to the base until detach
I have never tested what they pushed for it. I integrated it myself, also directly into the MoverComponent. The LayeredMove solution they had (and still have?) didn't work for me.
Yeah, cause Chaos Vehicles will never be properly in sync with NPP/Mover, so we had to use BasedMovement. We also support standing on Vehicles while they drive, but we re-wrote the BasedMovement code for that.
I really gotta dive into the new physics replication stuff, I'm still using the OG path from UE4 and it works great even under bad latency. Not predicted of course.
I can't comment on the Chaos version, but NPP Mover also ticks a bit different than expected. We use the fixed tick version and the DeltaTime is rounded (a lot). So when playing a Montage on the Mesh Component ( we don't use Layered Moves for this ), we progress the internal playposition via that DeltaTime. However, that causes the Montage and the internal playposition to slowly drift apart, which means that the visual movement doesn't fit the actual root motion anymore..
CMC also has code to specifically handle SimProxies with RootMotion.
SimProxies can easily go out of sync with RootMotion.
So the CMC allows them to be "ahead". They basically take the replicated RootMotion and allow the SimProxies to forward predict its transform if their Montage is ahead. Otherwise, it looks out of sync pretty quickly.
WHich are those things that I mean with: Mover is lacking battle tested features that CMC has.
I tried to combine Locomotion plugin + Mover component for my character , but I can't get the root motion work properly π
Which is Locomotion?
search plugin locomotion , then you will see itπ
You do get corrections upon entering/leaving the vehicle. Mostly cause the Interaction for entering is not running through NPP, so it's not "predicted".
Server is always at least 2 frames behind, even if ping was 0 (due to buffering), so if the Server and Client both attach to the Vehicle in the same frame, the Server would still process 2 older frames attached while the client wasn't attached. NPP is one of those things that you gotta fully commit into or live with some corrections. And fully committing into is not necessarily easy, as NPP is very specific and it doesn't fit all "things" (e.g. an inventory).
I would probably suggest to stick with CMC for Multiplayer, and use Mover for now only for SIngleplayer stuff. And be fully aware that C++ is probably needed, as a lot of Movers features aren't even exposed to Blueprints.
I'm assuming you mean the one built into the engine and not the ALS one?
And then maybe wait for Chaos Mover to be fully done in idk how many years.
maybe locomotion plugin just for level sequencer
To answer this directly, I assume that's all there is. That node probably adds the LayeredMove with the Montage. The CMC reacts to the Mesh Component having an active RootMotion Montage, which Mover doesn't do iirc. I altered Movers core logic to do just that, cause that's more convinient.
yeah , the locomotion used in control rig
CMC also has RootMotionSources, which are only really exposed to Blueprints through GAS, but can be added without GAS too in C++ or if exposed properly.
Those RootMotionSources are what LayeredMoves could be used for.
I might also be a tricky person to ask about all of this, cause we altered Mover.. a lot.
It's all good stuff to know. Not sure why I decided to look into mover today. π
Mover run on its independent thread, has about 100ms delay , everytime I run the example level, i felt dizzy
I don't think it runs on a different thread. It runs on the GT. Way too many UObjects involved.
really ? so I am wrong π
Mover does have some delay coming from input and what not. But 100ms sounds a bit high.
yes , maybe 60ms
Yop, we also tick Input before NPP produces it, to have the most up to date input. :D You'll find a lot of people that will say that i'm pretty negative about NPP/Mover, but we are using it for 18+ months now and the amount of changes and fixes needed were tremendous.
when play a game , delay more then 50ms nearly unplayable
Cedric woke up and chose to spill information, very informative 
yeah , waiting mover get better and better in future also our computer hardware has high performance
im trying to make this logic so that the ammo is reloading from spare ammo, spare ammo is set to 90, but the gun is able to reload way more times, my slip and ammo is set to 30
He's been working on that stuff a lot. π He had the misfortune to have to adopt it early on, for clients I think. He's had some rage moments on here over it.
Still, his message is longer than the documentation.
Because ammo has been updated
You're losing the information about how much was added to the magazine
im not really sure how i would change that
There's probably some way to do it without a variable but I'd just cook up how much you're gonna move then add to mag and remove from spare
R -> Transfer = Min(blah, blah) -> Mag += Transfer -> Spare -= Transfer
so is all of my logic there invalid?
You would realy benefit from using a function here, instead of just the EventGraph.
just the last node where you use the new updated ammo to update Spare, you'll always subtract 0.
That would allow you to create a Function Local Variable, which only exists within the function, so you can store some temporary info to use later within said function.
I wonder if another fix could be to just swap the order of Ammo and Spare being set.
Ah no, there is a Min(SpareAmmo, ..) nvm.
I'm sure there's some clever way to do it but just make a temp
it's a similar problem to swapping 2 variables without a temp
Yop, but please do that in a Function and not in the EventGraph.
a=a+b; b=a-b; a=a-b
This swaps A and B without a temp so probably a way to modify it to work for this problem
this is really confusing me, I'm quite new to Unreal, im at uni atm so I'm still really trying to wrap my head around blueprints hahha
Just make a function so you can have local variables
do it correct, then try to get clever later if you want
so in the function i create an ammo system?
I think I sorted out the clever way, makes sense if you think of it. It's like unloading the clip then reloading.
Spare = Spare + Loaded
Loaded = Min(Spare, ClipSize)
Spare = Spare - Loaded
Your problem is that setting "Ammo" relies on "SpareAmmo" and setting "SpareAmmo" relies on "Ammo".
The second you set "Ammo", it alters the math behind setting "SpareAmmo".
So you need to store the amount of ammo that you "reload" somewhere before modifying either "Ammo" or "SpareAmmo".
For that you need a new variable.
HOWEVER; it's yucky and bad to create such temporary variables in the class/blueprint itself. You should make a function called "ReloadWeapon", which which you can create "Local Variables" instead.
Those don't exist outside the function.
This is the equivelent of dumping all the ammo into spare then refilling.
It'll work.
im struggling to understand how this would look in blueprints or functions,
so i want to create this all in a function and then call the function when left mouse is pressed?
Literally like how i posted
Your problem is basically this in math:
Start Values
------------
Ammo: 5
ClipSize: 30
SpareAmmo: 90
Upon Reload (Bugged Version)
------------
1. Ammo = Ammo + Min(ClipSize - Ammo, SpareAmmo) = 5 + Min(25, 90) = 30
2. SpareAmmo = SpareAmmo - (ClipSize - Ammo) = 90 - (30 - 30) = 90
it's 3 sets
In your step 2, your ClipSize - Ammo breaks, because step 1 already sets Ammo to 30, while you expected it to still be 5.
the default of ammo is set to 30, because originally I didnt have the spare ammo. Is this causing issues? Would I even need the original ammo variable?
The corrected math introduces a temporary variable:
Upon Reload
------------
1. (Temp Variable) AmmoToReload = Min(ClipSize - Ammo, SpareAmmo) = Min(25, 90) = 25
2. Ammo = Ammo + AmmoToReload = 5 + 25 = 30
3. SpareAmmo = SpareAmmo - AmmoToReload = 90 - 25 = 65
No, I wrote you what the issue is.
My math example assumes that you shot 25 times (given each shot takes 1 ammo) before reloading.
ah okay not far off, i shoot 30 times before having to reload
Doesn't matter, the problem is the same.
You can even shoot once and reload.
Because you are first setting Ammo back to 30
And then you use Ammo to calculate how many SpareAmmo to remove.
But Ammo is already set back to 30, so ClipSize - Ammo results in 0.
so i wouldn't be taking any of the spare ammo because its at 0?
I wouldn't go an make this more complex by changing stuff.
Well yeah, that's what subtracting 0 means.
this worked
There are many ways to skin a cat, the version with the temp variable will also work.
Whatever you do, make sure you UNDERSTAND what you're doing and why it's working or not working.
Do you understand why your first version didn't work?
Yeah that's a bit more important, cause you seem to not understand why it's not working in your attempt.
Kind of, I still find it quite hard to follow how blueprints work, I'm just way too new to them and didnt really expect game dev in my course s,o wrapping my head around it has been a challenge.
I think you are expecting the result of the initial "ClipSize - Ammo" to remain whatever it first calculated.
While in reality, it gets recalculated for every connection it has.
Which means while it might have been "30 - 5" or whatever "Ammo" was at the time the player pressed R, once you set Ammo back to 30, the next time you use that set of nodes, it will calculate "30 - 30"
so, setting ammo after would be making it 0 because it was never actually subtracting 30 from 90 but 30 from 30? sorry Im trying to understand.
If we focus only on the "Set Ammo" node and what you connected to it, and we take my example of reloading with 5 Ammo left in the Clip, you'd get this.
That's clear so far?
yes that maths makes sense
ClipSize - Ammo gives you how money bullets you need to refill Ammo fully (25 in this case).
Min(SpareAmmo, ClipSize - Ammo) ensures that you don't reload more than you can (still 25 in this case).
Ammo + Min(SpareAmmo, ClipSize - Ammo) then adds the needed bullets to the current Ammo value (25 to 5 , resulting in 30).
Okay, so the White Exec line that I didn't blur defines the order of how things execute.
So the R Key Press first reaches the Branch (which is blurred), and then the "Set Ammo".
And only after that it reaches the "Set Spare Ammo" (also blurred at the moment).
That means, after the "Set Ammo" node got executed, Ammo is now 30 again.
That's important to remember. Now let me change the blur a bit to focus on the "Set SpareAmmo" node.
When you calcualte what to subtract from "SpareAmmo", you are now calculating with the updated "Ammo" value.
That results in the left part now calcualting 30 - 30 = 0. So it never removes any "SpareAmmo".
ah okay that makes more snese
The nodes circled in red all "re-evaluate" for each connection they have.
So the 3 nodes on the left don't save the initial 30 - 5 = 25.
Which is why we say that you "need" a temporary variable to save the result to.
So before you set "Ammo", you first have to store the number of bullets that need to be reloaded somewhere.
You could make a new variable in the Blueprint and use that, but that's ugly, as that Variable is temporary and won't be needed outside of this logic.
Which is why we suggest you to make a new function and move the code into that, because Functions allow having "Local" variable, which only exist within that function.
Either way, once you have that magical 3rd Variable created, you set it to the result of your Min(SpareAmmo , ClipSize - Ammo) before setting "Ammo" and/or "SpareAmmo".
That variable will then hold the 25, and you can use it to both add to Ammo (5 + 25 = 30) and subtract from SpareAmmo (90 - 25 = 65).
I don't think I can explain it any simpler, I hope this helps :D
i think i get it now, sorry for being hard to work with, i appreciate your help.
No worries. You aren't hard to work with. I taught students at the university a bit and you always have peeps that need a bit more time and more detailed steps before it clicks.
Doesn't really say anything about how good they are in the future. I had peeps that were really having a hard time and by now work in software dev just fine, cause it eventually just "clicked" and the rest became surprisingly easy.
The majority of users on e.g. this Discord here just doesn't have the time (and potentially nerves) to do this very often.
Been a while since I helped someone this way too. Just make sure to avoid users that get frustrated and try again later.
Or maybe consider asking your prof or other students instead. A tutor might also be a good thing (that's what I was at Uni basically, for C and C++).
this explanation has helped because ive managed to get it to work! im going to try moving it to a function now.
I've tried to ask my prof multiple times, I basically get ignored hahaha
Yeaaah, idk how it is where you live, but our Uni basically had the main session with the prof, and then a secondary thing where you went to train. Our Uni required some weekly homework, because we had no limit on how often you can repeat the exams, so they filtered "bad students" with a point requirement at the end of the semester (points gained via that homework).
The person who did those secondary sessions was usually a student that already passed the overall topic with basically one of the highest scores you can get. They were then hired to teach for an hour a week + controlling the homework.
You could always go to those sessions and ask questions, let them explain things to you (especially the homework), etc.
And then additionally there was a tutoring session, where you could go to ask even more questions.
We usually didn't ask the prof itself, cause they always just read/write off of their paper that they have for the past 10 years and then leave the room :D
is this a good channel to post questions about my blueprints?
So I'm trying to make a jump for my physics object pawn but it seems to be tied to framerate even though im accounting for delta world seconds. Any idea what I could be doing wrong?
Don't use delta time for impulse calcs
JumpButton -> add impulse is correct
ok let me try removing it
A jump is instantaneous, it doesn't have a duration. One frame your velocity is X, the next it's y
you will jump giga high if you don't change your number btw
also jump height isn't linear with impulse
yeah I had to make it high for my guy to jump decent
wdym?
I'd just change that variable name to Jump Z Velocity and turn on Vel Change
try like 2000
Doubling the impulse/velocity is 4x the height
You could do the math to convert from desired jump height to the jump velocity but I'd just not do that, rename the variable and call it a day.
thanks mate seems to be working better now
is this slight variation something to worry about?
Nah you'll get that with variable time step
Just remember forces for continuous things (rockets, tires), impulses for transient things (knockback, jumping)
and to be clear, only add world delta to forces since they are continuous.
no
or anything that moves over time instead of an instant impulse
no need
You would use delta seconds if you were wanting to accomplish force-like behavior with impulses.
Impulse = Force x Duration
If you use AddForce for continuous things it'll have the time handled for you.
I do my tire physics with impulses for reasons, so I do end up using the timestep there, but I could also just use forces in which case I wouldn't
gotcha
Basically calling AddForce means "For the next frame, I want to add this much force to this thing, accelerating it via physics"
Calling Add Impulse means "I want to instantaneously change the speed of this thing"
hi, if i have a video file i want to play when a level opens, to mimic a cutscene for lack of better wording, how can i get the video to actually play? i have gotten other videos to play in widgets using the same method of media textures into ui materials and opening the source of the media player, but this one seems to just not be cooperating, ive tired using an actor to create the ui and just the level bp itself to create the widget and they both do but then the video is static on the first frame, the video file is in my movies directory for the project as well
yes ive used play node and play on open
Tried sequencer?
no bc im playing mulktiple other videos this same way and its working just fine for them
With the same logic, swap the video file to a working on to make sure it's not that.
If that breaks with a known working video then you might need to post code here.
I'm looking for some help in figuring out an appropriate data structure. I am limited to blueprints for this project, which makes it a bit troublesome.
I have an event system for button presses, and I have an enum for state. I need objects to be able to register to a button press and an enum. So ObjectA registers to 'Button A pressed while Enum B is selected', and maybe ObjectZ registers to 'Button B pressed while Enum C is selected'. Multiple things can bind to the same event, so naturally I will need an array of objects.
I can just hardcode arrays for each combination, but thats annoying.
I can't create a C++ structure to use as a key to a map even though that would be best. Blueprint structures don't allow for equality operator stuff I don't think, please correct me if I'm wrong (I'm also afraid of blueprint defined structs, it used to be very buggy, unsure if thats still the case in 5.7).
I could map the button to an int in the 10s place (e.g., 10, 20, 30), and map the enum to an int in the 1s place (e.g., 1, 2, 3) and add them, and then use that as a key to a map. That could work if I wrap the array in a struct again, but I'm not sure if that would be problematic. That would at least not change at all ever, since its just a wrapper, so there's less chance of blueprint corruption and such.
I could do some lame-o string operations, get the IA name as a string and append that to the enum as a string, but I'd rather not due to performance concerns (not sure if the concerns are warranted).
Anybody have any suggestions?
For reference, there will be about ~5-10 events, and ~5 enums
how many registered combos?
each one of those events + enum would be associated with a given array
the actual registered object number will probably be pretty small though, no more than like 15 at a given time
just a guess
realistically, it would probably be more like 3 enums and 3/4 events at a given time, but it could go higher
how often are these keys being pressed?
I'd probably just cook up a way to encode event,enum and send that to a dispatcher, which will forward it to anyone who could care. They can just each check if it matches their state
if their event,enum state is stored inside themself
yeah it'd be some branching but a total nothingburger unless you're doing this per frame over tons of actors
in C++ I'd do a event,enum key into a multimap but you don't have that in BP I don't think
even then it's still not free perf, for something this small iterating might be faster
I have an abstraction layer on top of the CMC, and my movement states (not modes, states - wall running, ledge hange, etc) have different conditions to evaluate them.
For instance, wall run would evaluate 'can I wall run' on tick while in the falling CMC mode, but slide should only evaluate when pressing crouch while in the walking CMC mode.
So some of them might be on tick sometimes, though I'm not sure about how many actors. Its single player, and I'm unsure about how to get NPCs to engage in wall running and stuff lol.
this setup scales well to a lot of different types of modes, and doubles as an ability system. This is where I'd like to 'equip' the slide state, and have the slide state tell the movement system 'you need to check if you can slide now whenever you press crouch and are grounded'. But I don't want to do the check if I don't have to.
these objects are not instanced though, and can't contain actor specific states. the movement manager has to read and act. Hmm. Let me think about that actually
You're doing all that but can't do C++?
not for this project no
I personally can, yes, but not for this project :[]
I guess maybe I can make an argument for C++ structs. those are super simple to understand, probably the easiest way to get introduced to C++ anyway...
I would use gameplay tag as states instead of enum
Tell this to everyone using a thousand bools
At least you are questioning yourself on the second bool and not the 5th or 6th π
I'm already questioning the first one.
If only our programs could read our minds
Actually a bool is 1 byte, while a GameplayTag is 10-12 bytes (i think?), so big brain there.
Almost inevitably your checks start as Yes/No. Then you need Maybe. Possibly jumps in a week later. Sometimes joins in a month after that.
Communication between actors using gameplay tags is significantly easier than creating an interface relationship and communicating in that fashion. I suspect there might be more bytes involved with that method.
I thought my sarcasm was implied

It definitely was! I just wanted to add that bit of information for anyone random that might come across this thread.
My food brain agrees that this makes GameplayTags superior. No one wants a 1 bite sandwich.
Gameplay tag also allow for multiple states (gameplay tag container).
hi guys, just because I ask last time in #cpp how much should be done in BP, if prototyping is valid in BP. I wanna know what you guys think, how muc work and what work should be done in BP and what in cpp?
Funny enough sometimes some people are horrified at evaluating boolean at tick.
My precious performance!
No real answer, depends on the need and type of project and preference.
I use blueprints when the choice is taken from me, like with the AnimGraph (maybe ControlRig too, although i moved all of my functions to c++).
Not comprehensive but my general rules are... Is it structural? Do it in C++. Else do it in BP where scripters can alter and play with it. Is it a performance issue? Do it in C++
Personally for me the ratio is 90% in cpp soo far.
Bp for asset reference, widget blueprints and high level blueprint assets.
I tend to go heavy on cpp because I had my fair share of silent blueprint corruption.
Ohh wow so you also are heavily on the cpp side, I thought you lean more towards bp.
What do you think about StateTreeTasks, also a lot of cpp?
Blueprint logic are applied to only widget and spells for me because I wouldn't mind redoing a bit of logic.
Better than being horrified to use Tick at all at least 
I haven't explored states trees, though I should.
Just using behaviour tree at.
Well those people r afraid of tick π³
And what about thinkgs like GAS abilities also mainly in cpp?
Tasks are easily done in C++
GAS abilities should be mostly done in BP. That is gameplay scripter territory.
For me, mainly in bp.
I have native class ofc. There are things that not exposed to bp.
I've done them in C++ but I was always not sure if this would be something that would be done in BP normally
You should just dive in tbh, its something you figure out along the way imo.
Tasks are structural though. Wait how did you do tasks in BP? I thought those were an async node? Can you do those in BP?
For me its like the thing, BP feels it's "faster" to implement, since you are not compling and if you have to fix something its quite quick. But C++ ofc is way more strucuted and feels way cleaner and easier to implement, especially having a programming background.
Only things that are meant to be done in BP by design is AnimGraph/RigVM and UMG in my opinion, there's probably more that i've just haven't used yet.
Ok crazy, so all the lyra things and everything, it's more like "it can be done in BP" but for a real project you would do it in cpp?
Would you also tend to do GAS abilities in C++?
I dont use GAS so i can't answer that question, but if i would and it could be done in C++ (without heavily modifying the engine for it) i would.
There's no definitive answer, a lot of times the overhead is negligible that it comes down to a preference
Every GAS abilities in my project have a blueprint asset. Most logic are done in the bp.
There are some heavy lifting on the native class, such as instancing new ability but other than that. Mostly in bp.
Ok cool, but that really reassures me to do even more things in cpp if you guys are also leaning to do a lot in cpp.
My rule of thumb is, anything high level and a few nodes can be done in bp. Especially if the object is contained. Like GAS spell or gameplay effect.
I will not make a whole system in bp and deal with spaghetti but that's just probably skill issue on my end.
But it's mostly structural reasons right? Because BP might be limited to a degree and that they can get messy and code is way better to manage in that regard.
And use BP more for "design" choices and configuration but not really the logic behind it, or just simple logic right?
Yea applying GE and stuff like that right
Realistically, you'll get answers to this question ranging from BP only to C++ only to anywhere in between. And I'm not exaggerating about that. But realistically it just depends on your style and or who you're working with. Don't do it because people tell you, do it because you and or the people you're working with find it the easiest way to achieve your goals.
I just hate using blueprints, my current go-to is:
Can i do it in C++? -> Can i do it in AngelScript? -> BPLand
Agree with this. Fastest way is to just dive in and figuring it your self.
Everyone journey is different.
No for me i like that
I was still heavy on bp before I deal with corruption.
Yea for me I was a bit hesitant in regards to the Cpp thining like I'm trying to work against the system or something
but i also know there is cropout and you could do a whole game in bp
You are making the system. Start building and you will figure it out.
Kind of. Even Cropout's earlier systems hacked CommonUI a bit to make it work. And also Cropout is an exceptionally simple singleplayer game.
and i get that for designers bp might be more acessible, but also understanding now that bp is or should be just the tip of the iceberg
Yea ^^
You shouldn't do whole game in bp for any project that is not a prototype or simple.
IMHO.
100% bp is just asking for pain. Not to be smug but things like bp struct break.
You are the system manager, do what feels right.
No one cares if you have 10 cpp files and 1000 blueprints assets, or your entire game is built around a single switch statement ( like undertale).
And not being able to use unexposed function is not great.
Ok cool but I really appriciate you guys feedback, I feel way more confident to rely heavily more on cpp
Yeah. That's another fair point too. To focus on prototyping. It gives you really good real experience. Games change fast and need a fast playable iteration. So it's good to throw stuff together fast. And you get experience both being able to do that, as well as compose it later into something better and more stable afterwards. And those are invaluable industry skills.
I'm not saying go heavy on cpp. If you start building your project you will get the feel on what to refactor and not.
I get what you are saying and it's quite funny because people quite care a lot about his switch statement π
But you can always write a BFL wrapper for it ^^
They care because it's funny, they do not de-value him or his game, that's different.
That wouldn't be 100% bp already.
Yea that was my initial question for the CPP guys back a couple of days ago, but let's say there where quite a bit more strict views in regards to that π
The people that frequent that channel usually aren't the ones doing that. They're largely engineers who get put in a dark room to make things work the best way possible.
Yea I know and I totally got your point, it's like one thing I learned after years of coding, especially the non technical people don't really care how it's done.
Don't game jam actually not so great in some aspect?
I think it depends on what skill you want to hone.
A lot of people focuses on rapid prototype for game jam. They bundle something quickly but the moment they need to turn the project serious, they have to refactor majority of the code or scratch it all together.
I generally advocate for involving C++ but I really canβt recommend you iterate in C++ during prototyping unless you need to
Takes forever for me to fix bugs π
Close editor, compile. Cry. Repeat.
Do you use live coding?
Nah
Youβre gonna have much better velocity towards fun in BP even if you reimplement everything in code later
Because livecoding is not to bad as long as you are not chaning the sturcutre of you class that what they say
Exactly, you're making a product for the average consumer, who only cares about how pretty your game is and how it runs.
Not saying its bad. I know people use it and it does the job.
The main thing about gamejamming is that it's a requirement for publishers or advertising. It's better to spend two months throwing together something that could be shit and getting told it's going in a drastically wrong direction or is entirely stupid and being able to scrap it than spending six months to a year making it well design project structure wise and being told the same thing.
But thank you guys a lot now I'm looking forward to write some more Cpp code π
Remember, the best blueprints are the ones in c++
this doesn't help unfortunately, as I need to have two orthogonal states. So even if I had two tags, I can't use two tags as a key to a map without making a custom struct in C++
A Key to what?
to a map
GameplayTagContainer
Really?
Wait, seriously?
Weird. I wonder why. It should be hashable...
Maybe it was just an oversight and they didn't add the hashing for it.
It makes sense because you can add new tags to the container which could cause issues if it then matches another key. It might be doable in c++ though if your using a pointer but in BP it's always a copy if i remember correctly.
Singular gameplay tags work though.
I'm not sure I follow? I wouldn't be any different than changing an integer, or an FIntPoints's internal integer.
Conceptually I mean. If you could access the TagContainer, regular Integer or FIntPoint as a reference. Changing their values with that reference is then the same conceptually.
I guess, but if you get the container, add a new tag and readd to the map, if the tag combo already exists it'll override that instead of the original.
To me it would be pretty confusing.
Yeah. But to be fair you shouldn't be messing with a Key's values like that anyhow. Like I said. It's no different than having Integers as a key and having 32 already in the map as a key, and getting 7 by ref and changing it to 32.
Have you checked the perf of just iterating or doing some other thing besides using a map?
You said you only have like 10-15 options
nah but I just convened with the gang and C++ became okay, so none of this matters anymore lol
Still keep it in mind. A short loop can be faster than hashing a bunch of shit together to look up into a 15 size map
Yea, I wouldn't mess with the key value either but with a gameplay tag container, I'd imagine a lot would try. π
You mean 4
If it's a small number it can make sense, just pack the bits together and call it a day. Can be worth.
That's what you get with 2 bools though, 4 implicit states
thats the problem if they're meant to be exclusive
But two booleans.
I've done that a few times. Using the bools as bits and convert to an int. Not the most user friendly but if you need all combinations it's a nice approach. (Assuming you don't have too many)
I love doing this method, or bit packing in general, because it makes me feel like cool hackerman
Bitwise operator only make sense for networking to me
is there a defined order for BP construction scripts in a hierarchy of child actor components?
Are Event Tick nodes always called first, or does anything (like physics or delays finishing) get called before it?
In theory child should construct after the parents starts construction. But it is not safe to assume the parent will be finished constructing by the time the child construction starts.
Also child actors are not a good idea to use in general
There are tick groups, you can change which tick group the actor belongs to. There is a pre-physics group, post-physics group and a few more.
https://dev.epicgames.com/documentation/en-us/unreal-engine/actor-ticking-in-unreal-engine?utm_source=chatgpt.com
As for delays... I'm not really sure. They are not strictly connected to ticks, another system handles latent actions.
I have this immidiate camera snap during level sequence(when dying). camera cuts are fine in the level sequence, it happens immediatly when I trigger the dying animation. Does anybody know whats going on with this problem?
heed the advice from the other channel... don't use CAC.
I see, thanks
Im trying to get my character to jump and 'lock in' the momentum or play input they have so there jump arc is consistant and can't be influenced by player controls. kind of like castlevania. Everything online tells me I should adjust air control but turning it to 0 kills all momentum.
You need to also set braking to 0 I believe
There is midair braking or something like that within the jump settings
It also affects falling though
im trying to make it so an npc runs the opposite direction of the player when they get too close, how would i go about figuring that out? ive got all the sensing right, its just making it so the npc runs away
so when the player overlaps the sensing, it runs in the opposite direction of the player
Are you able to tell an NPC to run in a direction or only to run towards a point?
thats what ive got in terms of movement
havent got anything custom persay, literally just using whatevers available in ue5
Flee is the event i want to call to make it run in the opposite direction
You should delete the tick and do once and connect Roam to the Delay. Then connect the Failed pin to the delay as well.
This isn't a movement problem. You should check out behavior trees.
changed it to that 
You have a structural problem, you only have one "mode"
there needs to be a roam mode, and a panic/run away mode
at least a bool somewhere representing the state
i think it is a movement problem in the sense of i dont know how to make it actually move in the direction opposite to where the player is in relation to the npc
The same way you're doing it now
Just change how the point is chosen
Not specifically. This really is an EQS/BT issue.
well yeah if you wanted to do it for real but for this learning example it's worth making it work
BT should detect that it needs to flee, and take the path of running an EQS that picks a move point away from the flee target and moves there.
I'd take the detour of learning it, honestly. This is a very small example, so it's a great oportunity to learn it early on before you get too much logic.
ive never heard of eqs let alone use it 
what does it do differently that i cant do here? only reason im using stuff that i know is because i procrastinated too hard and my assignment to make a game prototype is due on the 6th
It's just the more correct way to do it. More scalable.
Adriel is right though, you can just pick a different location in your Roam there if you know it shoul dbe fleeing.
how would i actually find the location though? no nodes to figure out that math/logic comes to mind
Find UnitDirection from the player to the self. This is a 1.0 size direction. Multiply this by how far you want the thing to flee. Add it to self's location, project to navigation.
Environment Query System. It's more tied into the existing AI stuff that comes with the engine. It allows generating a set of unfiltered points (e.g. a square, a circle, a donut, or something custom if you want to generate your own set of points). And then you can apply filters to the generated points, that either fully cut points away or apply a weight to them (e.g. the closer the better, or the more behind the target the better).
The whole thing is designed to be modular and reusable. Different Generators and be mixed with different Filters (resulting in a Query) and Generators and Filters can each have parameters. Some even runtime evaluated ones (e.g. "What is the forward direction for the 'filter everything behind this point' filter?").
I think it also allows generating a set of Actors and filtering those. Not just points.
E.g. one could generate all enemies and then filter so that the closest and mostly in front actors are chosen.
Filters can also be custom written, so there isn't really a limit.
Could check if a path via navigation exists. Or have the points that are generated be provided by a cover system so that an AI can find the best cover point to walk to.
Hello everyone. I'm working on a third-person game and I need to make it so that the player can control both of the character's hands separately when climbing a rock. For example, by holding a button and using the mouse to guide the left hand to a specific ledge, the character could grab onto it, and the same with the right hand. I just can't figure out how to implement this mechanic. Iβd appreciate it if anyone knows how to do it.
Question, Im trying to Learn Gas and im having a bit of a problem trying to implement the hold left click to continuously attack inside gas but it wont work, but seems to work fine in the actor component... could someone help me?, I tried to replicate what i did in the actor component but it seems like its having an issue
Here is the working BP inside the character component
https://blueprintue.com/blueprint/fgk53k01/
Here is the BP not working inside the Gas system
https://blueprintue.com/blueprint/il688iwa/
And i have this inside my character blueprint
https://blueprintue.com/blueprint/ztdkjo_a/
You know how your roam is choosing a random point in radius around the AI?
Just choose a random point in radius around a spot that's projected away from the player
or choose a bunch of random points around the AI and choose the one most away from the player
however you want to express it
I know this is a herculean ask and feel free to just tell me "yeah man youre cooked" but I have the very basis of a game with movement and such but I wanna test online capabilities with blueprint only. I havent done much research yet but from what I gathered on the documentation is that there really is not an official document to guide someone through this. Ive gotten as far as clicking replicate and starting a test session in editor which only shows movement from the server and not from any clients (which I can only add 1 other for somereason)
Do you guys know a good source to learn how to adapt my simple game to work with friends? no need for a dedicated server or anything.
theres a couple of youtube tutorials out there for it
You can test it in editor pretty easily with BP only. At least what you have already. Though there are things you'll need to set up correctly for it. As Player said there are some guides on it. BP networking stuff isn't as robust or nice to use as C++, but you can do a prototype at least.
I personally used the gamedev.tv multiplayer course for it. You need to do some C++ but it isn't that hard with a course, they guide you through it. Although I never actually tested it with Steam, only between a PC and laptop in a standalone version.
Anything you do IP connection with, will work on Steam too. Nothing differs there besides the backend which names your PlayerState, and handles the connections. Your gameplay networking will be the same thankfully.
Yeah I'm just saying it to communicate that I didn't use the course to completion
Easily with EQS. You can just get the forward vector of the actor you want to flee from, multiply it by X distance, then add a bit of randomness in the direction.
Completely random thing.
Why can't the threaded update for animation blueprints just NOT access rotation?
Some weird limitation with the property accessor, or some legit reason?
Following a blueprint tutorial, why did it work with him but not me, i have to use the cast to bp_thirdpersoncharacater and not it's variable
here it works
here it doesnt
nevermind i found the fix
If this is some kind of damage box, just run a timer that checks for overlap every X seconds. Then apply damage.
he set the bp characater after the cast then it's the same as mine
i will keep that in mind, just learning the basics rn
if it works it works, i'll make it function and run smoother in the future
Why check for overlap so often :O
Should just store Actors on BeginOverlap in an Array and remove them on EndOverlap. And then use a timer or tick to apply damage or whatever to the array elements.
Cause you never set that variable.
True, ^ is definitely better.
yuh thats the reason, i already figured it out
I'm confused as to why this global variable cannot be set more than once?
Current Behavior -> Global variable gets set to true, does not get set to false when it should
Expected Behavior -> Disable Perception correctly sets global boolean to true. Then, Enable Perception should correctly set global boolean to false.
Additional info for pictures if needed:
Picture 1: STT_Change Parameter - Changes the global state tree boolean and lets you choose whether its true or false.
Picture 2: Evaluate Perception - Shows the initial branch logic where it checks if the state tree property ref State Tree Disabled is false then continue( this starts off as false since we want AI to receive input on start)
Picture 3: State Tree - 1 -> Shows the initial bindings to ensure these are correctly setup. 2 -> Showcases what the value should be at the point in time (Enable perception = true, disable = false as we can see)
also - I'm not sure why but I never get responses back for any of my questions. Is there something I'm doing wrong here?
try asking in #gameplay-ai
Thank you :D!
Is there any way to truly tell which actor/asset an error is coming from? I cannot package my project at all, All i have done recently is replace my GPU, and the output log seems to just link back to the default code for user defined structs. there are no other issues flagged, just this. Its a pure blueprint project. And I am able to package a fresh project just fine
Do you have the full log file you could upload?
here it is
maybe need debug symbol to see meaningful error msg
What is this \BigMapPannel.uasset?
LogLinker: Warning: [AssetLog] E:\Unreal Engine Projects\CodemakersGame2\Content\ThirdPersonBP\Blueprints\Minimap\BigMapPannel.uasset: VerifyImport: Failed to find script package for import object 'Package /Script/MinimapPlugin'
This is the last link that was attempting to load before the ensure triggered.
But yeah as ColdSummer said, definitely worth grabbing symbols to get a real callstack to see if it might give more info.
Its a widget overlay for when you pull up the 3d minimap view, and alright i can see about that
I cant seem to decypher any issue with the symbols installed, the log seems to purely be referring to the core engine things still?
Family=14.36.32532, FamilyRank=1, Version=14.36.32548, HostArchitecture=x64, ReleaseChannel=Latest, Architecture=x64, Error="UnrealBuildTool requires at minimum the MSVC 14.38.33130 toolchain. Please install a later toolchain such as 14.38.33130 from the Visual Studio installer.")
@simple berry
Written in your log
thats... weird? I see no available updates and have the latest version enabled in the visual studio installer
Can you show the installed msvc component?
To my knowledge if you don't want to specify the version via the text file then you need to only have the right msvc installed (e.g removing the older ones)
apologies, I went into the installer and uninstalled all versions except for the .38 one, the error is now gone for detecting a wrong version, but the same issue for everything else is still occuring
Share the new log.
You normally want to see the first error at the top.
Having multiple errors is quiet common and for packaging, there is no room for error.
Can you build from visual studio instead and share the build output
Maybe that will point to the relevant error more.
check if you installed Desktop development with C++ in visual studio?
Yes, It is selected
is this possible to do without converting the project into a C++ one? its currently purely blueprint
Have you used any plugin like this?
- Missing plugin / broken asset references
The line
VerifyImport: Failed to find script package for import object 'Package /Script/MinimapPlugin' and the references to BigMapPannel.uasset
means your project contains assets that depend on MinimapPlugin, but that plugin is not installed or not enabled in the project. Because the plugin code canβt be found, Unreal canβt load those assets, so they fail during import
yes you can do package without converting to c++ i also did the same sometime ego for only Blueprint project
You can package bp only proj but i don't know if the output log in the editor equivalent with the build output.
rate this blueprint
heres another "advanced" blueprint
Anyone can make a random mess of wires. The problem is where someone actally uses blueprints like this
