#gameplay-ai

1 messages · Page 30 of 1

celest python
#

yeah but source code excludes some logic if things are derived from item

harsh storm
#

Trying to create a new context type for EQS. I am printing the correct value, but it doesn't seem to be getting used by EQS. I'm drawing a circle around the context. Even though a different vector gets printed, the items are always generated around 0,0,0.

The context is aimed to be the last sensed location of the player. Overall goal is to investigate a "likely" area that the player went to after losing sight, with the last sense location being the starting point. I tried to copy the way the querier context did it, but it didn't work out the same. The UEnvQueryItemType_Vector is my custom class as well, that I modeled after the UEnvQueryItemType_Actor from the engine (there is only a vector base by default)

void UEnvQueryContext_SensedLocation::ProvideContext(FEnvQueryInstance& QueryInstance, FEnvQueryContextData& ContextData) const
{
    AActor* queryActor = Cast<AActor>(QueryInstance.Owner.Get());
    auto* controller = UAIBlueprintHelperLibrary::GetAIController(queryActor);
    auto targetLocation = controller->GetBlackboardComponent()->GetValue<UBlackboardKeyType_Vector>(FName("TargetLocation"));
    PRINT_TO_SCREEN(2, "%s", *targetLocation.ToString())
    UEnvQueryItemType_Vector::SetContextHelper(ContextData, targetLocation);
}

void UEnvQueryItemType_Vector::SetContextHelper(FEnvQueryContextData& contextData, FVector location)
{
    contextData.ValueType = UEnvQueryItemType_Vector::StaticClass();
    contextData.NumValues = 1;
    contextData.RawData.SetNumUninitialized(sizeof(location));
    SetValueInMemory<FVector>(contextData.RawData.GetData(), location);
}

// this is a protected static function in the base class "UEnvQueryItemType"

/** helper function for writing typed data to memory block */
template<typename T>
static void SetValueInMemory(uint8* MemoryBlock, const T& Value)
{
    *((T*)MemoryBlock) = Value;
}
#

The PRINT_TO_SCREEN macro is printing the correct value, but the items are only being generated around 0, 0, 0

hushed atlas
#

what do i do if pet movement is choppy when following main pawn

#

the ai move to node is failing every so often i think and its stopping the pet making it look like its freezing while walking to main pawn

uneven cloud
uneven cloud
hushed atlas
elder perch
#

Are there any indepth guides about best practices for setting up nav mesh generation that goes into things at a c++ level?

stone laurel
#

Hello There can someone here help me please ? I have in my game AI_Control make by Ryan Laley videos and everything is good perfect worked and so. But two days back i must reinstal whole my pc and when I have import my game back that NPC doesnt work .... they have just shake and on Behavior tree is show they have targets they have work to do but they dont movin and i dont know why .... can anyone help me please ? what i forgot or where i make fault ? thanks u very much

harsh storm
#

Hmm - looks like maybe it is UEnvQueryItemType_Point

#

Of course I just needed some sleep.

#

Yup - works now. Thanks Luthage! (Again, just prototype stuff. Just tryin' to get it to work)

dense owl
cedar marsh
#

I am having a problem with an AI Character who is on a patrol route at a speed that makes it seem like he is jogging. Problem is when he gets too far from the player, he stops being rendered and he obviously doesn't start moving again until the player gets close enough again. How do I make it so he follows the route correctly, even when he is too far?

timber stag
#

I have a couple animals for AI and they need to find food and each one has a different food to find, should I be creating different EQS and BTs for each of them or is there another way of doing this?

#

(this is not related to yesterday's shenanigan btw, whoever might remember)

#

I am thinking of creating a base food class and then have the animals search for them but that will result in each of them being able to find others' food

dense owl
#

btw this solution may require GameplayTags

dense owl
#

I'm sure Luthage or someone else can prly give you a much simpler solution

timber stag
timber stag
dense owl
timber stag
harsh storm
#

They don't

#

GT's don't need C++ at all

dense owl
harsh storm
#

You create them in the project settings

#

And there are BP functions to do what you need to do with 'em

dense owl
#

that wasn't my problem

harsh storm
#

You can do native GT of course (IE - define the tag in C++)

#

But it isn't required

timber stag
#

I wonder if Mathew's 6 year old video on gameplay tags is still applicable

harsh storm
#

Yes

dense owl
#

🤷 I had problems adding them in bp only, and everything I could find out there said you need to expose them via cpp if you want them to work properly

harsh storm
#

You don't add them in BP

#

You add them in the project settings

timber stag
harsh storm
#

It's a file

dense owl
#

I know that man jeez

#

I'm not talking about the container

#

but hey if you didn't have any issues with them in bp only, great

harsh storm
#

If you are running into issues adding them in the project settings, that is 1000% a bug

#

Because that was the original way you were advised to add them to a project

#

And there was a macro you'd use to get them in C++

dense owl
#

talking about stuff like this not working properly when I tried it

#

but making the actual base classes expose them fixed it for me so idk

harsh storm
#

That's something completely different than adding/removing them in the project settings 😅

dense owl
#

basically using the Interface was problematic without cpp

#

well you kept going that route lol

#

I nvr said anything about adding/removing to the file

harsh storm
#

Either way - EQS is the right solution here

dense owl
#

but how do you make it return the next match if you do all matching?

uneven cloud
dense owl
#

you mean the result or the actual query?

timber stag
#

wait I can put queries as a blackboard key?

uneven cloud
dense owl
timber stag
#

me either

dense owl
#

what's the object type tho?

uneven cloud
#

It's an object key type and the class is env query

timber stag
#

btw neo i scrapped everything from yesterday because there were a few things i did wrong and now I am thinking of trying to make a simple ecosystem

dense owl
#

lol, but we worked so hard on that 😦

#

it's ok, refactoring is life

timber stag
timber stag
timber stag
dense owl
dense owl
timber stag
#

all the time

dense owl
dense owl
#

Nice, thx!

timber stag
dense owl
# uneven cloud Yep

sry, one more question re: what you mentioned yesterday about running EQS as a Task instead of a service and just having a service that updates the location while target is set. I tested it in my game, and if I do that, when the Target moves out of range, the BB never updates that key, so it will track the same target indefinitely. Nvm switching between targets based on range. So in my case, I would be better off keeping it as a service right?

dense owl
dense owl
# timber stag gotcha

but realistically, since you want your ObjectValue to be a var on your BP_Hippo, I would instead do getAIController from your Hippo and run the code off that

#

also I had renamed that var to EQSTemplate but I guess I didn't update the clipboard

timber stag
uneven cloud
timber stag
dense owl
uneven cloud
timber stag
dense owl
#

nope

uneven cloud
timber stag
uneven cloud
timber stag
#

I see

uneven cloud
timber stag
#

thanks, I'll check it out

#

so I'll need C++?

#

oh nvm I can find it in BPs

#

new to UE5 I think

celest python
#

It was also a thing in UE4

#

Its just like a regular BP but editor doesnt provide a graph to place blueprints

#

You should create base class like how you create another class and then derivatives should use Misc -> Data Asset option instead of creating a new class

timber stag
#

gotcha, thanks!

#

wait what do you mean derivatives?

#

derive from what?

timber stag
uneven cloud
timber stag
hasty basin
#

just a quick sanity check.

#
  1. player pawn has an AI perception stimulus with both sight and hearing.
  2. NPC ai controller has perception with both sight and hearing and a max range of 50m
#

npcs find their food just fine. but they don't seem to ever notice the player

dense owl
hasty basin
#

dusty is the player pawn

dense owl
#

Kk

hasty basin
#

but it should still work, even if they're unpossessed, right?

dense owl
#

Yeah

#

Is the Dusty BB key ever being set?

hasty basin
#

not according to the debug overlay, no

#

but it's supposed to be set in that eqs query

#

one sec I'll post the query

#

and on Dusty_PhysicsPawn

dense owl
#

Open those indices

hasty basin
#

they don't open

#

just the dropdown to insert, dupe, delete etc

dense owl
#

oh right sec

hasty basin
#

that's on the stimulus source

dense owl
#

yeah, I meant on the Perception side

#

go to AI Perception Component on the AICon

hasty basin
#

oh, i've got it on the AI controller

#

my mistake. thats probably why :D

#

nevermind, made no difference

dense owl
#

Yeah no I meant on your AICon

#

It looks ok, assuming you’re not detecting food with a diff sense than Sight

#

Check the Visual Logger to see if there’s any info

uneven cloud
ocean wren
#

Cropout is a top-down Casual RTS game sample project for Unreal Engine 5 that demonstrates best practices for building a title designed for cross-platform release. Find out more and download at unrealengine.com/cropout.

In this video, Cropout's creator Arran Langmead, Senior Content Developer at Epic Games, walks you through every aspect of how...

▶ Play video
#

Kind of hoped this was a demo for the MASS stuff.. but didn't see anything about that yet

dense owl
harsh storm
dense owl
#

Gonna have to check it out, it’s right up my alley

uneven cloud
# hasty basin doesn't look like it :<

That's the visual logger and not the gameplay debugger. The gameplay debugger is the overlay shown during runtime by hitting apostrophe. Then the numpad for the perception category.

#

Visualizing the perception will help you determine if the problem is in the perception or getting the data from the perception.

hasty basin
#

oh i posted that earlier

#

but yeah i'll try and check it again tomorrow

stone laurel
#

@dense owl Thank you very much ..... this is whole new world for me .... i wish i knew it earlier ..... thats mean i have bad ported mash ?

dense owl
stone laurel
#

on red line is failed move to location ...

#

@dense owlTHANKS YOU very much :))))

dense owl
#

Np

uneven cloud
ocean wren
drowsy raven
#

Navmesh leaves spaces around the edges. (The AI just stops when it gets there. Like a bug)
How can I get NavMesh to touch all over the map?

keen crow
#

