#blueprint
1 messages Ā· Page 384 of 1
Some people when I am saying I do game design they are thinking of game design like create the game itself but actually game designing is not the creation of the game its actually the planning phase before the creation so pre production phase.
god damn.. i hate writing Blueprint Async Actions so hard...
Game design is not limited to pre production
yes I know
Then why write it :D
I wrote an essay on UI free game mechanics and how they differ to usual UI prompts when performing actions in games. It wasn't my finest work. š Getting people to test the end result was interesting though, even if it wasn't very scientific.
hm. game design its like create story/write book? create rules of a world.
And coding -> implement it?
Need to add a Typewriting function to my Dialog Plugin..
I am just saying the focus is in pre production I think afterwards game designers do balancing a lot like difficulty, mechanics of the game and more no and level design probably because its a sub category of game design
like creating GDD's
I don't think I've ever seen a GDD that was the same at the end as it was at the beginning.
This has to be done at the beginning and has to be edited afterwards.
Artist and programmers fight each other.
can confirm that..
Mine one been rewritten dozens of times. Internal struggle of indie dev where everyone have a say.
while i need to say.. today's GDDs can be so much more fun to design and fill.. than 20 years ago..
Milanote and stuff make those things much cleaner and more visual..
loves his Milanote works..
Trying to start a project with a friend and he wanted to do MMO otherwise its pointless and boring.
Wait..
isn't the point of an MMO to be pointless and grindy (=boring)?
XD
Josh Strife Hayes made a Video about that topics, cause of the failure of Ashes of Creation...
kinda was interesting to see the POV of a player..
beside the fact, that an MMO is absurd amount of work to keep it running and interesting for a looooong time..
Hey, guys! I want to say the line trace in UNreal works the same as in Unity I mean the line has to detect a collider in order to be shown?
yes.
Or doesn't matter if it has box collision
a collider with the specific trace channel
what type of collider, doesn't matter
only the Trace channel
per default you have "Visible" and "Camera"
But can add more Traced channels in the Project Settings
yes but my actor doesn't have a box collision but still got detected
normally, all Objects you place.. arte in the visible CHannel by default
Hi there. I was reading a blog post about beginner game development courses with Blueprints. It mentioned both Stephen Ulibarri and GameDev.TV. It said that the latter received negative comments specifically from this discord server, but gives no insight into this what so ever. Iām just wondering if there is any validity to this and what you guys would recommend I start with? Thanks.
cause the mesh has a collision..
or a capsule
oh so even if it doesn't have a box collision the mesh itself works as a collider
right?
Meshes themselves can have collision on them. (if they were imported with the mesh or setup after) You can have meshes auto generate collision as well.
No I mean even if I wont add a box collision, the collision tab in the mesh can work as a collider to it
right?
A Mesh normally has a Simple and a Complex Collision per default.
You can switch that off in the import popup.. or when opening the Mesh asset, in the details..
I dont have to add a box collision right
yes
again - the type of collider does not matter for a trace..
Can be Box, Sphere, Capsule, Mesh.Simple or Mesh.Complex
oh ok now I wanted to ask what is this when we say simple and complex or comples as simple what is this?
What are those?
Simple Collision is a very low poly shape of your Mesh.. while a Complex Collision is a more vertex dense Mesh overlapping your actual Mesh, serving as collider
With this settings you can define what collider of a Mesh you actually wanna use
I remember I had an issue
Complex collision is per poly collision. It's best to avoid unless its a low poly mesh or absolutely necessary.
For Props.. the simple collision mostly fits..
While Characters should be complex,
When I had the player start inside my house mesh there was a bad size icon in the player start and when I have changed the mesh collision to complex as simple it worked
I mean that was interesting
why?
you even can completely get rid of both colliders and do yourself a setup with Box/Sphere/Capsule
is there a way of changing the order of the categories of a blueprint? I got some variables that I want to edit on instances and they should be as far up as possible. I could throw them in Character or Default, but that's not the best solution.
no thats another question
check this?
Why I had this issue with bad size before?
Nope. Not in BP only. š It just placed them where it feels like it. (There might actually be a system to its madness)
maybe the Player start stuck in floor and ceiling?
no no thats for sure if I am going to change the meshes of my house to simple as complex it will print bad size icon on player start
you can perform apparently some cpp magic, but I'm not into that.
"Bad Size" normally is a collider problem.
Either your Player Start is stuck in the ground collision, or ceiling collision, or both...
Or your Character spawned from that Start will be when spawned...
i normally place my PlayerStarts around 10 units above ground level..
Giving them a small drop.. but ensures being unstuck
same for when saving Location > Loading location..
I always add 10 units on the Z of the loaded location
GREAT..
My Typewriting is actually working š
Is there a way to prevent this from being spaghetti soon?
I mean some stuff have to be connect with the hit actor of my break result
Move stuff closer to each other, don't waste space.
You also can take a look on the Electronic Nodes Plugin, which makes the Wires more straight.
Beside that - in Events.. no..
In Functions on the other hand, you can have local variables to hold stuff and use them without wiring..
- in Functions, you can
Getthe Inputs of the function directly in the graph, without wires.
Some more tips:
- you could make the hit result a local variable if this is inside a function
- stick nodes like DoesImplement... right below the branch - since it is a bool you don't need to see the wire, it sticking to the branch will be more clear imo
- don't drag three times from the same output pin (unless the connections are close enough), drag once and double click to make nodes. Less wires to keep track of. But some people dislike the redirect nodes for some reason
- this is more personal, depends what you like but keep it consistent where you position nodes. For me for example, if I call a function on something else than the current BP, I place the target right above the node. And standard inputs are always below it. I also try to always keep it so the wires don't go backwards - for example the end of the node used in a branch shouldn't be further to the right than the branch
With all of this I don't have problems noticing what is happening in my BPs, most of the time at least. But at the end of the day there will always be some spaghetti, especially the more stuff you add.
Async loading asset in a loop doesn't work, but would it work of if I use macro?
Why are you async loading in a loop?
What macro?
in this pic you can see i have a made a manual chaos setup for the one building using anchor-field, master-field, and sleep-field, all well and dandy you can do what you need with it to a degree, but its like its only really there to create a chaos cache if i am not mistaken? -
The other two are BP's with GC's inside which are able to just crumble themselves so no need for the Master-Field and they can be customized to a different rest collection, and they just use the global AnchorField and Disable Field.
Should i be looking at the geometry cache at this stage, and do you loose collision on the pieces if you go that route?
Redirects have a cost Apparently they dont , ignore me
Youāll have to be more specific. What sort of cost do you think they have?
I don't recall the specifics about it, wether it was some linking cost or something else, but it was enough to affect the performance when you did 'tons' (vague, i know) of redirects
Then it must have been an Editor-time performance issue. Theyāre completely compiled out of the runtime bytecode.
But if theyāre causing a performance issue itās probably more general node counts and not the reroutes specifically.
that could very well be , it'd make sense for them to go away during compilation ... but then again unreal doesnt always do things that makes sense (to me anyways )
and it seems you are correct. They mostly affect compilation time , and Adrien says no cost
so i guess thats debunked š
Well I know for a fact they get compiled out. I just ran into that code earlier today in fact.
š
damn, what are the odds š„²
Yeah I could see them affecting compile time ⦠but again thatād be more of general node count problem.
Yepp yepp
Never really had any issues with that , compile time on bp's that is
Guess i dont build large enough
And if itās getting that bad it might be time to reorganize it a bit.
Indeed. I've seen some pretty stramge things
I used to do them myself when i started , because thats whay the tutorial showed me š
I use them plenty.
8 paths from a swoth on enum with 99% overlap, lets not fix the 1% but do 8 equal paths with separate nodes
for the drop item into world for the inventory for some reason the item wont spawn while im walking on the ground but the minute i jump and drop the item the item will spawn
the spawn actor is set to always spawn so am i possibly missing something else?
Gotta check whats calling this
Add a print to verify that it gets called when it should ?
the player character is using this
it is being called at the correct time as well
its just not spawning unless the actor its spawning isnt coliding with anything
should i set the actor itself to ignore collisions?
Could try that yes
Ignore it by default, and enable it on beginplay or smth
Id also just ofdset it from the player location, but maybe you dont want that
Hi! Not sure what channel to use for this, but lets try this one. As level designer, any recommended course for Blueprint Engineering (Gameplay / Systems), Intermediate/advance that i can start, im not new with BPs
I can't set the color of collision boxes during runtime for some reason. I can set the color value fine in the editor, but during runtime setting the color does nothing. Is there some permissions I need to check or something?
Having an issue. When execution hits SpawnActor, the array index value is gone, so my offsets are always returning the first value. in c++ I'd pass the index as part of the delegate, but how in BP?
Got it working in a different way, adding the spawned character into an array and so went off that
because of the async action
Loop + async will make loop array data fucked up when you try to get it
Yeah I knew that was the reason, just took a while to figure out a solution
first day back in UE after a looong break
generally an extra event does the trick
Loop body -> call event (pass params)
Event -> do stuff -> Async action -> do stuff again
event will have the stuff cached data will be maintained before and after the async action
event calls should be unique, would have to test tho 
hm, yeah that would work too. But naw after I spawn the actor, I put into an array, so I just use that index to get the formation index
Just loop the array like is being done. And on every Async callback, check if everything in the array is loaded. When it is, spawn things as you originally intended.
This is one reason why bundles are so nice. Preload the stuff you need in gameplay and not have to do this kind of stuff in gameplay classes.
this is part of an encounter system for a JRPG type combat thing... so I think a bundle would be too many things to load, tho I'm not really familiar with them
This depends on your data structures. For example at Ironward we would probably have a data asset per enemy type. So it'd be easy enough behind a loading screen before initializing anything to decide what this encounter would use, bundle load them. Now your spawner can just resolve the softref because they're already loaded and will stay that way until you change the bundle state on those assets, which you can do as soon as combat is over.
Bundling is just taking SoftClass/SoftObject fields on a data asset and loading their content and keeping it loaded in the asset manager for you so that it doesn't get collected. Essentially tracks the thing for you. So your gameplay classes get immediate access. Which is important for consistency and balance across hardware too.
ah, I think i understand, but too advanced for me right now. Just getting the basics going, and following a yt tutorial to do it
anyone know if theres a reason I cant get a timeline to smoothly change my camera roatation lag speed? it just doesnt seem to do anything when hooked up to the timeline.
I have it set to go from 2 to 0 because it is set to 2 initially
not helpful for 2 reasons
-
With camera rotation lag speed the lower values = more lag and higher values = less lag, and zero is no lag. So going from 2 to zero is actually pretty significant.
-
I've been working on this project in ue4 for almost 6 years, moving to ue5 will be way more of a headache than its worth. ue4 is still a totally viable engine and doesn't effect the issue at hand.
Hi, I finally got debugging symbols enabled, and I tried to open again that corrupted blueprint I had, is it possible to find out what the problem could be from this error log alone? It crashes everytime I try to open that blueprint
I even tried to open it in an empty project and it crashes there too
So it looks like a really broken blueprint
i just wonder if i could open it to recover the code
Oh, also I found an application that promises to open/recover corrupted blueprints, in case anyone ever has this problem again, which im going to try out right now and share results...
I wasn't able to export/extract the data somehow from the blueprint.
but it does show me in a data table form almost all the things i had inside I just dont know how to translate them into something useful, this form is not very readable or useful. Might as well begin again from an older backup version. I can read the variables tho, and the functions and the graph names etc.
@hollow mural run the project from your ide on debug mode.
Then observe the call stack when crash.
Anyone think they could help me with my BP? I'm trying to make a bp for VR that lets the player grab and fling off of objects but the tutorial I used was outdated (I think) I'm on UE 5.6
it's not a c++ tho
it's a blueprint file. I suspect that I might have had added an event tick to do some print string debugs
or could be something else.
but ever since I made that change it destroyed that blueprint
it was maybe only one print string lol
im not sure...
but how would I run in debug mode?
@hollow mural is it a cpp project?
Corruption in bp only project except for struct is rare.
Print string is harmless in tick or not.
its mostly a blueprint project
As long its a cpp project, start the project from your IDE in debug mode.
When crash, you can look at the call stack to figure out what breaks.
Youd need to check the source to see how it works, and if theres a specific setter for it to make it update instantly
It might be caching it
Hey, guys! You know I want to enable outline effect on the objects that have the actor tag highlight and to not enable it when player is looking into an actor that doesn't have this tag. I am not sure why but I am getting this error.
Blueprint Runtime Error: "Accessed None trying to read (real) property CallFunc_GetComponentByClass_ReturnValue_1 in not an UClass". Node: Set Overlay Material Graph: EventGraph Function: Execute Ubergraph BP Player Character Blueprint: BP_PlayerCharacter
and
Blueprint Runtime Error: "Accessed None trying to read (real) property HitActor in BP_PlayerCharacter_C". Node: Set Overlay Material Graph: EventGraph Function: Execute Ubergraph BP Player Character Blueprint: BP_PlayerCharacter
Is there a node I can call to emulate a mouse click for buttons?
top tip for all do not accidentally wire the for loop counter into the delay nodes duration š .. that was subtle
Why you want to emulate this?
the number they return should be same?
no
-1
lenght is 1:N, intexeds are 0:N-1
but if you subtract š then yes
last valid index is length -1 , no?
yesyes
"Accesing None" your blue node somewhere is None, means its not valid and does not point to Object, so you get error
Light blue
Watching script, you should check if Hit actor is valid from Hit Result
Anyone know why i can't add the IAbilitySystemInterface to my player controller BP ?
when I search for it can't find it but I've defo added all the needed plugins
arr nvm so appparently you can't implement the interface within a BP
Hello, I'm trying to create a PatrolRoute "tool" that is based on an array of vectors (WaypointLocations). The idea is that I can add a vector in the editor, and the Patrol Route then adds a child actor component (a "Waypoint") at each vector in the construction script, before adding each waypoint to a "Waypoints" array using "AddUnique".
I seem to get the correct number of waypoints spawning in the level, but the "waypoints" array has far too many entries as shown in the images. More entries get added every time I edit the locations. I understand that this is because the constructor gets fired every time I edit the actor, but I've tried looping through the Waypoint array and destroying each element before doing anything else, and it doesn't seem to have an effect on how many items the array appears to have in the details panel.
Is there an obvious reason for this? I thought there might be an issue with the array info not updating in the Details panel - aside from that, I'm at a bit of a loss.
Ok, I think I've solved this by using a "clear array" node in place of Loop and Destroy. But I have no idea what the difference is.
I've found a work around now but so I can press A on the controller to trigger UI buttons that the mouse is hovering over
out of interest anyone know how within a gameplay Effect how I'd alter the player camera settings, bassically when they dash I want to alter the camera settings a bit for some visual feedback
Hey everyone,
I'm working on multiple different projects right now. This one is finally in a place where I can share it with you all. AND its 100% made in Blueprint
The game is called Youāre Invading My Space, and itās now live on Steam and available to wishlist. Itās also going to be featured in Steam Next Fest at the end of this month, so getting as many wishlists as possible right now would help us out a ton.
If youāve been around this server for a while and want to support what Iāve been working on, Iād really appreciate you checking it out and wishlisting it..
This has been my biggest step since earning my bachelors in game development.
Thank you guys.
hey guys I need some help
I have a time of the day slider that controls time of the day.
Morning is 600 (dark) , evening is 1800 (dark)
I also have Fog cards, that I want to change the opacity as I'm moving the time of day slider
the thing is , I want the fog cards to have 0 opacity at 600 (morning), full opacity at noon , middle value - around 1200 - and again 0 opacity at evening 1800
how do I do that
I guess something like this, but don't think this is the right way (EDIT , I did it with a curve)
Does anyone know what this red outline on top of the nav mesh indicates? I set the static mesh as IsDynamicObstacle so navigation wouldn't generate on top.
Use a LERP, A is 0, B is 1, then remap your Time of Day to a normalized 0-1 range and plug into alpha. The only thing is once it it hits the max point, the time alpha needs to flip directions instead of resetting to 0
I used a curve and it did the job
runtime curve works too yeah
I have another question
there is this local fog that I'm using in the scene, but It's made with C++.
Is there a way to convert/open this in blueprint ? I want to expose the parameters/variables to my slider as well
it has those parameters that I want to expose to my blueprint/widget
Normally you'd create a new BP class and search for this parent class directly, but I'm not seeing it as an option when going to make one. You'd have to make a C++ child that exposes it to BP. You can also just find this actor in your other BP, cast, and access the variables that way.
how exactly can I access the variables? Not sure
any of these, but you may want to precalculate in Event Begin instead of getting it every single time for no reason
especially if the objects aren't made dynamically
and then you'd just For Each
It's not a supremely slow node, there is just no point to re find the same data constantly
True.
I'm not really a BP guy so i'll see what I can do lol
but this is getting the actors right. How do I get access to the parameters/variables ? That's what I don't understand
search the variable name after pulling off the blue pin in the cast
something like this?
You can't reference a cached variable from another set of execution lines, but this is the basic idea yeah
Destroying an object and removing an entry from an array are two different things. Destroying an object won't magically remove any array entries which reference it. This is because object references (light blue variables) are not the objects themselves but rather just references to those objects. Think of an object reference like a URL to a webpage. A URL allows you to access a webpage, but if the website goes offline it doesn't delete your bookmarks to it.
Epic treats the construction script as a special case and components you add in it will likely be automatically destroyed the next time it's run. I believe this is to prevent people who don't know any better from accidentally adding hundreds or thousands of objects when they drag their blueprints around the viewport. That being said, the array is different since it's just a variable and not the objects themselves. The construction script doesn't reset your variables. That's why you need to clear the array.
I don't have event beginplay, this is in my widget. I have event contrusct / tick
same difference, it could make more sense to store that variable in the game mode and reference it externally instead of every widget holding their own unique set of data
ok, I have one more question. I have multiple fog volumes and they have different parameter values.
I want to use the slider, to increase/decrease the density based on their current values.
Right now if I start using it , and click the slider, all the fog volumes jump to the same amount of density - for example 0.5
how can I make so each of them increases/decreases from the current value. Is it too complex?
Get Radial Fog Density, save value to temp variable within For Each Loop, lerp from current value to expected value
It's not going to be exactly like that, but that should give you a better idea of what needs to happen
Given the following, I have a building and an area around the building, both static meshes. I would like to get point B, by tracing from center of Building that passes through A and hits the edge of Area mesh
So do that. Trace from far away through A towards the center.
Center - A can give you the trace direction, do a bit of math to cook up a start point outside the area and trace towards center.
Yeah, I thought of line trace as soon as I posted this
anyone knows how to properly implement a camera bounce system similar to this one in unreal blueprints? Is it some type of spring that follows velocity or smth?
How would yall go about it?
I donāt do stuff like this because I make Vr stuff, but if I were to try I would have the cameraās rotation interp to its current one plus a displacement variable (I donāt think you can add rotators together, so split it into X, Y, and Z, add them, and recombine it). Iād also have the displacement interp to 0, 0, 0, through either interp to constant or lerp (Iām not sure which is best for the scenario because I mostly use smoothing for delay on grabbed objects follow a Vr controllerās location). I would then set the displacement on impact with the ground, (maybe add a little smoothing for that as well).
Honestly looks like nothing more than a camera shake on landed.
To then add the slight change in camera angle, add a Boolean called something like āIsClearingDisplacement?ā and make it so Displacement only interps to 0, 0, 0, when on a branch where āIsClearingInterp?ā is true. That way, you can set it without it constantly trying to clear it. Then have it have that Boolean be set to true after you set the displacement (add a slight delay and you donāt need the smoothing I had talked about at the end of that message).
Ive done that with a spring/damper type setup
prett easy
In ue5.7, Edit Layers doesn't exist anymore. Is there anyway to enable that to existing landscape that I created in previous UE version.
return from which clamp value is actually assigned to torque?
I am converting this graph to C++, and found a variable is set this way which takes returns from two return points
What in the... is that
Seems like a bug, it doesn't make sense for it to be possible to connect two outputs to one wire. Unless you just overlapped two different reroutes.
this is one route, I fixed it by disconnecting them and reconnecting them
lmao thats funny
never seen that before
hey guys, I need some help
I have multiple fog volumes and they have different parameter values.
I want to use the slider, to increase/decrease the density based on their current values.
Right now if I start using it , and click the slider, all the fog volumes jump to the same amount of density - for example 0.5.
I'm using a controller BP to spawn the widget and the widget bp for the logic.
One guy told me yesterday what to do , but I'm not sure i'm doing it correctly
there is very less doc or tuts on the android Leaderboard , achi etc other than 9 yr old video not detail explaination.
can you guys suggest me right resource for it.
https://www.youtube.com/watch?v=nJG5qJpCCxU&list=PLZlv_N0_O1gZ-Qe3XN0R88UAPfa79kxJL&index=5
Announce Thread: https://forums.unrealengine.com/showthread.php?102839
Leaderboards, achievements, and ads, oh my! In this stream, Lauren Ridge and Ian Shadden take a look at the online subsystems in Unreal Match 3 and how these key mobile features are set up for Google Play and iTunes Connect.
Hey, guys! I was wondering if there is a way to organize my nodes like especially cables because like you see from my cast node I have to always drag the cables from this point.
I mean for the blue lines
maybe promote to a variable is going to work?
But it is slightly weird that you continue to the same path after the cast from another chain without the cast. I don't see the rest of the code but it is suspicious, the variable from cast may not be valid when you enter this block from the bottom execution path
Also promoting to a variable is always an option, especially if you can and want to reuse it
I'd go below the nodes with teh blue line since the connection is also on the bottom.
Sure, depends how you want to do it. With long wires I'm going above since usually I have calculations, branches and other stuff below and I don't want the wire to intersect with unrelated stuff
this is something that would be a lot cleaner in c++
auto player = Cast<BP_PlayerCharType>(Object);
if (currentpuzzlestep >= something && player.hasmistake) currentpuzzlestep = 0;
Most things are a lot cleaner in c++ š
yes blueprinters should start learning C++
hey guys, can someone help with this? I'm stuck
you can set dynamic material instance for the fog using this controller and store the ref of the material instance, now you can play with properties of it
Show the start of the logic as well.
Does "generate const class" actually do anything? I thought that const meant I couldn't modify anything
But I made a const actor blueprint, then changed the value of a variable at runtime and it didn't give me any errors
I can also inherit from that blueprint and modify inherited members, despite it saying that subclasses inherit the const keyword
Am I missing something? Should I be marking abstract classes as const as well? There's virtually zero knowledge of this out there
not sure if I understand you correctly lol
just access to the material instance of the thing you want to change intensity for it
like you need a variable in the material which set the intensity, and you can change this variable if you can access the material in any blueprint class
the local fog volume is a c++ class . I cannot access the material. If that is what you mean. And I am also not really a BP guy so that's why I am a bit confused.
I'm just trying to modify the Radial Fog Density from widget slider. But I want all the local fogs to increase/decrease based on their current paramter value
and not all of them to jump to the same value
hmm, I think you need to open the fogvolume class, and check if these variables are editable in the graph
what I did here is already working . ( Not sure if i did it correctly ) but the fog density is changing based on my Time of Day slider.
The problem is , that once I move the slider, all fogs jump to the same value , for example 0.5.
While I want each fog to retain their current value, and increase/decrease based on the slider , if I make sense
I guess I need to use an array to store the values of all fogs etc and then add that with the slider value, but I am not sure how to do it exactly
I keep trying things, but not sure what to actually do
I can see the issue, all the fog volumes are looped and updated
I don't see it š And I don't think it's only that haha
this loop updates all the fogs volumes with the same value
so what do I have to do
don't loop them, just get one out of them by index and change
but why one ? I want all of them to change at the same time
Ok, all of them with same value?
no, for example I have 3 fogs with density value 1 , 2 ,3
At slider value 0
If the slider vlaue goes to 1 , the fogs should be 2 /4 /6
I'm a bit confused sorry
ā Store original densities once
ā Multiply original value by slider value
I need to do this
in loop you can check if index is 1, which value should be used
for other 2 and 3 you can check also
and apply different values
in loop you can see array index
I see it, but not sure what to do with ti, how to check if index is 1
drag wire and call ==
I did that, but I am not sure what is this supposed to do, sorry for my incompetence
if the index is 1, it means you can apply any density to fog 1
where it says true, connect there
and it will repeat checking, next time it will be 2, now apply new density to fog 2
yo can also multiply by index the density and apply
you will not need to check for it manually
āāāāāāā¼āāāāāāāāāāāā
ā ā ā ā
Case 0 Case 1 Case 2 Default
ā ā ā ā
[1.0] [2.0] [3.0] [1.0]
ā ā ā ā
[Ć]āāāā[Ć]āāāā[Ć]āāā[Ć] (Multiply by multiplier)
ā ā ā ā
[Set Fog Density] for each
I would save the DefaultFog densities. Then in the loop get the default fog density for that one, multiply it by the slider value and set it. You would need either two arrays - a second one for default densities - or an unchanging variable inside the fog volume itself that is goping to hold the default
That it, if I understand correctly what you want to do. It sounds a little confusing
here is what I tried by myself, but I got stuck again š
In event construct I'm looping and getting all the current values. Then in the slider I'm trying to multiply the current values with the slider value.
But I'm stuck again now
Uh, for one, this is a terrible place to do functional stuff - in a construct AND in a construct of a widget? Widgets should only display stuff and communicate to actors/components when something was changed
But anyway, this is the basic, simplified way of doing it.
You may not need the second array if you add this value to your fog volume if it is a custom one - they you just get it from the fog instead of the array
On Get Fog Defaults,
How do I get the index and float output ?
Is this an array node , or just the varaible dragged and dropped with get ? But then I don't have those pins
this is how you can use multiply
What is this seed rate alpha supposed to do ? If it's randomness, I don't need that effect
you can delete it
directly connect with the target
Anyone heard of Gameplay Messaging system before ??
on the starship stream youtube channel they are using it to broadcast stuff out etc and then stuff listening for the stuff and then doing something based on that but can't see it within plugins unless it's named something different in UE 5.5
Gameplay Message Subsystem I'm looking for
that is still not working for some reason. All fogs jump to the same value
is this how it should be ?
https://gyazo.com/374b2995515433e90d57d6826e836d57
Hey Any tips on how to debug this AI nav walking, whenever i walk close to other npc it starts to stutter like crazy as u can se, this hoes for enemy npcs also
any idea s?
Hey, guys! Why I am getting this error?
Graph named 'Interact' already exists in 'BP_Chair'. Another one cannot be generated from Event Interact
it says the naming already exist ?
What does it mean?
BP_Chair contains a grapth named iunteract already
so i have to change the name?
y try that
Looks okay, as long as you provide the correct data
Weeell, problems like this is often a user error though. It is easier to break something in visual scripting. C++ is just text after all.
you're probably having 2 interact events
I have clicked convert to function and it worked
I mean right click on my interact interface
and converted but if I search for the event interact node it doesn't work I am getting this error
interesting
Hey, guys! I have a question. Event dispatchers are very similar to observer pattern in programming?
Event Dispatchers are similar to listening Functions
binding an Event or a Function to a Dispatcher, listens for the dispatcher being called and then fire themselves
in unity it was Event.AddListener - as i remember
in unreal it is Bind Event to <Dispatcher name>
But i guess.. you can somehow compare Delegates (= Dispatchers in BP) of Unreal with Unitys
Hello, I made a simple rope swing from a quick tutorial I found. and ran into an issue when I detach from the rope, for him he had no problems but I on the other had would get messed up after getting off the rope like my orientation would be off sometimes, the controls would act like I was still on the rope and sometimes id be stuck in the falling animation. I managed to tame a few things so now it doesn't happen as often but it still dose. somethings I did were keep my rotation and scale relative from whare I detached to the actor because If their on world then it just breaks every time, another thing is setting my movement mode from falling back to walking. and thies changes definitely helped.
I can really think of them as the Observer Pattern in Design Patterns in programming where there is a centra object for example a subject lets say and it automatically notifying the observers lets say subscribers of any changes that might happen.
but not sure if it's the same
If you have Delegates in a Subsystem.. this matches..
Else, each Blueprint and Widget can have Dispatchers.. so no central object.. but individuals to link.
Hello, I have a question but not sure if this is the right place. I'm truing to make a very simple line map for my game that's a side scroller. I need to be able to show the player's position between the left and right side of the line.. I understand the logic of what I'm trying to do I just don't know the nodes I need in the BP. Basically I need to calculate the distance between two locations, find where the player is in relations to those locations and show it in my UMG. The image is an example of what it would look like on the UI. I'm doing this in BPs not C+. Can any one help me?
You have your start world locations and end world locations
Get the distance of this vectors.
Do the same of Player worldlocation and startlocation.
You now have a max distance and current distance.
CurrentDist / MaxDist == normalizedDist
In your widget, you then can use that normalized distancen Ć widget distance to get the relative player location
Hello, guys! I wanted to say that today I have discovered a new tool/website for sharing and creating blueprints and send to whoever you want. If you dont know its called BlueprintUE and it's cool.
its like paste bin for code
a pastebin that will never expire. forever.
https://gyazo.com/646df16b6f4c9fa24a47aa82acb86f17
Anyone has any idea why its acting like this ?:/ or any advice on how to debugg
Guess youd need to debug the nav system
And perhaps tune it , but prob to early for that atm
hm any advice on how to debug the nav ?
get the path it returned and visualize that
there's probably other ways to do that then drawing it yourself
Nice you found it - it actually is a very common and well known website š
Sadly, not all countries can view the website correctly, cause of region locks..
Yeah changed the max avoided agents to 0 then it stopped
im guessing its the index 0 that needs to be tweeked
why is there 4 indexes ? how do i select them on the AI if they want different onces ?
or rather is there a way to add "Dont Avoidance" this actor ?
but I am getting those errors on the right side. Not sure what to do about it
is there a way to stop slate from eating inputs? Like A or whatever
Oh sorry, I didn't look at the log. Your fog density array doesn't have any values. You need to put default densities for each fog there and keep the index the same as the one in fog references array. So when you get all of the fog volums and put them in the array, right there put their density value in the second array with the same index
Do you think it's better to change metahuman to ue4 skeleton, if the whole framework is already craeted on the UE4 Manny?
Or change the framework to be using Ue5 Manny?
yeah but how, do I have to do an array again for the values?
Hi guys, I am 99% sure that this was probably asked before but discord search is attrocious and I cant find it (Also internet search didnt answer it either :/)
Does anyone happen to know why this doesnt actually apply damage?
Firing Test_Health_UI works, however Apply Damage deals 0 damage, so the AnyDamage doesnt trigger
What I'm presuming should be happening is 49 damage is dealt, and the print string says "49.0"
Should put a print on the other side. First assumption is that your Player proeprty is null.
Your print string says "0.0" though
They're aware of that. They said "should".
My bad
sorry if im confused through this btw, I'm just starting out on UE5 so If i sound like I'm extremly dumb through half of this, thats because I am lol
I assume you mean like this?
Nope
Where are you setting Player?
This will be an empty property to that type. You have to use a SET node somewhere to actually set that pointer to point to a specific instance.
And then here i do this
I presume i need to do the same as for instance with a widget
but i havent found what to use for actors
You'll need to tell it what instance though. You're setting this to nothing right now, which means it'll point to nothing.
For the moment, you can probably lazily test this with a GetPlayerPawn at index zero and cast that to your BP type.
For the Set here.
So like this?
It doesnt let me connect the return into the player
Like that, but you'll need to cast it.
So this basically
Yes, that prints a message now, lemme see if the whole thing works now
Yep, that seems to have done the trick!
Sorry for spamming you, can you check if I'm doing right? I used an array to fill the values, then I createad a function and called that function inside the widget. But it looks like something is still not right
as when I click the slider I get dense fog everywhere
Thanks Authaer!
And I assume I need to do this for everything i scope into another thing?
So lets say I have in the gamemode a "Create widget", but then I want to edit said widget in the third person character, I would have to cast the widget/UI in the begin play first before it would work?
Or would I do another create widget in the other scope
Okay so doing the create widget did resolve the errors from the message log, but I'm keeping the question up incase its suboptimal or this causes other unseen issues
That is... A much more complex question than you might realize.
Realistically you shouldn't do widget creation in the GameMode. Most times your widget creation should be somewhere local to a player. The AHUD class is used a lot as a manager.
The main thing with UI is that you essentially never want anything gameplay code wise to care about it. Healthbars are a great example.
Rather than make the character tell a widget that it's health changed. Your character should just change it's health and broadcast that fact.
A widget, or any other system that needs to care about a character's health changing can bind said delegate as a listener, and just update itself.
Essentially your GameMode and Character should never know about or care about UI. UI should always be like this layer on top of everything else that uses an exposed API to get or listen, and it should manage itself.
Also it doesnāt so much matter about the scope as much as the addition or removal of type information
Letās say you create a widget in the game mode and promote it to a variable. That variable will be an object reference, but specifically to an object of a certain type
Normally, that would be WBP_YourSpecificWidget, and if thatās the type of the variable, you could use YourGameMode->YourWidget without needing to cast the Widget
(You probably need to cast that gamemode though)
You could also choose to store the widget into a very generic reference, potentially even an āObject Object Referenceā (reference to an instantiated UObject) - then, all usages would need to cast
ahhhh wall of text oh god
Now, the return type of functions is a common source of type information LOSS
if you make a function on your game mode and it returns a Widget Object Reference, then you would always need to cast the result whenever you call the functionā even if the gamemode always returns its member variable that has a more specific type
So basically, instead of directly setting the percentage like here, I'd just set the display health, and then figure out how to make the Healthbar auto update?
Iād love to give advice on how frequently casting is appropriate, but the complete answer is also a wall of text, and I donāt want to pile on more than I have š
Nah is fine I just wasnt expecting something that felt so "Man I feel stupid rn" to turn out and be surprisingly complex
I guess a simple way to explain what can happen with casts is that you can end up needing to load the entire game all at once if youāre not careful with the classes that directly reference assets.
The actual cast itself, like casting to Pawn, is essentially free
If youāre working on a full project it may matter, but itās something you can learn later
So basically, something like say this is fine, if i have the HUD widget as a seperate thing just for the raycast
But this could be bad, if the UI widget then ends up being the "main" interface
ignore the fact that i accidentally deleted the call for the event below it in the first image lol
Now we gonna talk about timers.
I'd use a timer
I donāt quite get what youāre asking about
What is all this code meant to do, maintain a target and show info about it?
Oh maybe youāre trying to solve something specific and my advice isnāt directly applicable- itās more explaining why casts are required
Uhhh how to reword it
If I have a Widget/Interface with a singular function, and i call that, its fine?
But if i call something with loads of stuff that might be interconnected, that is bad?
You familiar with inheritance? Do you understand how a YourCharacter is a Character is a Pawn is an Actor?
Just like how a German Shepherd is a Dog is a Mammal is an Animal?
haha yeah i figured this is suboptimal, i really just followed a tutorial for this just so i can cobble together a first prototype and slowly learn how some stuff works lol
If you have a more general reference and need to access stuff declared or implemented in a more specific class, you need to cast to it. If you want to command an Animal to Bark(), you need to cast it to Dog (to check if it is one.
If the Animal was actually a Spider, the cast would fail
Its for interaction with objects IE doors
-# I really cannot wait until the moment comes where it all just clicks together and i understand what I'm doing lol
I'd suggest not pushing too far past where you know what you're doing.
If you're learning to drive, you don't bash your head against the wall stalling an F1 car over and over again, you work your way up.
Push a bit past, but if the last thing you really understood was 5 videos ago, back up.
Coupling is slightly adjacent- youāre following tutorials, I think you can just treat casts as free
Adriel and I have sorta explained what casts are, once that clicks for you we can expand on the advanced stuff
So, from what I understand so far:
Cast is basically telling the code "Hey, I need this Thing".
The object you define is basically just whatever it is you actually need
Cast does not "get" anything. You don't tell it "I need this thing".
What cast does is take an object and try to see if it's of a particular class. If it is, it returns that very same object, but of the type you want. If it isn't of that type, you get none.
Let's say you have a node, GetPlayerController. It gives you an object and all you know about it is that it's a PlayerController, right?
But you want to know if it's your PlayerController class, MyCoolPlayerController?
You would Cast that PlayerController you get from the node to check if it's your one. If it is, you get a MyCoolPlayerController object. If it isn't, you get none.
So its basically a comparison tool, that, if it returns true, also sends the thing you compared through?
IE
"Is this dog a mammal?"
If yes, then you get "Dog" out the other end
If not, then nothin
Something like that.
But more "is this mammal a dog?"
If it's a dog, you get a dog.
So taking this code block as an example:
The cast to BP_ThirdPersonCharacter basically goes
"Hi, am I a Player Pawn?"
And if its a player pawn, it sets BP Third Person Character as the Player Variable
If its not the player pawn, it doesnt?
If it's not a BP_ThirdPersonCharacter.
It can be a pawn and not be a BP_ThirdPersonCharacter
The cast will only succeed if the thing you pass to the cast is that cast's type.
Okay so basically if I'm casting BP_TPC, and I get Player Pawn, but the Player Pawn is actually a first person character, it fails?
Correct
yo guys can I get some help over here. What am I messing up
Your code here is going:
"Hey, is the player pawn at player index 0 a BP_ThirdPersonCharacter?"
It's guaranteed to be a pawn, so you could do pawn stuff to it like Possess it etc.
but you don't know if it's anything beyond pawn without casting.
A cast is just a type check.
If you have an actor type variable, you can store a reference to an instance of any child of actor in it.
When you cast, you're just checking to see if it's actually a child of the specified type.
If the instance your checking isn't of the specified type the cast fails.
Actor -> Controller
The below are both children of controller.
Player Controller
AI controller
A variable of type controller could store a reference to both player and AI controllers.
Not sure if that helps with your understanding.
How do I make a stagger system using timer handles?
- stagger is a separate resource that enemies have, when they receive damage they receive stagger damage as well
- while stagger is > 0, damage and knockback are reduced
- stagger refills back up upon not receiving damage for x seconds
- upon breaking stagger, enemy is vulnerable to extra damage and knockback, it slowly refills back up to full over y seconds (in the meantime stagger cannot be damaged)
I'm specifically confused on the third and fourth bullet, on how to properly utilize timer handles for those
Hit -> modify stagger -> did stagger break? -> yes -> apply stagger resist, extra damage, knockback buff (whatever that means in your context) -> set timer
Timer -> remove that buff, set stagger to full
If you must use a timer
mechanically it won't be "refilling" over time, it'll refresh after a duration. It's the same thing pretty much. If you must refill over time then just tick, no need for a timer for that
Ah I see thank you
Stagger is a buff / effect modifier. Like any effect modifier they have duration and value.
I will use GAS for my stagger and knockdown.
hello, i tried both ai move to and simple move to for a spawned in AI character movement, but unit walks a little bit and then stops without reaching the destination. Im ripping my hair out, ive tried everything and i cant figure out why it stops a certain distance from spawn location and doesnt keep going. Please help!!!
you are missing some basic understandings of programming, I noticed you don't know how for loop works
Generally speaking. It's best to pose at least a basic idea of the scope of help you'll need by attempting to frame your question. Otherwise you could be asking how to set a single property, or how to set up a fully data driven UI. Scope matters and so does personal skill in the task you'd need help with. If I say yes I can help you, then you start asking about how to do editor python scripting, that's going to be a sad day, because I can't actually help with that, but I just said I could help you.
ok mate so i want to create a football game
i got the basic hang of it
but it is hard
if possible can u join in vc?
@maiden wadi
This is satire, right?
I know what is used for, I'm just not a programmer and I rarely use blueprints etc so I'm not exactly sure how to do it in practise
Tell us what it is supposed to do then show video of it not working
hmm, than you need to learn blueprints at least some basics
what am I currently doing wrong? I think I even followed advice from chatgpt for this
we normally do not make vc here.. too much spam and fakes asking for that to then spam you with ads about their "talent" they offer + most of us deal with own stuff, too - and time is money/code..
So.. please, describe your problem - clarify as much as possible.
Blueprint is a visual scripting system - share screenshots, share videos (best MP4, or WMV.. cause possible mobile playbacks).. give us anything beside "i need help" š
this is what I was assuming, gpt is bad thing to use if you don't know basic usage of nodes
probably... I mean what I did is working. Just not the way I want lol
gng i did the same thing
gpt just confused me
sorry mate
the imporant thing is that you tried. and it was a damn good paragraph too š„ŗ š
you're fine bro, just ask one question at a time
better to ask 1000 specific questions, then 1 question asking "How do I make the game?" in a literal sense
Ok got it..
are you good in ue5?
i had a dream to create a game
i am like on the way
but it is difficult
ai's just confused me so badly
and the videos are pretty old
Whats your question bro?
check the video please
(me can't.. cannot play mkv)
would say.. you add way too much force to the ball ^^"
it is pretty hard to see anything in the video.. cause you scroll around without stopping at some crucial parts..
For the future, calm down, make slower.. and sound is still way too low...
Forward Vector * {8000,0,0} > Add Impulse == "WTF! Fast"
Force is way too much.. and you add the forcer to the relative, not the world..
since you attach the ball using keeping relative, it slings away..
u want the blueprint?
^For The ball
^For the Character
Ok..
First - Why so much wasted space and not straight alignments of nodes? It really is hard to read, even such small BP code.
For the ball - since the cast is not linked to anything.. what is the actual code you use in the video?
For the ball - you kick with 8000 Impulse in local space.. detach the ball first and keep world space, before applying impulse..
Altogether, the code seems not to be right to handle a soccer Game.
Maybe this stuff helps you: https://www.youtube.com/results?search_query=ue4+football
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
UE4 tuts, still work in UE5.. there was not that big changes since then
i chceked them mate ,but all of them are not smiple as i am new to this game developing
"simple" is a term of experience...
i am new to this game developing
Problem i see then is:
No experience + Multiplayer
Not to give you bad feeling about this - but, if kicking a ball is not simple.. doing it in replicated environment and P2P... is overkill
Making a 3d game WITH physics AND multiplayer is anything but simple.
Making a 3d game WITH physics AND multiplayer is anything but simple.
Fixed that for you.
XD
Well some games are simple. Not much needed to make pong
Yes.. Unreal is not the RPG Maker.. and even in the RPG Maker, it is anything but simple
Haha, it depends. Even Pong can be pretty complex. I'll even leave out the points that you might want to ship it on consoles and throw in the use of Unreal. You could use the projectile movement component and some basic onhits to just bounce it around and do the barriers for sure. Set up some UMG for the score. Might even be able to make it local coop without much trouble.
But then take a step back and consider everything that goes into the basics of that simple little project you set up. You haven't even touched a settings menu, a game with different modes, didn't code the PMC yourself, didn't program the input handling or map initialization code, didn't do the rendering pipeline or the slate UI system.
Would be anything but simple in reality.
it is not only to understand how blueprint parenting works..
You also want to understand how physics in unreal work, colliders.. how switching physics on/off affects the objects, what objects should be affected at all..
- On Top Movement, Position tracking
AND
then comes AI...
Just tell him to get a cs major and resume after at this point
na.. but at leats getting more familar with Blueprints at all.. before trying to create a multiplayer networking soccer Game ^^"
starting with some smaller stuff..
Unreal's learning curve is vertical (it has no curve), quite steep and overwhelming if you try to do everything at once without structure and experience.
people is thinking these days AI will make their games, I will say they are hitting on their own foot....
never listen to them, and only use AI for prototyping, not for the actual gameplay code
Attend some high profile courses on udemy for blueprints and for C++ both, this will not only save you time but give you something to learn and not depend on AI
@floral stump which courses do you watch?
from Tom Looman and from other certified instructors
Yes it has much quality content
I value to waste money to save time
Can you break down the features thats the upmost quality?
From his course.
Any use of asset managers?
(maybe unpopular personal opinion...)
i am not a fan of udemy courses.. or paid coursed at all..
Paywall for stuff you can get free on YT or Discords.. and many of them are pretty outdated, still on 5.0 (or less)..
I don't remember all of those features like by category, and I still watch it for a specific feature that I need in my game
I watched stephen ulbardi. Course is affordable and i get to take what i nees from it.
Speed running instanced struct, fast array and networking.
I use it most of the time like a starter for a thing to put me on the right track, and than implementation I do myself
He is also in my list sure
Same. I take only what I need.
certified instructor
Ngl though 90% of the student just copy one to one.
Like i see their progress is just using the same asset and doing the exact same thing.
i can recommend Ryan Laley for basic Blueprint stuff (not UI.. don't learn UI from him.. please...š )
Also the first hour in Unreal...
And my little list:
Blueprint Fundamentals:
https://www.youtube.com/playlist?list=PL2A3wMhmbeAq3WOT7kQ0EGby1YMb0zj5_
Event Dispatchers:
https://youtu.be/ayCEqL7XFZY?si=jQy8UXyu-0Q7vkE3
Interfaces:
https://youtu.be/x1EY7FvnnZE?si=6rVTVgTAM8sSuZKG
Object References:
https://youtu.be/2gKMkkXxdEw?si=4jyQMGXP6pnsA-P4
Class References:
https://youtu.be/QKy40NbixWA?si=hRvY9GtDKv8wf-JC
Soft- Vs Hard-References:
https://youtu.be/BazkY5aqoig?si=gHoC2gVZqTZuRsav
YouTube
A series of Unreal Engine Blueprint Tutorials that give you the foundational elements of Visual Scripting that you may not know if you have never taking any ...
What are Event Dispatchers in Unreal Engine 4?
Source Files: https://github.com/MWadstein/wtf-hdi-files
This video will teach you everything you need to know regarding Blueprint Interfaces in Unreal Engine 5. Even if you've never touched them before, in this video you'll learn everything you need to make blueprint communication with interfaces possible.
0:00 - Intro
0:12 - What is a blueprint interface
1:22 - Live example
7:52 - Interfaces vs cas...
#unrealengine5 #unrealengine #tutorial #blueprint #blueprints
unreal engine version 5.5.3
series for beginners
The Different types of References are a point of confusion with a lot of new unreal engine users. Soft/hard references? objects and classes? Today we'll take a look at the blue Object references and the purple Class references. What both of them do, and how to use them.
Join the discord for any help you need! : https://discord.gg/24cdJBP
Join...
For Multiplayer.. Cedric's Network Compendium is a Lifesafer!!
Yeah thats the bible.
This compendium is meant to give you a good start into multiplayer programming for Unreal Engine.
Most people just straight up teach the wrong thing on youtube when it comes to mp.
Hiya. Weird question, but where is the global gravity control? I deleted an unused gamemode, and my gravity is all floaty all of a sudden? Not sure if this is where I'm supposed to ask about this
I dont want to frame people but iirc ryan uses multicast to update health points.
XD yes..
I was like šØ
their subscribers needed simple way to do things, they don't care about correct or incorrect way š
Oh gawd dont make me look at the comment sections.
i skip comment sections.. all together.. makes me sad..
You cant even convience the OP and the zealots that casting or casting on tick isnt the devil.
https://www.youtube.com/@PitchforkAcademy
Also have some nice stuff
"NEVER EVER EVER USE TICK"
You have timer!!
Honestly if they have some decency these avoid tick and casting people need to go.
And custom Loops with DelayUntilNextTick.. which can be broken easily and are only temporal
Well i was guilty for not knowing that the loop run in a single frame once.
yes.. custom loop is not for-loop
custom loop is an event you call over and over again from within itself, using DelayUntilNextTick to wait.. and break by a bool or gate
Unless i need it but soo fsr soo good
Recursive function
delayed recursive function
But they are content creators, they care about making revenue by tricking beginners thinking that their tutorial will help them make their unachievable dream game.
yes.. before every tutorial a Statement is needed saying:
Don't use this sh%t 1:1 in your Game!
Cast everything on tick

From my profession perspective.. UI and GAS..
Nearly all tutorials are only showcasing the least effort amount of work to do, to achieve something sooo unoptimized and hard to maintain.. you normally puke on it and leave it in the dark..
But so many trust these tuts 1:1.. and produce a mess where you normally should overhaul everything from scratch..
Leading to my problems when doing Client work (so much shit UI and aweful GAS implementations..).. or simply some stuff in the UMG channel here i shake my head at...
Yes, you maybe a solo indie dev.. or very small team..
But that doesn't mean you shouldn't learn it the right way..
Especially when directing the view on polishing and maintaining after release..
Every good step you do in development, helps you in the aftermath..
Sadly, this gets not covered in most cases..
Nah, that's the watcher's responsibility, there's a reason why Gorka and all of those high sub low value creators are still out there
In-depth videos about complex topics take time. Most people knowing Unreal well prefer to do their own projects instead of dedicating a chunk of their time to make a tutorial that is going to get like 10.000 views.
It is just not time efficient for pros to do this sort of thing unless they just do it out of pure passion.
You maybe right..
https://m.youtube.com/watch?v=y4fE2JdFdvY&t=6s&pp=ygUcQXZvaWQgZGVwZGVuY3kgdW5yZWFsIGVuZ2luZQ%3D%3D
This channel should be standard.
Not content creators that use 8 booleans for directional roll.
The Mediator Pattern:
Software Design Patterns are like a guide on how to write good code, whether you're using Blueprints or C++, knowing good software practices is a MUST!
This video goes over the mediator pattern to build a "Combat manager" to coordinate actions between multiple enemies and the player.
We will also be combining the mediator ...
Think mostly the reason to give people exzessive help in the channels or via DM or jobs is.. cause i feel sad for them..
Yeah - one of the few good ones
Epic themselves could spearhead this by paying someone to make comprehensive tutorials - but epic is focused more on businesses than indies, so not gonna happen
Epic talk is actually great
Also matthew wadstein were technically epic staff once.
The last epic promoted tutorial I saw (CommonUI) was.. wait.. uhm.. I have no idea how to say this without getting strike by a lightning and send to hell..
Yes they are, but most of them aren't really for beginners
Some epic tutorial is actually bad in the old days.
Even the one for beginners.
It was the multiplayer chat system.
Don't forget the child actor gun that got so many people into the wrong mindset
its not the tutorials fault; its the developers who lack skill
You're ā ļø
what if we made an official seal of unreal approval certification license
When there are no barrier for the entry. Anyone can make anything.
Still sad it got recommended by epic xD
you only unlock the blueprint part of the engine once you've been certified to look at blueprints
we need to have standards. else we will be doomed to a life of shoveling spaghetti
Skilltree-development-system xD
When not learning before
^ also companies that are recruiting for a senior role at junior wages when someone with 10y of experience applies
Unreal is so massive you couldn't get enough of beginner tutorials, and youtube is filled with beginner tutorials anyway (non-Epic)
I think Epic's approach is purely on attracting those beginners by having flashy features that appear 'implement in one click' like metahumans
One should say to beginners, to not try to.learn everything at once.. and definitely don't try to create GTA VII without any experience right away..
epic should be giving us money every time we help someone fix their metahair on this server
Or Widget..
first you start by learning how to make a command prompt game
then you learn how to draw a line
triangle
maybe a bit of 3D
then you start by making your own engine
it's really not hard
i feel like i should do a bob ross like series on game engine development
a lil variable
some happy lil bugs
once you've just gone through the experience of getting your own UI and 3D animated models on the screen from scratch then unreal starts to make sense
still rather complicated
its like building your first robot and instantly using the most state of the art complex solutions & software instead of just having the most simple electronic hardware
Na.. but.. maybe follow simple steps by step rules..
In BP..
1st: what is an actor
2nd: what are variables
3rd: Events
4th: Functions
5th: References
6th: Macros... yeah..
7th: Dispatchers
8th: Interfaces
9th: Creating a Character
10th: Creating a simple Door
..and so on..
And not opening UE first time
"How to create Open World like Breath of the Wild?!" š„“
If the goal is to make a dream game dont do a life time side quest like making your own engine.
the goal is not to make a dream game
Tricking people into thinking they can make their dream game 100% BP is the biggest fumble
I've 12 years of experience.. never ever created an Open World..
to goal is to learn how to make a dream game as fast as possible
You r not getting there faster by making your own engine.
I now started creating my dream game.. getting out of more comfort zones I could imagine..
But it works..
Have you not take advantage of abstraction.
its the fastest way to learn
I dont need to know how to write code to convert 3d model or take its animation data to make my dream gsme.
I know people struggling using Dispatchers for a month now.. or even understand what their purpose is...
you can't learn unreal properly by only ever using unreal
I mean.. if you know the foundation.. you may wanna try see sourcecode.. since you learn way faster from it..
I mean, dispatchers in BP are confusing imo
It's esay in C++
What makes you think that?
Can't say i remember exactly, but i had trouble grasping it when i first started
blueprints tend to be harder to understand then c++ for anyting that's not trivial
Who calls what, who broadcasts
The biggest problems about learning Dispatchers - are 99% of tutorials..
if you are implementing game logic in blueprints beyond maybe 5-10 tasks per execution chain you are doing something wrong
Cause so many people don't know, that they do not need to bind a custom event directly to the binding.. but can use CreateEvent instead for remoting..
Or forgetting to tell that you can add Inputs to Dispatchers...
Or bind multiple objects to one event...
Not neccesarily lol
Same.. but was hell..
But that doesnt also make your statement right.
I would say that's correct for C++, renegading to functions is much more troublesome in BP
there always exceptions but in general you really want to have as much in c++ as possible
(Folks.. have to say.. I love the discussion here š )
so much more maintainable, readable, flexible, powerfull , performant
the only reason to use blueprints is well.. not that much
Blueprints r nice for asset references
And they r good for self contained logic.
Like i aint doing my abilities purely in cpp
Or gameplay effect.
i do have blueprints for all my actors etc where you can set data and put in references but all our logic is in c++
the blueprints are mostly data only
as they are meant to be
Completly disagree
I do most of the hardcore stuff in C++.. and use BP as front-backend to tie it together...
I use bp to glue stuff together. As long they r self contained, bp is great.
In general bp is designer territory.
the only reason where blueprints are "nicer" then c++ was fast iteration times but now with hot reload its basically the same since it takes 2-5 seconds to compile
blueprints are good for large teams where you have people that cannot write code
but should those people really be implementing logic
maybe for AI behaviours but those are in state trees
And UMG..
UMG in C++ is.. shit..
yes UI and VFX are nicer as graphs
as are AI behaviours
i do enjoy not having to write HLSL and making materials
I also use the custom expression very often.. knowing hlsl from old Unity times..
yeah withshaders you usually end up too limited
but once you start having large custom expression chunks it might be nicer to not have those in a single task..
I find it easier to write 1 line of hlsl math.. than throwing together 30 nodes..
i did make a very complex renderer in the unity material graph and it was fine except performance
To be fair UMG in BP is also shit
I think blueprints are for unreal engine programmers who know how to utilize it (and designers)
Bp is not mergeable
So..non programmers
another reason why they suck
So not great for collab especially in a big team.
blueprint local data being binary is kinda dumb
I would conclude myself to this with:
BP + C++
But not one of them alone..
its so much better if your data is human readable
Yeah that will be pure troll
Unreal engine programmers who know how to utilize blueprints are non programmers?
He probably meant designers
let's hope
it would be so nice to have unreal without blueprints
Non-programmers are usually designers
unity prefabs came close to greatness but are also deeply flawed
the question how to implement data in a game engine is not a simple one
with modern C++ we could have insane things
all of this was created before modern c++
Blueprints aren't for designers, though. Blueprints are for speedy iterations, prototyping, and easy asset handling. The right answer will always be to use both
designers benefit a lot from it
once your blueprint gets a bit larger then teration speeds for prototyping tend to grind to a halt
i would say - no..
I more go with:
It would be nice to actually have official, real and full covering tutorials from official side, covering BP in Projects
The dream
i think the future is more in hybrid engines where people just integrate unreal / unity for the storefront integration and rendering features but everything else is a custom engine
streaming engines...
it would be like driving a car without using a steering wheel because you'd rather use a wrench to turn the gears yourself or something
Write the code in c++, implement and connect in blueprints
you can minimize bp usage if you want
no more sourcecode altering..
hope not..
somehow i need to fix some problems with the engine..
where is Northstar, I don't think he'd miss an opportunity to shit on blueprints š
yeah i dont think my current project has any significant blueprints so life is good, i'm just trying to spread the word of revelation so people can be free from spaghetti
Source? Or do you mean, they are meant to be data only for your project
hey guys, can someone take a look at this and see what is messed up ? I'm stuck on this. It works, but not as intended
soome stuff is just far easier in bp than cpp tho š
life is good when you use the best tool for the job
C++ for core system and contained codes.
Im not gonna make chest that do x, y, z , b.cpp.
Just make the base class in cpp and derive from it for every custom action.
Unusable bro, too much spaghetti he already explained this to us. Its not cope either its objectively impossible to organize blueprint nodes 
Blueprints were invented for data purposes only bro cmon
Honestly, Blueprint's delegate bindings are ā¤ļø
And async actions!
Sure, UE5Coro gets you even better async actions in C++ but oh man it's nice to just plop a timeline in when you want to do something janky real quick
Lesson learnt, you want something janky? use blueprints
hello, why is it that an ai unit only reaches using a move to node only reaches its destination if the character movement speed is high, but stops early and fails to reach its destination when the character movement walking speed is set lower?
IMO, you wanna make something small, use Blueprint -- and a game is made up of a lot of small stuff. Triggers, moving platforms, cosmetic stuff (like spawning particle systems or sounds), basic triggers, arranging a attachment hierarchy etc. are all really nice to use BP for.
But yeah haha in fairness the things I outlined as nice (async, timelines, and serialised delegate bindings) are all really scary in BP because they're so deep under the hood it's hard to troubleshoot if something goes wrong.
Hello ! idk if this is the right place to ask this but is there a way to keep a level sequencer playing without making it longer? I just want it to be on standby (with the character's idle animation still playing and all) until it reads a player input?
you want to loop it ? or play a different one that doesn't move and loop that until input interupts it
ideally just the "last frame" while the animation keeps on going until input interrupts it. otherwise, the latter would work fine !
Annoying editor behavior I experience. Is this a known issue? Is there some setting I'm unaware of that makes this not happen?
- validate file: failure -> editor sets focus to the log error pane
- fix asset
- validate file: success -> editor sets focus to the log error pane
- clear log
- validate file: success -> editor does NOT set focus to the log error pane
Hey How would i play a random death animation
Random sequence player in animation death state, or random index in blueprint
tried the random sequencer but it just loops all availeble ones
Create, an array of Anim Montages (DeathMontages).
Use Random Integer in Range, Get array element, Play Montage.
For random index in blueprint
Ah
Well the looping can be fixed
Inside your Death ā Transition out.
Create a transition from Death ā Dead (Final), In the transition rule. Enable āAutomatic Rule Based on Sequence Playerā
oh that makes it not loo p ?
sweet
What's the most efficient way of getting a Trace to ignore an actor based on tags?
Cant you just create a new trace channel for all these objects ?
and then you trace on a different one
I am. They're objects that can be picked up, and I'd like to tag them with "Held" to prevent them from being picked up if something else is holding them. Which works on a single trace, but on a single trace obviously it won't fall through to the next available object, and I'm not sure if running a bunch of tag checks on a multi-trace would be a performance hit.
anyone here familiar with GAS at all? im struggling to understand why the GetAllAbilities function (active breakpoint in the image) is only returning an empty array.
Unless you're saving the 'held' items in a dedicated array, you would need to trace twice imo
Or just filter post-trace
I dont think thats very expensive if you dont have absurd amounts
It won't be a hit to performance. It might be more of a hit to performance to have too many custom collision channels tbh. Not that his suggestion wasn't a good one
under a thousand and you should not even slightly mention any performance hit if you just loop trough them
But I would definitely do a multi-trace in a function and return as soon as an actor failed to have the "held" tag and return that actor to avoid any unnecessary extra checks
I try very hard to avoid making custom channels if I don't have to. Right now, pickupable objects are anything that responds to the PhysicsBody channel and implements an interface.
Sounds good.
Is that a native function? And did you add abilities to the component yet?
In a function you dont need a break. You just use the return node and return the array element
yes ive triple checked that the ability component has added abilities. and not sure what you mean by native. but that function comes with the GAS system
It will automatically kill the function and any loops or sequences etc
My second question would be whether or not youre sure youre getting the right ASC.
95% sure isnt enough when something isnt working as expected
yes also sure its getting the right one
there is a print string of the component that is going into the function. and the second is a GAS debug screen of that same actor showing it has granted abilites. so unless im checking wrong and somehow these arent the same. it must be right
Yeah strange, i would have to read what the code does to know. I'm wondering if you can just not use that function and make your own function to return your components available abilities?
what happens if you call give ability with a test ability on that component before calling get all abilities
yea probably. i may have to. though honestly im fairly green and my brain is already stretched to the max setting this up. I was doing it this way cause it seemed like it handled the communication between everything for you.
what is the simplest way to pass this information from a units that can be selected and deselected by a RTS flying in the sky style player controller. would that be to make an interface to handle that?
i did a version of this but this widget is owned by the player controller and im trying to pass that information on click selection. so i cant have the widget give itself a test ability. Either way. i tried a test function on the unit itself that triggers itself with a breakpoint. i opened that array and it was empty too.
That question is kind of loaded, but assuming they all use the same ASC component, couldn't you just make a function on the component that returns the unlocked abilities?
ah i see what you mean. yea that might work
And as far as obtaining a reference to the component, you can just use "get componentbyclass"
I would really love to implement that Interface in one of my actor components. But it doesn't exist in the add menu. Anyone happen to know what's up with that?
LogShaderCompilers: Display: Job FRenderSingleScatteringWithLiveShadingDirectCS(permutation 350, format PCD3D_SM5) compile time exceeded threshold (42.398s) What is this issue?
Hello, I can "get by ref" from a struct, but I can't seem to do the same for a Blueprint class. Is there a reason for this?
One is an array on a struct, the other is an array on a different BP class
That option is there because the array won't. You do that if you want changes made to that value to also be changed in the array.
Thanks, I know what the difference is between "ref" and "value", but I don't understand why the option is there for structs but not classes.
You are not demonstrating that this option exists for a struct. I don't understand what you mean by that.
Does anyone know why my "minute" variable is only printing 1? I have it looped but it's not adding 1, it just remains at 1.
If I try to get an element from an array on my struct, I can choose to get a copy or get a ref. If I try to get an element from an array on a different BP class, I can only get a copy.
Oh, this question. Yeah someone had to explain this to me too. What do you know about C++?
Still getting this problematic message Display: Job FRenderSingleScatteringWithLiveShadingDirectCS(permutation 252, format PCD3D_SM5) compile time exceeded threshold (39.474s)
I know how to pass by ref in C++
Obviously nobody wants to help with it
Do you know what a pointer is?
yes
I note that there is a "set by ref" node
The blue connectors are pointers. It's not making an actual copy of the object despite how it sounds with the get (a copy). It's giving you a copy of the memory address, rather than giving you back the place where the memory ref is stored.
And it's confusing because hovering over the round BP pins says "Actor Object Reference". But I thought round pins were copies, diamond pins were refs.
They're actually more like pointers because they can be null, but yes. Despite the "Get (A Copy)" node that you can use on Arrays, what you're getting back is not a copy of the object. Just a copy of the memory address.
Or they don't know. Patient is important
Sure 30 mins without this issue vs 6h with this issue is "patience"
Yes it it
I've spent weeks tracking down memory leaks before in code that only me and God understood. Patience is indeed important.
You didn't get my reply was rethorical, right?
Please explain to me why we are waiting 6 hours because of this vs 30 minutes without those problems
Genuinely not sure what that means.
Me neither, that's why I am asking for soluations

Is this a troll account?
System reboot is not helping, restarting UE editor isn't helping, bake alll lights isn't helping, so what is to rule out this obviously random thing?
Homie, nobody even knows what your actual problem is right now. You posted one error message with no description of what is actually happening and what the desired outcome is.
Brother, be assured I am not your homie or any sorts off so just gtfo if you can't help with anything aight. Message posted is from the output.log while packaging
But yes, I missed to specify that, so thank you pointing out to that
So just to check, if I do the following, should I expect the value of the stored MyInt to increment?
No, that is the object itself.
If you want that, do ++.
No. You'd have to assign the output of the add back to MyInt.
You can't change the thing itself because that requires changing the pointer.
That's exactly what I was doing when I started asking about diamond pins
Which, as you'll recall, you don't have the ability to do.
You can change stuff inside objects pointed to by the pointer.
That being an int, it has nothing inside it to be changed.
Funny to call me Brother but take offense at Homie. Anyhow, is it actually preventing you from packaging? Is something behaving in an unexpected way in the packaged project as a result of this?
Yup, I was, thank you for accepting that ahaha š Gladly no preventing from packaging, just takes 6 hours vs 30 mins when that msg is showing up
THAT'S what that meant. Okay.
Goodness.
In that case, wouldn't this be a question for #packaging ?
I did not see that channel before, so thanks for telling me about it
I think you have to join the dev ops category.
Thank you for your help ā¤ļøš
Most things in bp are copies with few exceptions.
That circle blue pin of object reference is actuallt a copy. You are getting a copy of the address of the object.
The underlying object the address hold is the same.
E.g passing an address of ox88888 either by by ref or a copy will still give you the same object.
What is that make array suppose to do?
Nothing, it's an illustration.
I dont get it though
Think of blue pin as address of memory
Doesnt matter if its circle or diamond
Its pretty much just a number
Regarding copy/ref in BP again, I understand the C++, but it's difficult to see from the blueprints why this is going to make changes to the array element:
...when this isn't going to make changes to the single value
Those are data elements inside Actor.
This is just . . . what Waypoint Number is.
This will change the property of the target.
Yes it will mutate the object.
You r probably doing something wrong.
Show full code.
Put another way: The first one is
*(FoundActor[i]).Location = Vec3(0, 0, 0);
The second is
*WaypointNumber + 1;
Wouldn't the second one *WaypointNumber + 1; increment the value of WaypointNumber?
No.
There's not really a better way to explain that behavior than "that's how C++ works."
"=" is the assignment operator.
If you don't use the assignment operator, you don't change anything in memory. Anything with "Set" in the name is gonna be an assignment.
š
Btw in case you don't know, there is an actual increment operator (++) to do this in one step.
Yeah, that's how I started wondering about the diamond pins in BP
I thought it was possible to get any value by ref in BP and I've been trying to figure out why it's there for structs and not for other values in arrays
I did also find things like this: https://www.reddit.com/r/unrealengine/comments/7kp75c/what_does_get_a_copy_in_blueprints_really_mean/
Get a copy means get a pointer, that's pretty simple. Just poorly named. I'm not actually sure why you can get certain types by ref in arrays. Based on which ones it's possible with though, I'm guessing it's a size thing.
Get by value (copies) get by ref (address)
Get a copy means getting the copy of being passed.
So if you are passing a string by value. A copy of the string will be made.
Is it that the basic types aren't actually stored as pointers?
Pointers r address (object reference)
Other primitive data isnt address. Int, double, string, etc.
I figured as much for those, but I noticed you can do it with a couple of things that aren't native C types as well like Transforms.
Although I suppose Transforms are just a bunch of floats at their core anyways.
Okay yeah that checks out.
You can get variables by copies or ref.
Ref access is limited in bp.
So an array of objects would be UObject* arr[] = {&Obj1, &Obj2, &Obj3);, while arrays of primitive types would be struct myStruct arr[] = {struct1, struct2, struct3};
Those struct also have an address
You can deffinitly have an array of structs
Dont confused bp limitation with what you can actually do in cpp
Are BP arrays C++ arrays at all, or are they implemented as a more complex data structure?
BP is taking alot of L's today
No diff. Its just a container
Its probably a layer of protection š¤·āāļø
Kinda nuts to use bp loop over large data.
Looping 10k times = 10k copies of the data.
This part at least makes sense to me. Passing actual instances of UObjects by copy all the time would be horrible.
Thats okay actualy, you can only pass the address
10k copies of some int8 is cheap
Yeah, that's what I'm saying.
But imagine passing like your strucr data
Where I'm confused, I guess is:
Is get by ref in BP implemented like THIS:
int intArr[] = {1, 2, 3};
int BP_GetACopy(int index)
{
return intArr[index];
}
int* BP_GetByRef(int index)
{
return &(intArr[index]);
}
Or THIS?
int* intArr[] = {&(int){1}, &(int){2}, &(int){3}};
int BP_GetACopy(int index)
{
return *(intArr[index]);
}
int* BP_GetByRef(int index)
{
return intArr[index];
}
?
You cant get ref on most types in bp except struct afaik.
You can do it on all the "default" ones.
Or maybe you can but im sure its limited.
Even strings, which I really didn't expect.
I got the calculations for the points in the world and the player position but I'm not sure how to get the widget to read it at all. I'm not seeing anything for a widget distance or line distance.
Get by ref on an int or a float is such a weird niche thing to do and I'm intrigued that Unreal allows it. I actually had to go look up how to make a literal pointer to a primitive because I've never needed to do that before.
my ai character using move to stops early after spawning with a walk speed of 3cm/s but makes it to destination at higher speeds like 10cm/s. please help
literally a picture of my kids :D
Anyone familiar with Gameplay Tag Containers? I'm having trouble getting my tags to stick when adding them at runtime.
It goes through two interface layers to get it out, and it sets it successfully, but it doesn't apply back to the original. Which, I am guessing, means I'm about to learn that I STILL don't understand the nuances of copy vs ref in BP. I can't for the life of me figure out how to get a pass-by-reference node passed along this chain though.
It's not made in C++.
then ur getting a copy
unless you can tick the "by ref" setting on your interface function of the output var
I know, I'd like to change that. Normally there's a little arrow next to the variable declarations that allows you to set as pass-by-ref, but I guess you can't do that in Interface declarations?
I'm hoping I'm missing something.
It would be tremendously annoying if I cannot do this.
seems like a no
Is there a reason that's not allowed?
Interface / message node might fail and it would therefore be a ref to nothing
well it'd be my guess
Well that's unfortunate.
I'd prefer that the function be excluded from the message node system if it returned by ref, meaning that you'd need to cast or something else before you could use it
You can still do this the other way around.
Instead get container tag, you run function AddTagToContainerTag passing a gameplay tag.
All the function does is adding the passed gameplay tag to gameplay tag container.
No need to deal with reference.
That is a much better idea than making a terrible wrapper object.
I will do that instead.
If this interface actually existed for BP, it would be even easier, but noooooo, that's a C++-only interface.
Does that mean something other than here? Because having it as part of this component would be incredible.
If the object you want to use it with has a native class then it should show up
But if you plan to work without native class then you can make your own interface.
I'm not sure what a native class is.
Cpp class
Example actor->character.cpp->mycharacrter.cpp->BP_mycharacter
You do implement the interface in mycharacter.cpp
Which bp_mycharacter would inherit
Ah. Unfortunately no, this is raw on top of ActorComponent. Guess I need to make my own. And probably save it somewhere else because I bet I'll want to use this again sometime.
Your actor component should have a native class too.
Implement the interface there.
Hello š
Iām scaling my cat mounts randomly using Scale Actor 3D Scale (0.8 to 1.2) on BeginPlay, then counter-scaling the RiderMesh back to 1.0 so the rider looks normal sized.
The rider's scaling works, but the riderās seating position is inconsistent when attached to a socket. How do I keep the riderās 'butt' perfectly snapped to the saddle regardless of the creature's scale?
@torn python imo the only thing you should do is just changing the creature scale and the socket will scale relatively.
Btw becareful with that random node.
Pure function are run per exec (white pin). So you potentially going to get diff value in creature scale and set actor scale.
If you want to get a random number once, cache (promote to variable) it and use that for both the scale and creature scale.
Changing just the creature scale does work to upscale the socket, but the problem for me is it also scales up the Rider mesh which looks odd. So I'm trying to figure out how to counteract that while maintaining the creature's random scaling š¤·āāļø
first check if what summer said isn't your issue
if you are on 5.5+ you can also rightclick the node and pick show exec pins to turn it into "inpure"
so the value stays the same
Probably not i just read that he wants to keep the ridee scale one to one.
But yea that random func is shuss
Kinda pointless too mayhe since you can just. Get Creature->GetActorScale
ah wait, the rider is always scale 1.0, yeah
I'll swap the random func like you said and see
Also love your red panda pfp too haha
the rider socket is a scene component attached to the creature mesh
i also tried it as an actual skeletal bone from the creature mesh, but that gave the same inconsistent results
also visualize what happens
use draw debug sphere or similar to show you where the sockets end up
so you get an idea of which one goes wrong
Does changing the rider scale with 1, 1 , 1 actually does anything? Im under the impression that it scales down due to the parent.
it does (he uses SetWorldScale)
yeah without the rider scale 1,1,1 node the rider gets scaled up and down with the parent creature
Ahh i c
No clue then, it should work fine unless theres issue with the transform.
Theres like 1 in 100 case where things are not ready in the same frame.
If you add delay till next tick after scaling, before setting to socket location. Does it help?
Also if the goal is to attach to the socket, perhaps do that.
if it's correctly attached to the socket, it shouldn't matter
i added that delay until next tick and switched to attaching to the socket and it is looking better, as in less variance it seems, but the butt location still varies with the scale of its parent creature :/
Hmm not sure if this gonna make diff but maybe you should have the socket parented to a bone.
As in create the socket in your skeletal mesh asset
i have it setup like this until I start animating it, not sure if this is what you meant?
wait i thought you had a socket on the rider, too...
so the attachment point of the rider is the pivot of the rider
is the pivot it's butt?
because i guess it's not...
ah no the rider just has its origin at its feet.
Should I make a socket for the rider skeletal mesh too? I didn't know there was an attach socket to socket option?
well at least it would give you a point that you can use to calculate the correct offset
if you always scale the rider to the same size, you could aswell "hardcode" the necessary offset
calculate the delta and make the offset
so i guess your socket on that cat thing is also somewhere inside it's torso!?
which you should then place rather on the back of it, the actual surface
it worked!! thank you both so much ā¤ļø
Multi trace describes its results as sorted, but I'm struggling to figure out what the ordering is. It's definitely not distance, which is what I want.
You can make a func to sort your own.
I know I can but I was really hoping I was just missing something. Blueprint sorting functions are abominations and I'm trying to avoid using C++ for complicated version control reasons.
Ah well, nothing to be done about it I guess.
Bp is binary so not mergeable.
Cpp is text, its perfect for source control.
If this is something you need often then you can make a blueprint func library.
Oh, I'm aware. The issue isn't with versioning the files themselves, it's that half our team aren't programmers and don't have any experience with C++ stuff. Which means that the more C++-reliant code we have, the less they can test on their personal machines.
The programmer write the function library.
The bp designer simply use the function from bp.
Yes, this is what I'm going to do. One of my existing classes has a rudimentary Quicksort implementation. Now that it's going to be used more than once, I'm going to move it out and abstract it a bit.
Its not designer business to read the cpp file.
Calling the function is no different than using any existing function in bp.
Bp node essentialy just calls a cpp function.
Make use of abstraction.
You can use get actor of class in bp without knowing cpp or object iterator in cpp.
They still need to recompile everything whenever it gets changed. We tried that for a bit. It caused too many issues and we wasted too much time debugging things. The saga of our attempts to make artist-compatible C++ content is detailed in #source-control if you search for my name there.
Hopefully I will be competent enough with Perforce in the future to make it work on another project, but it wasn't worth it for this one.
Yeah you do havw to be rebuild.