#blueprint
1 messages ยท Page 392 of 1
I keep mine separate like Black Desert Online inputs. F is a skill. Shift F is a different skill. The combos have nothing to do with the inputs. Each skill has an input. In Street Fighter it would be like LP + LK+MP is the combo. While each kick/punch has it's own input.
EIS is just the input handler. It says you're inputting a specific type of move. It's up to an actual combo system to decide if it wants to allow or ditch that input.
usually in fighting games you want it to respond to the first key and then blend into a different thing after the first thing ends
I only have the basic attack buttons as enhanced inputs
and send a blueprint interface trigger into the combat actor component to add all the pressed buttons into an array
this wont even do that
then that array is processed inside the loop by checking if the pressed combo matches with a row from the table
if not, remove the last item from the string array and check again
uh
It sounds like you are trying to jam the entire combo in by the player then actions start?
if a match is found, all loops are stopped and a row with that matching input is called to send the containing data into the combat component to play the animation
its very wrong in a lot of ways
how so?
but if it works it works
That sounds fundamentally wrong from a game play standpoint
Because in Street Fighter for example if you fail combos you still do the actions
Or some portion of the inputs
its like orange flavoured chocolate , you can do it, but if i had to eat it myself, i would rather [censored]
A fighting game like Tekken would buffer the inputs within a window
then just evaluate the keys at the end of the window to perform an action.
exactly how mine works
if no combo match is found, the character will perform a basic attack based on the last pressed attack button
if it works for you it works
I use Data Asset to define the combos. Then a series of Gameplay Tags for each combo.
just dont expect other people to like it ๐
I'm focused on making the input response more flexible
string comparsion shouldn't be a go to ever imo.
by building messy and overcomplicated systems you are not making it flexible for future adaptations
its the opposite
Everyone start from somewhere. Who hasn't rework their system over and over? literary no one.
yeah its fine to start with a solution like this everyone has to start somewhere but then you start making it better
by simplifying it
making something simpler doesn't mean better
if it achieves exactly the same things with the same amount of modularity (or even more) or performance or whatever you are after then yes less code is much better then more code
Someone has to code these insane inputs
Is their an easier way to update an individual entry in common tile widget?
I have a shop I update with a custom input that changes the selected quantity of an item.
The issue is, when I use regenerate all entries node, it changes what my highlighted selection is. In the first picture I selected iron spear and updated its quantity, but it is now selecting the helmet.
I can't figure out how to get to the specific highlighted entry and just update that information.
Create a function for refreshing the displayed value in your widget that your list view is using, and call that instead of regenerate all entries.
How to I get to the highlighted widget I have? Get selected item returns an object and get displayed entry widgets returns an array of all widgets in the list
I'd assume that one of these casts has the appropriate reference since you seem to be changing the values in them.
I was able to use this setup to cast to the list view entry instead.
This seems to work.
so it was said that using string arrays is not good
so I looked up the internet, and yeah... I now see why strings shouldn't be used in places that fire too many times...
how bad is it? ๐
I would handle this on the entry widget itself. On the interface you have to implement, there should be a function for when it becomes selected. When triggered it can do what it needs to do based on its own object that was used for it.
Profile and see how it runs and then swap out for using names, profile again. string comparisons can be pretty heavy and here you're doing it on a loop so you should definitely switch unless you absolutely need to have it as strings.
great, cause I switched the strings and enums to names
and tbh
the game project I'm aiming for is pretty big
so I know for a fact that the old setup was going to create problems
also I did wanted to use the profiler first and check things out
but I forgot how it's called exactly
plus that I can only find the Profile Data Visualizer
there seems to be session frontend
but it's not showing me how much is something doing
I have a master BP for the weapons in my game; it uses a root physics component along with a child static mesh and skeletal mesh. When a static mesh is assigned to the component, it works fine. But assigning a skeletal mesh breaks it so the item falls through the map. Both the static and child mesh components have the same collision settings. Any ideas?
I've confirmed that the skeletal mesh has a physics asset, tried different combinations of simulating physics being on or off, and have tried assigning the skeletal mesh as default rather than at runtime; I've yet to find a solution. The skeletal mesh works fine when added to the word (i.e. not assigned to the component in the blueprint, but instead placed in the world).
if you make a new basic actor
and give it a skeletal mesh
does it fall through the floor
Nope - works fine when it's outside of that master weapon BP
does a basic actor with a skeletal mesh and physics achieve the behaviour you want for the weapons?
why do you need to do something different in the weapon bp
you can also use a different blueprint for the weapon that you see in the world (which doesn't need animations) and the one that the player actually uses when he picks it up
It's a roguelike that rolls random weapons and stats, so the data (including meshes) is based off a data table; I could use a different one for the in world vs the equipped version, though itd be a bit tougher to transfer all the rolled data back and forth
I'm sure it could be done if need be, just hoping to try to figure out the collision instead if possible ๐ค
What's the thing doing physics, the root collider?
its something in your setup thats why i was asking more about the setup and why it's not standard
The root physics component is a collision sphere
Could be that skelmeshes don't support automatic welding?
What happens if you have a skelmesh with no physics asset
my AI characters all use collision capsules and nobody is falling through the ground
Yeah, I can't replicate it in a new actor component even when trying to set them up similarly
I'll try removing the physics asset now
the skeletal mesh component should be completely separated from what happens with physics , same with static mesh
sometimes the easiest is just to recreate it step by step and see where it breaks
and if it doesn't break and you have everything then gz you are doone
Does anyone have a better idea for having very simple buckets with liquids - but different types of liquids can go inside?
For now I have:
- LiquidMaterial
- Cylinder StaticMesh attached to the bucket: it is the actual representation of the liquid, semi transulcent
- Curve asset for scaling the mesh (bucket is not a perfect cylinder)
- CurrentAmount - variable that modifies the mesh OnRep
So when the current amount of liquid changes, it takes the data from the curve asset, scales/repositions the cylinder mesh. Hides it if empty, changes material if there is a new liquid etc.
But it kinda looks like a lot of components for something this simple
can you name 1 game that has done it
I mean, not really, it is just a moving plane of water representing how full a bucket is
either you do it very simple like minecraft or you make something a lot more complicated
Is the set of liquid types fairly static or will you have a lot of them?
if you make the bucket asset a little bit more suited (thicker walls) then you can get rid of the scaling
just design the bucket in a way where you can move the water up and down
you can either just move a plane
or you can make a fancy shader for it
There can be a few, maybe 10-20. Data for them and the material will be from the datatable
if you set it up as a material with parameters for blending between different types then you can have mixtures of multiple liquids
Just make a material instance per or make the material parametric
Wouldn't I need to tailor the shader to the size of the bucket anyway?
if you simplify it down to moving a plane up and down then you can't make the solution any more simple
usually the plane of water clips into the side walls of the thick bucket to hide it
scaling will look weird
there are better ways
like just using an animated mesh
Tried removing the physics asset and tried spawning a weapon with a skeletal mesh multiple times; oddly, one stayed on the ground but the rest fell though
how large is their collider
and is their collision detection set to continuous
Does a naked base actor with no mesh fall through?
Just with the root collider
Naked actor with no mesh does not fall through - it's like the skeletal mesh negates the collision detection on the collision sphere
Sorry, are you referring to the physics asset of the mesh or the root physics component?
Still falls through whether CCD is on or off
What are you doing to kick this thing off, only enabling physics on the root sphere?
Typically a different actor uses SpawnActor to spawn the weapon class (though I've tried placing the master weapon BP directly in the level too). The Root physics actor isn't modified in any way during the spawn - it just uses the defaults. (I've tried omitting the simulate physiocs nodes in the ss, as well as having them use the target of the physics component instead, both with the boolean toggled on and off - no luck). This screenshot is the logic in the weapon master BP
These are the physics and collision settings of the skeletal mesh component (identical to the static mesh component)
Hoping I'm just missing something obvious but I feel like I've tried every combination of simulating physics and enabling collision
fwiw this is the logic in the other actor that spawns the weapon master bp
I need help finding boxextent and box center from a array of locations https://blueprintue.com/blueprint/379f451x/ This blueprint in my mind should work! but all I am getting is a small box not at all covering the area, and the center is awlays way off to the left
you need a sequence which handles all components
what do you mean?
What is the recommended place to set up a player's HUD?
Gamemode blueprint? Character Blueprint? Controller? Camera?
I have seen it start from GameMod, controller, and player. I start mine from player
What about the Hud class?
I don't understand the built-in HUD class at all.
I sapouse you could even start in the game instance. So It up to you. What is most important is that you can easly refence it from where ever it needs to interact with
It got created at the beginning of the game and have a getter (get Game Hud)
Thats all, its a simple class.
You shouldnt have your widget all over the place. Instead have them in the hud instead.
Is there a way to do it for just a widget and not a widget component? Or should I want to use a widget component?
What is your overall question?
You asked wheres the best place to setup your hud?
You mean, add it to the screen?
And potentially bind up events related to it.
Theres add to viewport, and add to player screen
I prefer viewport if you don't support coop.
While player screen supports coop.
But, both "work"
Blessedly, I am not currently working on my multiplayer project.
What's the difference between just adding to viewport/player screen, and using the HUD?
The HUD class is just a little helper.
Its also just a "logical" place to store widget related stuff, cuz thats like its intended job.
Viewport, and player screen should state there differences.
I only really know the comments, but if I had to guess.
Viewport is the entire monitor, while player screen is the half or whatever that is the specific coop person.
(HUD only exists on that 1 client, and widgets only exist on that 1 client)
So, sort of planned connection, and just the naming.
Heads Up Display
Widget component used for actor owned widget.
Think of hp bar on an enemy unit.
Ah. I do not need that for this.
Then just make some event to create the widget in the hud.
And cache it there.
If you need to access it just use the getter.
Get game hud. Cast to my hud, get myWidget.
Why the cast?
To access the custom var on your custom class.
But my custom class is just a regular widget. Not an instance of HUD.
Is HUD a widget at all? I'm still not clear on that.
No, its an actor.
Just sort of meant to be a widget helper.
You create widget, then store a reference to said widget, in the hud.
If you ever need to get that widget later.
Why not the cast?
Cast is just a type check.
The hud helper will output generic one.
You need to cast to your hud to access your type.
I know what casting is, I'm confused on what HUDs are. I had been thinking of it as "the player's top-level widget" and that doesn't seem to be true at all. Does it control displaying widgets at all?
Its just an object that is created for you at the start of the game, with a "global" getter for ease of access.
You could technically make your entire game, without a custom hud class, if you really don't like it that much.
It doesnt do anything else out of the box but it meant to serve as a place to dump your HUD related logic.
That's what I've been doing in the past, but I figure it must exist for a reason and I'd like to at least make an educated decision about whether or not I use it.
I think the hud has like 1 special/ custom function related to drawing to the screen without using a full widget.
But, if you just use full widgets, then you just never need it.
So if I make a custom HUD, where to I set it and when is it created?
Game mode.
Its defined in the gamemode, and spawned with/ after the controller IIRC.
And then you can access it anywhere that you have a reference to the player controller?
Yes
THAT sounds handy.
Theres a static func too get player hud.
So if this is in my player class, I can mostly treat this the same, but I should make a Hand Sprite variable in the HUD instead and set it there?
Possessed is server only.
So, if your SP this is fine.
But, if your in multiplayer of any kind, no way
Yes, this is single player.
You also have no already exists check, so if possessed happens multiple times, then there will be multiple of your widget.
That can happen?
Once again, depends on the game.
But, just another thing to think about.
(I personally prefer to code in a way that doesn't have edge cases like that)
That be from big changes, bugs, or etc.
Sounds good to me. How do you check for posssedness?
You would use a var to the widget, on the hud, or player controller, and simply just see if its already valid.
Gotcha.
If your goal is that the thing is spawned and drops, it should be as simple as the root collider COMPONENT simulating physics and nothing else.
I've never messed with skeletal meshes with this technique but I do it for static all the time. A static mesh attached to some collision component with auto-weld on results in 1 physics particle with 2 colliders (if the static mesh has one as well.
My assumption is that the same should work for skeletal meshes.
Hello,
I am using a Data Asset as a manager to facilitate communication between different Blueprint classes. However, I am facing an issue regarding the World Context when creating functions inside the Data Asset.
Is there a better class than Data Asset to act as a manager? By 'manager,' I mean a primary class that handles communication between other classes.
I want to avoid using the Game Instance because it requires manual configuration in the Project Settings. Since I am developing a Plugin, I need a class that works automatically without requiring the user to set it up manually
Wrap your functions in a Function Library that pass world context for your asset to use. Realistically I'd make it a GameState Component and have them drop it on their GameState, but.. ๐คทโโ๏ธ If you want them to have zero config, with easy function calls, I think this would be your best bet. Good practice creating an API through libraries anyhow.
smells like a World Subsystem
The Function Library is a good solution, but it causes internal functions to appear to the user, even though they should remain hidden as they are for internal use only
Yes, maybe, but that's for C++
Do animations have a problem hitting keys positioned on the very end?
I'm having an issue with Play Animation Time Range where telling it to End on the last frame doesn't seem to fire that keyframe.
Someone told me I can inherit from the subsystem to declare it to Blueprint. So, I don't actually write any code?
If all I need to do is create the classes in C++ and then inherit from them to convert them into Blueprints, why is this person selling it for such a high price? ๐ค https://www.fab.com/listings/9d3f0583-008a-4c96-b203-975ab6c187b0
่ๅพ็ดๆฅๅๅปบไฝฟ็จ็ๅญ็ณป็ปBlueprints directly create subsystems usedๅณ้ฎ็ดๆฅๅๅปบๅญ็ณป็ป่ๅพ ๏ผๅจๅ ถไป่ๅพ็ดๆฅ Get ่ๅพๅ็งฐ_C ่ทๅๅญ็ณป็ปๅฏน่ฑกRight-click to create a subsystem blueprint directly, and directly get blueprint name_C in other blueprints to get the subsystem objectDocumentation: English ไธญๆ
Unless something has changed recently, you cannot create blueprintable subsystems.
Is there a better way to get a smooth average mouse speed than accumulating it and calcing an average every frame?
That's the only way I've been able to get a value that isn't super jittery.
.... it looks like you can... I did in 5.2.1 even <_<;
A blueprintable class needs to be defined in C++ first then you can create a blueprint version.
Oh they fixed it. Nice.
Not sure I would personally use them to code anything, but being able to put defaults without having to hand code it in an ini or a dev setting would be immensely nice.
Sounds like a fairly decent way to get it. I don't recall anything like that being default in engine. What's the use for? Like what are you smoothing?
How did it work for you? I made one, but it didn't work in the cast
You don't cast it. That box is the reference to itself.
I'm animating my widget based on mouse speed. But mouse speed is VERY jittery so I have to smooth it somehow or else it's teleporting between states constantly.
Sounds like a good enough case then.
Cool. It's working, I just wanted to make sure I wasn't needlessly recreating something that exists.
I don't understand what you mean. I created a UMyGameInstanceSubsystem and then inherited Blueprint from it. Are my steps correct?
What is the C++ class named?
Oh, derp right there.
Rename the MyBluepint. And call that getter. Not the MyGameInstanceSubsystem
Small chance you need an editor restart? Unsure how those getters are done.
Wow, it works packaged too
@dawn gazelle Thank you for this btw. ๐ I was about to start reworking our game rules system. And this is going to simplify that by a metric fuckton.
I am starting to believe the person answering learns more than the person asking
It's rare I learn new things in here. ๐ So it's a nice feeling when it happens. But it's also fair that devs get really set in their ways. Like.. initially my reaction is to say fuck no to blueprintable subsystems. But give it an extra minute and it seems nice. My one strict rule with them would be not to link them to anything else in the project outside of data. Like absolutely no casting or linking to non C++ classes. I might even entirely avoid putting code in mine and use the blueprint as a data setter.
I hope you benefit even more. Shall we get back to my problem? What mistakes did I make?
I found the solution ๐
So, not only is this true, but Play Animation Time Range seems to have a bug (?) where if start time and end time are the same and you play in reverse, it'll do a full loop, but if you play it forward it does nothing.
I'm not sure if that's a bug or intentional.
Definitely inconvenient for me though.
don't
Alrighty, the more I've messed around with this the more lost I've gotten, and I really hope someone understands what I'm missing. This is a timeline with event triggers. The far right keyframe is bound to one event, and nothing else is bound to it.
How is this possibly calling that event?
This will also do it.
What exactly is the problem?
The keyframe is at 0.4.
What about him?
?
Set the timeline to start from 0
Is that required? I don't want it to start from 0 if I don't have to. Being mirrored around 0 is handy.
It's best to start from 0; I don't remember ever needing to start from less than 0
What exactly is the problem with "The keyframe is at 0.4"? You haven't explained the problem specifically
I am telling it to play from 0.3 to 0.0 and it is encountering 0.4.
I am assuming that I misunderstand how this node works, but experimenting has only left me more confused.
This isn't specific to those numbers. The general issue is that I can tell it to play from x to y where x > y and it is able to hit z where z > x
Choose the correct option from here
oh fuck is there a redo button
i know ctrl z undos
but i didnt realize it went across tabs
Ctrl+y
you're a godsend
How is lyra able to do a sequence evaluator without it being overridden by the left hand pose override? When I try this, the "MM_Rifle_Idle_Hipfire" get's removed and I'm just left with an "empty" sequence evaluator that evaluates the left hand post override rather than both left hand pose override and the "MM_Rifle_Idle_Hipfire" like you see in the picture. I've tried looking at the docs and on unreal forums about this but I keep ending up with nothing.
I swear if it's because unreal isnt properly displaying the name correctly or something I'm going to shit a brick. This has been annoying me for a month now.
I have a 2 player game, Id like to get a reference to cast to the other players character from your own character. whats a good way to go about this? getting all actors of class "character" seems like a start but id assume theres a better way. I like the idea of getting a player index but most of the built in nodes are local only.
@narrow surge game state has an array of connected players (player array).
you're a lad
so im try to make a lobby menu something like supreme commander should i do this in it own lobby level and not on the main menu level
Do you need to transition from starting level to another before match? No? Then it can just be done on one level, w.e you call the level is.
Hello! I am trying to figure out how to fix this rotation issue when dragging on the screen with the mouse. I want the sphere to rotate the correct direction, currently it is going in multiple directions. would altering the pivot of the sphere fix this issue? is there a better way to fix this or handle this?
I know it is because on one side of the sphere it is negative and one side it is positive, but when you spin the sphere using the x direction, it will flip. How can I make it so that it follows no matter what? I need to alter the Y pivot of the sphere no?
Hi, question regarding preformance, having a healthbar that chefck the heal on tick rather then using a update custom event that updates when health chagnes, how much better is that ?
in regards on using a tic event to check and update a varible is this something i should try and rework so everything runs on a update ?
It is a good practice to have it run via event, to not waste processing power with unnecessary checks each tick.
But how much better? It depends. If it is one healthbar, probably doesn't really matter. Even if it is 10 it might have close to zero effect on performance - because often you will lose waaaaay more performance on stuff like AI, unoptimized meshes, lighting etc
yeah exactly
I would rework it but not because it would save performance - I just like making systems better
do not use event tick for final builds. use a custom event that only occurs when necessary
event tick is good for testing and light usage but not for unnecessary stuff
yeah but just doing checks tho.. but sure
? If something needs to be evaluated every frame then tick is the place.
Some youtube video is soo cringe n dumb as f ๐คข . Saying never ever use event tick.
Use timer instesd they say... that actually have more overhead if fps is too low.
lmao
hurr durr pro game optimizer
i avoid event tick as much as possible lol
Thats just the wrong mindset
You dont use it unnecessarily but when you need something done every frame. That is the only place.
Bp tick is brutal, but doesnt mean you should avoid it.
avoid BP instead
avoid game dev entirely tbh
lmao
The wording wether actually literal or not is harmful to learners.
"Avoid casting" "avoid tick"
"avoid unreal" kinda true for learners
Hello, Iโm trying to create a simple blueprint spline to build walls for some blocking level design. I managed through tutorials to have a spline that spawns straight walls, but Iโm stuck when it comes to having rounded corner meshes.
Is there a way to spawn that type of mesh when one point is inside a 90ยฐ angle inside my blueprint, without deformations or weird reactions?
Best regards !
(Here is my blueprint )
I don't think so. The SplitMesh stuff you are using will always deform the whole mesh along the spline based on the tangent.
What you want to us is probably more suited to be done with the BSP tools.
bruh ๐
guess what the alternative they provide. A timeline (Which runs on tick btw).
and in low fps, it will make unnecessary multiple calls within a frame.
#programmer-hangout message
@gentle urchin
well would you look at that xD
Hi everybody I am trying to make an aimtrainer I need to make a target spawning system can someone pls help because i am a bonehead
how do you want your target spawning system to work (where you do want them to spawn)
do you want to find a random point in a range around a spawner that you can place anywhere in your level ?
if (findrandompointinnavigationmesh()) SpawnActor of TargetClass
Thank you ! I will look into it !
Hey question regardingmy "almost" fresh project.
When i build it for testing the size is 19 gig... is there a way to se why its so large ? or whats included or something, im only adding the .list for what maps that should be included ?
Usually just check your map's Sizemap. Or anything you've specified in the AssetManager. Those are your usual two entry points for things getting cooked.
well do you se anything strange here :/ ?
This shouldn't be cooking anything. You have IsEditorOnly checked. So it's likely just going through your maps you have specified in project settings.
Exclude editor conten when cooking i had disabled
im guessing if thats it
also exclude editor content when cooking i enabled.
hope that helps
What are the sizemaps on those map assets?
or how do u check sizemaps :/?
im guessing its not the filesize right ?
nevermind found it sec,
1,2 gb + 1.2 +1 +2.3
so not that much
What could prevent adding an actor component at runtime from working?
You'll have to define "not working" first.
Does not exist.
The code hits the add and throws no errors but it doesn't end up findable.
I have a vague memory that there's a silent out on one of those functions when you call this outside of the blueprint that is meant to own the component. Which function is it exactly?
Add (Component Name).
It's a custom component. And yes I am doing it outside the owning actor. What is a silent out?
Means it stops the execution after a check without a log or warning.
So it's probably just not working at all?
I don't recall where I saw that code before. But I'm 90% sure that if you made a function that called into the owner and called that from your current Add site to make the actor add it's own component, it'd work.
I remember I couldn't destroy a component outside the owner, so it might be similar here as well. I had to make a delegate to request the destruction from the owner
Show code
installed a plugin in my editor under "Marketplace". its the ludus ai plugin. it appears in the plugins menu and i enabled it, but none of its features exist
could someone help me with some architecural decisions? running into some issues with quite a few edge cases etc
Anyone :// ??
Spit them out and someone will pipe up
Look through the other crash logs in the Saved folder (look for the last one with error message from the bottom), usually they have better information which file caused the crash - especially if you have debug symbols installed
its when i load a map quite heavy on the visuals id say when i made a new project with same stuff everything smooth so some setting is messing with it
any known fix for this happening? has this throughout multiple projects (happens at least once a week) where interfaces break their connection and are replacedhttps://cdn.discordapp.com/attachments/1162415123969884202/1483221663448563752/image.png?ex=69b9cd51&is=69b87bd1&hm=2c39a6d03605669b33825765a63a7c962c65f4e88a019aa15e8954e6bdb138e4&
renaming it doesnt help
this happens a shit ton on projects for me, and my team (5 others)
(5.4.4)
Log file open, 03/16/26 22:09:30
LogWindows: Failed to load 'aqProf.dll' (GetLastError=126)
LogWindows: File 'aqProf.dll' does not exist
LogProfilingDebugging: Loading WinPixEventRuntime.dll for PIX profiling (from ../../../Engine/Binaries/ThirdParty/Windows/WinPixEventRuntime/x64).
LogWindows: Failed to load 'VtuneApi.dll' (GetLastError=126)
LogWindows: File 'VtuneApi.dll' does not exist
LogWindows: Failed to load 'VtuneApi32e.dll' (GetLastError=126)
LogWindows: File 'VtuneApi32e.dll' does not exist
LogWindows: Started CrashReportClient (pid=22976)
LogWindows: Custom abort handler registered for crash reporting.
im guessing this is the relevant part
interface hasnt been renamed (the class, the function has lol), the folders didnt change name, no changes to interface, all are fine, but roughly 1 in 10 break
Hi everyone! I'm planning a rally-style time trial game in Unreal Engine 5 and I'd like some advice on the best architecture.
The idea is simple: cars drive from point A to point B on rally stages and I record the time.
Current design idea:
10 different cars in the game
the player chooses a car from a garage menu before starting a stage
10 rally stages (tracks)
each run is a solo time trial (no AI opponents)
I record the total time + split times/checkpoints
For progression:
each stage gives points based on the final result
I'd like to keep track of the results across all stages
I also want a separate mode where the player can:
drive a stage
record their time
submit the result online
Then I'd like to have a web page leaderboard showing the best times for each stage (updated from player submissions).
My main questions:
What would be the best way to structure the timing system and checkpoints? (Spline + triggers?)
For submitting times online, is it better to use:
a custom backend API
PlayFab / EOS / similar services?
What is the common approach in UE5 for secure leaderboard submissions so players can't easily fake times?
Any advice or resources would be really appreciated! Danny
Why the heck is this double-spaced lol.
I want to set parent socket to head but when I do it it turns to left like this and rotation keep 0 how can I handle it
You don't want to keep the rotation 0.
You want to use the rotation of the thing you're attaching it to.
In terms of worrying about fake times, you won't really be able to control it if you're trusting players to submit their values. It doesn't matter which backend you use, they will all have similar problems as you're allowing players to submit data. You may be able to set up the backend to only accept certain values for certain tracks, but that won't stop fake entries and players could discover that minimum you've set.
The only actual secure way is to have players connect to servers that you control that those players play on, and those servers keep track of the values as the player plays, and submits the values on their behalf. At any point where you allow players any method of submitting through their computer, you open up a means for fake values being submitted.
anyone know if i've made a mistake on the blueprint here? I finished this, and now the character can't walk. The blueprint is working as intented, but she can only turn and jump, the walking animation won't even trigger anymore :/
deleting the new nodes doesn't fix it either
What calls "Primary Thumbstick"?
i'm not sure actually, i edited the og movement input for the third person base, and it was already there. Could it be messing with the walking animation?
Well to be honest, I'm not sure why you would need that interface at all assuming everything is set up correctly with your input systems and your Primary Thumbstick would be bound to IA_Move.
Try connecting "Triggered" on the IA_Move node to the top "Move" node and see if your movement returns.
that fixed it! thanks so much
Is there a way to draw a line with a tiled image as the brush?
As in, say I have a sprite of tangled wires that tiles vertically. I want to render that in a three-dimensional plane between 2 points, and have it still face the screen like a billboard.
hello. Im learning unreal and im trying to impliment a sensitivity feature with sliders but im getting a bunch of confusing errors in like a whole different BP. It might be straight forward but i dont really understand what im reading. If anyone is willing to help itd be greatly appreciated ๐
These are Widget Components. There is stuff on them that isn't black, but it's on the other side. They're set to double-sided, but that just makes the other side black, not a mirror of the texture. Is there a way to get them to do that?
Sup everyone, hopefully I can get some help on this. I was following the "Simple Options Menu In Unreal UE5.2," which is on YouTube, and I'm having issues with two new functions I made in my project, one for brightness and the other for a PS1 shader toggle. Both are separate post-processing volumes for which I get the tags in the event construct of the graphics widget. The funny thing is those only load once I go back to the graphics menu in game, and I don't want that the master volume loads fine though. And i also create the widget in the menu level blueprint so everything loads on game start. I can't figure out why the PS1 shader and brightness won't load. Help would be great.
Do you load your Settings save game anywhere outside of your widget to read the values and set your object with the correct values?
no its all in the graphics widget
That's where the problem lies.
Creating the widget in your menu level blueprint isn't really the answer for "loading" your settings, as when you swap levels presumably your Post Process Volume won't be the same one as what might be present in your menu level, and therefore, won't actually be "loaded", you've just set that one instance in that one particular level to that value.
In order for each of your levels to properly load the values you're looking for into the post process volume, you'd either have to have the begin play of each individual level blueprint read the value from the save game (kinda yucky because you're duplicating code across many levels) or you can use a more common gameplay class (gamestate? gamemode?) and have the code stored there instead that attempts to get the post process volume and set its values from there.
I was trying to do it in my game instance, but I'm having a hard time setting it up there
You could use the game instance for storage of the value by loading it using the Init event, but it doesn't really help with actually setting the values in the levels themselves.
Sadly blueprint GameInstance doesn't have the function that lets you know a new level was loaded.
now I'm really confused, i haven't touched most of the things you stated yet is a 1 on 1 possible for you because i think this is gonna take a while
Start simple if you need to....
Use the level blueprints. Use Begin Play of them to load the value from your save game, and put it into your post process. This does require you to use the same code in all of your level blueprints if you want the value loaded in your post process volume.
The next step is to move that exact same code to your GameMode or GameState's Begin Play.
Is there a way to view the raw output of this node? I would really like to figure out if it's being expressed as 0-360 or -180 - +180
Show the errors
I feel like I'm missing something. I'm trying to combine two direction vectors but the order seems to make a difference. Does any one have any ideas what i'm doing wrong?
Edit: Never mind, i shouldn't be multiplying by 0.5 as it shrinks the magniture of the direction.
hello guys, i have an issue with local multiplayer, i want to assign to each local player controller a different input device, and i don't want to force the player controller 0 to use the keyboard.
i tried different approaches but i'm stuck, i have the flag "skip assigning gamepad to player 1" False
The flow is:
-Lobby
-Press select or Enter to create new player controller
-Press the button on the player in the lobby
-Press any key on the device to assign
-Game Instance assign the device
P.S.
I use the RPC because the game have also multiplayer online
I have a very basic question, I've used UE4 before but mostly followed tutorials, after being laid off last week I've decided to chase my game dev dreams, so equipped with my much newer PC (previously a 4790K & GTX970), I've started a project and got my pawn setup, added a player controller, but I can't see anywhere in the PC where I set which pawn it is controlling?
I've set up my game mode and set the pawn and controller there, is there anything else I need to do? Or am I overthinking it?
Also what's the best way to reference my pawn in my PC?
By default the level will use the pawn and controller that is set inside the gamemode. Controller will posses the pawn automatically after spawning. You also need to make sure you changed the gamemode to yours in the project settings if you made a custom gamemode bp.
There is also an option to place a pawn in the level and in it's details panel set it to be autopossesed by the player controller
The controlled pawn tends to get handle automatically regarding the player based on what is set in the game mode.
If you wish to switch pawns at runtime, you can use the 'possess' function which allows you to switch. This will update the relevant properties related to which pawn is being controlled. Note that this property isn't exposed to BP but you can use the 'GetControlledPawn' to get the currently controlled pawn for the supplied controller.
Also, is there a reason you're using UE4 and not UE5?
no I am using ue5 now, just saying that I have used ue4 before
Ahh ok. One difference you might notice early on is that the input system changes from UE4 to UE5. By default the input system in enhanced inputs. I would definitely recommend dedicating some time to familiarize yourself with it.
You can achieve what was possible with the legacy input system easily enough but you can do a lot more with it. (holds and combo presses)
Hi i need tips, if i want 1000 npc characters with CMC is not an option for preformance, but i can barely find anything regarding using an actor asnpc or such advice where to look ?
Thank you for the tip, I will take some to read up on it
Look at Mass Entity.
hm ok but 1000 npc what abit over the head i mean more like 100 * :=)
itsent ther a simpler option ?
What are you wanting the NPC's to do?
enemies run and fight* so anim instance req'
Is it wrong to use the geometry cache of an image directly in a widget?
Or is it better to take it directly from the event tick?
Its not easy
There are ways but none of them is super easy
340 AI controlled characters with CMC walking around in a small space. This is with some optimizations that basically mess around with tick intervals and enable/disable meshes and animations based on the the distance to the player. Additional optimizations can be done with checking if the actor was on the screen or not and further disable animations and the like if they aren't.
Thought I had it, just trying to get my ball to move but I seem to have something wrong
BP_Ball currently has no nodes set, just a BallSpeed value set at 1000.
Not sure if the issue is input, the input trigger or my movement BP
i mean ofc its relevant what pc your on also โฆ
I actually made that project on an old i7 6700 laptop with 1070 and recall that it could stay around 50-60 FPS with at least 100 on screen, though admittedly, that was some time ago I had last run it on my old laptop so I may be misremembering.
New laptop is a bit more of a powerhouse (275HX with 5070ti), but the principles of optimizing the characters remains - reducing tick intervals and hiding meshes or disabling animations if they're far away can do wonders. It starts to chug around 300 characters if there's lots within the level 1-2 optimization levels, but I was still getting 30 FPS at around 700 characters where most were in the lower quality level 3-5 optimization levels
You could also look at using the experimental 'Mover' system instead. It's more lightweight than CMC and I believe Epic's plan is for it to replace CMC at some point.
So... My line trace starting from an arrow component wasn't hitting anything.
I moved the arrow to 0.25 to test if it was a problem with the origin. Now it worked.
I moved it back to 0. And.. it worked now...? I readded the actor and recompiled between each step, so it wasn't cached or smth.
wtf unreal
Hey everyone,
Does anyone have good resources on creating an IK Rig for animation retargeting on 5.7?
I have two skeletons where the only difference is that one has an added root bone. Iโm trying to retarget all animations from the original skeleton to the new one, but Iโve noticed that I need to create a custom retargeter, since the auto-retargeting completely breaks the animations.
Any tutorials or guidance would be really appreciated!
Why manually loop sounds like this? Just make them a looping sound and play them, and stop them when done.
the sound being played is a "(battle drum) and when it finishes i want it to play another
thats why
its not the same
Not even plugged in? I made juke box in the past. No issue with audio comp.
Dont use spawn sound 2d either.
i dissconnected on the pic, just to se what was wrong
If they're hand authored in the same order, I'd still do it in a cue.
Step one. Add an audio comp to your actor.
One, then the other. Single cue, fire and forget.
Ahh yeah if thats the goal, cue is the way.
Hi I'm a beginner game dev whos trying to make a 1st and 3rd person mmorpg but im having a ton of issues trying to get my game off the ground or up and running. trying to find a gaming tutor but dont know were to look, please support me if you can.
Beginner dev trying to do a mmorpg, brah you sould try smaller, tiny even... ive done this for a long time and thats overscoping as hell xD
Presuming you're not having a trolling laugh about this... What does getting it off the ground mean?
dont start with multiplayer either, will ruin you *
I would kill to work on a singleplayer game.
Like... Just no networking. Pure game design. Omg please.
he yeah im struggeling with mp so i paused it for 2 years and did singeplayer, everything just works there... never an issue with anything really
why dont you btw ?
or is it your job thats requiring you to do mp ?
MMOs are worse. If you're making a real one. It's not just multiplayer, you get the extra layer even behind that with the backend shit.
ye
Simply put, work. ๐
https://store.steampowered.com/app/2805850/Atre_Dominance_Wars/
Handful. Kaos and I on programming, couple designers, and a small army of artists.
Good for a small studio, yeah.
42
you asked for numbers, you should know the answer
aye but i dont know thje currency >)
schmeckles
ha, wanna compare with what ive got lol
but yeah that good money i suppse
no idea what ppl in this industry make really
just hearing about all the layoffs
It's decent. Can't really give numbers in public.
But yeah there's been layoffs. But most of that is just because of the overhiring.
i have unreal engine I'm starting from very beginning i keep coming up with problems just being able to create land i am autistic btw but i really want to create a game and i keep find stop gaps along the way not finding the right plugins finding videos online and nothings working for me and i could really use someones help getting started with the basics
Welcome everyone! Today I have a complete beginner course for anyone new to Unreal. Following this tutorial will teach you all the basics of Unreal Engine and bring you through creating your first cinematic scene.
As usual please like and subscribe.
Check out my Discord here! https://discord.gg/x8fWVaevs3
Jungle Lagoon Beginner Tutorial: ht...
It was just a crash. Companies did well. Hired more, pushed for more. Then there were a few key catastrophic failures in the industry that scared off investors and publishers. Company bottom line got hit. Thousands got let go. Just needs to normalize again.
what were some of the catastrophic failures ? you know ?
I don't know all of them. I know there was some Blizzard project. A few EA fumbles. A few games in particular that failed were high profile like Redfall. The Blizzard stuff was probably one of the most muddy in the waters because it was a multistep issue. Blizzard canceled some projects that had already cost money, and on top of that were bought by Microsoft who cut down things. There were quite a few hundred people who got let go over that Microsoft issue alone.
Redfall was so terrible.
Theory, any game with a name in the form of XXXXXfall or Age of XXXX (that's not age of empires) is gonna be bad
XXXXXX Keeper is the new trope, goes there too
Except Dungeon Keeper, ofc.
The originators of the naming convention are good
the games that are so unoriginal they can't even come up with an original shape of a name are what's bad
Someone's ranted about this before. ๐
https://www.reddit.com/r/Games/comments/pvidqp/games_that_end_in_the_suffix_fall_rant_rave/
hm how can i make a loadingscreen show befor loading the map (since clients spawn in ground and load before widget is created) without using like async loadingscreen or such,
ideas ?
i think CommonLoadingScreen from lyra requires little to no C++ knowledge
I think the X of Y convention in general is overrepresented in bad games.
the ONLY thing that pisses me off more than that are game names with vaguely greco-latin sounding fantasy names.
It's a game, not a new species of butterfly
I'll take X of Y over dumb puns, thank you very much
I think my favorite game title as of late is Xenoblade Chronicles X: Definitive Edition: Nintendo Switch 2 Edition.
Might be Nintendo's best work in their storied history of ridiculous subtitling.
Titanfall is also an exception to this rule
Is there any quick function to test if a character will fit at a given location?
That returns a bool?
You can use the Capsule Overlap Actors node.
Thanks.
UE5.6
I'm having issues with Blueprint Interfaces. I've made my interface, marked it Call in Editor, and set it as an Implemented Interface in the Class Settings of two of my actors, but in the actor's Event Graphs I cannot call the interface as an Event or as a Message. The only option is to call it as a function, which looks different than all the tutorials I'm finding.
Would need to see some of the code or issue. On a side note I don't think CallInEditor will matter here.
I can't get an Event like this first screenshot from a youtube tutorial. He says he double clicks the interface at the left, but when I do that with my interface it just opens it to edit, like in the second screenshot. I also can't find it in All Actions (third screenshot).
I was able to find the Message node, I needed to uncheck context.
For context, I'm trying to use the BPI to pass the Actors in an Array from one Actor blueprint to another. Without being able to get the event I can't drag off of the Input variable, because there isn't one.
Can you show the function in your interface class?
It is a little odd that it ended up a function. Normally that only happens when it has a return value.
Without the event I can't get anything out of the Input variable, because it's for input.
You can just put your print inside of the function.
I've tried adding an input and an output to the interface and then connecting the two in the Actor blueprint, but the variable wasn't passing along and that seems wrong anyways, because I'd have to manually do the connection in each Actor that I added the Instance to.
Cpp required. If thats not an option then plugin is your only way.
Does anyone know more how the dot product works? I apologize if I make myself sound uneducated by that inquiry, I get it returns how alike two vectors are. Can anyone explain more?
If the vector pointing the same way you will get 1 for the dot product.
Ans 0.5 in between
0.0
I might be wrong 0o
Instance should be Interface, but I can't edit.
Perpendicular results of a DOT are 0.f
It's worth noting that a 45 degree offset isn't 0.5f though. Which trips you a little.
Can you elaborate a bit more on this? Cause right now you have a string. Am trying to follow what you're doing here.
I'm unsure if it'll work. But I'd attempt to go to your interface blueprint where things are greyed out, compile and save it. Then go back to the one with the function, and right click it and see if you can convert it to an event.
I hate interfaces so much I've never managed to end up with these issues because I avoid them like a plague. ๐
Right clicking it under Interfaces and Converting to Event worked, thank you.
How the heck do I make widget components render on both sides?
Two sided material? Why though? What kind of widget is it.
Most of the time i just do screen space because quality on world space gets compromised.
if you have text and you render it on the backside it will be flipped around..
so you would need to copy the widget and flip it 180 degrees
I googled it yesterday because I always forget. ๐ Its a value between -1 and 1 for how much the two vectors are pointing in the same direction. That was my take away lol.
Its really annoying int vectors don't have any of the standard operators. :/
same, everytime I have to tackle vector math, I end up googling and pulling out my note.
Vector math is so confusing at times. One day I might actually retain and understand it. I still don't really understand what a Quat is... But they can help solve many rotation based problems. ๐
same... I watch video about gimbal lock and quats like a dozen time and still don't get it.
Cross and dot product is my limit atm.
Just a quick and simple question because I'm encountering some check issues
Does the "Or" boolean still work if both are active at once?
So if I want to stop an AI from attacking if it's frozen OR electrified, if both happen at once, it'll work ok?
Hello everyone, while creating build, ue throws these errors related to the struct, and further below so many error like like this, how to resolve it!, thanks in advance
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property 'StructProperty /Game/HorrorEngine/Blueprints/Player/HorrorEngineCharacter.HorrorEngineCharacter_C:ModifiedGameplaySettings'. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property 'StructProperty /Game/HorrorEngine/Blueprints/Core/HorrorEngineFunctions.HorrorEngineFunctions_C:EquipmentSettings:CallFunc_GameplaySettings_GameplaySettings'. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property 'StructProperty /Game/HorrorEngine/Blueprints/Core/HorrorEngineFunctions.HorrorEngineFunctions_C:FootstepSoundSettings:CallFunc_GameplaySettings_GameplaySettings'. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property 'StructProperty /Game/HorrorEngine/Blueprints/Core/HorrorEngineFunctions.HorrorEngineFunctions_C:PlayerSettings:CallFunc_GameplaySettings_GameplaySettings'. Unknown structure.
UATHelper: Packaging (Windows): LogProperty: Error: FStructProperty::Serialize Loading: Property 'StructProperty /Game/HorrorEngine/Blueprints/Core/HorrorEngineFunctions.HorrorEngineFunctions_C:GameplaySettings:GameplaySettings'. Unknown structure.
HorrorEngine strikes again
Yes, the OR will be true if either or both are true.
00 = 0
01 = 1
10 = 1
11 = 1
If you want them to be exclusive, you can use the XOR. This will be true if either are true but not if both are true.
00 = 0
01 = 1
10 = 1
11 = 0
you got yourself into this by choosing to use it, we can't tell you how to fix it
๐ญ๐ญ๐ญ
It looks like there's a few structs that are being used that are missing. If its a BP project and you've since saved, its most likely bricked. You'll need to locate each instance of the structs that are missing and update/replace them with the relevant one.
yeah i would also just delete the entire project, like genuinly if i had to fix something like that
deleting is probably not enough
i tried to fix this, by rename it, and by create a new variable inside the struct, it was working before, but this time it's not in a mood to fix
print out the bits on paper and do an exorcism to prevent it from haunting your family
Perfect, thank you
My branches should all be working fine then
Yea you should avoid changing BP structs that are being heavily used. When you change them it doesn't automatically load all instances to refresh them and often results in them just breaking.
Its why I'm not a fan of using structs for item data in inventory systems. The moment you want to add a new property you risk breaking everything. (if its a BP struct)
Bp struct should be avoided like plague, the temporary band aid is to rename the struct. It will wipe all the default values you've done but you shouldn't get unknown struct error afterward.
UObject with instanced struct ๐
I've still not tried it yet. ๐
A quat is essentially an axis and how far you need to rotate to reach the facing angle from Identity. The W,X,Y,Z values of it are derpy though because of how they're done.
that a possible way to interpret them the mathemathical derivation happens "naturally" if you extend complex numbers into 3D
in 3 dimensions it doesn't work
Hamilton spent about ten years of his life (between around 1830 and 1840) trying to construct 3-dimensional hypercomplex numbers, before eventually understanding that he needed to move up to 4 dimensions, and he then discovered quaternions. We now know that "interesting" systems of numbers (i.e., division algebras over the reals) only exist in dimensions 1, 2 and 4 (and possibly 8 if associativity is allowed to be weakened somewhat)
There's a very good video on quats from somewhere.. finds
Go experience the explorable videos: https://eater.net/quaternions
Ben Eater's channel: https://www.youtube.com/user/eaterbc
Help fund future projects: https://www.patreon.com/3blue1brown
An equally valuable form of support is to simply share some of the videos.
Special thanks to these supporters: http://3b1b.co/quaternion-explorable-thanks
Pre...
https://www.youtube.com/watch?v=d4EgbgTm0Bg This is the previous video.
How to think about this 4d number system in our 3d space.
Part 2: https://youtu.be/zjMuIxRvygQ
Interactive version of these visuals: https://eater.net/quaternions
Help fund future projects: https://www.patreon.com/3blue1brown
An equally valuable form of support is to simply share some of the videos.
Special thanks to these supporters: http://3b1...
Don't forgot about the Octonions, Sedenions and Sexagintaquatronions
just in case you tought 4D wasn't confusing enough there's also 64D
Hi im having an issue with my "zoom" function, it works but if i toggle quickly then it jitters or whatever as you can se from the clip after 3 sec im spamming the button
https://blueprintue.com/blueprint/ms4q64_u/
https://gyazo.com/efa4066453fb9cb6622aa177c9838f4d
ideas :/ ?
You don't stop the timelines. With rapid input you will have both timelines running at once
Instead of using two of them it could be better to use one timeline. When starting, do a Start. When stopping, Reverse. If nothing else is manually changing the arm length you don't need to do PlayFromStart
Also come one, what is this. Wouldn't it be more readable to have the target somewhere near the node that is doing stuff?
Like here, maybe. You don't lose anything, you only gain readability
ha well this is prototyping, when code is finnished i clean it ๐
thanks
My projectile movement component is having its velocity set when fired and i can see it changing in the editor but its not doing anything
As a guess your mesh isn't the root of the BP.
I normally get this when I have the project open twice.
Yup that was it! Thanks.
I'm struggling with Blueprint interfaces.
The goal is to have the Player mark a tree and then pass a reference to that tree off to an Actor named Manager, which will store the tree in an array (that NPCs query to find trees to cut down when they're idle).
The problem is, the Player Character Marks a Tree using an Interface Function, but the corresponding Event never triggers on the Manager Actor.
Both Actors have the interface added. Both actors have been placed in the level. I've tried both Call Function and (Message), and casting to the interface.
First Screenshot is the PC Actor, second is the Manager Actor, third is the BPI with the function selected.
The PC will print the text acknowledging that a tree has been marked with a trace, but then the Manager won't print anything.
Not sure if you solved it but I personally set a target when zooming in/out and finterp it on tick
Are you able to get a reference to the manager from within the PC Actor?
If so, it should work if you set that as the target of the interface function call. I don't really see the point of using an interface here though unless you are specifically trying to learn about them
why do you need an interface here?
just tell manager "hey, that tree needs to get cut down"
It's totally fine for pawn to hold a ref to Manager
I'm brand-spanking new, so pardon, how do you reference the Manager? Is that what a Cast to is?
The tree is being designated by a sphere trace from the Player. How would I get the actor variable saying which tree is hit from the Player to the Manager?
Just tell it.
Event Whatever -> trace -> hit -> cast HitThing to WhateverYourTreeClassIs (assuming all trees are TreeActor or whatever) -> call Manager.AddThisTreeToYourListOfTreesToCut(result of cast to TreeActor)
Assuming what makes a tree a tree is that it's a TreeActor, I have no idea what your approach is here
You can store Manager on BeginPlay or just get it every time you need to talk to it with GetActorOfClass, or make it a subsystem (C++ only), or make it a component on GameState, or just make it a part of GameState, millions of ways to do this. None of which really need an interface.
You'd want an interface if you wanted to have a lot of various things that are harvestable, and implementing the Harvestable interface could be one way to do it. Could also use components or tags to accomplish the same thing.
This is what I'll be doing eventually, just starting with trees.
All the tutorials seem to imply you should avoid casting whenever you can.
Trees are an Actor tagged Tree
All tutorials are shit until proven otherwise
If what makes a tree a tree is the fact that it is an actor tagged as Tree then just send over an actor ref, no need to cast anyway (because you get the hit actor as Actor)
now as to how the units know how to harvest an arbitrary actor is another story but if that's your design that's fine
The array of ThingsToHarvest would just be an array of actor refs in Manager
Odd question: when I open a specific blueprint, it opens like 20 different tabs. How do I get it to not default open all those tabs?
what are those tabs of?
are they just the tabs you had open last time you closed the editor?
Individual event graphs, some functions, some macros.
They are from ~last week, when I was going through and documenting all the functions. But if I close them all and close the editor in various ways and reopen it, it keeps reopening them all.
You are using interfaces wrong.
You are calling Mark Tree without a target and without the little icon in the corner - this means you tell the Player to execute Mark Tree, not the Manager.
Which means your code on manager never runs, because it was never told to run
You still need to get a reference to the manager to call an interface on it. But at this point you might as well do what Adriel suggested
why would this cast fail?
Because your PlayerController's Owner is not a Character.
In fact. Your player controller shouldn't have an owner.
thankyouuu
All tutorials r shit then.
Casting is just a type check, those noobs dealt with memory overhead from having a reference to blueprint asset and they blame it at the wrong place.
And your interface pass a hard ref of the bp asset anyway. So it doesnt even devoid the memory overhead.
I wanna run this custom event on server but this binding interaction in blueprints implies to me that it may not be intended. can someone confirm if doing this would cause any issues?
I wouldn't make the callback run something on server, but the delegate broadcast itself.
preesh
@dawn gazelle I could probably work around it. But I decided not to go with the BP subsystem in the end. It does "work". But I was having issues with the getter in C++. Cause you have to try to get it from it's parent class, and the getter is a map lookup effectively, which doesn't support parent class gets.
In Niagara Examples Pack, which files are being used for the bullet trace effect?
unreal engine 5.4 editor stuck
what is the proven solution when my editor gets stuck and won't load
this happened to me when i put a reference to my game mode like cast it and or set it on another blueprint
i knew it and i thought i didn't fall victim to it, but apparently i did, either through the same problem or another one
the only fix i found was to systematically discard blueprints until i found the offending one that allows me to reopen my editor
is this my only solution or is there a way to really fix this or launch the unreal engine in safe mode or things like that?
if its stalling on the 'K2Node_CallFunction' class, I would verify your engine install. You can do it through the launcher. If this doesn't solve the issue, it could be down to what you're doing specifically. (possibly creating a dependency loop) We'd need to see what your actually doing to advise on this though.
this latest log is just noise it changes based on different runs
i'm just doing normal blueprint operation but i don't know if the plugins i have are messing things because i didn't get this issue on my other project
but now regardless of what i did to cause this issue, is there a way people do to force the editor to launch in these cases
like open it in safe mode or things like that
my script found the offending blueprint thankfully but it's stressful when i can close the editor and try to reopen it and it never does ๐
Hi, In my built project everything is so dark, in editor everything looks right
ideas ?:/
Exposure settings as a guess.
Hi everyone I am creating a pinball game and I am working on a bumper mechanic. but currently I face a very annoying problem. I want to make the bumper shoot my ball in the direction it was hitted but I suck at doing the math for this and since ai makes it even worse I thought if you guys have a fix for this?
here is the video
It should be as simple as OnHit -> GetDirection from the bumper to the ball -> multiply the direction by some values -> apply impulse to the ball with the strength you calculated
What you multiply by depends on what you want to achieve - a flat value will always add the same impulse. So maybe you should also multiply by some value derived from the current velocity of the ball
Also this is just conceptual, it is possible Unreal has something built in for this exact interaction
do you mean getting the actuall onhit struct because it does not have a Direction pin
nope I dont think they do I'v e been searching for a bulld in solution but nope
guess this is pure math
here is what I use as the code
also tried something with changing the mass to be lighter and I also tried to use a physics material on the disk itself
I meant OnHit event. You have the reference to the actor that hit the current actor in the event pins. You can get it's location and use the direction node to calculate direction between two actors
You could use the stuff provided with the hit result too but I don't remember how to use the normals from there properly
just start with law of reflection and improve on that ๐คท
you only need the hit normal and object velocity for a simple implementation
This is not an entirely blueprint related question but for some reason when I create a render target 2D as RGBA16f (in blueprints) I am able to apply a material and read an output, but if I change it to R8 I get no output. If I instead pass a premade render target 2D (as an editor asset) into the very same system it will work on R8. Is there something behind the curtains that occurs differently between the image formats?
Is there a way to just . . . store a point in space on an actor?
Like what Target Point does in levels.
But for an actor. I just want a point in space to manipulate so I have a visual reference when debugging.
Not sure I follow?
Thats the job of the vector type.
Or, do I miss-understand
there is, Chris Murphy mentioned it in one of the Epic videos
https://www.youtube.com/watch?v=3iIAcOtPJZg should be in this talk
With the Epic MegaJam just around the corner, this week we wanted to focus on the groundwork - how to prototype quickly so you can get to the detail work faster. Time is of the essence when it comes to jam events and to make you feel better prepared we're bringing on Chris Murphy to discuss some tips and tricks on smashing through the busy work ...
You can mark a vector variable as visible in level editor
But I think it works in local space
Local space is what I want. Perfect.
It does not seem to be working.
Ohh. Level editor only?
A billboard seems to serve the purpose in viewport editor.
Hey I have a component that spawns in a NIAGARA particle system, but when that component gets erased, the system remains in the world.
How should I get rid of it?
Tick auto destroy? May help, not sure what condition makes niagara clean up it self.
tick auto destroy?
not gonna put an if statement on it now :/
if the component dies, so should the system, this is what I want
Its the option in your node.
oh
let me test it
still seems to spawn after component gets erased
is the component being erased? lemme check
seems like it
this is more of a blueprint problem
Coz you could be spawning anything in the world like an actor, and still when your component gets killed, the actor still remains
Well those that work in the vfx would know.
hmmm, could make "On player killed" event dispacher
But this actor is used by others too so no
Maybe I should just make the whole thing an actor with a niagara particle system and call it a day
Yes ofc.
Deleting a component doesnt remove the outer.
update, I found this node
However, I need to use a scene component instead of actor component :p
you could just get the forward vector of the ball *-1 that gives u the back direction and add force fowards that or something
or nah thats bad scratch that
since its not always hitting with the front
Is there something about nesting collisions that stops them from working?
Sphere has a different Object Type than HandCollider, but I can't get anything that's set to block or overlap HandCollider's type to work.
Work with what? Hand Collider should still work with overlaps. But it will not trigger an EventHit function for instance. Should also be tracable if it's blocking that channel.
im new to ue5 and im trying to add GMC v2 to my default Shooter variant project, only problem im having i when i look up or down the weapon and weaponarms kinda do its own thing. i think its because of the pitchN logic but i cant seem to fix it
like this
It turned out to be that I wasn't letting the Hand Collider respond to the type of the sensor I needed to see it.
I would love to know how to make the other side of this widget not black.
I also really need collision on these Fab meshes, but I have never worked with the collision generator. Are the default settings good or are they gonna cause unnecessary performance hits?
Unreal can generally create simple collision detection which is sufficient and won't cause lag/fps issues.
Cool.
I'm having an issue with an anim BP not changing states when it takes in the new state- I'm using enums to change the state, but looking at the output log it shows the new state for a blip then reverts back to the idle. any ideas?
another bizarre part is that it seems to freeze the animation in the editor for the player character while in PIE despite it working fine in the editor and then display an unchanging skeletal mesh- it seems like it still affects the world and has its proper hitboxes
Using unreal's built in collision can be ok but it's not very good at holes. If you need tighter collision you'd have to make your own. Either by adding collision volumes (in the static mesh editor) or by telling it to use a custom collision mesh. You can make it in a 3d modelling software and import it in.
The first thing I would check is the transitions back to idle.
Hi this tip did do it for me thx
does anyone know in widgets why is it that when I click somewhere outside of a button my mouse disapears?
Usually something to do with focus and the input mode. There's also the setting on the player controller to show the cursor. Most games have this set to false during normally gameplay and it can be shown whilst the input mode is set to UI. If however the input mode isn't set to UI, clicking the background means it focuses the viewport (the thing that widgets are placed in) which then gives input control back to the main game this can make the cursor disappear if the setting on the PC is false.
Something along those lines.
Could I just tell it to use the model as collison? These are very low-poly models.
How low is low?
in the mesh asset theres a Collision Complexity setting. i think ComplexCollisionAsSimple is what youre looking for. might be one of the others though.
Idk the exact numbers, but PS1-era low.
From a quick count of the teeth I'd say 30 teeth so it's probably around 420 faces / 840 tris which would be a lot. How is the gear going to be used? How big would it be in the scene?
Walkable. So probably bigger than would be practical.
If that's the case it should be fine then.
Oh okay cool.
i would create a low poly collision in blender or whatever DCC you use
https://gyazo.com/dd6f910ae2d0c06ea59483cdce40f61b
Erhm can anyone help me
my componenets of my char they all have same collision but when ingame only my original mesh has the collider +?
could be physich asset?
check it?
how do i check it per component :/ they all originate from same base
click the skeletal mesh component?
here's the transition logic: basically whenever the enum is changed to the Attacking value, it should trigger the transition, and then only on exit should the system shift back to idle
check the skeletal mesh asset
hmm i cropped the assets myself but i only shrunk the mesh on some parts could that be related :/?
If you don't want the head collision from the phyic asset then just don't set it?
i want the collision i want it on all components
Hey, I was wondering which solution would be better, but can't decide.
So for a light system, I have a BP_Light actor that has logic like TurnOff, TurnOn, etc.
BP_Light doesn't have an actual LightComponent, because there are different light components.
So is it better to have a BP_Light that has the logic and when I drag the light onto the map, I add a one of the light components.
Or is it better to make lot of child BP like BP_HomeLight, BP_BuildingLight, BP_ThisLight, BP_ThatLight that has both the mesh and the light configured.
so, I'm not sure why it works this way, but for some reason, the furthest socket is considered as the "closest"
but when I try to draw debug spheres to check if the socket locations. All spheres are spawned in the expected locations
so I'm unsure why left foot is considered the closest, when visually it is not
the floating debug sphere is the hit location
I'm comparing the distance between the sockets and the hit location that is created by the trace
I added those sockets into the skeleton btw
they are not deforming the mesh. They simply act as empty bones, meant to tell which area is the character hit on
I've got a weird one. I've playing around with the combat template (3rd person) and i've move some logic into an actor component but it seems to break the death ragdoll and i can't figure out why.
Does anyone have any idea why using this would result in the skeletal mesh only partly being simulated? (death ragdoll) It looks like its being held at the hips.
Previously it uses the set blend weights and the set body simulate. (set to the pelvis) From what I can tell, it should be doing a full body ragdoll.
you may have some of the bones masked
I recall there was an option to choose which bones should have ragdoll physics
I've not changed anything like that. The odd thing is, in the template, it does a full body ragdoll on death but moving the logic into an actor component seems to break it. I feel like im missing something simple.
how are you getting the mesh in the actor component?
As far as I can tell its the same as in the template. The left side is called when they receive damage. The right side is when they land.
Then the OnDeath stuff.
I'm pretty sure you need to reference the owner of the component, and get the mesh component from that owner
I already do.
this is how I use it
try this way
Try what?
getting the owner
I call the custom event from the owner, into the actor component, by getting itself stored into the Parent Character
although, I should switch to storing a mesh variable in the actor component too, after getting the parent character
so I avoid using the parent character variable everytime
The reference to the skeletal mesh is fine. I already get it from the owner.
The issue is its not doing a full body ragdoll and i can't figure out why.
are you able to debug it with print strings?
oh! I see where the issue is. One sec.
Yea i got it. It was an order issue. When I recieved damage I modify the health value which in turn checks if health is <= 0. If it is it does the death stuff. But I have some logic that gets triggered after modifying the health from the on damage receievd. I just need to do another check to make sure the character wasn't dead before applying the hit reaction type thing.
makes sense
I also found out why my blueprint with the socket isn't working
turns out the sockets I'm trying to call cannot be found in the skeleton
which is weird cause the names actually match
ah no
it's not the socket
it's the hit location???
I'm such an idiot....
I'm sending the hit signal to the hit actor
but I'm getting the hit area variable locally instead of sending the data to the hit actor...
aaand crash...
unreal just tends to crash when something happens after using it for a while
a function could be fired, a blueprint could be compiled, or the save button is clicked
the engine would just crash without a reason
and the error it gives me doesn't help
Yea it happens sometimes, I believe its something to do with some references breaking after the compile when it attempts to regenerate the object. It wouldn't surprise me if its something pending destroy and then the engine freaks out when its trying to destroy an object as soon as its been created. I could be wrong of course, just a guess. ๐
Does it happen in 5.7 too?
Its done it since forever. It happens a lot when doing C++ and live coding. ๐
Turn off reinstancing
What are the cons to doing that?
None really. It still functions like you expect, it just won't reinstance things while you're playing. You can still livecode with PIE open just fine and update cpp files.
fixed this- there was an entirely different piece of logic that set the animation of the hand to something it wasn't supposed to be- thanks regardless
TIL: VSync applies to BorderlessFullscreen as well.
What does "editor-only" mean?
Exactly that. This property won't exist outside of the editor. It's being removed. Call the GetSkeletalMeshAsset function instead.
Hello guys, maybe here somebody can help me
I've created a material to see the Paper Character through the walls, but the material works perfectly only with the 3D meshes.
In the 2D assets, also the player, I'm having these issues:
- the object should be red only behind other objects, not constantly,,
- when it goes behind, starts to flicker and to disappear only with a certain angle view.,
Somebody knows how to fix this ๐ญ
so a quick question regarding blueprint processing. I have a Ryzen 3 CPU on one computer with Radeon graphics and 8GB RAM, and the other (which is my dev rig) runs a Ryzen 5 with 16GB RAM and Nvidia RTX graphics. Now here's the issue that I'm dealing with: one major part of my character's basic ranged attack is a power focusing ability which increases the size and impact damage of the telekinetic projectile that it's based around for as long as the ranged attack button is held down (think of buster cannons in Megaman, the charge beam from Metroid etc.) On the Ryzen 5 machine, the projectile builds up from level 1 (the smallest size and what's fired off if you simply tap the button) to level 3 (a ginormous monster shot that does triple damage) without issue, but for whatever reason it tops out at level 2 on the Ryzen 3 (which is somewhere in between the two extremes in terms of size and efficiency). Is there anyone who can give me some advice on where to check in my charge shot blueprint to see if there's anything I can do about this, or if it's a technical matter that I'm stuck with? (Note that the game runs and performs as expected on the Ryzen 3 aside from not handling the charge shot like it's supposed to.)
The blueprint itself is relatively simple - it checks if the ranged attack is supposed to have a focus charge and if so then it brings the attack to level 2 and holds it in (this is indicated by a yellow power draw visual). If not released at level two, and the SFX has finished rising up from lowest to highest on the clef, then it's supposed to advance to level 3 (which is the current maximum level, and I'm not 100% on if I'm gonna do a focus efficiency upgrade like in Megaman X to permit a fourth level of power focus)
Are you using event tick ?
To calculate the size of the skill
right now it's processed as a part of the charge shot logic itself
Im not sure what that means
Are you using event tick ?
If yes thats probably your problem
what I mean is that it's currently set up to where the power build is processed as a part of the overall ranged attack logic
so in essence, it's attached to an event which in turn is attached to the button via enhanced input
and I guess what you're saying is that event tick would be more efficient and compatible
Can you just post the bp ?
no
no and no
But event tick gives different results on different hardware
Thats why my first thought was that you are using it
that's not what I believe myself to be doing, so thanks for clarifying
Can you show code? Because it's going to be a lot easier to point out your logic issue that way.
sure thing, I just had to start the UE Editor and load up the blueprint
in any case, here's the event for the button press/hold note that it's a standard enhanced input processing
there are a few nodes which are related to the special attacks system, but the ones you want to read off begin off the started property of the input event. the logic for that checks if it's the default ranged attack (index 0 where the specials are are a maximum of nine depending on progress, so if it's anywhere from 1-9 it's a special shot, if the index is zero then it's the regular shot). If it is on the default ranged attack, it checks if charging is used by the character (which as of now is always true, but there is also logic for rapid fire) so at this point it proceeds to check if charging is in progress, if not then the character begins focusing on her ki energy to build its power. At this point a pair of flags are set to tell the engine that she's focusing her concentration on building her attack power and then calls the event that handles the actual energy focusing
with that in mind, here's the primary logic for ranged attacks
and here's the logic for the focus charge itself. At this point, there's a slight delay to allow for proper processing of the basic attack; once this has passed the button is assumed to be held down so the first boost is applied to initiate attack level 2. This is where the concentration aura comes into play to indicate the resulting attack power (invisible at level 1, yellow if held for roughly a second to indicate level 2, blue at level 3). So what's supposed to happen here is that after about a 1 1/4 seconds, enough focus has been built to initiate the third level of attack power (which is what's failing on the Ryzen 3)
after all of this is done and the attack is released, additional event processing is then initiated to reset the charging status values back to their original states
yeah, there's a lot that's going on here
Hmm. I'm not specifically seeing anything here that would be determined by framerates.
so the main matter is that there is a standby counter float. the first adds .01 to the level 2 attack's duration; this is done instead of a delay node so that the shot can be released properly. at 1.25 this value is supposed to be greater or equal in order to boost the attack to its third, maxed-out level
I mean, you could make a case that delays and timers might go off more concisely on a faster machine, but the difference would be so immeasurably small to most people's feel that I don't think you'd be asking about it.
also, I should note that the third level of power is not advanced to at all on the Ryzen 3, or at least from what I noticed
which, of course, is the problem that I'm trying to solve
Realistically. I think you should dramatically simplify this. Can you generally explain the mechanic? Like what you expect from the controls and spell? If I followed, this is you holding the button down to charge up multiple levels of an ability and then releasing it to fire?
exactly. again, think of charge busters from Megaman.
I'm more likely to think of the plasma pistol in Halo. ๐
yeah, that also works for comparison
I completely forgot about that
lmao
Uhh.. Run me through your visuals and sounds? How are you visualizing or playing sounds? I'm seeing a sound for shot, and a sound for reaching level 2 and 3 at least.
Visuals are these visibilities at the bottom I assume?
Megaman X style charge would be something like:
Input Pressed (but held) > Shoot a small Single Shot > Charge up begins after a short delay > Visualizes charging > Length of charge determines "size" of blast from charge > Release = Launch charged shot
okay, so I just got done double-checking on the Ryzen 3 again and it's actually delayed slightly so you're right in that it's not as fast on that hardware (and in fact this sometimes also happens while using the playtest function of the Unreal editor so I think there may be a correlation between the two)
I guess what I could use at this point is some kind of addition to the logic which takes frame rate into account (or whatever else can speed it up)
also, the first sound is a rising crescendo to indicate that power is being focused; at max charge, this is steady on the highest note of the initial crescendo
so a fairly standard SFX pattern
So charge sound starts at button press, and at full charge has a higher.. whir.. or whatever? And there are sounds at level 2 and 3 levels being reached?
pretty much. once the charging starts, the sound starts low and builds in pitch until it hits the highest note on the clef, indicating max charge
this is actually divided into two sound files in my implementation - one as focus is built, the other at max focus
hence the two individual sound nodes
getting back to the discrepancy between different types and clock speeds on computer systems, I'm in need of an easy thing to check against that works across the board so that it's the same or close to such on any device that I can throw at it
For a start, I would step back and simplify this. Your logic is literally and figuratively all over the place.
Hello Im having trouble with my Bluprints. Im trying to make a FNAF style way of looking around where there is a fixed camera with a mouse and when it goes to the sides of the screen you look in that direction. Its not working and could really use some help.
Oops forgot an important part.. the IA setup..
Hold Time Threshold determines how long before the "Triggered" starts going
Anyone know how to properly replicate changing the character's speed in multiplayer? right now i'm using multicast and servre RPCs and it works, but i noticed that if I test with network emulation/simulated ping, there's a noticeable delay in input when i press the sprint key, especially at higher ping, I'm not that knowledgeable with networking, but i'm assuming i would have to somehow make the inputs clientside, and only replicate it to the server? if so how? is it even possible in UE?
@ancient dagger You cannot do it this way. No one sane will want to play a TPS or FPS game with input delay.
Imagine pressing shift and start sprinting 0.2 sec later if you have 100 ms.
Movement are client side predicted, meaning movement is applied locally, then server is informed about the move data via the MoveData struct.
TLDR, for Server auth movement, you can't use blueprint alone.
@ancient dagger https://www.youtube.com/watch?v=urkLwpnAjO0&list=PLXJlkahwiwPmeABEhjwIALvxRSZkzoQpk
Goes over how to implement sprint in networked environment.
https://discord.gg/uQjhcJSsRG
In this video I am introducing a series I will be making which explores the character movement component and how you can extend it in depth.
0:00 Intro
1:00 What is the CMC?
2:00 Do you need a custom CMC?
5:35 What does the CMC provide?
7:10 Outro
So the only way is to learn C++?
for Server Auth using CMC? yeah 100%
there's no blueprint solution to this as the movement data needs to be done in cpp land.
and any attempt to fighting the intended way to use CMC will just result in correction.
damn alright, thanks for the info though
i made it by
turn on ignore location correction
run the code locally first
do rpc and replicate it to other clients
after it's replicated turn off ignore location correction
ok i just tried that, and it seems to be working? this probably isn't the right way to do it, but still thanks i guess
i think cheaters might be able to abuse it during the time correction is off maybe add some extra checks for anti cheat
Not server auth, you can turn off correction entirely but outside cheating there can be discrepancy in the location.
if you don't really care about anti cheat you can just turn off correction and manually replicate transform, max speed and velocity on tick with rpc
Ok i think i understand now, also my game is pve only so it won't be that much of a problem, thanks to both of you
I'm in the process of setting up some stuff for my project and I've been made aware of how to setup object pooling but I'm trying to work out how worthwhile that would be.
I'm using UE4.27 and currently I have it set up so when you shoot it spawns an actor and it destroys itself. Apparently thats bad for memory. I'm trying to figure out how bad it is for memory and if its worth setting up an object pool.
how many instances are you spawning? what kind?
It depends because I have multiple types of things, but I'm focusing on projectiles
Basically most are actors that when you click, you spawn 1, and after 5-10 seconds it'll destroy itself or wait til it hits something, check what its hitting and act accordingly, then destroy itself.
I have a couple that spawn an actor repeatedly and they destroy themselves much faster
So you can see what I'm making
that's quiet low in number, probably won't matter in shipping.
unless you are doing some kind of bullet hell then it's probably fine but just profile.
Profile?
Editor performance is bad though, I made space invader in the past and scrapped it due to projectiles not being gced.
shipping is max fps.
#profiling @dark meadow Unreal engine comes with a set of tool on how to check bottle neck and what eats performance.
Yeah, currently I'm getting like 60fps with occasioanlly 58fps, and 2.8gb of RAM usage in editor
I'm also doing this on a 7 or something year old laptop with a 2060, 6gb of RAM and an i7
and so far all smooth
That seemed to do something while in playtest mode. I'm repackaging the test build and will be deploying it as I have a hunch that this method will have more consistent results once I do so. (Though as a side note, I should probably add that I had to up the interval to a second plus half while also carrying over the delay from the old logic as I wasn't able to locate all of the nodes from your example.)
And it's fixed. Thanks a bunch for the assistance.
Is there a way to turn blue prints into images automatically?
Screenshot?
They use dynamic scaling so you can't just turn a Blueprint into a pdf at any scale and have it zoom in properly.
hey everyone, i have this spawn sound at location for my rocks for like when they hit something, but for some reason it wont make a sound when it hits the ground it mostly makes a sound when it hits each other or a pawn/ actor i want it to make a sound no matter what it hits how could i fix it?
That vector length node could probably just be an "Abs" one to make the Z always positive (same effect).
Other than that, possibly your collision setup. The actor, or rather the component, needs to block the landscape and vice versa.
can someone help me with converting my singleplayer game to multiplayer in vc?
Unlikely. Converting a single player game to multiplayer can take just as long as rebuilding from scratch for multiplayer.
using velocity isn't the play here
normal impulse is what you want for how hard a hit is
So how would I set that up exactly?
play sound if normal impulse is big enough
thats how I did this a long time ago
https://www.youtube.com/watch?v=1O05fOBfUGM
That's amazing yo, but I'm not familiar with the nodes what would I be swapping out?
Just check how big that is and play a sound if its > some value
vector length
if you don't know what normal or impulse mean here look them up
Gotcha I'll look into it now thanks๐ฏ
I have an actor component that i need to have references to other instances of itself that are attached to other actors in the scene. is there any way to make this happen so that i can set these in the edit (in the parent dropdown in this case?)
Not directly no. However, you can do an array (or set) of actors and then on begin play loop through them and use the 'GetComponentByClass' node to get the component from each actor and store it in another array for the component.
This might not be ideal if there would be a lot of actors in the list (due to the loop) but would do the trick.
yeah i was just really hoping for a way to set up a static configuration that was able to be set up from the editor
ah well...
Aquanox plugin may be able to do that from memory
Ahh yeah here we go
@dark drum @raw spindle
https://github.com/aquanox/BlueprintComponentReferencePlugin
interesting, i'll give this a look later, thanks!
Ok maybe yall can help me im working on a game I ha a 3d main menu and in it i have a tv playing on loop with a media player. I made a widget that has a play button. So I want when u hit that the camera zooms in to the TV and the TV will play another video how do I fo that. Most of my work is done in the widget but if there is a better way can you tell me
has anyone worked with any good PCG plugins for making randomly generated dungeons that they can reccomend?
Hey I have a Streaming level setup
It has a main level setup, so basically, load level 1, then unload that and load level 2 and so on.
One small problem, when spawning an actor, it stays in the persistent level. So the spawned actor stays in all sub-levels instead of a single main streaming level.
Any ideas?
when spawning the actor, set it's owner to one of the actors in the sublevel
then it will spawn into that level
Oh the owner pin?
So basically, the owner should be any actor that comes with the Sub-level
Hi! So I'm not sure how ue5 blueprints work in this aspect, but I want to change this bit of my code to work with all blueprints derived from it? I want the part of my script to change its outcome depending on what object it interacts with, but I'm not sure how to do that without copy pasting it for each individual use case
good idea, thx
By "derived from it" do you mean each individual instance of this blueprint in the level or blueprints inheriting from this one?
And it would be helpful if you said what sort of interaction this is and what others could be
Honestly not sure what the best way to do it is, right now creating child children of a blueprint in order to filter what โmaterialโ to interact with , then it does a mass calculation (which Iโm getting an error stating that I have to enable physics on my character, but it runs fine so Iโm not sure whatโs up) and compares the two to decide what to do
So right now if I left click and the object is lighter, it pushes away from me, if it is heavier than me, my character pushes off of it
The error in getting in seeing a couple forums that are a few years old but the answers have to do with exposing a function thatโs not in blueprints? But I wouldnโt even know where to start with that
It will always complain physics aren't enable if you try to get physics data, like mass. We ended up just adding our own accessor to the mass property.
Unfortunately, it probably requires c++, as you've found out.
Or you edit the engine source to remove the error. Again, c++.
Gotcha, so better to just create a variable? In that case it will make the calculation even more of a pain because Iโd have to somehow assert that any object derived from the parent has that variable and Iโm not sure how that works
If you really aren'
aren't using the actual physics system, then, yeah, create your own.
Iโm using physics to launch myself, but the calculation for how hard to launch and where is just a vector modified by the mass calculation
Are you using the character's launch function?
No add force
Well it depends I think I used launch for my character if the opposing object is heavier
But if itโs lighter it adds force to the object
I think I tried add force but it didnโt work so I used launch instead now that Iโm remembering it
Is the physics enabled collider a root component of the actor you are trying to push? I know physics get wonky if it is not the case
Yes it is enabled, the issue is I want to be able to make multiple different objects of different masses, shapes, and sizes, but I donโt want to have to make a blueprint function for every actor I want the system to be able to interact with
So I thought having a single parent actor that all the child actors are derived from would be the solution but I donโt think Iโm currently unreal savvy enough to understand how that will work haha, currently my brain is working off of a โCS: algorithms and data structuresโ class level that was taught in Java if that gives some perspective of where my thoughts are coming from at all
So I want my system to only act upon actors of the parent or derived classes of the dedicated objects for this system
Instaed of a common parent actor, an actor component with a variable you add to each actor would probably be better.
You'll likely have issues with a single parent bp like that.
How do I ensure that my system will only work with objects that have that component then? I havenโt messed with custom components yet, assuming thatโs what would be required
And I donโt need to worry about what happens if I catch an object when I click and the component isnโt found on a non interactable? Just exits the check and wonโt cause issues?
You should check for the component before the interaction is allowed to start
Correct.
Then nothing will happen if the target doesn't have it
Anyone know what I'm doing wrong I'm bassically trying to add an item to the list view and set the data on the created object for what the entry list widget will show after being added.
seems issue at the moment is the event for on entry data set isn't getting called from what I can see
Is that... new? Never knew this node existed
yes, was added in 5.6 or 5.7
Ohh neat, didn't know! I almost thought I had overlooked this for years
Yeah, 5.6 added it. There was also one for sets added then too. It took a pull request to get it in though.
What is that, a function? I tried making it with a macro on 4.27 but never got it working properly
It's a custom blueprint node. You can't do it with a blueprint macro (like the for loop) because multiple wildcards are required and it can't be a function because repeatable exec pins are required. You can only do these types of nodes from C++, but they can have way more functionality than what UFUNCTION markup supports.
Are macros basically just lines of nodes you can run whenever you want or do they work like functions?
Like if I have a macro used at 1 point in an event graph, can I use it somewhere else and they won't interfere with each other?
macro is like a zip file, the node inside gets expanded when they're compiled
Yeah, thats kinda what I assumed
Like if I wanted to run the same line of code multiple times without having to redo all the nodes, I could work them into a macro with the variables I need and just customise them when I put them in a line
I ask cuz I have a damage tick thing but I don't wanna keep copying how it works with the slight differences so I can just make a macro and tell it the damage I want it to do
Yes, but there is a bit of a difference in output. If the macro has 50 nodes in it and you use it twice, your blueprint now has 100 nodes in it (when it's compiled). If you have a function with 50 nodes and you use it twice, you have 52 nodes (50 nodes in your function and 2 function calls).
It probably doesn't make a difference in many cases, but it's a difference worth understanding if you have to start digging into perf and other optimizations.
Yeah now you've said that I'm like "Yeah obviously" but I hadn't initially considered it because I wasn't thinking about it
I only ask because I'm using a system where multiple types of damage can be done at once, they won't all be active all the time and get turned off after certain stuff happens (Time, damage, triggering a specific state or wearing off) but using a function didn't work when I initially tried it because I needed the damage to be done seperately and if I did 2 types of damage, it replaced another as you'd expect
I've been using macros for making stuff easier for me, things like setting MULTIPLE variables at once or doing collision and visibility I can just pull a macro rather than right click, set variable 20 times or having a bunch of nodes floating around instead of 1 that just acts like a folder
personally i'd use a function for these kind of stuff, since you can call function of a class in another class but not macro
How do you mean sorry?
You could also create structures and use SetMembers or create object instances and use ExposeOnSpawn.
I don't see in that picture what you're even setting variables on. They all look like they just pass through from one side to the other.
They're called at another point on a different event, thats not the damage stuff
Thats just for selecting what damage you're using, and I know there's probably better ways to do it but that was how I thought at the time and its worked without any issues
I had somebody recommend structs before and it caused more issues and they told me some of the issues I could encounter and it wasn't worth it for what I was doing
If I'd been using them from the start and had it planned from the beginning, yeah structs would have been great, but changing the entire system back over to structs caused a lot of stuff to break and I couldn't get it working again
What does set spell do?
I'll show you hang on
It's basically setting the cool downs, cost, what spell you're going to cast when you click, how accurate the spell is
and when you shoot all I have is like 3 variables that decide how it works, which is set before hand using this macro
Trust me it makes sense
I feel like spells should be defined by a custom uobject or even just a data asset that's passed to a spell BP that it gets its data from.
Maybe but the cost and cooldowns are done inside the player because nothing else interacts with those, all the spell does is move forwards and figure out if it hit an enemy
A lot of this is to do with the visuals of actually shooting and how it behaves when the player fires
not the actual spell projectile
The 2D sprite is active because "Spell 3D" is false
Check the "is 3D" branch and sets the appropriate thing to not visible, projectile fires, the cooldown happens and it's visible again
This one is 3D
it's better than having a series of branches for all the different cooldowns when I can set like 3 variables being actually used when it comes to the action of clicking
The cool down value would be in the uobject/data asset for the spell. When one is fired, you can get it from it to update the current cool down on the player. No need for branch chains. Hierarchy can help simplify things.
But why would I attach it to the spell when it's only ever going to be used in the player's blueprint?
I'm sure Uobjects are great but given all I'm doing is setting the aim and cooldown and stuff and the spell contains its own data, they seem like overkill
The spell doesn't exist yet, so how would I check the mana cost?
And the Uobject also wouldn't be needed here
Again, I'm sure Uobjects are great but the ONLY actor in the entire game that needs to see cooldowns and mana costs or if the spell is 3D or not is the player
Most of the time you'll separate these things out into
Static data: Things that don't change, base cooldown time, base damage, damage types, base mana costs, names, etc.
Runtime Data: Current cooldown state, spell level(if you have those), multipliers applied from the caster, etc.
Static data can go in someplace like a data asset or a datatable.
Runtime data needs split up between the concept of an ability, some object related to the player or on the player if you don't want to separate that out. And then the spell itself that you create as a projectile or otherwise.
Why would it need to go in a data table?
You're missing the bigger picture. When you want to set the spell, you select the class type that you've predefined all its properties. From this you can get all the relevant data to update the visuals and then use the same object to get the cool down.
You're current method is clunky and would scale poorly and would most likely be prone to bugs.
When using uobjects/data assets, if you want a new spell you just create a child of the spell class and define its properties. Everything else should then just work because your systems would have been built to just pull and use the data defined in them.
You also have the added bonus of being able to use soft references and choosing when to actually load the spell into memory.
Because your designer(even you) shouldn't need to touch a programming class to alter gameplay values.
It's really of an organizational tool. It's about removing things from the knowlege of the player object it doesn't really need to know.
There's also the unstated "yet" with "the ONLY actor in the game that needs this is the player".
What about enemies? What about traps? Why can't the player have two or three or dozens of spells active at once?
Some things are just easier to make reusable from the jump.
This just kinda all feels like overcomplicating what I've made
You bear the brunt of the complication to make iteration easier.
Again, none of those things would need to know it because thats not how I designed the game
It's okay. It can feel like overcomplicating until you do it a couple of times or you want to make a change that the current setup doesn't allow.
"Yet" ๐
I have a document and I made a plan for how I want things to work, like you can only have 1 spell active because you have 1 hand, the other hand is for throwing gestures at enemies
To paraphrase from something else: "No game design document survives first contact with actually playing it."
It doesn't but I still have the idea of what I want and the system I've put together currently hasn't run into any issues other than "this was hard to look at"
So what happens when you have 20 spells? I couldn't imagine having to use the 'SetSpell' macro 20 times. Modifing its properties would also be a pain.
There's not 20 numbers on a keyboard :)
Also modifying the properties wasn't a pain at all and actually takes like 5 seconds
Like yeah I was gonna make it in a way that allowed me to scale it a ridiculous amount but I realised it wasn't what I needed or wanted
I struggled coming up with the spells I have
Especially considering the spells can mix and do combos that are determined outside the player
How would I use a dataset or Uobject to make this work better? When I was looking into Uobjects a week or 2 ago and tried to apply it to the idea of my spell switching it didn't really simplify it, so maybe I'm wrong
but as far as I could tell it just added a step to getting the number
If this were me doing this, and I had to not use GAS, and it was singleplayer. I would probably make a data asset for my abilities. Define their name, icons, damage amounts, etc there.
Then for the actual gameplay code make an ActorComponent that can be subclassed. Put some base functions on the parent like CastSpell or ActivateSpell or whatever. And then make each individual spell as a subclass of that with the data asset specified in it so it can read off of it.
Add those components to your player bp and you can hard code their activations.
You'll still get the easy hard coding you want. But you at least get some separation of concerns and correct data storage.
What advantage does separating them give me though? I'm really not understanding what makes this better? I don't want to sound rude I'm just genuinely confused why it's better
Is your question for the data asset data or the spells into their own actor components?
Hello, I'm trying to implement smooth gamepad cursor movement. Technically, movement works (I'm using Game & UI input mode), but it's all kinds of clunky, even worse in the shipping build, where I can only move cursor straight vertically or horizontally (!). Can anyone point me in the right direction how to achieve correct cursor movement with the setup below?
There's a difference between adding gameplay and making a data driven gameplay system.
Systems often allow for more complex behavior that can be easier to build onto. They tend to be more designer friendly and easier to work with. They can also reduce the amount of times you need to repeat code and adds more consistent behavior along with making bugs easier to fix and identify.
In essence, what you're doing is just an inventory system with fix inventory items where you can which which item (spell) is being held/used. When you want to cast the spell, you're just activating the item.
The data gets you easy concepts. This might be unncessary. It's just a habit of mine because I put all game data in a single folder. It helps with editor utility parsing and localization lookup, cause we don't allow localization to search the entire game folder.
Putting your spell abilities in an actor component to handle your activation gets them separated from your character. Cause they're not the character so they shouldn't be in the character directly. Note for these I'm talking about the cast handling as abilities. Like... Managing cooldowns, allowing them to cast at all, etc.
But isn't that what I want? The spells are acting like guns, they're just weapons in an inventory system. Thats all it is? Whys that bad at all?
Why do I want to separate them from the character, I'm still not understanding that
That's a point I'm not going to make, because I'm not sure you'll really appreciate it on your current project until you get to a point later where you start deciding to add more things. It's just something you need to experience from an organizational standpoint to get.
If you mean so another actor can get access to the cooldowns or manacost, I still know ways I can do that
It feels like a case of if I knew of doing this before I started then it'd be how I'd do it from the start but because it's already like 2 or 3 months in and I've made everything now and don't really have to change it, the way I've built it is fine but if I do something again I'll do it using data sets and such next time?
It's a conceptual thing. Your player is not a spell. So your player class should not care about a spell's mana cost or cooldown time. Just like your player is not a mesh, it doesn't have it's vertices and bones in the player class. It has a skeletal mesh component that handles that stuff.
So what you're saying is I should have made a component that just has those varibles in it?
Which works the exact same way it's just
different?
I'm gonna be real I've had multiple people explain component stuff to me and not once has anyone ever explained it like that and it completely changed my understanding. I've had it explained to me before like "putting a different actor in that actor", having it explained as "Oh it's not a skeletal mesh so you have a skeletal mesh component" actually felt like it told me what that does and why I should have done it that way
For a start, you have to save a float locally. As you can see on the Set node, it's set by integers, and they'll clamp to nearest integer. So you need to save your location as a Vector2D, alter that and then pass that to the Set node.
It's for both. Normally the use of composition is to allow it to be used by anything. If you have a fireball in your game, it shouldn't matter if it's triggered by a player or a trap or thrown from a dragon's mouth that is an AI. So putting your spell activation in a component lets you put it on everything.
But beyond that even for simple use cases, it's useful just to keep your separation of concerns in order. To let each component act like your manager for being able to cast that spell independently with generic code for each spell. You get less code over all, which means less bugs, and easier prototyping. For example say you want to test out changing out a spell? It's as easy as adding the new spell and replacing it's activation part in your input area. Cause everything else was already made and done for every other spell.
I don't understand the last bit you said with setting the spelland removing stuff or stuff already being made, but everything else makes sense
From this point on if I make another actor like this yeah I'll try to set this up but right now, I have so many variables it's just not worth it unless I explicitly need to do it
Like if I make an enemy or something that needs this stuff, then I'll do it
But as of right now I don't need to do that and it isn't going to be worth setting it all up a second time just because its good practice
I get what actor components actually do now so I can use it properly next time
Blasphemy I say. Making a system better is always worth it!
- said a system designer
Don't get me wrong it might be something I do down the line when I've finished and wanna do a touch up but given how much I'd have to change around and move and redo
It is what you want but it's not what you've done. The issue is you're not treating it like an inventory system.
Even in Lyra, they treat weapons as items in a sense and have a sort of sudo inventory.
You mean their quickbar?
If i remember correctly yea. When you pickup a weapon, it adds it to an array somewhere that you can then cycle through to switch weapons. Granted its been a while since I opened Lyra.
Alright I've been debugging and, my structure seems to be reset to default.
To be more specific, past the first delay it gets set to None
help?
Your event got called again.
Nothing else sets that struct anywhere?
no, I just created them, this is the only place changing them
super weird
after any delay it's just none
( I am in the game instance blueprint if that helps, but I doubt )
When anyone gets a chance, how can I fix invalid data? There are these resolve member warnings and another error that says there are soft references to the old file name it had which don't exist.
I can't explain it, but the only way for it to print correctly and then print badly is that something set it in between. Which I can't explain if you put a DoOnce there.
I have a vague memory of having to fix something similar. I had a soft ref that looked like it was None. But I had to go in and explicitly set it to None. Because the UI shows None cause it can't find it even if it's value is still the old path. So you have to set it to none to fix that.
but then the original caller
At first it sets it to the correct level, but then it's just None over and over
where can I do that at? because of looked through the asset but I can't find anything
In W_RankeMenuButton, you need to look at every variable that is a softref, or any function parameter.
I dont have any softrefs in this bp
or any function params that take a softref
I've checked that every reference is valid already
๐คทโโ๏ธ
it was defined inside the file
im not sure what to do about it though, im sure if I remove that-it will currupt.
god why are uassets not text
I think I found the issue? apparently it's printing nothing