Does EQS generator handle duplicate items under the hood? i.e. I'm taking multiple locations from multiple source and some of them duplicate and I just feed them all to QueryInstance.AddItemData. Does it mean I will have duplicate EQS items as well? I'm just curious because judging by the code QueryInstance.AddItemData doesn't do any duplicates check, but maybe there is some internal postprocessing to remove duplicates 🤔

drowsy raven
#

This happens when there is an object on the nav.

#

And I don't want it.

timber stag
#

I see, wish I could help out more

#

but I never had this issue

timber spear
#

I am trying to make my AI rotate smoothly when patrolling. this works fine when I turn of the yaw rotation and orient rotation to movement. However when the player is detected I want the enemy to look at the player constantly, this doesn't seam to work when i disable rotation yaw. Anyone got an idea for a fix?

uneven cloud
drowsy raven
#

I changed the Agent Radius, didn't work

uneven cloud
#

You can't change the radius to be less than the default supported agent directly on the nav mesh settings. You have to set up the supported agents. If you make it smaller than your NPCs, they will not navigate.

The reason why it looks broken is you are trying to make them move off the nav mesh and using partial paths.

uneven cloud
timber spear
#

Worked like a charm :D

drowsy raven
hasty basin
hasty basin
#

how does the AIPerception component choose the origin of its perception? does it just take the centroid of the pawn it's currently controlling? or can we tweak it somehow?

uneven cloud
hasty basin
#

gotcha, thanks. and do you know which trace channel it uses for sight? visibility?

harsh storm
#

Visibility if I recall. But you can change that in the project settings.

#

I forget where.

uneven cloud
timber stag
#

this is my BT

#

pretty simple, right?

#

I added the wait node to see if that's what's causing the switching

#

(it goes MUCH faster on screen)

dense owl
spring inlet
#

anyone got a solution for a workaround here?

#

since the smart object spot isn't on the navmesh it's unreachable by AI

dense owl
#

If that’s possible, idk smart objects

spring inlet
#

can't, they are related to the animations

dense owl
#

Ah alright

spring inlet
#

but i think i found an okayish solution

#

where the interactable objects modify the navarea around them and make it more expensive to enter/traverse

#

so normal roaming AI shouldn't run into chairs, while those who interact with it will pay the "price" to enter the nav area

#

which kinda ends up like this, still have to tweak around a bit and promote the navarea to the table

#

but overall it seems to work (incase of the screenshot i could probably just leave it as it is...)

#

and use a nav modifier volume whereever it doesnt work out 🤷

gusty bridge
#

I wonder why my AI is not responding to any of the functions when there is no compiler error and the BP_AIController is set up to BP_Enemy. It doesn't return nullptr on if statement

uneven cloud
gusty bridge
uneven cloud
#

Also the nav mesh bounds volume isn't doing the generation. It's just a volume that marks where navigation can be generated.

full torrent
#

don't know if it belongs here, but I got a question about EQS. can EQS "see" what's in a wall? I know it can know a wall/obstacle is there, but can it also know if something is sticking to that wall/obstacle? even when I set it to cone, the "probe" thingies only stick to horizontal flat surfaces. and I did find that you can make a mesh by using those probe things as the vertex location, but I think it's quite a complex and expensive task

queen escarp
#

is the agents thingy for rl comming with ue5.3 or do we need to complile everthing from the source ? does anybody know ?

quiet basin
#

Is AI in general easier with blueprints or C++? I like C++ because I'm can usually organize it better but is there any significant benefit to using the blueprints for it?

sand kettle
#

Depends on your preference I suppose. I prefer C++ as well for similar reasons. But besides the obvious performance implications, it is a lot easier to iterate small changes in blueprint and work with latent tasks. A lot of times I would start with blueprints and then translate to C++.

#

Also by default C++ tasks act kind of like a singleton so you'd have to work with the NodeMemory parameter if you wanna save state, which is a bit trickier. But you could also chose to instantiate the node in constructor using bCreateNodeInstance = true (which blueprint tasks do by default), but obviously the performance would be worse.

timber stag
queen escarp
dense owl
dense owl
harsh storm
worthy marsh
#

Hi guys, i want to create an enemy like the basic skull in Devil daggers. They are like a homing projectile, with bouncing and have awareness about their surroundings (they will dodge other enemies). Any idea how can i do such thing in Blueprint? I already tried giving them Projectile movement component with homing (which works qquite good), but no matter what i do i cant make them bounce, stay on target and evade each other at the same time. I know its a difficult question but would appriciate some suggestions<3

drowsy raven
#

Guys, this is a ladder and I'm at the top of the ladder. And the standing below is AI. All it has to do is follow the navigation way towards me, but it does not.
I also added a wall in between, so (as seen in the 2nd photo) a sphere (sight) was created. I want its to follow this. But it doesn't follow it either, just standing there.
Btw when I go down, it can follow me.
Any help?

uneven cloud
drowsy raven
ocean wren
timber spear
#

So I got my ai to hear my player shoot and move to it's location by using this function and behavior tree setup. However, when it reaches the point he heard the players shot. he just stops. And doesn't go back to patrolling, how do i make him go back to patrolling after a while?

#

Nevermind, got it!

timber spear
#

I have this setup in my enemy AI branch

#

I want the player first to be spotted, before moving over to the attacking face

ocean wren
#

Why is spotted higher priority than attacking?

#

And why is attacking moving?

#

Moving to get a shot should be its own subtree imho

#

and then once you have line of sight on the target, transition to higher priority shooting subtree

#

But then what does spotted mean? you could maybe have a "has ANYONE on the squad spotted anything" subtree for example

#

the main thing to think about design wise, is priority and how to gate it

gentle rampart
#

Hi everyone, does anyone knows how to make an EQS, or Task so that the AIs encircle an actor ? I'm completely lost.. Any help would be greatly appreciated, thanks

dense owl
gentle rampart
#

@dense owl Oh ok is it old messages or ? And what do you mean by iirc?

dense owl
#

If I remember correctly

#

Also there’s a DOT product EQS test you should be able to use

gentle rampart
#

@harsh storm Helloo, would you mind sharing how you created this custom EQS Gen ? I'm really interested in 🙂

harsh storm
#

I haven't created a generator yet. Just a context.

#

For that, all you do is inherit from EnvQueryContext class and then override the ProvideContext method. Do your logic in there and then depending on what you want to do, call the appropriate static function on the appropriate class. Look at how EnvQueryContext_BlueprintBase does it.

#

(C++ btw)

#

