#gameplay-ai
1 messages Β· Page 15 of 1
I have ai that does melee damage and right now they come around to the side of this camera because it is the closest the ai can get to path toward the center of its target.
Ai spawned on the opposite side of the tower, then circles around for the closest spot I am guessing
They missed the obvious difference
One has a clock symbol the other does not. Which clock symbols have a specific meaning in UE
If u use the clock one then the BTTask will complete once it reaches its destination, but if use the other it may not, depending on how u structure ur task. Which could be a nice feature or unintended
I use the non clock version so I can make it do some extra stuff during the pathing
Huh - so you can't use the parallel node with the Run Behavior Dynamic task. Lame.
Any cpp exclusive AI functions worth exposing to BP? Have to task a junior dev
Depends on what you're doing... Perception system probably has some, like the ability to set the sight angle
I did have some stuff exposed from perception. We just wanna expose as much as possible to BP
Plus, junior is idle and I am running out of orders to give
GetStimulusLocation
ForgetSensedActor
these are currently exposed which were cpp exclusive
Hi, I am currently challenging with 'Ensure condition failed: ObservedKeyNames.Num() > 0' error on opening project and building it.
on [/Engine/Source/Runtime/AIModule/Private/BehaviorTree/Decorators/BTDecorator_BlueprintBase.cpp] [Line: 67]
Does anyone knows what did I wrong?
I vaguely recall I might have gotten that at one point as a result of deleting a blackboard key which was being observed by a decorator
Kind of curious how would you even expose that to BP without rewriting a custom version of it π€
Since it depends on the interface which you can't implement in BP
any good blogs or articles on creating ai with c++ ... combat
prefer generic knowledge first about tools then dive into specifics like combat, and i'd say push your luck with BP first since combat AI specifically requires many iterations
Doom, Spider Man and Division games has GDCs and slides about their combat AIs
Yep order passed any recommendations on how to keep dependencies minimal?
To add to it look for the channel AI & Games
By making your own team enum, exposing what each team thinks about other teams and sending your own function to the interface.
Is it possible to create new senses? Id like to have sight sense make AI move toward target, then an engagement sense to start firing ranged weapon. This would allow me to expose the radius for engagement to other designers for balance.
Engagement would trigger other behaviors too like using cover, but Id like AI to close the gap first. Right now, sight triggers shooting.
I cooould use a simple sphere collider component and expose that radius.. but ive seen issues where overlap events stutter or dont register. AI senses seem to be more reliable.
Yes, it is possible.
haha within engine or do I have to do it through c++?
C++ is within engine.
no that is in visual studio lol
There's a difference between the Editor and the Engine
I see unreal engine is the program we use to put all the parts together. One of the parts being code from visual studio. Although my understanding is that vs allows programmers to get access to libraries specific to Unreal Engine, I would not say that visual studio is the engine lol
but basically youre saying c++ is required for this new sense idea?
I think you can make new senses in BP. I've never done it, but I remember seeing a sense BP base class.
ah found them
yeah there seems to be a UAISense_Blueprint
The Editor is the set of tools you use to put the game together. This is not shipped with the game.
The Engine is the set of tools to drive the game. This is shipped with the game.
Ah I like that. Makes sense. so technically, we cant develop anything in the engine lol. We develop everything in the editor.
I also remember seeing a .exe at some point called UEEditor.exe or something like that
Nope. If you only use BP then you need the editor, I suppose.
What is the difference between senses with the config word appended to it and the ones without?
You need a sense class and a config class for each sense. The config is what you use to configure the sense. Whatever variables you want to set on a per AI basis.
does this mean we can have sixth sense
Hey Luthage - what are some of your favorite things to use EQS for? Some words of wisdom if you would. I am just now getting into using it.
Just kind of want to drum up some ideas.
Right now I'm using it as a way for an enemy to attack and then flee somewhere out of sight if possible.
Ah so config basically establish parameters.. and then the stim source basically gets or relies on those values. I see that stim source component does not use config
Target selection is a big one. They added a generator in 5 to get the perception targets, so that's a bit easier now.
Anytime they find a location is an EQS.
I use it to find nearby interactables (my version of the smart object system).
Abilities is another big one.
Picking a target with EQS does sound like a nice approach actually. I might look into that as well. Kind of like a little aggro system π€.
If you know C++ you can make any tests that you want. You can also make any item types that you want, but this is far easier if you have source to look at.
Yeah, I mostly work in C++. Just started dipping my toes into EQS last night though. Was surprisingly straight forward to get things up and going.
Need to improve the AI so I can have varied behaviors π
I'm curious: how do you use EQS with abilities? I've never thought of combining those two ideas beyond target selection.
I use it to find the best ability to use at the given time. Tests check Can Use Ability and each ability has extra data such as range to help pick the best one. This allows design to add new abilities without touching AI.
Do you use CDO to check their data
Oh, that's very cool. I can see how data based techniques could allow for a wide range of abilities (like AoE vs single target) with that setup, all using the same tree.
I separate out the data from the ability so they can be reused. So it's just finding the correct data for the ability class in a data asset.
Ah, so data asset references the GA
Yep
It makes them appear reactive and intelligent while only having a handful of BT nodes for combat.
this may be a stupid question but how do you use variables from your blueprint within your AI controller?
essentially i want to check if the ai character is hurt and then play an animation, as well as cancel all current actions and do something else
how do you use variables from your blueprint within your AI controller?
from where? and, are you asking how its done technically or how people prefer it?
usual way is locking the braincomponent which will pause tick of BT and its elements to play animation, and then depending on how you execute behaviors, it'll change how you can switch to next desired action since if you are using BTs you can do this by just setting up a more prior tree branch and evaluating BT to it by setting a boolean in blackboard
I'm trying to get a simple flying AI working, was wondering if there's a way to set a "minimum height above ground" while using AI MoveTo?
Not sure if this is the most optimal but, you could trace to the ground and compare the distance to your flight height, and lerp until the difference is 0.
to not run on tick, you could have that trace check run a timer by event that loops every 1 or .5 seconds depending on the agility and speeds of your game.
You might need a custom path following logic
AI Move to compares distance to current goal
or separate actor's root transform and add offset to mesh body etc
some of my sillier issues got resolved as i tried to explain my issue to you, but now i'm a bit stuck. let me know what else you need here. i'm not sure why this isn't working!
Is your 2nd Blueprint screenshot belongs to this task?
ah no, that's in the ai_controller
it'll basically start executing BTTask_MoveRandom after you set the boolean - whats the error you are getting?
also you have a empty space* in your field
"Name" variables shouldnt have empty spaces - they get broken
your BB key doesnt have an empty space so it probably wont compare correctly either
lol thanks for catching this
i'm not getting any error, it's just never going through the left half of the behaviour tree
even after i fixed that
Check visual logger
and observe your blackboard keys in gameplay debugger
it'll show why
Gameplay debugger activates with tilde key by default
and for visual logger check docs
from what i can see gameplay debugger is only for c++? is that correct?
im having trouble making sense of the visual logger but maybe this is an issue ?
access to it is not, displaying custom things c++ only
does it loop like this
try removing this
that didn't do anything
i wish i could explain what's happening a bit better lol
or even understand a bit more
maybe you cancel the task because radius is zero
continue to debug, i cant see any obvious errors
im having a lot of trouble figuring this out :/ a weird bug has appeared where after the first time the ai attacks, the ai just continually gets stuck in a hurt animation whenever it is at me (i basically turn into a hitbox that doesn't do any damage)
i have no idea what could be causing this
also i dont know how to make the ai avoid it's own attack hitbox
Typically you don't want to put hit reactions in the BT. I would recommend using the library function Lock AI Logic With Animation in the character instead of messing with the AI.
Recommend reading up on collision filtering: https://www.unrealengine.com/en-US/blog/collision-filtering
Choosing what collides is obviously very important, but it can be tricky, and itβs a problem that we have spent quite a while discussing while developing UE4. The system we have can seem a little complex at first, but it is very powerful and consistent, so I wanted to give a little background on how we arrived at it. Weβll talk about the differe...
My AI when it sees a target is supposed to move to it, but when there is no target in its field of view it goes back to the last place it saw a target rather than continuing roaming
wouldnt it set the target variable to invalid when theres no entity in field of view?
if so it should fail and go back to randomly roaming
anyone got an idea on what should be done?
kinda baffled rn
even if it dosnt set it to invalid when the actor leaves its fov it dosnt make sense cuz it should just continue to follow it
i dont understand why it would go back to the last place it saw the enemy
When getting ai to move does it require a 1d blendspace which variable to u need so it moves?
I found the issue...
Too much going on here maybe try print string debugging
One thing I donβt see is a task for clearing the blackboard, are u clearing it? Otherwise the condition for if it is set will always be true
I'm trying to make an AIActionComponent as an "action layer" that allows the AI to interact with the world, similar to Bobby Anguelov's pinned YouTube AI stream. The idea is that an action can be called on an actor with the AIActionComponent. These actions could be Move To, Play Animation, Play Sound, etc. Anything that effects the world. The component would keep track of the running actions and have the ability to cancel and prioritize them.
I would like the actions to be asynchronous, so I've been looking at AITasks. These seem to be what I want and there are already AI tasks for Move To and other things built-in. My stumbling block, however, is being able to call these AITasks asynchronously from my component.
For example, the AITask_MoveTo is called via the static function UFUNCTION(BlueprintCallable, Category = "AI|Tasks", meta = (AdvancedDisplay = "AcceptanceRadius,StopOnOverlap,AcceptPartialPath,bUsePathfinding,bUseContinuosGoalTracking,ProjectGoalOnNavigation", DefaultToSelf = "Controller", BlueprintInternalUseOnly = "TRUE", DisplayName = "Move To Location or Actor")) static UAITask_MoveTo* AIMoveTo(...);.
Is there a way for me to have the same asynchronous function (with multiple output exec pins) that calls AITask_MoveTo, but within my component?
Do you mean you are in the blueprint logic for your component and you cannot call the async function?
No, sorry I didn't explain it very well. I can call async AITasks in BP, but I have to do that using each of their static functions. I want to call an AITask with my own UFUNCTION in my component while still having it be asynchronous, if that makes sense.
AI tasks are already run via the gameplay tasks component. Why are you adding another component on top of that?
I think the GameplayTasksComponent is actually what I want... I suppose my reasons were the following:
- How do I get the currently ticking AI tasks (which the above seems to have baked in)?
- How do I write a wrapper around the Move To AITask (and others) so that a designer can use that task without worrying about updating their state machine if we swap out the underlying navigation?
- How do I let a designer easily find all available AITasks? I assumed dragging the functions off a component would be best, but I think this is me only having a hammer for every problem.
The gameplay tasks component already does that. You can also extend that component if you want more functionality. The gameplay ability system component is actually a subclass of the gameplay tasks component.
When the pawn is possessed, the AI controller adds a gameplay tasks component, if it doesn't already have one.
- You really don't want that to be on the component as it'll bloat the class. If you name them all AITask, designers can easily find them all.
Sorry, I keep writing this and erasing as I read about the GameplayTasksComponent. That's definitely what I want (a way to track tasks), and I was just reinventing the wheel. Thank you!
You're welcome!
This would be it
I'm having a weird issue where my behavior tree is invalid on my character. I have auto possess ai set to placed in world or spawned. I have auto possess player disabled. In my ai controller I set to run my behavior tree on spawn. Am I missing a step here? In my begin play I set a timer every 2 seconds that is checking if the AI controller (not even the behavior tree is valid), and it's printing invalid every time. I don't get it
Event on possess does run in the ai controller as well
Which makes it more confusing?
If random wandering position behind agent I wonder how to make agent try to u turn instead of instant look back and walk straight to destination point ? any idea or keyword thank you π
my agent is crocodile so it's weird when him instantly turn
@celest wing yeah go into your pawn and set "Use controller rotation yaw" to false, and set "use controller desired rotation" to true, and orient rotation to movement to "false"
Where exactly are you trying to start your BT?
The call to start the behavior tree is on the ai controller that is attached to the pawn @uneven cloud
In which event or function?
Specifically in the On Possess event in the ai controller
It's there a setting that would not attach the ai controller?
Do you have the correct AI controller set on the character?
The OnPossess event is being run, because I can print a string from there.
Yeah I even tried using another ai controller to test if it was a problem with that specific ai controller
None of them will work
I have my player controller sending an event on click. When I click, i check to see whether the controlled pawn has a valid ai controller and its always false
Single player or multiplayer?
I am using a custom character class from a plugin, so I'm guessing there is something set on it that is messing up the ai controller working, because I had it working on my original pawns
In client mode. I did also try it on standalone and listen server
AI controllers are only spawned on the server. How are you spawning your AI?
The pawn is being spawned on the controller in the game mode
On what controller? Is it spawned on the server or the client?
Yeah I'm running it in dedicated mode. So when I check if the ai controller is valid, I get both the client and server messages saying its false
Sorry, the pawn is being spawned on the game mode. Then I have the reference to it being sent to the player controller
Is the character set to replicate?
Yeah the settings on. You can use multiple clients and they will work correctly (without the ai controller)
I would verify that the AI controller and BT isn't actually working using the vislog, but it sounds like something is weird with that plugin character.
Yeah I'm messaging the owner of the plugin now. He's usually decently quick to respond. I was assuming this was something on my end, but honestly behavior trees aren't hard to setup, and I've been trying to troubleshoot this for a couple of hours
You might also want to try to add a call to the parent function in the event possess. I don't remember which type of event that one is, but sometimes not calling the parent can break things.
Pretty sure the OnPossess function in BP is a K2 version. So the native OnPossess function calls it by default, without needing the super call. Kind of like how Begin Play is.
That said - couldn't hurt!
Yeah, I think it's a blueprint native event, but I'm not 100% on that.
How do you call super functions in blueprints btw?
Right click on the event -> Call Parent Function
Or Add Parent Call
Can't remember the exact terminology
Ah okay.
Yeah still doesnt work :/
Lol, working with plugins can be such a pain... well this is my first time but yeah
Yeah. Working with other people's stuff when you can't yell at them could be frustrating.
That's the pawn one, not the AI controller one.
Thought that's the one he binded too
Yeah and it's a new plugin so the docs aren't completely thorough. Although he has been pretty responsive with my questions and helpful, but I basically have had to rework my game within the confines of how the plugin works
It seems weird to me that the possess even gets called correctly, but then the ai controller is immedially invalid afterwards
You can always breakpoint on destroyed.
Are you setting the owner after you spawn it by chance?
after i spawn the character or the controller?
After you spawn the character
Well the plugin is. I am then manually setting a reference variable to it in the player controller so that I can send commands to it
Oh. You shouldn't do that. The owner of a pawn, especially in a multiplayer game, has to be the controller
Wait I shouldn't have a reference to the controlled pawn?
Controllers already do when they possess them
You shouldn't set the owner of the AI pawn.
I'm not setting the owner though
It's more im setting a reference to the "owned pawn"
in the player controller
Well the variable is called "Hero" but you get the idea
So in the player controller when I get a move command, I go "Hero -> Get AI Controller -> Get Blackboard -> Set value" etc
Which was working fine with my own custom implementation
- In the pawn, set "Auto Possess AI" to "Placed in World or Spawned"
- In the pawn, set the AI Controller Class to your desired AI controller
- Spawn the AI on the server
That's really all you need to do.
Yeah I have all of that so I'm guessing the custom character class that the plugin is providing has some weird bug in it
Because yeah, I set it up before with the basic character class and it was really simple
Anyway thanks for your guys' insights @uneven cloud @harsh storm , much appreciated
Also, I just made another pawn that didn't use the plugin character class, and attached an ai controller and it is completely valid
Someone said here in the chat the navmesh modifiers now support concave polygons to modify the navmesh. But I tried it out and when i add a polygon to the brush it seems to split it into several smaller polygons based on a random vertex
btw, in case somebody hasn't noticed, you can now have concave nav area modifier volumes
that seems wrong
I googled and all i found was an old (pre ue5) post in the forums that said that the polys have to be convex and there is a limit of 8 vertices per poly
The oddest thing is that the splitting only happens after a while apparently. I can see my polygon correctly at first, but after some seconds randomly partitions appear
Fig. 1: what i input, looks right at first
Fig. 2: i enter brush editing mode, it splits on its own ( i didnt press anything)
Fig. 3: going back to selection mode, the splits are apparent
The splits produce convex polygons, they can have an arbitrary amount of vertices it seems
Is this intentional or a bug?
any idea why this nav link might not be working? the AI path's to it but when it gets there it just starts flipping 180 degrees rapidly
I tried more complex cases and this automatic partitioning of my brush geometry that UE5 does here is at least consistently successful (no overlaps created). I m posting a more complex case below
Sounds like it's trying to repath while using the nav link. I would verify that with the visual logger.
I think I have noticed a bug though. So I mentioned this splitting happens only in brush editing mode of the editor, namely exactly when I click the mesh. I noticed that also everytime i move the camera with right-click and then release, on release it rebuilds the navigation. Every single time. And it seems to be the case only with a brush mesh that it wants to split into concave sub-polygons. This happens with my custom modifier derived from AVolume and INavRelevantInterface, so I will later check if I can replicate this behavior with the almost identical NavModifierVolume which the UE ships with. I will report when i tested it
It really is like that sometimes, though enduring the sarcasm pays well most of the time because even though sometimes some people are annoying, half of the chat is insanely experienced but expect questions to keep their interests when answering - so I still love #cpp a lot
I just wanna say I appreciate your answers.
and I'm glad to help - #gameplay-ai is more chill than #cpp and we have some very experienced here in UE tools and game ai in general so you probably can find better help for #gameplay-ai specific things
Embrace the sarcasm π
be one of us
The thing is, in UE you either do tons of unit tests or literally never do .. from my experience if you are a solo dev you never do
this specific thing is never your problem working with BTs because low-level things already covered for you - and I'm generally not much familiar with unit tests but there is a good talk about of Sea of Thieves did their testing https://youtu.be/KmaGxprTUfI iirc they also cover AI and BTs in that talk with the context of automated testing
BT has its own pitfalls but during development you grow invulnerable to those and get used to quick workarounds or some little ugly code etc
respect 
lol
oh wait
i linked the wrong talk
this is the correct one
Functional tests are far more important with AI than unit tests.
So unit tests test a system in isolation, which is important sometimes. I suppose. Functional tests are more about testing how the AI functions with all it's systems working together.
https://docs.unrealengine.com/4.27/en-US/TestingAndOptimization/Automation/FunctionalTesting/
I have tried it out with the regular NavModifierVolume and it also partitions any polygons there that I turn concave, making everything convex again. However, i could not replicate the behavior of camera-turns in brush-editing-mode triggering a navmesh refresh every time, that erroneously happen without any actual changes being done to the mesh
Anyone has an idea why my AI refuses to be launched in XY by a LaunchCharacter event in a NavMeshLink I'm working on? I'm confirmed and my XY values of the velocity it receives are non-zero, I even tried setting the X to something stupid like 5000.0 and I see the AI jerk forward for a brief moment before the X movement is nulled again
It's currently running a very simple AI of getting the Player's Location and trying to MoveTo my location
This is my current launch code
What is probably happening is that the collision is hitting the ledge which is going to stop forward momentum.
The AI is very far from the ledge currently
The link is nowhere close to a collision
Even better view
Next thing I would look at is if your max speed is affecting it.
Even setting the max speed to 3000 doesn't change anything
i mean, it looks like its launching to its own location, maybe double check the destination
I figured it out. The problem was Braking Friction
So it turns out that also the NavMeshModifier of UE5 has the behavior that it triggers bool FModeTool_GeometryModify::EndModify() when in brush editing mode and rotating the camera with right-click. Imo a minor bug
https://forms.gle/hrV8yyscsNxsn9PU7
a survey on "human and virtual influencers affecting attitudinal outcomes" is being conducted. Please participate by answering the questions in the survey form. It would take about 6 to 8 minutes to fill out the questionnaire.
Dear participants, as part of my PhD program from the University of Jammu, a survey on βhuman and virtual influencers affecting attitudinal outcomesβ is being conducted. This study will help both consumers and organisations to gain a greater understanding of the influencer types. The questionnaire will take approximately 6 to 8 minutes to comple...
This looks like a good survey but I dont follow any influencer at all so couldnt participate. You might find better luck on #lounge btw. This channel is not the correct one
funny bit of history, iirc links were added as a feature either due to or in inspiration from the team that made "Brink", a pretty revolutionary but forgotten game of its time
Whats the best way to find the closest player? Dont wanna use GetAllActors and FindNearestActor on every sense tick pref. π€
Using an EQS with the perception actors generator.
can anyone explain to me why the ai seems to lose sight of the player even though the player is still within the "lose sight radius" ?
if was my understanding that the ai should continue to maintain sight of a player its seen aslong as that player is still within the lose sight radius
but in practice it loses sight as soon as it exits the normal sight radius
does anyone have a solid behavior tree tutorial, no tutorial really helps me wrap my head around the whole idea
The best video out there about BTs in UE
In this presentation, Epic's Paulo Souza uses Unreal Engine's built-in AI features to build smart enemy behaviors for a game with stealth-like mechanics.
By relying on the Gameplay Framework in Unreal, we're able to quickly create convincing AI using Behavior Trees. Behavior Trees are great for creating complex AI that can be presented in a way...
Hey does anyone know why when i call Perform Condition Check AI and Get Blackboard Value as Actor (which is set for sure) that returns null?
however if i do OwnerController -> Blackboard -> GetValueAsObject -> CAst to Actor it isnt null :/
Trying to get the wrong bb value?
I don't think there should be any difference between the methods there, so if it doesn't work doublecheck all values and print all outputs to be sure what's going on
I did, but for some reason the problem persists... ill continue with the workaround
I am evaluating State Trees for my project. It appears they are not formally coupled to a blackboard. I think I want to make a blackboard and store all my information in there anyway. Does anyone have thoughts whether I would have any problems with this approach?
just extra effort to fill BB values from an evaluator and another extra effort to bind data from it
I wouldnt do that tbh
ST's are meant to bind to their actor's data for the most part. Take advantage of that.
I seem to be reaching the max agents limit (100) for crown manager after spawning my 100th consecutive pawn
Even when most of those 100 total pawns were already destroyed
At that point all AIs stop working
Is there some additional step besides destroying pawns I'm missing?
Hey everyone, I'd like to get your thoughts on something. Would you rather have AIs spawned into the open world using a spawner, or always have them on the map but adjust their tick rate based on their relevance? I've always gone with the first method, but I still adjust the tick rate of AIs based on distance and visibility. However, I'm wondering if it might be better to always keep them on the map. Spawning can sometimes cause slight frame rate drops, but it's not really a good enough reason to abandon this approach. Anyway, I'd love to hear your thoughts on this.
Spawning can sometimes cause slight frame rate drops
use a volume and serialize spawner's spawnable actor array to it, and when player enters/leaves specific areas load/unload actors async
this should help to reduce the spawning overhead
if it doesnt probably you have too many components or BP only components that cause overhead
Would you rather have AIs spawned into the open world using a spawner, or always have them on the map but adjust their tick rate based on their relevance?
assuming your game is open world mars exploration, i'd say both - flying, big looking or important ones should be around map all the time, others should be spawned/despawned
not sure if i recall correctly but i guess thats also how horizon zero dawn was doing it
I go through a spawner (and other structures) 100% of the time. There are many benefits:
- keeps the hard asset reference out of the map
- decouples the AIs from the map, so you can reuse the map for many missions
- each AI may only be present when certain conditions are met (schedules, progression, etc.)
- ability to respawn AIs
- entities far away can be culled or not spawned until you approach
- the exact thing you spawn can be different based on any condition, like difficulty level, or random selection
- etc.
Thanks, I'm going to implement what you suggested then. What made me question this was when I was listening to Todd Howard's talk and he mentioned that they were reducing the tick rate of their NPCs but always keeping them on the map. But it's understandable since their NPCs kind of have routines and I'm sure they use spawners for creatures, etc. I love how Guerilla games share a lot of stuff about their game btw.
Yeah, good points. Thanks! I didn't think about hard references but you're right, they can be a real nightmare to deal with, especially with the scale of my map. It makes much more sense to use spawners for general AIs and manually place important AI characters it seems.
Todd Howard's talk
Which talk is it?
This: https://www.youtube.com/watch?v=H9AAnV59ddE
It's not really a tech oriented talk but I enjoyed it since I love Skyrim and his other works
I was almost sure Skyrim was despawning enemies after playing it for years.. damn π
Haha maybe they still do, I think he was referring to story related NPCs but I'm not sure. It wasn't really too specific
is it possible to run an EQS query and tell it any points outside a radius are unreachable? I'm just wondering how I would effectively tell my AI to patrol only around a specific radius while using EQS π€
I know I have a function called GetRandomPointInNavigableRadius but I'm wondering how I could compare one with one generated by an EQS query
You would use EQS to find the point to move to.
So you could write a query to find a random point in X radius. You wouldn't use the GetRandomPointInNavigableRadius anymore.
oh I didn't know I could do that
yeah in general I'm trying to stay away from GetRandomPointInNavigableRadius lol
that's why I'm moving to EQS
I'm too noob to EQS to remember the exact query off the top of my head, but you would want to use the one where it generates points in a radius.
You'd have to supply it with a specific actor if you want it to be in radius of a specific spot.
ohh ok
Don't know if you can just say radius around a specific vector. (You could if you enter C++ land. Make whole new types π )
Using an actor would be easier anyway π
yeah more than likely, I already have a radius actor
since on a behavior tree it always generates the query around the actor
You should be able to parameterize it and then pass in the actor from the BB
oh really?
At least, I saw something that could be parameterized when I was messing with it π
I think I'd have to run the EQS query on the radius actor itself
then just get the value from there
ohhh
but I don't think I can access the owning behavior tree's blackboard anyways
You mark it as a parameter and then in the task it becomes available, which you can then set it to a BB key
It might not be available for the Generator though
Β―_(γ)_/Β―
Might be C++ land from here
If I may ask, how do you then handle actor instance property customization for the AI? Do you keep the most important basic config on the spawner and copy it to character or AIController on spawn?
I also wonder about stuff like sequencer, level scripting and other stuff. You then can not animate or reference specific enemy actor.
You can bind actors into sequencer with a little blueprint logic. Though I forget the exact functions to do it.
For properties, there are several patterns.
- you can use subclasses. So there's a MonsterBase, then GoblinGrunt derives from that with certain properties. And GoblinKing derives from MonsterBase and uses other properties.
- you can echo those properties on the spawner and set them via blueprint or native after you spawn the object, or before the FinishSpawning call.
- you can do a variation on this where you offload that logic into a helper object too.
I use a little of both.
Okay, cool, thanks for the answer. I might look into converting my AIs later too.
fwiw one fairly easy way to achieve above is to offload props on your actors into data assets, so you can just assign the desired asset directly into the spawner or whatever
it's just one way of many and whether it's good depends on how your system works overall, but thought I'd mention since data assets can be pretty handy
I was thinking of also using instance uobjects as I need to reference waypoints and other actors placed in the level. That feels cleaner when put in the level / spawner details instead of separate asset.
@crystal hatch Hey, sorry for pinging. I am not sure if you are owner of GameplayBehaviors. I really like them there is just one thing I think is missing. Triggering gameplay behavior (UGameplayBehaviorSubsystem::TriggerBehaviorImpl) returns true if the behavior started and is running. False is returned if the triggering failed or triggering succeeded but immediately ended (UGameplayBehavior::EndBehavior() was called during triggering). Because of this, I think it is impossible to distinguish between failure and success based on the return value.
I think even built-in UAITask_UseGameplayBehaviorSmartObject is having hard time because of it as bBehaviorFinished is false when the behavior triggering returns false. That could falsely indicate the the behavior did not finish but maybe it did .. just that it happened during the triggering. I don't think it is causing any issue for this AITask but still... it could be handy to know precisely what happened from the return value.
would that be in a test or in the actual EQS itself? can't seem to find anywhere that says I can mark it as a BB parameter
To elaborate on my case.
I run a sequence of gameplay behaviors. Just like BT sequence, this sequence ends as soon as a behavior fails to trigger. Because of the above, I am not able to distinguish between successful trigger which ended synchronously and failed triggering.
How is bCreateNodeInstance supposed to work? For a very long time I believed that when I am not instancing a BT node, only one object is created for this task/service/decorator for all behavior trees and all behavior tree components running them. I thought that due to this reason I can't store variables in the object itself and instead I have to use node memory. However I'm doing some testing now and it seems... it doesn't work this way? I've made a BT service in CPP that changes object variable from a uproperty variable. I have this service placed in 2 different trees which are ran on 2 different NPCs. I was expecting that the object would be the same (have the same address) and on every consequent breakpoint stop I'd see previously set values in local variable but this is not the case - the objects are different all the time of course object-level variables are untouched π€ So what does the bCreateNodeInstance actually do?
Again, I can't recall exactly. I've only dabbled with it. I took a little break from my project and plan on starting again tonight. You don't tell the query to look out for a BB, you just say that it accepts a value from outside. The EQS task in BT then recognizes that and allows you to set it to a BB key
never mind, in the code it says QueryConfig is long deprecated :p
no wait nvm it says everything EQS-related is deprecated in BTTask_RunEQSQuery.h
Pooling will help your frame rate issues when spawning.
Placing characters on a map instead of spawning causes a lot of problems. Especially when changing those characters.
i feel like i'm overcomplicating this, all I really want is to run a basic EQS query and eliminate the points outside a radius actor, would I have to save that radius actor on a blackboard and pass it in through Query Config params on Run EQS Query??
iirc shared node instance is created per BT asset.
yeah I figured it out
not only per BT asset its created per occurance in BT
Do you mean when bCreateNodeInstance is true?
no, when it's false. this is how it looks when running the same tree for 2 NPCs: they share the same object in the same place in BT, but the BT itself has multiple instances of that service
the code
the tree
Ah right, yeah. Sorry, misunderstood it and thought you mean also per enemy.
You use contexts to generate points around things. And Params for data that needs to be sent in, like how big the radius is.
Using data assets is the best way to define AI properties.
Thanks for the suggestion. I'll look into implementing pooling for my AI. It sounds like it could be a bit complex and time-consuming, but respawn them very often so it would probably worth the effort in the end.
is query config the way I'd pass in params to an EQS on the Run EQS Query node?
can't seem to find any other way
being this here
The context is for a variable called Center. That means the center of the generator. You just need to make a new subclass of EQS context.
It's really not that bad. Just make a subsystem for the pools and implement functions for your AI for being pooled and removed from the pool.
World subsystem baby!!!
I dunno, I think I need to leave the query context as querier (since I do want the EQS to run around the querier) but somehow once it runs pass in the sphere actor's location, and measure the distance of the points away from that actor, and either set their score to 0 or make them unreachable
I might be overcomplicating what I'm thinking of doing
but I'm on the right track
To be honest I've lost track of GameplayAbilities years ago and I don't know how/if those are even being used still. But we're always opened for PRs - if you make changes to improve this functionality we'll be glad to take a look and pull them in.
That context doesn't change who is running the query. It's JUST FOR THE CENTER. The query actor for the context is who is running the query.
I don't mean GameplayAbilities but GameplayBehaviors, tagged you because you moved it out of Restricted together with smart objects and other cool stuff :)
https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Plugins/Experimental/GameplayBehaviors/GameplayBehaviors.uplugin
When you put it that way... π Yeah it might not be that difficult after all... I already have couple of ideas since you mentioned subsystems. I think managing the pooling process wouldn't be hard but I need to properly reinitialize the AI when I reuse them, that can cause weird problems. Alright I will do it, thanks again!
um...
Pooling can cause you to refactor an entire system too, though
not how you implement it but more like setupping, initting AI etc
Yeah, that's why you should pool early in a project. Still worth it.
I'll definitely need to make some changes to my spawners. It shouldn't be too difficult, I can just replace a few functions. Resetting the behavior tree should be straightforward as well. The GAS should be easy too. The only potential issue I see is with the perception system and couple of custom stuff, but I'm not sure. I'll worry about this whole pooling thing after I'm done with the demo I guess.
When is demo?
Late February hopefully π
nice
is there a way to prevent certain classes of actors from using certain classes of navlinks without dealing with multiple agent types?
Nav areas and filters.
Is it possible to get an AI to walk on a wall/ceiling procedurally while using the nav mesh gen?
and it even provides the solution to my other problem of making my different types of navlinks be different colors
nope
if you just want a climbing system for getting between horizontal surfaces at different vertical levels you can do that with navlinks
but actually treating walls/ceilings as navigation surfaces is a no
So no possible way to make something like a licker from Resident Evil? I figured cause they could do that back in 2006 it should be easier now a days. But every code and engine is different
sure just write your own navigation system
Oh you can do that with blueprints?
no
c++
okay well you can do anything in blueprints
but in this case it would be a terrible idea
Ah that's where the trouble comes I have no idea about c++
Maybe theres a way to fake it?
Like flipping the uI upside down and having a line trace to align the character?
if your ai can truly move on any surface
floor/wall/ceiling
you could turn navigation off
I'm tryin to make somethin like a spider AI
yeah
we have navigation because we generally have to walk around obstacles
but if you have a spider movement system you could just walk over obstacles like this
though if you want a spider movement system for your AI. again you will probably have to do that in c++
I would make the spiders with Niagara and use the built in BOIDS
I figured cause they could do that back in 2006
More like '98, back in RE2 lol
So even without navigation I can still have AI chase the player if is sees it?
Yeah
Navigation is just a tool that helps avoid the environment
I thought you HAD to have navigation for AI move to to work
Well - navigation is a bit less than that. But generally speaking people include collision avoidance when talking about navigation.
Awesome that helps. My ai has a patrol path already
course that again fails if you have something like lava pools in your level lol
- It's far more performant to have a group of spiders as Niagara particles.
- You're going to have character movement component issues with the shape, especially if you don't know C++.
- Spiders aren't exactly smart and don't really need an in-depth AI
since while your spider doesn't care about collision avoidance it probably cares about not immolating itself
Only water but not even the player character is allowed to go into water
The spiders more like a normal NPC ai but can crawl on the walls and ceilings
if your player is on the other side of the water the spooder will try to walk through the water if you use direct move
Ah the only time you'll ever get on the otheraide of the water is when you beat the level
By that point AI should already be despawnd
Think like the demon from the exorcist to give you a better idea how the ai for the spider type works it's a person but can crawl on the walls and ceilings
Pretty sure everyone here is familiar with a spider
seems pawn sensing will see you even if you're set this->SetActorHiddenInGame(true) on the server, and can't be seen by other clients? Is this accurate or am I misconfigured?
just interesting because I see this line and yet... they DO see me...
Pawn sensing and the much better upgrade of the perception component don't actually SEE anything. They need to be unregistered.
ue5: Hey - I am experiencing pawns (using the ol'3rd person character bp) slowing down waaay too much as they reach EQS goals. I tried setting max acceleration but it doesn't really seem to work. They are 'walking' as per the ue5 dummy anims... do I need to set them to a diff mode?
BTs are typically 'weighted' by setting the most important actions first in the tree
damn I'm terrible at writing
Did you change anything on CMC or PathFollowingComponent settings?
PathFollowingComponent can slow the movement down if you are using acceleration for paths
the only thing I did was set the walk speed to 100
when you reach the path, PFC slows you down if you are using acceleration
instead of velocity
lol is it fixed path braking distance?
can this be altered?
I'm not sure - naming seems relevant though
Are you using acceleration for paths?
its not enabled by default
@uneven cloud What should I be using instead? Sorry I stepped away
yeah I am because the character doesn't animate the walk cycle without it
that's why I was trying to set max path acceleration
Hmm, I think CMC should have a setting to tweak it but I'm not sure
ok no worries, it's a good starting hint
thanks π
but can confirm PFC causing it
right right
yeah in my case reducing the braking distance was the key, thanks π
The perception component and removing the actor as a stimulus source when they are hidden.
sorry to glom on - how do you preview the perception system in the viewport of the blueprint? plz and thx
You can preview it using the gameplay debugger (') while you are playing the game in editor.
oh so there's no way to see it in the blueprint viewport?
No
Aha ok just wanted to make sure I wasn't missing an option
Most of the time you want the perception component on the controller and not the pawn. The controller has no physical representation so it doesn't make sense to have it visualized in BP.
Ahhh π
With pawn sensing how can I make it so enemies know enemies from the player or to be more accurate how can I make it so the enemy AI sees my player as an enemy?
With these
So far AI will only detect a player if all 3 are checked
made my first ai, now he dies plays a montage, ( unclicked looping ) is there something I need to tell it to stay in this frame other than that? it runs I see the pawn "die" but when its over its back to pre-playing of the death montage ( ie: standing ) ?
Is AIMoveTo node an async function? And in general, how can you tell if a funciton is Async or not in UE blueprints?
by checking if they have π icon on their right top corner
and yes its a latent node
what would be a good approach to store team affiliation centrally preferably in UDeveloper settings? I feel it would be cumbersome to set it per controller what a certain faction will be to the active controller.
I don't want to have it hard coded so that the code remains scalable. I was thinking of getting something similar to collision configs.
How can I optimize my AI? I did the AI tutorial and it seems that having even more than 10 begins to cause a massive fps decrease. Is there something I am doing wrong or is there a better way to make the AI? I need something like a bunch of zombies that randomly roam
With 30 AI FPS dropped to 20-29
Without any AI in level FPS is at max 60
What is the best way to get nav mesh to generate with level streaming? I've got a nav mesh in the persistent level, which doesn't generate, a nav mesh in the nested level, which does have nav data, but only when that level is open. How do I get the navigation to generate for streaming levels?
You need to profile your game to find out which part of the npc is causing the fps drop. There can be many reasons for it.
AIs themselves don't cost that much, I have 2k actors with AIControllers and it has never been an issue. As suggested above profile and try to find which is the code that is slowing down the game
is UCrowdFollowingComponent much more preferable than CMC's RVO? we're experiencing some obnoxious jittering with the crowd following component which do not occur when using RVO instead π€
I know that crowd following component handles a problem when RVO can essentially make an AI walk off the navmesh but in my case it will hardly happen as the surface is big enough so that it'd never happen
Does anyone know why the "GetPlayerPawn()" function returns a nullptr?
The result goes into the query's internal data list.
Sorry, that doesn't answer your question.
You may have no player controllers present at the time this logic runs. Or the controller has not possessed a pawn yet.
but how could I get the players location?
I subclassed AAIController and noticed that it already has 2 components attached:
UPawnActionsComponent and
PathFollowingComponent
I could not find much about these in code / comments. Are these exclusively used with behavior trees?
Would anyone be open to making a video on how to create a sense (like AISense_Danger) in unreal editor from a preexisting sense (like AISense_Sight) and hookup the same as you would showing that it works?
I think I have an idea but there are too many c++ base senses to choose from, not sure of the right choice, and I can't find anything online that provides direction for how to do this.
I tried hooking up a 2nd sight sense with a shorter distance/range. That didn't work because then I just had 2 sight results in the TargetInfoUpdated event. Then also a 2nd aiperception component... Just seems messy with same results.
Currently, I'm checking distance between all seen actors until DangerDistance (close range) and thats just a lot of unnecessary checks. Plus I imagine there are people that may be curious about adding senses.
This is for a tower defense (lots of sensed or "perceived" actors) and supports my work on our multiplayer drone shooter game.
Also thought about just using a sphere collider but setting up collision profiles is another area I'm not familiar with AND there's just a lot of different systems in the live game that could get interference if that is not setup properly.
I don't know if you can extend senses in BP's π€
If you need two sight ranges then using two perception comps one for each range is how you'd have to do it... I wouldn't worry about it too much as long as it works, same with any sphere thing
Hey guys, with this BT setup once the AI has attacked once, it's essentially reached it's destination. If I move to the side of the AI while it's attacking, the AI will think it's still at the correct location, and thus attacks again. How do I ensure it always rotates towards the player, without using RInterp logic which runs every tick?
I think iv actually figured the idea out. I made a big rookie mistake and am using the same high poly mesh I use for the player character for the enemies insted of using a proxy to lower the verts down. It's also because too many ais had complex behavior trees. So I'm going to isolate it down to be pretty simple AIs. I'm not sure why I tried to make them so smart they are just zombies lol the AI sense should still be able to detect everything and I can use less of my Smarter AI for patrolling and more of the simple ai for free roaming AI
And Iv made it so my AI only use Invokers and not just generating the Navmesh
For example heres what I am doing now which sould save me processing power
Mesh on left is the Player Model Mesh on Right is for Enemy models
Iv tested it out between my Smart Ais and Simple AIs
With 28 Smart Ais FPS drops to 20ish
With 28 Simple AI FPS stays at 40-50
how to make moveTo go to the closest point of target if unreachable instead of just stopping?
How can I make it so when my enemies aren't culled they stop moving?
Also the proxy/Simple Ai defo worked I am now able to get up to almost 80 Ai not that I'll ever need 80 Ai at the same time.
Huh?
? π
Zombies are a huge problem FPS wise. Assuming you are using Unreal engines movement solution you're going to have a bad time
2k AI? That's not an easy thing to do. You might be a God amongst men
For the most part I got it working pretty decently. Now I just need to find a way when the enemy isnt visable and culled to stop its AI movement
I've gotten like 200-300.
Assuming all your zombies have collision boxes, Cmc, there own brain logic, and they all navigate through navmeshes
Still 60+ FPS
With 80Ai once again not that I will ever be using 80Ai at the same time still gets me around 30 fps
Having it stop ittgs movement when culled will drastically increase the fps I believe cause. They are still moving when they arnt seeing causing the tick and character movement to go off
On all default settings? Have to remember it is pc to dependent. Collisions + cmc + nav wrecks performance
This was on a first gen Ryzen 1700 and 16GB RAM
I've never had an issue with getting my zombies functional at high FPS. I'm always surprised when people do.
Just do some basic optimization stuff and it is quite sufficient.
it's as easy as spawning them, didn't have to do anything special (actually I wrote none of the AI code)
Pretty interesting. Call of duty managed around 25 zombies up to like 50 I believe now because of how performance heavy it is. Dayzgone also had big problems with zombie performance iirc
I mean idle zombies aren't a problem sure
Yeah, I'm talkin' about moving around.
But moving through navmesh with cmc and collision is definitely going to hurt
the CMC is a big problem indeed, and skeletal meshes, but I think it becomes bad around 500-1k for singleplayer and 100 in multiplayer
Even 100 in multiplayer feels like a stretch
Yeah, CMC & skeletal meshes are definitely expensive.
25 to 50 is totally doable
I have never made a single player zombie game so maybe I am underestimating things
ye it starts to break appart
If you do network managers for unimportant stuff, you can probably do greater numbers.
I think you could get away with thousands of zombies provided you use your own movement solution. Unreal is just too designed for general purpose
I would look at making simplified proxies that can be swapped for interaction friendly zombies when in range
Look - if Dead Rising can do this back in '05 or DR2 in like '10, surely we can come up with a solution π
Fake zombies World War Z style π
Haha yeah
I guess I should be able to set the AIs movement to none using disable movement.
Now a question I do need answered is does the culling react with the sceen component Visiblity? If the mesh is not being culled or not being rendered will Is Visable react to the branch or does the full use a different variable?
Tbf I think dead rising had some of the most idle zombies in any game I've ever played
Because do they need to collide? Do they need to pathfind?
They probably didn't even have collision until you got close
Yeah DR was impressive.the parking garage had so many
They did a direct P2P setup. So you'd need to do a custom stack with UE π
nono, CMC default is too expensive, maybe lowering the refresh rate
Doing direct P2P is less costly than server-client
I actually don't know much about thay
yeah it is possible, and if the game is first or third person probs not difficult
I've legit thought about making a "ZombieMovementComponent". And make it be like as lighweight-of-cmc as possible π
it sucks that UE strong arms noobs into using very heavy components
but rolling your own movement component is not that difficult for simple behaviours
I'm always making zombie games...surely that would pay for itself dividends over, right?
But alas - I typically only need like 30 zombies at most....so CMC is fine π€£
Cmc is great though all things considered
A typical 1st/3rd person character-driven game*
Most of these kinds of games actually don't really have more than like 15 characters on screen if you really look at them.
Let alone moving around.
You're all zombie mad π
Join us zoomba
you ZL's need to get a room together π
they are likely more limited by deformable vertex counts and shaders
to be fair, this IS that room π
We have one, it's #gameplay-ai
I do have need for a large crowd renderer though, might have a look at a setup for it
Hoping to generate some crowd meshes using NeRF's soon..
I wonder how all your zombies are going to work when Epic works out a way to use Nanite on skeletal meshes π
there's also ways to generate full billboards that look amazing now too
Then they'll just be more detailed zombies.
I just wish they'd work on instanced skeletal meshes. That would help a lot with skinning costs.
look at hism or Niagara
Yeah, I want a slightly more complex setup than those.. mainly because of how the behaviours are specified
ye Unity has instanced skeletal meshes afaik, Unreal could but it's not Fortnite
complex how?
Does it? Didn't know that
I got that impression the other day
when looking at some of their docs
Mine have to do some social interactions (i.e. not just eating each other) that involve a lot of physical contact points
ahh damn gl then
Its the no zombie curse π
well skeletal meshes will be fine unless you have crazy numbers
In this 2015 GDC session, Ubisoft's Francois Cournoyer discusses the processes for creating the massive AI crowds that populate the world of Assassin's Creed Unity.
Join the GDC mailing list: http://www.gdconf.com/subscribe
Follow GDC on Twitter: https://twitter.com/Official_GDC
GDC talks cover a range of developmental topics including game...
some good ideas here
I guess alternatively insted if trying to get the cull distance I can just get the distance from the player to the enemies and if they are far enough away they wont move until in distance
I believe yo'ud want to check distance squared
yeah exactly, everything crowd can be optimized that way, Mass has that kind of built in
hello, I have a question, duos anyone know if Epic Games working on an Ai for blueprints and shader graph?
Are you actually profiling? Invokers are far more expensive.
UE has had "shader graph" long before it was a thing in Unity. And what do you mean "Ai for blueprints". You can already make AI in BP
You really shouldn't be subclassing an existing sense. It causes a lot of problems.
Well ok lol.. I am then even less certain about what to use to make another sense within the editor.
AI Generated like stable diffusion things like that :)
I was wondering if the were working on something like that sinse I have never sean the ai channel before XD
You use the EQS to find a location.
There is a blueprint base sense. You use that.
No. And no real reason either.
oh ok thanks. if you don't mind explaining to me why there is no reason then that would be great :D
Because it's useless in like 99% of games.
You're not using actual AI in games for the most part.
There is some AI stuff for deformations that they're experimenting with
I've been able to get 300+ AIs moving around. It's really not that difficult, unless you are only using BP. Expecting an optimized game using only BP is hilarious.
Game AI doesn't really rely on AI in the way you're thinking.
thanks but I am not following π
Stable diffusion is not useful for realtime AI like a videogame.
Game AI and AI like stable diffusion is hardly what you actually want in a game.
Yeah I was forgetting not everyone makes big open world multiplayer games
I have done it in a multiplayer big open world game.
oh, I think you are misunderstanding me. I was talking about an Ai that could create the blueprints for you, like how Stable diffusion create images for you, or am I the one who is misunderstanding?
Oh - in that case. Definitely not working on that.
Much bigger fish to fry and more useful fish at that.
BP context is smaller than copilot's scope so i bet it would be way easier to achieve something.. but you couldnt steal data since BPs arent available on public as text code so it would never happen 
alright thanks man, wasn't feeling like doing my blueprints myself, and was wishing for something else to create them for me π
I wasn't saying it was impossible, what I was saying is that it's quite a challenge. Any open world game which will have lots of zombies and maybe even 30 players will require a lot of optimization and knowledge to keep the server sitting at a comfortable 30 fps
There's a reason why World war Z is so damn boring
The calculation method I can confirm works. I can now have up way more Ais it I really need I currently now have as a test 50 AI with invokers and a distance calc that will allow them to move or stop moving depending on how close you are
they have the appearance of thousands of zombies and it looks great until you throw a grenade into the crowd and kill 90% of them lol
I'm pretty sure most of their zombies are fake and pretty much just share the same health, movement, animations, skeletons, and everything else π€
It's boring because the zombies are like paper mache. So they're not a threat at all
Shoot them in the toe and they die
Straight snooze fest
i enjoyed world war z a lot
And just for testing purposes it works even with 100AI
I don't believe they can afford to do it any other way
It's enjoyable yeah, but still pretty boring once you beat it like once.
yeah i deffo have no courage to play it 2nd time
and a lot of them are guaranteed the same instance of one real zombie
figures, I assumed it would be maybe like 20 real zombies in the crowd
and the rest were just copies
based on what they say there arent even a real zombie
its just a glassbeaver'ed engine
that fakes everything
If the gunplay was better as well, it'd be more fun as well; but even that was π΄
Neither could I π . But I can be a consumer π€£
Is EQS totally unrelated to navmesh?
it has tests related with navmesh
And generators can project onto the navmesh.
But it works even without it right?
Environment Query System. Not Navigation Query System π
I think it is ticked on by default to only generate inside of nav meshes right? You can turn it off though iirc
When I use GetRandomReachablePointInRadius, it returns False. I have added a NavMeshBoundsVolume and pressing 'P' displays it as a green nav mesh. I have also set 'IsWorldPartitionedNavMesh' as True for the RecastNavMesh. Any idea why that function would return false otherwise?
Did you check that your starting point is within radius of the navmesh? I usually draw a debug sphere at my start point
Yes, it's right in the center of it (although possibly there's an issue with the Z coordinate, maybe?)...
yeah, its often the height difference causing issues
Ah, I will double-check that then, thanks!
when I create custom supported agent types in nav system settings, how do I actually assign these agent types to characters? Say I have small enemy with default humanoid capsule radius and height and a big guy with a bigger capsule radius. So how do I tell the big guy to use nav mesh for the plus size enemies? Or does the navigation system picks the most suitable recast navmesh actor based on the agent parameters and actual NPCs parameters?
The navigation system picks it based on the agent settings in the movement component
Is there a way to get detailed information about what's blocking AI Move To?
VisLog is best you can get
Alright thanks!
Came across something weird but didn't dig deeper yet. I basically enabled spawners to spawn all AIs without considering relevancy because I was simulating the game and wanted to see animals' neutral behaviors in the environment. After around 50 AI characters, AI Move To started to fail for some AI pawns. I'm not sure if there is a connection but I basically disabled almost everything and there was nothing wrong in the navmesh, because some of the AIs were working properly. Might be something completely different though. Anyway maybe there is something I don't know about so just wanted to post this if there is any
By default 50 is the max that can be used. You can change it in the settings.
@verbal shore
I forget exactly where it is, but just search for "Max agents"
Oh didnβt know there was a limit, thanks! Wish they print some sort of warning though, I donβt know how long it would take to figure this out otherwise. I will check it out first thing in the morning. Thanks again!
Is it possible to tweak detour crowd system to avoid jittering? When AI agents gets close to another agent it starts to rapidly turn left and right slightly while trying to avoid them. Thought it was something to do with character rotation rate, but overall rotations are smooth, so this seems not to be the case. Detour avoidance is good and all but this jitter is annoying af.
some functions exist in C++ and there are some properties in projec settings
i've been playing around with them for quite a while and it seems the only thing that helps with jitter is disabling avoidance, so not a good solution tbh
well that disables crowd directly π
well that explains it π
also, rvo does not have this problem, but it's avoidance is kinda meh
crowd is fine and works better than rvo
you gotta tweak it right
and not use both at the same time
okay, you gave me hope to fix it at least, back to the tweaking
btw, will it affect performance much if i increase crowd's max agents to, say, 300-400?
likely
to be precise if you spawn that amount of agents it will affect
not the value itself
would it be a good idea to store teams as gameplay tags? All examples use int 32 which i doubt would be a good idea.
Sure, that'd be fine. Depending on how my needs, a simple enum would be more than sufficient as well.
New to AI behaviour. I have a char (rabbit) with its blackboard and behaviour tree set up. When the char sees the main char, it passes the information to a key on the blackboard and the behaviour tree works as well. Well, now I'm stuck trying to get it to work with multiple rabbits. Does each rabbit need his own blackboard and ai_controller? There must be a better solution I'm not seeing. Any help is appreciated.
Debug the AI characters and make sure they see the main character
https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/ArtificialIntelligence/AIDebugging/
@timber plaza I mean my the Ai char is seeing my char and everything works. My question is how would I do that for multiple of my AI chars.
As I am passing the bool (seeingChar) to the blackboard
But when I have multiple Ai chars there are mutiple of those bools right?
multiple AIs <-> 1 blackboard
or do all of those things get instanced
controller, pawn, bb, behaviour..
Each AI character has its controller and behavior tree
When you spawn a new AI character a new controller spawned as well and will possess the character by default
Are you spawning the AI characters during gameplay?
Okay, so they all get their own instances, right? I had perception on the AI chars and not on the controller, I just changed that.
They are all placed in the level but I will probably spawn them yea.
It is better to add the perception component to the controller and handle the logic from there
Do you run the behavior tree?
what you do mean run the behaviour tree?
In AI controller
And if the character spawned at runtime make sure the right option is selected
yes, all that is working. thx!
I will try my best and come back if needed. thank you !
Anybody knows an answer to AITasks vs Gameplay Behaviors? I would like to better understand which is for what and how I should fundamentally think about them.
I have a climbing/vaulting movement, how can I better modify the navigation so that the character continues to move through the hills? I can't just increase the MaxAgentStepHeight parameter because I need to jump on the wall before continuing to move, and not all creatures can climb.
Hey I am back. I got my AI working, but in my build it the AIchars won't move. Any tips?
I just yesterday discovered that MoveTo AITask are pausing each other/stacking automatically even when running from BP. So running two AITask_MoveTo at the same time will pause the first one and resume it when the second one ends. It is cool but is anybody taking advantage of it? I wonder also if there are any AITasks which rely on priorities and overlap/stacking behavior by default.
@crystal hatch I noticed AITasks usually hide their delegates like OnFInished/OnMoveFinished/OnRequestFailed as protected memebers. Because of it, it is not that easy to use them from C++ as you need to listen task ending on its owner and then doing the logic from there. I think it would be easier to work with if I could just bind my function to these delegates just the way I do in BP. Do you think moving these delegates to public: is something what could potentially be accepted as PR or is going against some concept behind AITasks?
I think also UAITask_UseGameplayBehaviorSmartObject would benefit from it in the future as it would not need to listen for move to task ending in UAITask_UseGameplayBehaviorSmartObject::OnGameplayTaskDeactivated() and check stuff like MoveToTask->IsFinished(), MoveToTask->WasMoveSuccessful()
hello, have a question about player controlled pawn, is it possible to add component Pawn sensing or does that only work for Ai controllers ?
@short aurora @celest python Huh, interesting π€
hey guys, do you reuse code between player and AI functions ?
like how often and with what hierarchy
The easy way is inheritance I think
The harder way is interfaces
Or function libraries
we have many systems explicitly asking for a player controller class so I'm not sure what would be the best way to kinda retrofit all this for bots too
it seems I should abstract away the common functions and change all the calls
I would personally prefer this over inheritance anyway
should EQS generally be used for chasing a player? in the Tom Looman course I took it's only ever used for wandering (from what I remember)
but in another project I did I was mainly using the default pathfinding and setting the move to location to be the player
You can use it for w/e really
It's just a way to ask the environment questions.
Luthage uses it to select the appropriate ability to use for example.
@lyric flint ask here instead
@deep bramble ok thanks
Might want to edit copy paste it so the mods donβt get mad
And delete the other one
k
hey guys, Im trying to get some clarification on Epics guide "Behavior Tree Quick Start"
How does the connection from BP variables to BB Keys work? Is it just the name that tells UE what key to populate?
Yeah
I dont seem to be getting any data sent to Keys
and I cant find much documentation on it
What you show is the correct way to do it. But you are also not showing much
Maybe the BT isn't set correctly
Maybe the AIController isn't the correct one
Maybe you're not running the BT
Many possibilities
the controller is setting. not sure what you mean by not running the BT - it is active and default to the left-most branch when the game is running
Show your entire controller setup
ok one second
you want details screenshots?
or anything else
Have you validated that the perception is working?
What happens when you set the value as bool after running the BT?
so do a small delay after you Run BT and set that value.
im not sure how to validate that. My knowledge of BT only goes as far as that quickstart guide
this help?
This is unrelated to BT
Take that set value as bool node and put it after you call the run BT node
That's what I'm telling you to do
ok i think i under stand one sec
i think this is what you are telling me to do. and i get the same result - bool is false even though set value is true
sorry idk all the jargon yet. this?
There's the problem.
You're passing in a value of "None"
There is no key called "None"
So thats were i need to set the correct names to link to BTs
Yes.
Thank you very much
The variable name is not the same as the variable value.
Variable name is for us to be able to reference and all that jazz. Variable value is what is actually stored in the variable.
You should cover BP basics before messing around with BT honestly.
yea that makes sense. BB is new to me and I was following a guide. I overlooked it
π
https://dev.epicgames.com/community/learning/talks-and-demos/mvk/unreal-engine-ai-with-behavior-trees-unreal-engine I found that one useful when learning BT
That's the best overview of it on the internet period.
@lyric flint watched it:)
this is the guide https://docs.unrealengine.com/5.1/en-US/behavior-tree-in-unreal-engine---quick-start-guide/
Next best tool to learn is the Visual Logger. https://docs.unrealengine.com/4.27/en-US/TestingAndOptimization/VisualLogger/
helps with debugging AI problems
nice thank you
Is there a way to get navigation working on Hierarchical Instanced Static Meshes?
I get no navmesh on it.
I'm not so sure how should i use EQS together with navmesh and regular pathfinding. How would you use EQS to follow player?would you each time find the closest point in the local grid, go there and then run EQS again until you reach it?
Looks like your key doesn't match. The key shouldn't have spaces.
@uneven cloud thank you but this was the answer #gameplay-ai message
I personally wouldn't use a grid, a donut works most of the time. You can just get a location and then move to it or you can add a service while moving to update the location.
Is there a cheap way to add cost to navmesh at runtime? It would be a nice addition if I could change AIs path and make them prefer other ways if the player is around.
Is this because more points are generated on the grid to evaluate? Or for some other reason?
Cant recall exactly but shouldnt you just use a different filter
Primarily it's the amount of points, but the donut gives more natural results.
Nav areas are probably the easiest way.
I'm using Nav Mesh modifiers but it hurts the performance
I update it every three seconds, I will play with couple of settings. There might be something that reduce frame drops
What is it that you are trying to accomplish?
I want AIs to avoid player, make them prefer alternative paths
This actually does the job, but it's expensive
It would probably be cheaper to use the EQS and use some tests that do that instead. Updating the navigation under a constantly moving object is going to be incredibly expensive.
Yeah it seems like it's going to be really expensive. I might subdivide the path somehow and use EQS to keep them avoid the player, but it won't be as easy as this one
Thanks!
Yeah, I would not use nav mesh for that too. Modifier has to rebuild the nav mesh to put there polygons in that shape, so that it can assign the cost to it.
How about writing a custom MoveTo task that also checks the proximity to player if its in relevancy range
Yeah that can do the job, I could even interrupt the task if the player is too close and do some EQS to let AI prefer a better way.
I'm really tired of dealing with AI. Why nothing is easy haha
There is a bug in 5.0 that prevents foliages from affecting the nav mesh and I have to upgrade to 5.1
It's literally nightmare lol
if its going to help you feel better I also spent around 1 year for my own AI and at least half of it was radical changes after I discovered a better/new stuff to do it better π
Haha, that must have hurt
And Eren is doing zombies π
Just had a quick question with level streaming if I have AI and I enter a streaming level and unload the previous level can that AI if they have seen me enter the house also still be able to enter the house even after the level has been unloaded?
I'm using invokers on my AI and have left the Navgen mesh on the persistent level. I was just curious if the AI still moves around and stuff even when the level isnt loaded if they do this is great news for me
Pretty new to Unreal Engine: I am trying to make the player character automatically move towards enemies in Idle settings, made the enemies move towards player, but I cant seem to make player move towards enemies
Googled a lot, but did not found a correct solution, just a lot of how to make enemy AI and thats something I kinda already have
Does anyone has an idea about how should i approach if I want custom movement mode to an agent for flying
StateTree guys, what is your Context Actor? Controller or Pawn?
Ok nevermind, I was wondering why one tree has Controller as Context and other tree has Pawn as Context
even if it was using same sceme
but it is set dynamically depending on this class
How can we provide our own Test Conditions from the evaluator to a condition blueprint that we want to use for a transition ?(For State Tree Schema Component)
ah looks like we can bind them to exposed evaluator variables.
no, they'd have no navmesh
you'd need a transition effect that notes which AI's were intending on entering the house (or could) and a time to spawn them in, plus carry over their state
health, buffs/debuffs etc
is there a way to use a nav filter (that i made with blueprint) in c++ with findPathToLocationSynchronously?
Create a variable in C++ for it, assign it in your BP asset, and then you can read it from C++... or pass it as a parameter to a C++ function from BP side
A custom UDeveloperSettings subclass is often used to allow you to easily assign assets for C++ usage
Additionally if you want a NPC to use the filter as default, there is a variable on the AI controller to set that.
All of the built-in functionality for using navigation is tied to the AI Controller. Which is not a player controller.
Does the built-in flying movement mode not work for you?
I'm using the Get Sense Class for Stimulus function in Blueprints which returns a variable of type AISenseClass. I want to pass this as input to a function I write in blueprints that takes as input a variable of type AISenseClass. However, it seems that I only have AISenseBlueprintClass available, which doesn't let me pass in an AISenseClass. Am I doing something ultra weird here? Is the best solution to inherit from AISenseClass and make that type accessible in BP?
Is there anyway to get the AI to follow you into a map not a streaming map?
Originally I was trying to get the Ai to follow into a stream level which will work but I found that this sort of makes it increasingly hard to save the states of the streamed levels insted of saving normal levels
unless there is someway to actually save stream level data? All I really need is to save if a item has or hasnt been picked up
So, I made this really simple code following a tutorial that made an AI follow me and attack me (if it sees me). Works great, I migrate it to another project, it doesn't work but I thought meh, must be the animations. So I setup the animations and some other stuff, this AI will not move in this other project. No compiling errors, comparing the two I see zero difference. Anyone know what I should check next?
using Blueprint.
UE5.1
Could it be something in the animation blueprint? That's not something I setup in the other project where it works.
I setup a simple idle/walk/run animation, that's all it is.
Did you add a nav mesh?
not sure if this will be correct place but is there any good resources on making a 3d navmesh for flying ai? or some resources on how to make an ai that can fly. be it in a plane/as a bird. t.i.a. found this.... may have to buy it https://www.youtube.com/watch?v=5y0tZY_xjC8
Flying AI marketplace package - $40, comes with behaviour tree templates, setup in a few minutes: https://www.unrealengine.com/marketplace/en-US/product/flying-ai
Link to part 2: https://gumroad.com/jacksonnexhip?sort=newest#EbIfB
In part 2 we cover step by step:
- Random roaming flying behavior
- Patrol point flying behavior
- AI awareness ...
OMFG
I can't believe I forgot to add a fucking nav mesh hahahaha Thank you so much dude. I was way overcomplicating the situation since I'm new to learning Blueprint
but my animation code is legit now π€£ π€£ π€£
fyi navmesh will auto regenerate every time you move/place things that may/may not affect navigation. thankfully it can be only a single small area but it may corrupt if you cancel early (i did this a lot as i had 2mil points) and ai then again stop moving. i lost days to that. so i built it once then disabled auto build navigation data in project nav settings (somewhere)
yeah I'm building an AI from scratch in just the beginning fps level sample area moved it to a brand new project to ensure it had nothing to do with any of my purchased assets and just flat out forgot to put down the navmesh hahaha.
I'll keep that in mind real now though
thank you
about the time you should have turned it off and gone 2 sleep i bet
XD
Yeah, things like this the more it hurts the more we learn
or better we remember it rather
yesterday this is about the time i gave up realising i needed sleep. i dont even know where to begin any more. its a mess
ue tortures u. it lets u makle mistakes then when you get it right it crashes then u have to remember what you did and rebuild. thats an arse ache for sure
yeah that's normally how i'd do things but I've been going slow, careful and documenting things
i should do this.
so I was super confused, WHY ISNT MY CODE THROWING AN ERROR!?
XD
lol
adamant it was a your code err
not just user err
should say "no nav mesh detected"
I thought for sure it was my animations because that's something i'm not used to doing yet
or the code in my animations
nor am i XD
or something, but I tested the above a million times node by node with To String lol
bugger i was sure that was mp4 my bad
I use vlc it's fine
yeah i am sure id remuxed from obs but nope
looks like you're preparing for some crazy karate/kung fu stuff
with that leg work haha
XD
yeah its what you get not knowing anatomy and using some character addons.
its an anime dude i guess.....
hahaha best reason ever
but yeah hes lanky
too cold to smoke outside right now
it is bad out there for sure,
yeah haha
My pleasure. Iβve been there before too!
So are you saying you cant make idle character in unreal engine?
Check SimpleMoveToLocation or Actor in AIBlueprintHelperLibrary, should work on player controller
How can you make an EQS test that scores locations in the middle (not too close, not too far) the highest?
It seems all of the scoring equations favor either near or far but not middle
set them to score only and not filter change the scores for highest from near then highest from far and use the sum of those two
You could make the player controller spawn an Ai controller and send instructions to it.
I want it so the AI can walk up the block from any angle. My current solution is to put a bunch of nav links one each side of the block, but it feels very crude. Does anyone know of a better solution?
Hey Guys, RTS game, each unit is ACharacter, how can I move 200 units without any stutter ? Is there any recommendation to not use Character as a Base class for units and use something else ? Thanks
Definitely worth considering building your own base, the character movement component is overkill for an RTS for instance.. I'd start from my own base to be honest
There doesnβt seem to be anything built in to do it dynamically. You can walk the nav mesh and auto place nav links if youβre comfortable in C++.
Does anyone know How to change AI character speed in C++ using Task?
We're having a huge problem with the navigation system.
It's generating too much space for our objects and even for this box it does not shrink, after set to a size of 20.
We found several tutorials which had no effect. Changes to the project settings to shrink the size of the agent has no effect.
Is there a proper way to create a satisfiying nav mesh with a correct distance to the objects? Our characters need to be able to walk up to a chair and sit on it. Because of this navigation mess, they sit in air
Maybe a super basic question, but unsure how to phrase it for google: In my Behavior Tree, I'm adding a decorator to a sequence node. I'm trying to see if one of my blackboard keys (float value) is greater than the other... but the only options I see in the operator drop down are "is equal to" and "is not equal to". I see references and guides mention that "greater than" should be a viable option for float values, but I don't see it... Am I missing something obvious?
Are you talking movement speed? If so, that's on the movement component.
If you try to change the agent radius directly on the nav mesh, it will not work. You need to make your own agent data.
Walking up to a chair should be done to get close enough to use animation to fix up the rest. The location should never be the center of the object.
the red arrow over the chair shows the location, the character will walk to. We tried to move it closer to the chair, before we figured out, the nav mesh was unexpected.
So the default nav agent won't work?
We changed the radius in the project settings. we didn't change them on the nav meshes. won't they get sometimes?
There is a default agent settings that is hard coded. If you don't add your own, then you can't make the radius smaller than what the default agent settings is. Changing these settings to smaller than your character is will cause the mesh to get stuck or clip into geometry.
You need to make the AI path close to the chair and then move them into position once they get close enough.
(Prompt) _ lightning falling, behind snow rain, waterfall ice, 4k (doing test, UE5.1, StableDiffusion) ππ₯
nice work
State Tree Parameters
... For example, a user could define an animation asset parameter that can be passed externally to the tree for use during gameplay.
How can I modify the parameters defined inside my State Tree externally?
maybe a big collision box that on overlap with ai pawn, checks if MoveToLocation is on top of the box, if it is, handle the jump then
Depends how you mean. Do you want to do it through the editor or through code? Through the editor is much easier.
To do it through the editor, in the ST asset, you just add in the parameters on the left side of the screen
To do it at runtime: #gameplay-ai message
Had a meeting yesterday and it looks like I'm not allowed to talk about the current project until we've done some bids for follow-on work, which is fair enough
so I'll be doing a seperate demo for voice control stuff over the next week or two.. figured out some really nice ideas for developing something funky
Anyone ever looked at piping live data into Unreal Engine btw? I did some datatables but honestly the usability and accessibility is trash (you can't link it to a spreadsheet interface anyway, its all kind of static loaded etc)
Hi, I'm trying to make an interaction system on unreal 5.1 but when I try to run an EQS on a client, I get the following error
LogEQS: Warning: Missing EQS manager!
. I went to unreal and that's what's failing:
Has anyone had this problem before?
But in the server it works
Never tried running it on a client, as AI is usually server only
Does findPathToLocation project the point on the floor first if it's z is higher?
is there a way to avoid having a billion variables in a blackboard?
i have distinct states that each variable is associated with but its not possible to like, have blackboards inside blackboards is it?
You could have the variables on a blueprint actor and then just read them from it? And mentioning states suggests you're thinking about it wrong, but who knows π
You can always add an actor/uobject with data in it into the BB and read data from that?
oooh that sounds like a good idea
Generally, you wouldn't have THAT many bb variables in my experience, but then I build a lot of my systems as systems of systems π
i.e. have utility and BT's and action queues and the like
Bumping. Hoping someone can take a look π
whats an action queue?
should death be in your behavior tree of the AI or should you just stop it at that point? My dead sheep is still tracking ( rotationally only ) lol.
action queue is a queue of actions.. actions are things for the AI to do
I use the BT to decide how to add actions to the queue
but the queue (actually its a stack of queues) is the thing that executes actions
so you can perform parallel actions without having parallels in the BT because the Epic implementation isn't really parallel
The EQS manager should exist on the client. I've never seen it not exist. However I believe there is a setting in the project settings you can try for the AI systems to be created on the client.
I don't think so.
It should be on the character and stop the AI when it happens.
I was experiencing frame rate drops when spawning AI and while implementing a pooling system, I discovered that Navigation Invokers were causing significant frame rate drops. The pooling system was not effective because every time an AI was moved to new location, a new navigation mesh was generated around the AI, which resulted in frame rate drops. Additionally, I found that having at least one actor present in the map also greatly reduces frame rate drops. If anyone else is experiencing frame rate drops when spawning, it may be beneficial to remove Navigation Invokers and ensure that at least one actor is present in the map. But some people might not effort not to have Nav Invokers, I could so I did.
Anyway I wanted to share this, it might help others.
Luthage has mentioned in the past that invokers are quite expensive
Yeah, long time ago I was using Voxel Plugin and since I was creating procedural worlds, I had to use nav invokers. Also it was nice not to generate navmesh every time open the map. So it became a habit and I completely forget about how costly the thing was.
Haven't dealt with proc worlds in UE yet. I'd imagine you could create the world and then create the navmesh though, no?
It'll still take a hot minute, I know, but runtime should be better
If the world was infinite it probably wouldn't work
Oh, infinite - yeah, it wouldn't
I wonder what actually is a solid way to handle those kinds of situations π€
die
Does this happen on every node
I've shipped 2 games that used proc gen worlds. Both times full regen was cheaper.
Yea it doesn't seem to matter if it's a sequence or selector node, for example. The "compare BB entries" decorator still only has 2 options for the compare type
Yeah I'm glad I get rid of Nav Invokers. Thinking about it right now, it was absolutely unnecessary for the game I'm developing right now. Was the world infinite in these games?
Quick question about nav links. Does the AI have to follow the exact nav link path from A to B or can it choose to jump from any location along the two connected nav meshes? Say for example you have two long rectangle cubes with a nav link placed at the middle of each one. Can it jump from any point of rectangle A to rectangle B?
What if the nav link path is too large for the character to jump. Ex: from the ground to the rooftop of a building.
They were not infinite. They were both AA games, so not exactly small either. For an infinite game, I would recommend profiling but still probably defer to not using invokers.
But the characterβs jump Z is default.
At this point, I just feel like Luthage's default position is, "practically anything is better than invokers" lol
It has to reach the starting point, but doesn't need to follow the line.
Ahh okay thanks, good to know. I should treat the nav links like βAi is allowed to go from A to Bβ but itβs up to the CMC if it can actually jump that gap.
But theyβll probably try jumping and fall into the pit of doom like lemmings
You'll get a lot of problems or unintended behavior if they don't actually try to jump.
I've spent a lot of time profiling it. So you don't have to.
But they could have some extra momentum from a nearby explosion or something
Thanks I understand them a bit more now.
I can see the reason haha. The game I was working on had infinite world and I couldn't really come up with anything better in that time and Nav Invokers were just solving the issue. But they were definitely NOT cheap at all. If I remember corretly, LOD changes on voxel was also causing tremendous amount of framerate issues
Anyway I'm glad I'm not using it anymore
thats very unusual
if your AI perception component is on your AIController can you still visualize its traces and stuff in the viewport?
In a new empty project, it seems to behave the same way... Does it offer more options for you? Maybe a screenshot?
ah its about the node you are using
UENUM()
namespace EBlackBoardEntryComparison
{
enum Type
{
Equal UMETA(DisplayName="Is Equal To"),
NotEqual UMETA(DisplayName="Is Not Equal To")
};
}
ohh... hmm is there some other decorator that I should use to compare BB values?
not that I know
some days I feel real stupid, but does anyone have any advice on this topic? trying to see my debug options, but as of yet been unable to get this info? is there a command you can type in the commandline instead?
the apostrophe key doesnt do anything for me? where is this binding setup I guess?
no one else has ever had this problem?
I will paypal a mf'er 20 bucks right now for any help lol
How can I reduce this FPS drops due to "Nav tick time" - already using dynamic nav mesh with invokers
Can get all the other weird info, but I cant get the info I want .. ( the most basic AI info known to man ) cries Hour 4... lol
By not using invokers. They are incredibly expensive.
I thought navigation invokers are used to improve performance, why use them if not for performance?
That's a false rumor. A common one, but still false. Invokers were common for larger worlds before navigation streaming worked, but Epic never told anyone outside of UDN how to use nav streaming.
Thanks!
Epic never told anyone outside of UDN how to use nav streaming.
π₯²
its gameplay debugger
the key on top of the "tab" button enables it by default
IT took me 4ish hours to figure this out, and it might be a keyboard mappings bug, but on my particular keyboard its not the ~ button, its the '
yeah its tilde on EN keyboard
i have this keyboard? i've never had a problem like this before
when I do hit the ' key, it still says in the viewport 'apostrophe' so its like what the hell?
Β―_(γ)_/Β―
dont let me fib, it says "Apostrophe" but its really ' ( on my keyboard )
Anyways yeah super weird wasted ton of time, started just hitting keys and that popped up with ' and I nearly broke my monitor
I also cant use 0-1-2-3-4-5 options like it says, for I assume the same reason ( my keyboard doesnt have a numpad )
What are the implications of enabling "Do Fully Async Nav Data Gathering"?
' is the apostrophe.
Tilde opens the console on my keyboard.
sorry i confused apostrophe and tilde 
lol me too in my brain
and I kept literally like an insane person pressing the wrong button all day
so how about the second thing, of since I dont have number key 0-1-2-3-4-5 can I re-map these or.. ?
lol.. onscreen keyboard doesnt work tried that..
does enabling that make EQS work on client in packaged builds?
Any idea how to do this? We are also using invokers and streaming navmeshes seems experimental in world partition.
I haven't used recast in a couple of years, so not 100% on streaming with world partition. There's functionality for it, but don't know much other than that.
been using invokwers as a result. Very hard to visualize the modifier regions as a result.
Thanks Duroxxigar β€οΈ nice conversation to go through. I definitely wanted to set the parameter values at runtime and #gameplay-ai message is what I needed.
The only two options available for Compare Blackboard Entries decorator are Is Equal To and Is Not Equal To. Other options (greater, less than, and such) are available in the Blackboard Based Condition (where you test a BB key against a literal value).
i have box with (visible rendering turn off), and how to ignore this box from pawn sensing? so the AI still can sense a character behind this box invisible wall?
Actors still have their collision on when their hidden in game and probably also when Visibility is turned off. Not sure for pawn sensing but the AI Perception component traces with the "Visibility" channel if the Target doesn't inherit from the IAISightTargetInterface Interface.
Since your box / wall is invisible, turn the "Visibility" response to Ignore in the boxes collision settings for the components. That's probably enough.
i still need the collision turn on because i want to make player character cannot go there
The Player Character capsule or the Mesh uses the Pawn Collision Object Type as the default. As long your invisible wall is blocking the "Pawn" Object Type it should be fine. Just not the Visibility Trace Channel so it doesn't block traces like the Pawn Sensing Sight check.
hello guys hope you are doing well , my bot flies away, I know its collision problem but I have used all collision settings but it never works
Maybe "Physical Interaction" in character movement component?
thanks but already disabled that still doesn't work
In both characters?
yes
I'm trying to make a moving pawn, I went with FloatingPawnMovement and it works well, but I'd like for it to fall or be effected by gravity at some point, is there a way to make it so it's effected by gravity?
it makes sense that a floating pawn would float, have you tried using character movement
an alternative is to just apply your own gravity impulse downwards on tick
I'm very new to UE so I'm not sure what all my options are but i'll try to do the character movement one, where can I find it? I can't find it in Add Component
ah I see thank you so much for explaining everything to me!
@harsh storm 
Did you ever check Context.GetExternalData()
or Context.SetExternalData()
to modify ST parameters?
if you haven't, check FMassLookAtTask
if you did - didnt they work out for you and why did you prefer custom method instead
Hey guys! Im an ai researcher working towards 0 shot( high poly) text to 3d synthesis with textures
Q: do y'all prefer a volumetric rendering or a polygon mesh of your 3d mesh??
Q2: would it be benifitial if say yiu generate a 3d mesh of a person that the polygon mesh has all clothes and body fused together? Could that be seperated later on if not is it still usefull? Will it be usefull if you can generate clothes/body seperately?
Q3: does the mesh generally need to contain physics/material details or is that added later on?
high poly text? π
just kidding, I know what you mean
ideally for games, I'd say you want clothing seperated.. so you can sell the clothing as additional content
physics - its currently done as an artist pass, but its a lot of work, so improvement would be if it was captured properly (not so easy though)
and almost all of them want poly meshes
You really want watertight high poly, fully textured meshes with decent UV layouts
at stupid high resolutions
although, I think that is a bit open for discussion as we transition from traditional rendering to meshlets and eventually to raytracing and nerfs
a 20 million poly mesh that is vertex coloured tends to look pretty sweet π
Thats amazing thanks a ton for your insights
Ill research into trying to seperate parts of a 3d mesh
Yupp that can be done well uv and retopo is still an open research question but everything elseπ