I used EnvQueryContext_Querier to see how the ProvideContext method is written (it's small enough) and then the BPBase one to see how to handle the static method part.

gentle rampart
#

I see, its way beyond me haha, but thanks, I'll dig around

#

My goal is to achieve like in Age Of Empires when AI focuses a building they circle around it and start burning it, but I have no clue on how to do it at this moment, I guess I could use EQS but even that I'm not sure

ocean wren
#

EQS has a query where you can create a circle.. you can then filter any items that has something inside it.. so basically choose a point that doesn't have someone stood in it.. so just keep generating a point on the circle thats empty etc.. I guess it depends if the agents are all already there..

gentle rampart
#

@ocean wren Thanks! I'll give it a try

ocean wren
#

Don't forget that EQS queries can have a bunch of generate and filter items.. so add a bunch of different filters.. "not near a teammate", "on circle","in front of the enemy" etc.. there was a great presentation by Eric Johnson at Square Enix, but its in Japanese sadly

#

I saw the english language version in Paris at a conf

#

He had a dot product that circled the enemy.. so basically after each generation it'd add to a value that made the dot product rotate around the enemy

#

If I recall, he also added to scores for "closest to me" points etc. so that enemies would quickly wrap around

gentle rampart
#

Oh cool, I'll check that, not sure about filters yet I need to look at some doc/vids

#

@ocean wren To do the filter "not near a teammate", do you mean I need to create a custom filter?

ocean wren
#

Well, you can do a distance filter between two positions..

#

Read the EQS docs, it needs a bit of massaging to work, but does work pretty well

#

I did add a bunch of my own contexts, filters and stuff, just so I understood how it worked

#

wasn't a fan of the data stuff though 🙂 personally would have done it differently

dense owl
#

idk if that helps

gentle rampart
#

Yeap I have my circle generated around my actor, but now I'm trying to do a custom UEnvQueryTest to test if that point in the circle is free( so no AI standing here yet)

#

But I'm not sure on how it works actually, And I'm pretty much doing shit I assume xD

#

So far I have this, I used a Distance Test to get the highest score, but as you see I have an actor on the highest point, and I'd like to make it so that its score becomes 0 or like nope you can't go here, and based on that the AI will choose another point to go on

ocean wren
#

You need to add another filter that uses a different query context which provides all of your enemies to the query and then use a filter on that context

#

it probably isn't obvious, but you can stack filters and the like

uneven cloud
timber stag
dense owl
timber stag
#

it's firing

#

wait it's not

#

the hell?

gentle rampart
#

@ocean wren @uneven cloud I created another context which provides a location set of all enemies actor, Now I tried stacking a Distance test, but it does not work yet, I'm not able to make it changes the scores.. If someone has a bit of time, I would like to share my screen, would be easier

uneven cloud
gentle rampart
#

@uneven cloud I mean I added a first DIstance test that scores the nearest point, and added another one that using another context with all locations of enemies

timber stag
#

i can add an event tick

#

which works

finite gyro
#

like what BP

timber stag
#

I have a class called PreyBase

finite gyro
timber stag
#

which serves as the base for all the prey animals in my project

timber stag
finite gyro
#

that should still work

#

restart the engine 😅

timber stag
#

okay I'll do that

uneven cloud
timber stag
uneven cloud
timber stag
dense owl
#

Should work

timber stag
#

I'll transfer all the code to the AIC then but I'll need to cast to each child and get their assigned EQS?

#

nvm ig i got this working

timber stag
#

can anyone tell me why one of these functions has a "TargetLocationKey" while the other one doesn't?

#

both the blackboards have that vector key

#

and both the tasks set said vector key

dense owl
#

The little eye icon

#

If you don’t have one in it, create a BB key in it and expose it

timber stag
#

bruh

#

okay, that worked!

#

you are a lifesaver man

warm dew
#

Hello, I'm starting up with BTs and Ai movement, and I followed some tutorials to understand the topic, specifically the one from the Unreal Documentation https://docs.unrealengine.com/5.2/en-US/behavior-tree-in-unreal-engine---quick-start-guide/, but I'm stuck and can't progress. I built the BT, and the AI does the patrol sequence correctly, but it never seems to perceive my character. I did set up the AI perception in the AIController and AIPerceptionStimuliSource in the Player and I followed all the steps but maybe there is something else that I'm not seeing. Thanks in advance

gentle rampart
#

@warm dew If you do a print string where you sensed an actor, do you see it?

gentle rampart
#

Yes, the event will be triggered once. So is your problem related to your BT not going to other sequence/task?

warm dew
gentle rampart
#

@warm dew Did you add a blackboard condition so that it doesn't trigger to other sequence until that first condition is met?

warm dew
#

yup, and in the flow control the ObserverAborts is set to "both"

gentle rampart
#

Can you show your BTT_ChasePlayer

warm dew
gentle rampart
#

Ok, does your Patrol sequence actually moves the AI somewhere?

warm dew
#

yes, it works fine

dense owl
#

Is it showing it grabbed the target bb key in ai debugger?

#

That is, is EnemyRunner getting a value at runtime

warm dew
gentle rampart
#

Do you set the EnemyRunner var ?

warm dew
#

it works fine now ❤️

gentle rampart
#

Good news 🙂

gentle rampart
#

In the meantime, I'm still struggling with this EQS Context on circle.. I'm completely lost I need some help, best way imo is that I share my screen, so if someone is there and have a bit time I would really appreciate, thanks in advance

gentle rampart
#

I'd like to create this kind of behaviour, I thought using EQS will help me, but I'm not even sure this is doable using EQS. So when enemy is coming to the target he will stays and attack, and the others enemies that might come will try to place around the building.. Really I could pay someone to understand how to do it.. Hopefully someone can help
See the gif

celest python
#

Do you exactly need what age of empires is doing or just something enough to circle around something?

gentle rampart
#

If I have something close I would be more than happy as a start

celest python
#

age of empires relies on complex algorithms dynamically form enemies in any shape in the game, no matter the unit count

#

You wouldnt find someone for that easily, and probably pay a lot

#

for the latter one, dont pay anyone for such simple thing

#

its easily can be achieved with EQS

gentle rampart
#

Thanks for the advice, I'm just desperated to do it, I tried so many thing without really success

celest python
#

What do you know about EQS so far?

gentle rampart
#

I get the principle, filter, scoring etc but where I'm wrong in my code (I assume) is with context, but I'm not sure if I need to have another context for the AIs already standing in there

celest python
#

context is the building here

#

and in EQS, while you are creating the shape you'd use your context's location

#

and generate given shape around it

#

its a matter of setting a few variables in the editor

#

this will provide you an array of FVectors

#

then you'd pass those FVectors to your units

#

and move there

gentle rampart
#

I do have a circle shape generated around my actor, and have a simple Distance test to make the AI go to the highest score, works fine with only 1 AI, but not for the others

celest python
#

you shouldnt run this per AI

#

run this once and distrubite the FVectors to AIs in a top down system

#

this way you can also select which actor needs to go to which point in the shape

gentle rampart
#

The thing, is I have a c++ understanding and know how to write it, but Idk the UE API so far at all.. So I'm sticking with BP. And the top down system you mentionned I completely agree, but again with AI I don't have any idea to "share" an EQS

celest python
#

you dont share EQS

#

you share the result

#

EQS provides you a result, either FVector or array of FVectors

#

you take that in the manager class, which also suppose to hold a list of your current AIs want to take the given action

#

then distribute the FVector as move goals, could be a key in blackboard

#

and then after they receive the FVectors, you somehow make them move to the goal with BT

gentle rampart
#

Which manager class you talking about exactly ?

celest python
#

your own one that you'll create

#

could be your own controller class too, if its an RTS. It depends on your needs

#

but any class that manages the AI units

gentle rampart
#

Hum, I won't lie, I kind of understand what you mean, but not sure, if you have a bit of time maybe I could share my screen and you could help/explains me how to do it?

celest python
#

I only provide support via text in this channel, sorry

#

But feel free to ask questions or dig deeper into concepts

gentle rampart
#

Ok no problem thanks

#

So for the manager class, when you say "you share the result" do you mean I need to run the EQS inside this class and not in a BT?

celest python
#

Exactly

#

when you run it in BT, it only runs for the AI that runs the EQS

#

so others have no idea what other FVectors it returned, so they cant take unique points in the shape

#

instead you run it on an external class, then give the results to AIs

#

there are nodes to run EQS tests in BP

#

they return EQSResult objects, since its a latent process

#

you bind a function to that delegate

#

then receive the results via it

#

after that happened, you loop your current AI units

#

and set "target move goal" vectors from the points of the shape

#

then move them to there

gentle rampart
#

Ok so I assume when I assign their target I just foreach the EQSResult objects, and give each AI an FVector ?

celest python
#

not EQSResult objects, it will be a single object only exist to bind to a delegate inside of it. That delegate with return FVectors

#

then you will foreach the FVectors

gentle rampart
#

Yeah thats what I meant just mispelled here, I see, then I set each AI an FVector in their BB, and move to that location.
But what about so that they dont collide each others (or minimize it) ?

celest python
#

you will match your AI units to FVectors in the array

#

access a different AI unit for each loop and they will move to different points

#

if you have 8 units but only 6 points, then you'll have to do something else

#

after units are finished, but you still have two more loops, you can exit the loop and make others move to random places in a radius around their friendly units

#

its up to your creativity at that point

gentle rampart
#

Yep sure, Ok I'll try to implement all of this, don't you mind adding you as a friend on discord so that you know I can ask you I really need to?

celest python
#

I'd rather not but I'm available in here time to time, but even better there are more smart people than me here more available than me 😄

gentle rampart
#

Ok, thanks anyway, really appreciated, I'll go code those things

celest python
#

good luck thumbsup

gentle rampart
#

Thanks 🙂

#

Just one last question, which class (base) would you recommend to be the manager, I assume EQS are ran in a thread, I'd like to keep the async

celest python
#

EQS runs in game thread, its timesliced

#

I recommend a plain actor

#

where you instantiate in gamestate

gentle rampart
#

Alright! Thanks again!

vernal jacinth
#

is anyone using a navmesh in a level with world partition in 5.2.1 ?

#

seems to be broken

#

I just updated my game from 5.1.1 to 5.2.1 and on a world partition level, it seems the navmesh is only applied to objects for some reason?

#

for example here on this screenshot its only applied to that ramp for some reason

#

I tried moving it up and down, nothing works

#

its working fine on this same level in 5.1.1 though

gentle rampart
#

@celest python Do you know why it goes to the Branch False pin ? This is the Manager class

dense owl
gentle rampart
#

Ah ok, Where should I run it ?

dense owl
#

Not 100% sure but with EQS, it might take a second to get a result, might be better used in an actual BT imo

gentle rampart
#

I don't know man I mean I'm just reading everyone who can help, and Eren suggested to create a manager class that runs the EQS once, and then share its results with the AIs, this way it is easier to distribute along the circle points

#

I found the issue (partially), I needed to bind the result to the event OnQueryFinished, but for some reason the resulting locations contains only 1 location, but the circle generator on the EQS creates 10 items

dense owl
#

Show code

gentle rampart
#

I just removed all EQS test, now I just have a circle with some points i can see with the EQSTestPawn

#

But still only 1 result

celest python
#

show how you run eqs test

#

and the delegate

#

@gentle rampart

#

oops you already did above, sorry

#

you have to bind a delegate from this

gentle rampart
#

I found the issue! I needed to set AllMatching

celest python
#

not directly fetch results

gentle rampart
#

Instead of SingleBestItem

celest python
#

does it work though?

gentle rampart
#

Yeaa

#

But now

celest python
#

eqs should provide results with latency

gentle rampart
#

I have a reaaally strange issue, I'm used to BT, but now idk the hell is going on

#

You agree with me that once the SetDidReachLocation is finished it should go on the next sequence right ?

ivory rune
# gentle rampart

If SetDidReachLocation is succeeded, it will finish this tree and start from the root again.

gentle rampart
#

Yeah and then this time it will go the Sequence on the right side no?

ivory rune
gentle rampart
#

This is the left decorator, nothing special

ivory rune
#

The logic of selector is, if any branch of it is succeeded, it will omit the left branches on the right.

ivory rune
gentle rampart
#

Oh yeah the TargetLocation is set one time and doesnt change, but I wanted that once the DidReach succeeded it goes to the other sequence

ivory rune
gentle rampart
#

I don't understand, I mean, I have the sequence on the right on the didreach and actually the DidReach is a "try" if I could get rid of it I'd rather prefer it

ivory rune
gentle rampart
#

oh you mean

#

yeah I just did it

ivory rune
gentle rampart
#

Yep bro, thanks!! I guess more than 12h doing UE my brain is fucked up, thank you so much

stoic slate
#

I need some help with Behavior Trees, please. I'm fairly sure this is a terrible tree, but it's the first one I've ever made and I still don't fully understand how it all works so it's the best I could get. In short, my problem is that the tree comes to a stop one way or another and just refuses to execute certain branches. I know it sounds stupid but I just can't find out what's wrong.

Now, as a quick explanation, it's the AI for an enemy class and it's supposed to patrol until it receives a set target (assigned in the first service), in which case it will then chase and, if in range, attack and fall back a bit, then restart this while checking the distance to that target to see if it has to go back to chasing. Also, if it loses sight of the target while chasing, it will go to the last known position and wander around. If the target is lost for 30 seconds, it goes back to patrolling. The disconnected parallel is intentionally there. Also, detection is handled by a "PawnSensing" component, by hearing and sight.

I've been at this for several hours now and I'm at that point where you get more or less close to solving the problem but never get there, and I'm in a bit of a hurry so I need to ask for help. I'll share the project if needed, since it's a small cut of the big one. Thanks a lot in advance!

gentle rampart
#

Might be exactly what I had yesterday, try to link your whole Chasing Sequence on the Patrol one just after the wait

#

Oh wait Chasing is a selector

stoic slate
#

(@gentle rampart First of all, amazing show)

#

I think I understand what selectors and sequences do, but I've been kind of guessing around and trying stuff so don't trust my tree...

gentle rampart
#

Try moving the Chasing Selector on the right of the Wait node of the Patrol

stoic slate
#

Chasing is a selector because I don't want the actor to go searching around but stay attacking as long as it succeeds. I think that makes sense (?)

#

And sure, give me a sec ^^

#

Still getting stuck. I don't remember what I changed but now it gets stuck as soon as it detects a target instead of after attacking

#

It just detects you and the entire tree stops, only shows in yellow the ROOT part

#

I believe it would go back to patrolling if I wait for 30 seconds so the "attacking" bool is set to false back again

gentle rampart
#

Seletor will stop executing their children once one succeeds

stoic slate
#

And sequence is supposed to loop?

gentle rampart
#

Most likely till the condition is on

#

Actually YES it will loop the sequence node from left to right once this sequence is enabled (BB)

stoic slate
# stoic slate

I replaced the "Chasing" selector for a sequence but I only managed to get it back to running the "Chase" task once, still stops never to come back again

stoic slate
#

So, even if we don't really know how, I did solve it (at least for now) with the great help of @gentle rampart. I changed the BB Decorator from the "Attacking" Sequence to the "Chase" task and it seems to work and I haven't found any dead ends like the ones I mentioned earlier yet. I leave here a screenshot of the new tree, in case it's useful to anybody. Any comments on this all are much appreciated. Thanks once again! ^^

celest python
#

<@&213101288538374145>

#

I wonder if bots specifically always target #gameplay-ai because it starts with 'a'

timber stag
#

almost

untold aspen
#

Yeah, it was across more channels.

ocean wren
# stoic slate So, even if we don't really know how, I did solve it (at least for now) with the...

I usually lay out my priority by specificity, so I fall back to general behaviour from specific. I would usually have attack at higher priority than patrol, because it falls back to patrolling as lower priority if it hasn't got anyone it wants to attack. So I'd have a low priority idle behaviour to the rightmost.. then patrolling with some time-based activation, then attack and having various stages of attack behaviour (can see an enemy right now, have seen one recently and want to move towards them, trying to flank their position etc).

delicate halo
#

Hi, i'm using statetress, is that normal my task stop when i return EStateTreeRunStatus::Running in my task tick ?

harsh storm
#

I don't think root decorators are supported. They don't even make much sense imo.

#

Or maybe I'm thinkin' of subtrees 🤔

#

¯_(ツ)_/¯

#

Why would you?

#

What's the thought process behind this approach?

#

Proceeding to what though.

#

If that decorator is on the root node, the tree won't run at all if it is false.

#

It's not on the root node

#

You set me up!

#

It isn't redundant.

#

No, it's not. BT's aren't just one thing and one thing only.

#

Why have a behavior tree at all at this point?

#

You can do the same thing without a BT

#

It can accept behavior. As you are demonstrating by giving it a sequence node

#

It doesn't

#

You can have a selector node as well

#

Your tree is already weird. There isn't a point in even having a BT if the entire tree doesn't need to be searched if you don't have a target.

#

Just...stop executing the tree when you have a target.

#

Wh...why would your player have a behavior tree?

#

But that isn't the player

#

The player would be the controller. Not the AI

#

The player may be giving orders to the AI, but it is still AI.

#

It's not the player.

#

It's not. But w/e

#

Alright. Have fun I guess.

delicate halo
#

Is a statetree task tick, supposed to tick periodically ?

harsh storm
delicate halo
harsh storm
#

I am having trouble comprehending that question. My apologies.

delicate halo
#

Mhh what is the "active task" ?

harsh storm
#

The task that is currently being processed.

delicate halo
#

If i return EStateTreeRunStatus::Running in EnterState and Tick, can something stop my task ?

harsh storm
#

Probably

delicate halo
#

Mhh i don't have any evaluators and i'm testing with a single task, what could stop it ?

harsh storm
#

W/e you tell it to I suppose.

delicate halo
#

Ok thanks

urban lake
#

I'm making a endless runner game, with AI. How do I use Nav mesh when I don't know where the AI will spawn?

Can't seem to add it to BP.

dense owl
#

Long as it’s on the navmesh

urban lake
dense owl
#

Or to be more specific you can set the meshes’ (i.e. walls) to “can ever affect navigation”

#

You can also use nav modifiers if needed

#

That in combination with collisions will prevent your AI from walking through walls

urban lake
#

hmm. Ok will look into that.

dense owl
#

Just noticed you mentioned endless runner tho

urban lake
#

should I use "update in runtime" function in the project settings?

I have some moving objects which block some paths

dense owl
#

Yeah, if you’re procedurally generating stuff, you’ll need to tick that on.

urban lake
#

anything else I should do, with the project being a endless runner?

#

this one?

dense owl
#

Yeah

#

Not sure what else you’d need, haven’t tried to make an endless runner with ai

urban lake
#

either way, many thanks for the help mate. Have a great day 👍🏻

full wing
#

guys what is the easiest way to get variables from one task to another?

dense owl
full wing
#

u mean like in blueprint?

delicate halo
#

Ok a tick is not a real tick in mass tasks, it's called by mass signals

dense owl
#

So the next task can use it

full wing
#

like set and get

dense owl
#

What variable are you trying to set

full wing
#

i think i know what you mean

full wing
#

thanks

delicate halo
leaden radish
#

Is there a reason why UE's navmesh is garbage?

uneven cloud
quaint hill
#

Has anyone been using Learning Agents to any success yet, or would it be better to wait on 5.3 official release?

rare stag
#

Quick question, whenever I use Move To task on a group of actors they just clump together. What's a good way to solve clumping?

gentle rampart
#

@rare stag You can try using the DetourCrowdAIController as parent class of your current AIController class, this is not optimal but it does the job kindof

rare stag
gentle rampart
#

For performance Idk to be honest, I'm looking for that as well and the DetourCrowd works out of the box, but is not really "working" in all cases. I'm also looking to find a good way of detour of AI

patent hornet
#

also be aware that default cap for detour agents is 50, any over that will just not move

patent hornet
#

its configurable

#

but if you go over 120 or so, numerous opeimizations will be required

celest python
#

best of both worlds is ORCA

#

better than RVO, cheaper than detour

#

probably can be parallelized too

patent hornet
#

detour has massive problems as is with 100+ bunched up agents

#

it reevaluates corridors on Tick, and can end up in a jitter where agent decides to go 90 degrees left one Tick, 90 degrees right the next

gentle rampart
#

@celest python What ORCA is ?

celest python
#

steering algorithm

gentle rampart
#

Ok, but what is the acronym behind ORCA?

celest python
#

Never cared enough to memorize 😄

#

You'd have to google that

gentle rampart
#

Yeah but can't find xd thats why I'm asking, is is something we need to implement or part of UE directly ?

celest python
#

It's not a part of the engine, but widely used for robotics and other engines

#

it stands for Optimal Reciprocal Collision Avoidance

gentle rampart
#

Aah thanks bro

gentle rampart
#

Quick question, does Detour works with RVO enabled?

celest python
#

yesnt

#

its not suppose to, but it works, by breaking the movement

gentle rampart
#

@celest python Have you been able to implement the ORCA algorithm in UE ?

uneven cloud
green stratus
#

Hm anyone know how to debug "get current path" from AI controller? When I use it i only get a straight line from start to goal ignoring all obstacles, but the characters do move correctly with pathfinding

green stratus
regal willow
#

hello guys i have a question. my ai is coming to the player fine but its rotation is jittery. it moves to where i am seconds before then where i am now. any youtube videos or advice to smooth the movement.

gentle rampart
#

Guys, does unreal uses RVO2 or still RVO1 algo?

green stratus
#

Hm seems like Current Path for crowd AI is always empty vs for normal AI controller

patent hornet
#

If so, use MoveToActor with goal tracking

regal willow
#

@patent hornet Alright this helped alot but hes always snapped on to me in rotation. is there a way to slow down the rotation

#

i have a leaning blueprint on him and he dosent lean very much when hes just watching me.

patent hornet
#

CMC has max turn rate?

regal willow
#

no

#

i dont know where to find that option

#

found it tahnks for your help

patent hornet
#

Btw

#

I find spawning MoveToActor and just moving to it once with GoalTracking a superior way to handle movement

#

You then just teleport/attach movetoactor around

regal willow
#

i would have to find a video on that. im still pretty new to ai.

patent hornet
#

And dont need to use parallels if you want to move and do something else at the same time

uneven cloud
gentle rampart
#

Hello, does anyone knows why the navmesh isn't affected (correctly) when I changed the rotation of an actor at runtime?
I tried settings the project settings navigation to Dynamic and Modifiers Only, but it does not work
When I try with Dynamic it is really strange like navmesh blinks between red and green, an AI is completly broken its like nav adapts in a bad manner even in places where nothing changes, I can show a video if needed

gentle rampart
#

Ok, i found my problem, for anyone who might need it, I found the option "Can Ever Effect Navigation" on my SM and it fixed the problem.

tawdry crag
#

What do the FilterFlags in the NavigationQueryFilter interact with? Or, how do you get flags onto the navmesh? Are they even used for anything? As far as I can see, the flags get copied into the FRecastQueryFilter and then just get totally ignored

ocean wren
#

If I remember rightly, those are for the NavAreas to be able to set a flag for the navpolies they cover? I could be wrong though, its been a while since I looked at the code. But if memory servces, you could use those to make it so that specific agents could navigate across an opening for instance.

spark verge
#

how does this BehaviorTree Decorator work? I've verified that this tag is on the SelfActor as an ActorTag as well as on the AbilitySystemComponent tags.. but the decorator is not picking it up.

spark verge
#

the answer is.... You need to implement the IGameplayTagAssetInterface on your actor... which I did.. and just routed it to do the same thing on the ability system component of the character when that gets called.. so now it's all wired together

#

yay

dense owl
analog linden
#

After making multiple changed to code, StateTree started to behave unexpectedly
Before it worked fine but now I have a list of Is it Null States??? the one with ID 65535!!!
I recreated the StateTree DataAsset but I still have the same issue

any idea what is the possible reason of having 65535 as active states(there's 6 states like that), I do not have a state with that ID(as you can see this is the root's parent ID )

uneven cloud
analog linden
#

Yes I found out that wasn't the issue, active states allocate 8 indices and these are garbage and it uses NumState to keep track of the last index, that is how Last function works, Anyway, when i had a look at the logs for some reason the tree being interrupt the navmesh, I am trying to find out why

gentle rampart
#

Guys what the best way to give multiple AIs a target location to go to, but minimizing overlap with each others ?
I tried with EQS and generating some points and assigning the the AI a random location within the matches of the EQS, but even with that I'm not fully satisfied

waxen junco
#

why is my ai struggling with this tiny step, the player can walk up it completely fine, its nothing to do with step height, but the nav mesh seems to think its flat here. what should I do about that?

dense owl
#

You can also use the get point in navigable radius tho I’m not sure if that’ll change from one instance to the other

uneven cloud
waxen junco
#

so then why can the player walk up it completely fine

#

both have the same capsule size and step height

uneven cloud
#

You have to debug it

uneven cloud
gentle rampart
#

yeah but detour is limited, i need like 200 AI at the same time

#

@uneven cloud I want that they have like 'natural' pathfinding, now they just try to avoid each other but its not very nice
If you see like 'Diablo' for instance, there pathfind looks way more natural, and dont collide as much between each others

uneven cloud
gentle rampart
#

@uneven cloud How could you filter out distance to allies, Context ?

waxen junco
uneven cloud
gusty bridge
#

Is there a way to get a class that AI Controller has possessed without casting?

#

This is the only way I can think of so far

AIController.h

class AEnemy* Enemy

AIController.cpp

AEnemy=Cast<AEnemy>(GetPawn());

frosty token
#

Looking for some advice
I'm looking to start on AI for my project, and want to pick a solution/framework for the AI
Previously I've created a GOAP system in unity, and a utility AI system as well.
For this project I mostly want to create a simplistic AI for monster mobs

I've used the search feature and see that there's a general concensus that systems like Utility AI and GOAP are older, and not necesarily the best tools for the job, and that there are other solutions.

I understand the answer for which AI system is "it depends", but I'd like to know what other options there are for AI systems that aren't too complex/complicated. That way I can research, and create standalone prototypes on a few of the options before comitting on this project

tl;dr: what are the modern ai solutions i should consider when deciding which system to go with?

ocean wren
#

Modern? none of them 🙂 seriously, all of the options commonly in use have been there for 20 or more years at this point

#

For monsters with relatively simplistic AI, I think either HFSM or BT's would be the most obvious, with BT's being the choice if you want it pre-built into Unreal

#

I mean, almost all of the systems are a pain in the arse to use, almost all have problems and almost all have good points.. so pick your poison, they all have a different flavour but I'd not call any of them "modern" or even "good" for the most part 🙂

#

If you really want more modern stuff... and I'm talking about a higher level of complexity to execute.. I'd recommend looking at reinforcement learning (the kind of stuff DeepMind are doing), because it offers a way forward for things like imitation learning (seeing a human play, or use a system and perform roughly the same) but also allows longer term planning and decomposition.

#

Obviously this isn't the current standard, but its coming.

analog linden
#

Can someone explain EStateTreeRunStatus
when I return EStateTreeRunStatus::Succeed in a task will it means that the Tree Succeed or the Task Succeed??

#

like if i have the following Tasks Idle - Walk
and when the Idle Task finishs, I returned EStateTreeRunStatus::Succeed, will that means that the tree will stop and execute from the beginning? I thought it means that the task Succeed and it will execute the next transition, but after I saw the following code I am a bit confused, I have a Idle Task return Succeed and Walk return Running but the Tree Status is Succeed, instead of running in the Walk Task, because it stores the last Succeed status from Idle Task

gentle rampart
#

@uneven cloud So I'm trying what you suggested me, but I don't understand how I could make the AI have a target location to go, while still being able to run some EQS queries that will try adapting its pathfinding so that the AI tries to not overlap with other AIs.
My problem is more like a parallel issue, or idk 🤷‍♂️

celest python
#

tree's succession is relative to its task results

celest python
#

Maybe starting with face mimics would be easier Thonk

uneven cloud
harsh storm
uneven cloud
bitter citrus
#

Good morning!

I am designing a rush down enemy in my horde shooter game and having decent results but want to make improvements. Currently all the AI just runs in a shortest distance straight line path at the player. I was wondering if there was any resources, tips, helpful nodes, or videos on adjusting this so that the attack angles of the AI felt more like flanking? Rather than just running in a straight line. i.e. I am trying to direct my AI along the green lines instead of the black.

celest python
#

then move to target
also manipulate the direction with FCubicInterp or bezier spline in AIController so it will look more natural

analog linden
#

I think I found out why It Doesnt work! I don't fully understand why

The Tree Repeat execution 5 times but I have non-repeatable task and thus it fails even though it succeed, here's a simplified version

First Iteration

State Result Hierarchy
Idle Succeed Sibling
FindTarget Succeed Sibling
*ClaimTarget Succeed Sibling- Child
** MoveTo Target Running Sibling - Child - Child
Second Iteration
ClaimTarget Failed because it is already claimed

this code Choose to store a handle to FindTarget, Even though ClaimTarget Succeeded too,
Next Iteration it decide to start from ClaimTarget which fails because it cannot be claimed twice

I don't understand why this happen. does anyone have explaination for that

uneven cloud
bitter citrus
uneven cloud
harsh storm
#

@uneven cloud What is a good way to randomize the item chosen in EQS? When I was workin' out doin' the navigation with it, I always seem to score the highest in the corners (I use a box) and it always seems to pick the front left corner.

uneven cloud
harsh storm
#

The results seem reasonable enough. Though it always selects the corners.

#

I'll try out the donut generator tonight.

lyric flint
#

Guys what's random deviation in the wait task?

ocean wren
# celest python Yesterday I wanted to research how can I make AI to learn body language then end...

I guess it depends what for. Body language is a whole field of research (non-verbal communication) that's been around quite a while. People like Michael Argyle (now dead I believe) and the like have been studying it for ages. You can use a thing called cosine similarity to compare skeletal orientations if you want a relatively simple metric. But look at pose estimation (as a search term) for a good starting point. I use something like Google's MediaPipe framework to extract body pose, then use other models to distinguish pose similarity.

ocean wren
# bitter citrus Good morning! I am designing a rush down enemy in my horde shooter game and hav...

We once had a game where if you shot enemies, they'd try and flank you. Players hated it because you'd shoot the enemies and it looked like they ran away (they kinda did, but it was to go get a bigger group and flank). I'd say try and write an EQS that biases the points towards the periphery of the players vision arc (using dot product) and as Eren says, use some layers of different donuts around your player (donut is a thing in EQS).

bitter citrus
ocean wren
#

Yeah, but bias your choices to be on the edges of the angle of the players nominal vision arc, i.e. move to the sides of their view cone

#

essentially its just a scoring function in the EQS

#

You usually want to make sure you only select visible points too.. because having AI move out of the players vision is hard to read generally

#

Depending on the game, its ok for the enemies to take cover in the players view cone.. as long as its going to pop up or out every now and then to remind the player where they are

celest python
bitter citrus
celest python
ocean wren
ocean wren
bitter citrus
#

Gotcha. Thank you!

ocean wren
#

proportional derivative controller basically 🙂

ocean wren
#

Definitely check mediapipe by the way.. pretty fast, pretty reliable.. does faces, hands, bodies etc.

celest python
# ocean wren What's your use case?

I just want AI to prompt current emotion from the face expression like anger, happiness, shock etc.

It sounds too comprehensive but I want to keep it dead simple as possible

ocean wren
#

Just be aware, almost all of those facial emotion expression things.. are total crap 🙂

#

But yeah, its a simple enough project for your first one..

#

Use OpenCV for it.. easy as pie really

celest python
#

Should be easy to pinpoint whats going on

ocean wren
# celest python Why is that? In the end expressions are universal

Because everyone misreads eckmans work on facial expressions, or rather doesn't REALLY read it. The "universal emotion" stuff is misinterpreted a lot. There's a thing called masking (which also comes from eckman) which means that emotions aren't always expressed when they're felt etc. Plus there's a fair bit of noise in people's faces when they're interacting (imagine someone arguing while playing the game)

celest python
#

So problem comes from misunderstanding the science part at the first place rather than AI implementation itself Thonk

ocean wren
#

Eckman was ultimately working on micro-expressions, the little things that determine real emotion from the masked or even acted versions

#

Well, people willfully misinterpret what eckman said.. its easier to regurgitate some chinese whisper version of his work than actually read it 🙂

#

And its one of those scientific things that just replicates its own error..

#

I feel sorry for Eckman in a lot of ways.. probably frustrating to see your work misquoted so many times 🙂

#

Have a look at mediapipe facial landmark detector.. or OpenCV's version

#

I think OpenCV might even be incorporated into Unreal Engine already now I think about it

#

Might be a plugin

bitter citrus
celest python
#

Gonna check eckman too

ocean wren
#

Have a look at the FACS system.. that's what most companies use for facial animation setup (facial action coding system)

#

Basically eckman broke down faces into movements called facial action units.. partly based on physiology

#

brow raises and the like 🙂

ocean wren
#

BTW guys.. highly recommend messing with Houdini 🙂 its super fun if you're at all into PCG

#

Given the PCG tools in UE are still a bit... underpowered

#

Its like a cross between programming, art and lego 🙂

frosty token
gentle rampart
#

Guys, how to setup an EQS generator like Points so that it ignores the actor (Context) collision, I mean If I scale up the actor, the EQS does not work anymore, I'm basically generating a circle around an actor, but if I change the scale the EQS is broken and I can't find what option I need to set in order to just ignore that..

uneven cloud
gentle rampart
#

EQS is a nightmare to me.. Why the hell pathfinding test works correctly (1st pic) but when I move a bit the context, it does not work (2nd pic) At least if I understood correctly the red spheres items are the one that are filtered and navigable afaik

#

Also I had to put for the generator 'Trace mode' to 'Geometry by channel' and by default it is 'Navigation' but If I let 'Navigation' the generator simply does not work
as you can see, so @uneven cloud Thats what I was talking about with some kind of collision or whatever...

uneven cloud
gentle rampart
#

It does not work even if I increase the radius which I tried

uneven cloud
#

Have you tried adjusting the settings?

gentle rampart
#

Yes I'm struggling since hours

#

I increased the radius, You can see here the 2 contexts have different scale in the scene and the EQS generates with 'Navigation' but doesn't for the other (the one I shown before which is bigger)

#

And I just noticed that even on the one with the EQS generated the pathfinding is still not working as you can see

uneven cloud
#

The larger one has navigation issues. There's navigation built on top and likely inside. You need to fix that.

gentle rampart
#

Humm, the problem is that I need to keep the navmesh that high, and since it is bigger actor, it is detected as navigable

uneven cloud
#

That's not what I said to fix. There's a check box to fill inside with collision.

#

For being on top, you can add a nav mesh modifier component.

gentle rampart
#

I'm sorry but which checkbox you talking about ?

uneven cloud
#

I don't remember the exact name. It's something along the lines of what I already said.

gentle rampart
#

Ok but where, Actor ? EQS, collision settings of the actor? I don't understand lol

#

Anyway it works now with the NavModifier set to Null for the 'Area class' thank you so much @uneven cloud !!

uneven cloud
#

The actor. The thing that is affecting the nav mesh.

true fog
#

How can i make that my ai climbs on building to get to me. I know you can use nav links for jumping but what about climbing?

uneven cloud
true fog
uneven cloud
true fog
uneven cloud
true fog
#

Alr

true fog
# uneven cloud By using a nav link. When the link is triggered, start the climbing functionali...

Do you think i can use this video for the climbing functionality for my AI bc this video is made for the character: https://youtu.be/WT_hIFudl6s

Hello guys, in this quick and simple tutorial we are going to continue with my UE5 RPG Tutorial Series in Unreal Engine 5!
↪️Project Files: https://bit.ly/GorkaGames_Patreon

Mantle Ledge Animation 💃 https://bit.ly/MantleLedge_Anim

➡️Whole Series: https://www.youtube.com/watch?v=FNTyIWkv5k8&list=PLiSlOaRBfgkcPAhYpGps16PT_9f28amXi

Discord: http...

▶ Play video
#

Of course i need to change some things

cedar kiln
#

Hey guy I learnig how to make Ai grab and deplace some stuff if you ave any info or tuto useful to shear im glad to take it Thank you .

acoustic talon
#

Hey guys, does anyone know how to make the NavMesh take the size of a static mesh?

#

I made a static mesh of city streets and I want the AI to be able to walk on only them, how do I get it done?

keen crow
#

Are OnCeaseRelevant/OnNodeDeactivation/OnTaskFinished guaranteed to be called upon AAIController::OnUnPossess -> UBehaviorTreeComponent::StopTree(Forced) call? It's just that sometimes after NPC's death some resources that are released in those nodes functions are still acquired later in time as if OnCeaseRelevant was never called for a killed NPC 🤔

uneven cloud
uneven cloud
acoustic talon
uneven cloud
acoustic talon
#

They’re not static meshes, they’re Actors and they don’t have that doesn’t affect navmesh option.
It’s the CitySample map from the matrix demo which is procedurally generated which I think is why it’s built like this.

#

which is why I assumed completely covering them with a giant static mesh and playing with its navmesh settings would work, but it didn’t

#

it’s like it isnt even there

uneven cloud
acoustic talon
uneven cloud
#

You also made a false assumption that covering them with a giant static mesh is a viable solution.

#

If you want to exclude an area from AIs navigating, you set the area class to nav area null. Like I already told you.

acoustic talon
#

I also made a static mesh that I could lay over the streets (well under) and my thinking was if I slightly elevate it the Navmeshbounds would just cover that and exclude everything else, still didn’t work

acoustic talon
#

buildings that aren’t all rectangles or squares either so I’m gonna need to shape the null modifiers to each individual one

uneven cloud
#

You can add nav modifiers to large areas to set the area class. You can set the area class on an actor. You can add a nav modifier component to an actor.

acoustic talon
#

Okay I’m getting the feeling this is getting frustrating for you and I apologize, I am a total and absolute beginner and talked myself into doing a school project which makes me fail a semester if i dont complete so im in a bit of a rough spot lol

acoustic talon
uneven cloud
#

It's frustrating when people don't listen. We take our time to answer and some of us have > 10 years of professional experience in UE.

acoustic talon
#

I am listening, but again I don’t have enough (or any) experience to be able to implement the advice you’re giving me without more details

#

but I do appreciate your input, greatly.

uneven cloud
acoustic talon
harsh storm
#

I guess it depends on the plugin. Mass, idk why you would. But ST - I could understand at least.

celest python
#

I would be fine with StateTree but Mass could be overkill if its not used, there arent any reasons to only use AIModule though

#

I'd appreciate Mass dependency to be separated as another module but I wouldnt mind that much either if it cant be - now thinking about it again, I actually wouldnt want mass to be an unconditional dependency to an AI plugin at all

#

Mass is treated as a generic ecs system rather than AI, and if its used it usually replaces AIModule (because it has its zonegraph thingy and massagents etc)

fringe nymph
#

Does anyone know why a Navlink would work when traversing one-way (ie, right to left), but fail when set to both directions? I see that the ledge example says that both directions would fail, but I'm assuming that's due to the NPC trying to walk into a wall and failing. I'm seeing a complete failure when trying to get the NPC to walk through a door, which seems wrong

ocean wren
#

There's probably a checkbox for it to be both directions or one way

#

there's always a checkbox in UE 🙂

#

I used navlink proxies for doors and ladders and they did work, but it was a few years ago now, so can't remember the ins and outs

#

I think I used smart links and extended the code to add things like queueing/stacking up and that kind of stuff

#

Wasn't massively difficult

viscid wolf
#

Anyone know how to make navmesh generate on procedural world's

I set it to dynamic but apparently that isn't the solution

dense owl
wheat dagger
#

I'm in the process of adding some EQS features to my plugin and had an EQS question for anyone with more intimate knowledge about the EQS system in general.

If I have an EQS generator with the first test as a trace test and set to filter only, I would expect that only the points which matched/passed the filter would make it through to the following tests and all other points excluded. In my test I can clearly see there are only 2 points that match the filter as they're blue if they match, but all of the points seem to be making it to the next tests which hurts performance if there are a lot of points from the generator.

Is there an EQS setting I'm missing which will prevent points which failed filter tests from being passed on to subsequent tests. Or is the behavior I'm experiencing by design?

wheat dagger
# wheat dagger I'm in the process of adding some EQS features to my plugin and had an EQS quest...

I think I answered my own question after playing with it a bit more. I wrongly assumed the matched items for a filter were what should be passed on to the next test. It looks like it's actually the opposite, whatever items match the test are what is filtered out. Blue spheres = match/filtered out and red spheres = no match/pass on to next test.

I was thinking along the lines of filtering the results of a query/report where the items that match are what you get back.

uneven cloud
#

The EQS is time sliced, so perf shouldn't be a big worry. Don't go bonkers with pathfinding cost tests, but generally it's safe to do a lot with it.

wheat dagger
uneven cloud
uncut slate
#

is pawn sensing deprecated ?

#

how would i make a character move back to it's original position after sensing is done say i get out of range and it's not sensing anymore

#

or when it gets out of bounds for example, how to make the enemy move back to where it was, in particular how to know when that is happening so i can trigger it, i know i can use ai move to and get the original location, but i just don't know when to run it

ocean wren
#

Well, you can have a bool in your blackboard that is the sensed condition.. if its not true and you're not at your starting point.. simply go back to it

#

use that as a low priority in your tree

#

store your start location in the BB too

#

you might also want a "time since last sensed" value so you can loiter for a bit before going back

#

or a while the time since last sensed reaches a threshold, you do a looking around loop

#

store the last sensed position in the BB so you can wander around near it

#

And yeah, don't use pawn sensing.. use AIPerception

uncut slate
#

blackboard ? hmm, i'll look into this aiperception

uneven cloud
forest tundra
#

how do move ai in direction?

#

it doesn't recognise left or right, it just turns and walks there.

dawn loom
forest tundra
#

direction movement

#

right left back forward

dawn loom
#

in the simple AI move to there is a boolean to allow sidestepping

#

you should also be able to set the focus of an AI after starting the move to

dawn loom
#

what move to function are you using?

forest tundra
#

AI move to

#

in tree

dawn loom
#

what you're looking for is that "CanStrafe"

#

you're not using the same move to though

forest tundra
#

okay I now try

forest tundra
#

I has unreal 5.2.1

dawn loom
#

press on the little arrow

#

at the bottom of the node

#

😅

forest tundra
#

oh

#

lol

forest tundra
#

it just tries to turn but doesn't move from where it is

#

I guess strafe didn't work

dense owl
# forest tundra I guess strafe didn't work

No, it’s probably because you’re asking it to find a random reachable point in its own radius and giving it a really high acceptance rate, so it probably moves to the closest point to it, making the move imperceptible.

#

Idk what you’re trying to achieve exactly but I recommend you read up into the AI system some more. The 3rd pinned link video might help

steady swift
#

I create a c++ files that inherited from NavMeshBoundsVolume, I set my file Blueprintable so I can use Navmesh with BP but when I compile it in editor error log is display:
"BP_Bounds contains invalid data".

How could I fix this?

harsh storm
dense owl
#

Altho this looks more like a #cpp issue the more I look at it 😅

#

Still don’t know why you don’t just add a navmesh tho

harsh storm
#

They posted in #cpp already

dense owl
#

Ah

harsh storm
#

That's why I said to not crosspost

dense owl
#

I hadn’t seen that

uneven cloud
# forest tundra AI move to

Why are you making your own move to task instead of using the built-in one? Not only does the built-in one cleanly aborts the move, but it allows for strafing. Don't reinvent the wheel!

uneven cloud
#

The bounds volume isn't the nav mesh. It doesn't generate the nav mesh. It's just the bounds.

steady swift
uneven cloud
viscid wolf
dense owl
viscid wolf
dense owl
viscid wolf
#

thank you

viscid wolf
dense owl
#

np 🙂

uncut rose
#

Hey friends, I have a basic IsInRange service set up here. Most examples pull of the "OtherActor" pin and use a GetPlayerCharacter (this is fine, my project is single player). However, here I want the AI to target a barricade (Pawn). Each barricade is randomly selected for each AI.

Does anyone have suggestions to get the range between the "ControlledPawn" and the barricade? I have the barricade (1 of 5 options is selected for each AI) saved on the blackboard as both an Object and a Vector (WorldLocation).

harsh storm
#

Just pull off the Get Value as Object pin and cast to actor if you know that will have a value.

harsh storm
#

Yeah

#

Based on your requirements.

uncut rose
#

Maybe I dont understand "Simple Parallel" as much as I thought I did. I am not able to get the "Print Attack" portion to run at all. Seems like either an issue with the service or simple parallel.

dense owl
uncut rose
#

Not sure why I was using the object reference instead of the vector I already had. thanks again @harsh storm and as always @dense owl

uneven cloud
uncut rose
#

Well it actually dosnt work at all because the barricade is to short for the AI to overlap the barricade actor and trigger ApplyPointDamage, but thats a different issue im working on now

uneven cloud
dense owl
#

In my very short xp the times to use simple parallel are much more limited than it makes it seem

fiery elbow
#

I’ve got a card game I’ve used a behavior tree on to sort through various plays by the ai player. For example there is a task at the bottom for play card from hand and one for flip card over. I have an end turn button that is set to run the behavior tree. At the end of each task is it sufficient to have a finish task node or should there be a stop logic node? Idea is that it will run the behavior tree fresh each time

uneven cloud
dense owl
uneven cloud
nova fulcrum
#

I have a very simple behavior tree for my monster AI, just following and attacking the player (check screenshot below).
When the monster dies, I play the death AnimMontage and I stop the behavior tree execution.
BUT for some reason i feel like the behavior tree is still running and as a result I have a monster which keeps switching back from attack and death animation very fast (check video below).

This is the code I use to stop my behavior tree:

Parent Class (set IsDead to TRUE, and play the AnimMontage).

{
    IsDead = true;

    // Play Death Montage
    PlayAnimMontage(DeathMontage);
}```

Monster Class (call the parent Die() and stop the BehaviorTree)
```void ACharacterMob::Die()
{
    Super::Die();

    // Stop Behavior Tree
    AMobAIController* MobAIController = Cast<AMobAIController>(GetController());
    if (MobAIController)
    {
        MobAIController->GetBehaviorTreeComponent()->StopTree(EBTStopMode::Type::Safe);
    }
}```

I've been trying to solve this problem for hours, but I don't seem to find a solution to it.
Thank you in advance for the help!
stiff gale
#

Can you share some lines of code on its implementation ? So you saying pool ao characters and controllers

pine steeple
#

yes i pool them

#

we have an interface

#
UINTERFACE(BlueprintType)
class UPoolableActorInterface : public UInterface
{
public:
    GENERATED_BODY()
};

/**
 * 
 */
class IPoolableActorInterface : public IInterface
{
    GENERATED_BODY()

public:
    /* Called on the Actor after being released from the pool */
    virtual void ReleasedFromPool(const FTransform& Transform) = 0;
    
    /* Called on the Actor before being returned to the Pool */
    virtual void ReturnedToPool() = 0;
    
    UFUNCTION(BlueprintImplementableEvent, Category = "PoolSystem")
        void NotifyReturnedToPool();

    UFUNCTION(BlueprintImplementableEvent, Category = "PoolSystem")
        void NotifyReleasedFromPool();
};```
jovial anvil
#

Hi, Can I use delay nodes and event dispatcher bindings in Behavior Tree Tasks safely?

#

I have an ai system where npc has a bunch of "behavior states" he can be in and base on that the behavior tree chooses which "subroutine" npc should perform (idle, follow, work, flee etc). The subroutines themselvers are a collections of nodes in sequence for example for work state:

find place to work->moveto->correct rotation and location->start working->end work

Its my own system but conceptually based on AIBehaviorToolkit from marketplace.

Working can be for example going to the bench and sit on it for a while, then stand up and in next sequence iteration go somewhere else. These BTT nodes usually have bindings and delay nodes when for example we wait for npc sitting animation to reach certain state (sit_start) and then loop the sitting itself for configured amount of time and after that starting sit_end phase.

My concern is that BT itself is not a state machine, it can decide in any moment that current BTT is going to be aborted and go somewhere else (we can damage npc for example so it will stop working and go into some other state). So it feels like what i am doing inside those BTT and the way i sequence multiple of them is not a correct way of using BT. What happens with binding and delays when BT aborts current BTT and moves the execution to other part of the tree?

The engine provided nodes like MoveTo i assume always work correctly because when aborted npc simply stops walking towards destination so the abort signal is handled by MoveTo node. But my own nodes do not have any way to react properly for such situation unless engine somehow knows how to cancel any logic happening there.

celest python
nova fulcrum
novel flower
#

Just wanted to share this about the Cone Check Decorator:
I found out that the Cone Direction parameter actually expects a location (where the cone should be pointed at) rather than a direction vector.
(Which is confusing imho.)
The engine code for reference which is used to calculate the direction of the cone:

bool UBTDecorator_ConeCheck::CalculateDirection(const UBlackboardComponent* BlackboardComp, const FBlackboardKeySelector& Origin, const FBlackboardKeySelector& End, FVector& Direction) const
{
    FVector PointA = FVector::ZeroVector;
    FVector PointB = FVector::ZeroVector;
    FRotator Rotation = FRotator::ZeroRotator;

    if (BlackboardComp)
    {
        if (End.IsNone())
        {
            if (BlackboardComp->GetRotationFromEntry(Origin.GetSelectedKeyID(), Rotation))
            {
                Direction = Rotation.Vector();
                return true;
            }
        }
        else if (BlackboardComp->GetLocationFromEntry(Origin.GetSelectedKeyID(), PointA) && BlackboardComp->GetLocationFromEntry(End.GetSelectedKeyID(), PointB))
        {
            Direction = (PointB - PointA).GetSafeNormal();
            return true;
        }
    }

    return false;
}

FORCEINLINE bool UBTDecorator_ConeCheck::CalcConditionImpl(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) const
{
    const UBlackboardComponent* BBComponent = OwnerComp.GetBlackboardComponent();

    FVector ConeDir;
    FVector DirectionToObserve;

    return CalculateDirection(BBComponent, ConeOrigin, Observed, DirectionToObserve)
        && CalculateDirection(BBComponent, ConeOrigin, ConeDirection, ConeDir)
        && ConeDir.CosineAngle2D(DirectionToObserve) > ConeHalfAngleDot;
}
harsh storm
celest python
#

The Red Solstice 2 is their shipped game

uneven cloud
# jovial anvil I have an ai system where npc has a bunch of "behavior states" he can be in and ...

Don't use delay nodes, as they are just timers you can't abort. Use a timer. Delegates are great.

All of your tasks must be able to cleanly abort. There is a function to override for when the abort happens. Animations need to stop. Delegates need to be unbinded.

BTs are not state machines. What you describe is a common way to set it up, but does lose a lot of the power of a BT. If it's working for you (once you clean it up and abort properly), then you don't need to change it. The only "right way" to do things is the way that makes things work.

harsh storm
#

I think it's quite a challenge for people to make that conceptual jump from SM to BT. Which is why a lot of BTs end up being semi-SMs (mine included 😅)

#

I find that I most often do a "state" to be like a sequence node and then wire up the tasks (obviously). And then the selector at the root picking the right "state" to execute.

#

And if it is reusable (like a wandering/idle thing), make it its own BT and then use a run bt task

celest python
#

I do state machine inside of the BTTasks

#

but then utter lack of control over BTs execution flow gets me somewhere after some point

harsh storm
#

I don't know if how I do it is "proper", but it works and is modular. So it is fine for me.

celest python
#

My dream is a uni-graph where we can do both SM and BT alongside with utility selectors

#

Only if I was good at slate sad

uneven cloud
#

I do mine as a utility state machine and each state has a BT. But I do that outside of the tree. So that means I have the other benefits of a SM.

ocean wren
#

slate 4 lyfe 🙂

ocean wren
lyric flint
#

Related to the above: I have a state machine where each state calls into an individual behavior tree. This lets me decide high-level transitions (e.g., from idle to patrol), but keep the implementation, of say the patrol state, inside behavior trees.

I am running into a hiccup, though. Some trees should only "execute once" -- for example, the investigation tree moves to a few locations, plays a few animations, and then it should transfer back into the patrol state. Is there a cleaner way of knowing when a behavior tree has "finished" without writing to flags on the blackboard (Investigation_IsStarted, Investigation_IsFinished, etc.)?

harsh storm
#

I just have one flag, bInvestigate on the blackboard. Then in my sequence behavior that handles the investigate stuff, I loop it X times

#

After that is all said and done, it flips that flag.

lyric flint
#

When do you reset it?

harsh storm
#

After the investigate stuff is over.

#

But as I described above, the way I write BTs might not be the same way that you do 😅

lyric flint
#

It sounds like that's the easiest thing for me to do. I'm a little afraid of my BT/BB logic bleeding into my state machine, but I think your approach makes sense!

ocean wren
#

Part of the problem, is you're trying to get BT's to handle state transitions.. BT's aren't really about state transitions.. they're about priority selection

lyric flint
#

The BTs don't handle my transitions (that's in the state machine), but the state machine needs some way to know when a BT is done, for lack of a better phrase. But that sort of flies in the face of BTs are rather continuous

#

(I say that because I initially handled transitions in BTs, and I learned my hard won lesson. :D)

ocean wren
#

Exactly.. BT's generally respond to changes in the BB

#

so if you're after state, then its got to be in the BB somewhere right?

harsh storm
#

That's how I use them. Then the behavior that I want most to happen is on the left and things get gated by conditions until the last behavior.

lyric flint
#

Here's a picture if it makes more sense than my muddled explanation

#

The transitions are the white circles, and when a state is hit, it stops the previous BT and runs the new one

#

so each BT really has no concept of what it's connected to

ocean wren
#

Hmm, seems kind of redundant.. not sure why you'd need a SM there

lyric flint
#

In my (limited) experience, bundling the states inside the BTs makes them quite broad and the leaves are very order dependant

celest python
#

and job openings 😄

#

they try to make it clear they want you to be good at BTs

ocean wren
#

Well, its mostly BT's but I'm sure I saw them talking about SM's somewhere in that massive noodle soup of nodes 🙂

celest python
#

Your states can be expressed in BTs perfectly

#

but their sub-nodes might want a SM instead

harsh storm
#

For me, each of those "states" would be a sequence node and the tasks are just small units of work that when completed, finish the "Investigate" behavior.

celest python
#

SM: I want to jump to arbitrary nodes from any node, based on given conditions
BT: I want to switch between prior tasks fluidly by controlling conditions all over the place

ocean wren
#

I think you missed something... SM: I want to invade all nodes with transition conditions for every other node exponentially 😉

celest python
#

Conduit to save us praisethesun

#

Seriously zoombapup, modern FSMs arent that bad 😄

#

once you get UX done

ocean wren
#

I guess its all good 😉

#

Yeah, I'm just ragging on FSM for the giggles

#

HFSM are actually kind of useful in certain areas after all.

harsh storm
#

HFSM to the rescue! Because your SM needs another SM to manage it!

lyric flint
ocean wren
#

Hell, if statetree ever gets finished, I might even be tempted to try it 🙂

celest python
#

I'm not a ST fan anymore

harsh storm
#

I was going to try ST again when I start on my boss behavior. If it is still buggy, I'm just doin' good ol' SM.

ocean wren
#

mattg: sequence is a node in a BT, to make sequences of actions.. I mean can't really get much clearer than that

lyric flint
#

Sequence was probably badly worded. I mean... it's easier to encode in a state machine certain things (e.g., you can only investigate after you patrol) then it is with flags in a BB

#

I've chosen my hierarchical hill to die on

ocean wren
#

To be fair, you can implement FSM,HFSM and BT's in about a day each if you eschew the UI sillyness (which you absolutely can)

lyric flint
#

I think what I'm learning from this conversation is that BTs can do more than I give them credit for

harsh storm
#

I love BTs personally

ocean wren
#

And ditto for utility.. I mean Kevin Dill used XML (ptooey) which I believe was used in Red Dead 1?

harsh storm
#

Granted my main experience from them is through UE.

#

I love the idea of building small tasks and then just building up behaviors like a Lego piece

celest python
ocean wren
#

BT's are just a different way of thinking, speaking as someone who spent years doing various forms of FSM's, I think that mental model change was required

harsh storm
#

States get too unwieldy at a certain size.

ocean wren
#

and I see a lot of people not using the right mental model of the BT

#

they're not thinking "what has higher priority than this"

#

so for instance, I often see people with BT's that have no idle behaviour.. which is weird to me

#

for the most part you can "code" your BT by simply asking a designer to sort their behaviour in priority order

harsh storm
#

My idle behavior is typically the only behavior that doesn't have some kind of gate decorator on it. As well as, typically being on the lowest priority

ocean wren
#

Yeah, which is good practice.. at least give it an idle anim to fall back to

#

Now, my current challenge is how to do multi-agent coordination between a human and an AI in an overcooked style game 🙂

#

and then use reinforcement learning to learn the same behaviour but make it more human

harsh storm
#

Plate Up! > Overcooked. Fite me 🤛

ocean wren
#

Encoding cooking games in BT's is kind of fun

#

I wanted overcooked because its simpler

celest python
#

talking about ML.. OpenCV wasnt easy peasy sad

dense owl
#

why is it all cooking games

ocean wren
#

This is for a research project

#

oh? why not?

celest python
#

doesnt seemed very beginner friendly (and couldnt find any face expression tracker out of the box anywhere)

ocean wren
#

cooking games are fun

dense owl
#

oh, sry I missed the initial comment 😬

ocean wren
#

You mean its a bit verbose?? I'll give you that.. but there's a billion tutorials on youtube for it and it really is like 5 lines of code 😉

dense owl
#

reinforcement learning is only 5 lines of code?

celest python
ocean wren
#

no, opencv based face detection and tracking

harsh storm
#

Oh, OpenCV is?

ocean wren
#

OpenCV is a really common open source computer vision library

celest python
#

its great it has C#

#

finally some usecase to try C#

ocean wren
#

Thats about 20 lines of code 🙂

celest python
#

doesnt let me in

#

but I found the source

ocean wren
#

anti virus for a website?

celest python
#

sure, its called internet security 😄

ocean wren
#

oh you mean the code?

celest python
#

no the webpage itself

ocean wren
#

web pages have virus's now?

harsh storm
#

One thing I don't feel like I use enough in the BT toolkit for UE are decorators and services to be honest. I mostly just use the decorator one about a BB key being set 😅

dense owl
#

I run my EQS as a service, task didn't work well for me

ocean wren
#

Yeah, you can get a long way with that type of decorator

celest python
#

its just too overprotective and not letting me in xD

ocean wren
#

Override!

#

Demand access! hack into the mainframe!

celest python
#

hey zoom, are you also one of the strikers in UK

#

i just saw the news

ocean wren
#

strikers? I've been on strike recently yeah

celest python
#

i heard teachers not graduating students 😅

ocean wren
#

there's a lot of industrial action going on right now

#

but we've got a govt who doesn't give a shit because they know they're out in the next election

#

so they're sowing chaos as quickly as possible

#

I've almost finished making the 3D models for my Overcooked research "game" using Houdini and some other PCG stuff

#

bask in the glory 🙂

#

infinite cooking 🙂

#

hahaha

desert isle
#

hey guys does one of you know a finished framework for unreal in the marketplace which is similar to the action shown in the video. A fighting melee ai? I'm not necessarily talking about ragdolls or weapons, but rather about the various animation options such as dodging, rolling after a hit and so on. I think it looks super dynamic and is really fun to watch. And i dont need that smart learning AI Stuff

https://youtu.be/YlJa5PIdccE

NPC Wars in Overgrowth with Active Ragdoll Physics. We are watching Smart AI fight eachother in a simulation with Active Ragdoll Physics, in Overgrowth NPC Wars. Smart AI Learns to fight.

Smart AI team (GREG & REX) is learning to fight & use weapons to beat the Ragdoll Army.

NPCs are fighting eachother with Active Ragdoll Physics in Overgrowth...

▶ Play video
ocean wren
#

looks a lot like that bunny combat game by wolfire

#

overgrowth 🙂 blanked on the name for a minute

desert isle
#

yeah its a mod

ocean wren
#

I think they released the source code to overgrowth didn't they? made it a community thing?

#

Don't think I've seen anything like that on the marketplace

harsh storm
dense owl
#

Luthage had said to just run EQS as a task to get the actor and use a service only to update the location, but it wasn't working in my use case, can't rmbr why. Plus, if it works...😅

harsh storm
#

If it works and meets your requirements - SHIP IT!

ocean wren
#

He speaketh the trutheth

uneven cloud
lyric flint
#

Ah, that is exactly what I need, thank you! The task communicates up to the state machine!

finite gyro
#

Is there a way to change the acceptable radius number on a moveto node to a random number in range?

dense owl
#

But you could put that in a task technically

#

Either that or make an EQS context around the target and make it move to one of those vectors instead of your TargetObject

#

So you can set that to random beforehand

dense owl
#

Nvr done it myself so disclaimer 😅

violet veldt
#

Hey ! has anyone here used detour crowd and has a good understanding of the visual debug it offers ? the whole thing is useful but quite obscure 🙂

keen crow
#

can somebody remind me an answer to my own question 🙈 ? I believe the answer is yes and AFAIR I've been doing this extensively some time ago but I still doubt my memory about this and just want to double check

queen root
#

Has anyone used www.loci.ai? Seems to be a neat API for automatically tagging assets. You can upload a test asset on the homepage too.

gray olive
#

Quick question. I've made a basic AI controller, tree and BP, and everything is working fine EXCEPT my AI is seemingly not changing sequence upon sight while already in a sequence.

I've poked around with it for a bit, but I'm sure I'm only missing a toggle or something somewhere. Any quick solutions for this?

All works fine, but I MUST be within sight on the end of "wait" period from the patrol seaquence in order for chase sequence to begin. It does not switch to chase on sight during patrol.

gray olive