#gameplay-ai

1 messages ยท Page 14 of 1

uneven cloud
#

The AI with Blueprints course on Epic's learning library is a good overview of the AI systems. While the focus is on BP, you get a good idea on how things fit together.

The BT and Blackboard are special data assets that are meant to be created in the Editor. For many reasons it's better to write all of your BT nodes in C++ instead of exposing things in Blueprint.

#

In that example, I would recommend it being a decorator, because you can then determine when a LOS check is necessary.

storm sail
#

Am I correct to believe the longer the AI move to distance the more costly it is? If this is or isn't the case, can you please explain why?

celest python
#

Pathfinding cost increases based on length i believe

#

string pulling and other path optimizations happen

#

and base A* overhead

#

but "moving" itself is not costly based on distance

storm sail
#

Sounds great, thanks! That said, My AI are programmed to reposition every 0.3 - 0.6 seconds, the repositions are very tiny but AIMoveTo Is utilitized to move them, I shouldn't have anything to worry about here correct? The Observed Paths Tick Interval is reduced to 0.1 seconds from 0.5 (0.5 is the default)

#

Is there anything in particular I should be worried about that you or anyone can think of directly?

flat plank
#

Is EQS still experimental? I'm reading up on it on docs.unrealengine.com and they have a disclaimer at the top discouraging using it.

misty wharf
#

Not sure what it's labeled in UE5, but it works fine and you can use it

flat plank
celest python
#

its only experimental because some UI thing is missing

#

eqs is ready to ship otherwise

harsh storm
uneven cloud
harsh storm
#

Didn't know BP was instanced by default.

#

I blame @celest python

celest python
uneven cloud
#

I used to work at a studio that makes a popular zombie game. The previous version had a lot of problems, because the BTs took 15ms to load when spawning a zombie. While I was working on the next version, I spent a lot of time helping the other team untangle that mess.

harsh storm
#

Zombie you say ๐Ÿค”

celest python
#

back 4 blood dev confirmed?

uneven cloud
#

State of Decay

harsh storm
#

Hey - I know that game ๐Ÿ˜…

ocean wren
#

WHATS WITH ALL THE ZOMBIES!

#

ok.. is anyone NOT working on a zombie game?

harsh storm
#

Why would you not?

celest python
uneven cloud
#

I am no longer working on a zombie game. ๐Ÿคทโ€โ™€๏ธ

celest python
#

i played state of decay 1 during high school days and enjoyed a lot

harsh storm
#

I'm intimately familiar with SoD. I was a huge fan of the game. Was interacting with the devs before they even had their own forums (RIP to those btw), way back in like 2010 or 2011 or something like that

ocean wren
#

but you're guilty by association ๐Ÿ™‚

celest python
ocean wren
#

I already did sadly

#

but it was for a game jam or something.. so doesn't count

harsh storm
#

Well - reckon I should get more involved in creating native BT stuff.

ocean wren
#

and no, zombies ain't my thang ๐Ÿ™‚

celest python
ocean wren
#

can recommend C++ BT stuff.. although I still hate the blackboard implementation

uneven cloud
#

I hate having to make a new BB key type and that they are FName based, but otherwise the blackboard isn't that bad.

uneven cloud
ocean wren
#

Pffft, it just isn't really a blackboard in the way you'd expect.. usually they'd allow sharing across agents.. they'd have simpler usability and generally I think the BB code needs a complete overhaul

#

Needs stuff like arrays

#

and general structure support

uneven cloud
#

Don't they have sharing across agents? I've never needed or even wanted that functionality, but I remember when it used to be shared by default.

ocean wren
#

its got sharing, but it just makes every agent share the same one.. it doesn't have any way of sectioning what is shared from what isn't

#

Normally you'd use a shared blackboard area for things like squad control etc

#

makes it easier to keep the squad coordinated

uneven cloud
#

Huh. I think of squad coordination as something separate from the blackboard.

ocean wren
#

Its the kind of thing that blackboards were created for.. see Damian Isla's GDC talk from Halo for example

#

I mean obviously its not required and all.. but its what I think of when I want a BB, its more about sharing info across agents

harsh storm
#

Alright - so, for instance data stuff, create a struct and then override the GetInstanceMemorySize() method and return the sizeof(FMyStruct). That pretty much the gist?

celest python
#

game ai pro had an example for Final Fantasy

ocean wren
#

BB's are basically a shared scratch data space..

celest python
#

only POD

#

weakobjptr for object ptrs

harsh storm
#

The struct can't have an array?

celest python
#

yep

#

i didnt know either, heard from mieszko earlier

uneven cloud
#

Yeah I've seen that talk and I understand why they built it like that. I just don't agree with it in nearly any other case.

harsh storm
celest python
#

yeah

#

weak pointers access global object array to provide your object

ocean wren
#

all your pointers are weak ๐Ÿ™‚

celest python
#

and nulls itself if GC eats your object

harsh storm
#

All your base are belong to us

celest python
#

cache them on local scopes

#

dont use -> directly

harsh storm
ocean wren
#

does weakptr refcount the pointed object? or was that another type? I forgot

#

I've been doing too much python ๐Ÿ™‚

celest python
#

its the one doesnt prevent GC to eat the object but silently nullifies itself

#

unless you literally mean std::weak_ptr ๐Ÿ˜„

uneven cloud
#

It doesn't refcount the object

harsh storm
#
TWeakObjectPtr<AActor> SomeThing = // assume this is set to a valid thing
if (SomeThing.IsValid())
{
  SomeThing.Get()->DoThing();
}

So, this the general gist? Can I create a hard local pointer so I don't have to keep doing .Get()?

uneven cloud
uneven cloud
ocean wren
#

I think my brain has been broken by python.. I can just imagine doing an interview now and thinking "whats a pointer?" ๐Ÿ™‚

celest python
#

you lowered the bar too much, zoom sad

ocean wren
#

I definitely feel like my brain oozes out every time I touch python

#

everyone likes it because it has a ton of libraries that do stuff for you.. what they don't realize is that most of those libraries are trash ๐Ÿ™‚

harsh storm
#

@uneven cloud When you said you don't like having to set a new BB key, are you talkin' about messing with the key filtering mainly?

uneven cloud
harsh storm
#

Didn't even think to be able to make a new key type to be honest ๐Ÿ˜…

harsh storm
#

Huh - well I'll be ๐Ÿ˜…

uneven cloud
#

It is certainly not unneeded. Node memory allows you to save data while not having to instance each BT Node UObject, which saves a significant amount of load time perf.

north oriole
#

Why is EQS still labeled experimental in the docs?has it been used in games?

uneven cloud
#

It's significantly more painful to go back and redo, but you do you.

quiet pawn
#

Hoping for some quick help. Just trying to start and stop ai logic during a montage and on start or restart the editor crashes. Any ideas?

uneven cloud
quiet pawn
quiet pawn
uneven cloud
quiet pawn
#

Finally found UBrainComponent that outlines c++ pause. only 4 search results in google. Epic really needs to work on their documentation

uneven cloud
#

I prefer the locking functionality and just made a helper function to do the locking without an animation, but directly pausing works as well

quiet pawn
#

No that lock should work I was just not aware of that option. Thansk a ton testing now

uneven cloud
#

You're welcome

void wadi
#

Hey !

I need to find where is the "Play Sound" node (or similar) for the footsteps in Lyra Starter Content.

I would like to "Make Noise" when it plays, for my AI to be able to hear the footsteps of my player.

Can you tell me where can I find it please ?? (or how can I make this)

Thanks a lot !! ๐Ÿ˜‰

quaint radish
#

while debugging, how do I cycle through ai currently being visualized? is it possible?

harsh storm
#

I don't believe so, but it works based off who you are looking at when you turn it on.

quaint radish
uneven cloud
quaint radish
faint fox
#

is AIPerception much more performant than pawn sensing?

wary ivy
#

pawn sensing is old and busted

#

deprecated

faint fox
#

i know that much

#

but im more interested about performance

#

but i guess usually new things are more performant too ๐Ÿค”

lucid plover
#

Hi folks, I'm wondering if you would have any examples of game / template that using GameplayTask in a city builder context? I've read the massive tranek documentation on GAS and dived a bit into Lyra source code, but I can't find any example of GameplayTasks used solely.
We have used our custom Tasks solutions in a previous project, but as we reworking the architecture I'd like to use more of native unreal components.

delicate halo
#

Hi ! Should a FindTarget for an AI be a task ticking or a service updating a BB target value ?

misty gale
misty wharf
delicate halo
misty wharf
#

You mean you want it to cancel the moveto but it isn't doing that?

delicate halo
#

Yep

#

Oh wait, i just noticed the "block all logic" on the moveto node :p

misty wharf
#

Yeah that might do it lol

delicate halo
#

It seems to avoid task aborting lol :p

misty wharf
#

A decorator should work for aborting it if everything is set up appropriately

delicate halo
#

Yep it's working that was just this bool :p thanks !

ocean wren
#

hmmm, this is coming along slowly.. now things attach to other things under voice control.. just need to set properties on things and add particles and we're good ๐Ÿ™‚

#

I made a bunch of interfaces for data providers and consumers.. but honestly I'm not sure I like it.. needs to be refactored eventually

#

routing logic using blueprints isn't nice UX wise

#

kind of need an RL thing, where it learns a policy that takes the input utterances and transforms a graph to satisfy the intention of the utterance.. basically so I don't have to hard wire things to other things

#

it can learn a set of actions that change world state.. plugging things into other things until the output is correct ๐Ÿ™‚

fickle cedar
#

How do you guys manage target location change with AI Move To and State Tree? My bots would first move to the original target location, then realize it has changed and move to the current target location. I would like them to change their target location anytime I change it. ๐Ÿ™‚

celest python
#

You should have a centralized manager that sends events to statetree and listen for events in the move to task

#

In BTs, it was the blackboard component - BTTaskMoveTo was listening for blackboard key changes and if the key that changed was the target actor key - moveto was being reset and target was changing

#

In statetree context this would be an evaluator

harsh storm
#

@celest python I went back to my beloved BT's btw. Randomly, my task stopped being able to bind to a previous task's output. That was the final bug for me.

ocean wren
#

the final bug... sounds quite worrying ๐Ÿ™‚

celest python
#

Interesting

ocean wren
#

I've been writing blueprint code all day.. I feel dirty somehow

harsh storm
celest python
#

For now I'm suffering from enum bug

#

that is fixed in ue5-main

harsh storm
#

I'm patching the engine at the moment. Linked Anim Layers are completely broken in 5.1

#

As in - 100% useless broken.

celest python
#

It feels more dirty to evaluate their backend representation PandaOhNo

ocean wren
#

I reckon the reason BP nativisation didn't work, is because BP is internally buggy as hell and people finally admitted it and raised the white flag ๐Ÿ™‚

celest python
#

I follow a different strategy than Epic's

#

also ends up being more limiting for user - but at least works for the scope I'm aiming ๐Ÿ˜„

#

They were pretty much replacing bytecode output with C++ instead of generating code from nodes

#

and while replacing references tons of data corruption was happening

#

Specifically enums werent working for me back at the day

ocean wren
#

I guess part of the problem is that fundamentally, a compiled language vs an interpreted one isn't going to work the same?

#

try doing the same in python ๐Ÿ™‚ hahahaha

celest python
#

But Blueprints is very close to a C-like language imo, its just the "graph" system lets you jump from a node to another node very easily and latent node stuff causing trouble

ocean wren
#

oh you want a variable named foo thats an fstring? well, fook knows what an fstring is.. but here's a variable set to it anyway.. but I've no idea if its right - python ๐Ÿ™‚

celest python
celest python
ocean wren
#

just use "any" for everything ๐Ÿ™‚

#

var foo = whateverthehellyouwant ๐Ÿ™‚

celest python
#

oh yeah... god damn weak typed languages

ocean wren
#

javascript all the way!

celest python
#

who doesnt like multiplying an AActor with another AActor ๐Ÿ˜‚

ocean wren
#

I mean, they're the most popular languages, so they must be good right? ๐Ÿ™‚

#

var person: actor = 4

celest python
#

I believe in C# superiority - even though I didnt use it salute

ocean wren
#

person.die = true

#

var personvalue = person.getvalue

#

print (personvalue)

#

personvalue:4

#

why 4? because person.die decrements the value of person.. cos why the hell not and we set it to 5, so seems legit? ๐Ÿ™‚

#

C# is my favourite language

#

for a number of reasons

#

but I still dislike it doesn't have pointers and has GC and the like

#

basically an unmanaged C# and I'm switching.. if anyone ever does such a beast

celest python
#

For gamedev context not having pointers feels like a blessing

#

at least for gameplay scripting

ocean wren
#

We should probably all go back to turbopascal ๐Ÿ™‚

ocean wren
#

I can't get on board with non-vegan languages ๐Ÿ™‚

harsh storm
#

It is heavily modeled after C#

#

Just no GC

storm sail
#

@celest python you might not remember but a while back we discussed BT's vs coding entirely through BP. Now that the AI is super massively coded with lots of logic it's getting much harder to keep track of what's going on, I'm starting to think you were right. Have you ever tried making your AI with State Machines?

#

I still completely dislike BT's so I'm thinking maybe state machines are the move

celest python
storm sail
#

BT's take way too much effort to get one thing done

#

really? problematic for you?

ocean wren
#

statemachines are a worse form of BT ๐Ÿ™‚ fight me!

celest python
#

For now - if it wasnt at it's babysteps stages, StateTree is exactly what I'm looking for to avoid such problems

storm sail
#

BT overs much functionality but is incredibly time consuming imo

celest python
ocean wren
#

thing is, most of us in the ai field, moved to BT's to get away from fighting with statemachines and HFSM.. so here's my warning.. thar be no good to come of em! mark my words!!

celest python
#

I dont remember our conversation by the way, but maybe if you can provide more context about why your BT (-- or BP?) got complex - maybe there are some solutions?

ocean wren
#

TRANSITIONS are exactly the problem

#

that was the driver for the BT

#

and partly for Utility stuff

#

Personally, I mix and match different systems.. utility, BT and states.. although I don't put states and BT's in the same agent for the most part

celest python
#

hence why I hate AIControllers

ocean wren
#

But then, I also prefer my BT's to be formatted the same as the statetree (horizontal rather than vertical)

storm sail
#

TBH, I prefer the transition style over the condition style BT's have. @celest python my problem with BT was that behavior tree's got hard to debug because even if the current node it was on changed, whatever was inside of it could still be firing code. And you wouldn't be able to directly see it or know it. Something like that

#

not to mention the way you have to set BB values is super annoying

celest python
#

but BP can abuse it ๐Ÿ˜„

ocean wren
#

yeah, but thats not a BT/BB issue, its an unreal implementation issue

#

I agree, the BB stuff isn't ideal.. some of the BT stuff needs a redo etc..

celest python
#

ST limits you by functions with this instead of events but you still get to abuse it by calling an event inside of the func graph Evil_Patrick

ocean wren
#

Its not particularly hard to write your own BT + BB system using the UI code in UE5 and have a far easier time of it

storm sail
#

I guess they both have pretty undesirable drawbacks, ST just seems quick and easy to use for organizing, while BT requires a lot of ground work imo

#

I'm on 4.26 :(

ocean wren
#

things like proper parallel nodes, proper complex conditions etc.

harsh storm
#

Be the change you want to see in the world zoomba

celest python
ocean wren
#

hell, most of the games industry still uses pure C++ and XML/JSON specs ๐Ÿ™‚

celest python
#

you are also a slate wizard

#

do something zoom

harsh storm
#

Abandon Python. Embrace ZombaBT plugin

ocean wren
#

I don't have time.. working on the holodeck

celest python
#

i.e. are you handling complex states in the tasks?

celest python
ocean wren
#

Yeah, I applied for some funds to do exactly that

celest python
#

i heard C++ one

#

but xml behavior trees is... ChillBar_scared

ocean wren
#

Well, they define their trees with XML

#

and parse it into C++

celest python
#

oh god

#

we are in 2022

#

why ๐Ÿ˜„

ocean wren
#

because it works? ๐Ÿ™‚

celest python
#

but painful

#

at least sounds like

ocean wren
#

they were doing stuff for the military too

#

and Red Dead Redemption ๐Ÿ™‚

harsh storm
#

I think Project Zomboid does it in XML

storm sail
#

Hopefully I don't sound repetitive or annoying but honestly , how do you guys deal with making new BTT tasks, and needing to recreate variables in the task, and then connecting the BB variables to the task, and then dealing with conditions, and having to abort things for other things, needing to make proper exit plans for any BTT task that has some sort of loop, and having to manage the BB values in a different blueprint like the controller or character... It just feels all over the place

ocean wren
#

XML isn't my ideal either.. but hey, it works.. its possible to create a heirarchy etc.. all you need

storm sail
#

everyone always preaches the greatness of BT but I don't get it

celest python
harsh storm
#

Idk - I don't have much issue with the design currently to be honest.

#

I just make tasks to be pretty specific.

storm sail
#

I'm actually a generalist programmer, I do everything, maybe that's why I can't see why BT is best. The setup feels very slow and time consuming compared to the benefits received

#

jack of all, master of none kind of thing

harsh storm
#

BT isn't best

#

There is not "best" AI solution

#

It is game dependent

ocean wren
#

I use BT for decision logic only.. I use other systems for action handling logic.. (so BT is decision only)

celest python
#

and yeah works for everything, even for things it doesnt work for

storm sail
ocean wren
#

Neon: I think you're misundertanding the problem as one of a problem with BT and not with the specific implementation..

storm sail
#

just use BT for decision making and not actually overly complicated logic I think

ocean wren
#

I have a different system for action execution

#

and just decide what to do with the BT

#

I do that because I can feed the action execution system with non-ai driven stuff too..

#

for stuff like behaviour testing

harsh storm
#

I use perception to influence my BB values. Use BB values to influence the BT. And then a sequence node to handle a specific action. Then the tasks will be small pieces to achieve the overall goal.

celest python
#

and ideally services update bb keys

#

if you are trying to do them overly in tasks thats also a problem

harsh storm
#

It depends on the key

#

Finding a random location for example, that's a task. I wouldn't put that in a service. Don't need it to happen on tick. Just one and done.

storm sail
#

I'm hearing all of your points, Maybe the AI I'm making just doesn't require a BT. If I used it purely for decision making it wouldn't be feasible I think

harsh storm
#

BT's really mesh quite well with how I look at designing AI. So it works for me.

storm sail
#

man this is hard

#

My BT would be the size of a rocket ship man

harsh storm
#

I still want to try out that HTN planner on the marketplace though

ocean wren
#

You'll all be chatGPT'ing it all soon.. mark my words ๐Ÿ™‚

celest python
#

there is one single objective sentence everyone would agree: BTs are a good tool for prioritizing behaviors

#

real question is, do you need it or not

#

most of the time it works well for a high-level decision maker

#

but personally i would never handle a melee combat behavior with it

#

either would write a task to do it or do it with another tool

harsh storm
#

I have ๐Ÿ˜ˆ

celest python
ocean wren
#

I'd have the BT make the decision to go into combat, then handle all of the combat stuff in another system

harsh storm
#

It handled attack, block, parry, and retreating ๐Ÿ˜„

storm sail
#

These we're really good points, I think I should use BT for super generalist things like telling the AI they should be patrolling, Or Idle, Or In combat.... And then use State Machine to actual combat logic

celest python
ocean wren
#

i.e. with target selection and coordinating with squadmates etc

storm sail
#

Guess I'm starting to see it's use

celest python
#

i wonder how the data sciencist team behind it knew that value.. because whole web didnt

ocean wren
#

The point of the Bt is to monitor things like health and then pre-empt other behaviour if a higher priority becomes important.. without having to write state transitions explicitly or understanding the flow from one priority to another

#

to be fair, you could easily do the same with utility as a top level thing

celest python
whole fable
ocean wren
#

I wonder if its worth making a demo of voice control for squads and battlegroups

storm sail
#

I'm too that point where it's just too much

#

If I don't switch to either BT or ST soon I might actually reach a point where debugging becomes a nightmare

ocean wren
#

yeah, being able to debug is important

#

I recommend extending the tools.. visual logger and debugger etc.. they're actually pretty nice to extend

celest python
#

i'd insert a rider joke here but I'm scared of battletoad will mention to my message now because I forgot to reply him last time

storm sail
#

BP only AI so I don't know anything about rider SCGclown

storm sail
harsh storm
#

Yeah

ocean wren
#

yeah

harsh storm
#

It's super useful

celest python
storm sail
ocean wren
#

especially if you extend it with your own info..

harsh storm
#

State Tree uses it as the sole debugging tool actually, lol

storm sail
#

I honestly never hear anyone talk about it, like ever. I will definitely look into it then

celest python
harsh storm
#

We definitely do in this channel

ocean wren
#

I extend unreal engine tools a lot.. added my own perception system that has lots of funky visualizations for debugging that (perception can get complex if you want to hide in bushes and go prone and creep around etc)

celest python
storm sail
#

wow you guys might've just made my life much easier

celest python
#

there is also gameplaydebugger for c++

#

better for replication

ocean wren
#

yeah, there's a lot of bits you can mess with

#

I wrote myself a little perception graph drawing toolset.. gives a graph over time of perception values and thresholds etc

#

without it, I'd be totally stumped ๐Ÿ™‚

harsh storm
#

Yup - that stuff is where my knowledge and experience is non-existent

#

I just use what is provided really

ocean wren
#

pfft, you're missing out ๐Ÿ™‚

storm sail
#

I'm not that gifted, I really do wish to venture more deeply into c++ outside of just overriding functions when I have no other choice

harsh storm
# ocean wren pfft, you're missing out ๐Ÿ™‚

That may be so. But I just don't need that stuff right now. And for my situation - I don't have the time to really explore that stuff. Rather focus on making progress with my game. UE's tooling works for me ๐Ÿ˜„

celest python
#

i wish to make my nativizer work and rarely touch c++ again PepeHands

ocean wren
#

hahaha... silly sausage ๐Ÿ™‚

whole fable
#

learning programming/C++ will make your game dev/career experience magnitudes easier and you'll feel like a wizard, highly recommend.

ocean wren
#

+1

#

โœŠ

#

preach brotha!

whole fable
#

it's definitely not easy but it's far from impossible, the most difficult part of learning is investing time.

The great thing about game dev is you have the perfect project to learn with. For me, I learned almost everything by simply having a problem that needed to be solved. IE: "make gun shoot", breaking that into steps and working through each of those smaller problems. You solved shooting now you know about linetraces, vectors, etc

#

C++ is more daunting than other languages so it could be worth prototyping stuff in pygame, godot (am I allowed to say this lol?), etc to get moving faster but once you can write code you can write in any language

ocean wren
#

I think we can live with godot, but pygame? ptoooey!

#

friends don't let other friends learn python ๐Ÿ™‚

whole fable
#

lol, no pygame but don't slander python ๐Ÿ˜ฆ greatest language to learn in, I'll die on that hill

harsh storm
#

๐Ÿชฆ

ocean wren
#

you'll die, because your life support is written in python and is too slow to keep you alive ๐Ÿ™‚

whole fable
#

the GIL strikes again.

#

honestly though, python is excellent for beginners, super ez syntax, package management, tons of packages and support. C# is probably the 2nd best to learn in IMO

#

C++ with unreal is absolutely doable though, I wasn't a fan of C++ until working with it in unreal

ocean wren
#

I'd go C# first

#

I hate the python syntax, but agree about the packages, although the packagemanagement and virtual env thing is insane

whole fable
#

pipenv and pyenv make life very easy, essential if you're ever using python in production

ocean wren
#

C++ is frankly, a pain in the arse and needs to die.. but it won't until we have a decent replacement, which doesn't seem likely

whole fable
#

can't beat the speed

ocean wren
#

yeah

#

sad but true

#

I suspect we'll get ML based systems to replace writing code before we get a decent C++ replacement

whole fable
#

Rust should be that but the reality is C++ has decades of community, rust will just never catch uip

#

we'll see in 10 years though, an interesting thing to think about

ocean wren
#

10 years? god I hope I'm not having to do crap like C++ by then ๐Ÿ™‚

whole fable
#

I'm a huge AI skeptic, it's very cool but it's ultimately matrix math, I doubt we'll get to automating away software engineers. I also want to keep my job so I refuse to believe it.

harsh storm
#

Gamedev ain't movin' away from C++ for a long while ๐Ÿ˜…

ocean wren
#

how very.. 17th century of you ๐Ÿ™‚

harsh storm
#

Gamedev likes to stick to the ancient stuff

ocean wren
#

can I interest you in a spinning wheel at all sir? ๐Ÿ™‚

uneven cloud
uneven cloud
uneven cloud
# storm sail Hopefully I don't sound repetitive or annoying but honestly , how do you guys de...

Connecting a BB variable to a BT task is easy when you use blackboard key selectors.

Having to abort things is pretty easy as that functionality is built in. Just need to remember to cleanly abort every task. Though, this is considerably easier in C++. BP lets you dig yourself into some pretty gnarly ditches.

Early on I did a lot of managing BB values elsewhere such as the controller, but that was a very bad mistake.

harsh storm
#

Where do you prefer to do it now?

#

@uneven cloud

uneven cloud
#

Do what?

harsh storm
#

Early on I did a lot of managing BB values elsewhere such as the controller, but that was a very bad mistake.

#

I'm currently doing most of my BB value management in the controller ๐Ÿ˜…

#

So I'm curious to your current approach

uneven cloud
#

You actually shouldn't need a lot of BB value management. I have a few things that need to be set based on the utility state they are in (I do a utility/BT hybrid), so it's the state that manages that.

Otherwise it's services or tasks that set them.

harsh storm
#

I use BB values to handle some configurable stuff, such as a particular unit's attack range. Or to communicate perception stuff.

uneven cloud
#

Attack range for most of my work has been based on the attack, not the unit. So it's find an attack -> get the attack range for that attack -> move into range if necessary -> execute attack

#

So the task for getting the range is what sets the BB value. The BT doesn't care what that attack is.

#

I use the EQS to find an ability (we use GAS) and the conditions to use each ability are tied to the ability itself.

celest python
#

Are you listening an event to handle abortion?

#

or ensuring BT wont switch to something else until GA finishes on its own

uneven cloud
lethal helm
lethal helm
uneven cloud
lethal helm
#

Having an attack task that calls attack on the controller and then a loop or service that tries to call abilities seems to work good enough for me for 90% of abilities

#

tbh AI GAS is much easier to deal with than regular ole GAS because you don't give a shit about input or the clients at all

cedar gulch
#

Is there any good steering implementation in unreal or any useful plugin?
I'm trying to copy over OpenSteer, but that library has some really annoying magic numbers and no explanation what they are doing ๐Ÿฅน

ocean wren
#

Anyone used data tables a lot?

ocean wren
#

holy crap, this is utter garbage... you can't provide a data table object ref to the get data table row blueprint node... wtf?? ๐Ÿ™‚

celest python
#

you cant? Thonk

#

you were able to iirc

#

it should be even generate row list for you in the pin after you set the object ref

ocean wren
#

Nope, you can use a literal data table.. i.e. the node itself can select a particular one

celest python
#

ah, so you cant plug a variable to it

ocean wren
#

but you can't connect the input to one you set as a variable

#

so we cant expose the variable to be set in the UI

#

its hardcoded in the node itself

#

ultra-fucking-rediculous

#

pardon my french

#

I guess I should look at data registry.. see if that is some new thing that does the same but less stupid

celest python
#

if the struct type is same you can write a small c++ helper

#

where you pass row name and return struct manually

ocean wren
#

Its just some CSV data.. I can leave it hard coded for this demo.. but this is just some dumb setup.. no wonder people have issues ๐Ÿ™‚

quick bramble
#

I've been running some experiments and a little curious how best to think about things in Unreal.

Let's say the check on whether or not I should move toward my combat target is somewhat complex. I can compute that state on the controller and write a decorator to query that state so I know whether or not to enter the MoveTo.

The decorator doesn't poll though so the MoveTo won't abort when the state changes. I see that if you write that value to the blackboard, the blackboard decorator has a value changed callback which is registered in UBTDecorator_BlackboardBase::OnBecomeRelevant() (so the MoveTo would stop). I could try to also register a callback for my custom decorator, but I guess maybe I'd just be reinventing the wheel and should use the blackboard for this. Just feels a bit silly from the get-go to need this intermediate data structure just to plumb the data around?

Also a bit curious what OnBecameRelevant is about? Is that indicating that the relevant portion of the tree containing this decorator is active? The comment says "called when execution flow controller becomes active."

ocean wren
#

I'm not sure why this would need to be a decorator?

quick bramble
#

interesting - how would you control this?

ocean wren
#

have a combat range BB key and set its value using some other system (as you say, can be complex)

#

then have a priority for moving to the correct combat range thats higher than just firing or whatever

#

and that basically moves to the correct range while continuing to fire

#

the combat range value obviously could change based on world state.. i.e. nearby squadmades, number of visible enemies, how exposed the position is etc.. nominally I'd evaluate an EQS query and change the move position etc..

quick bramble
#

I guess my understanding would be that I'd use a selector to connect a prioritized list of actions and would use the decorators to restrict which ones can be executed. How would you manage that action and the priority of it?

ocean wren
#

yeah, but that would just be a value change in the BB right? not a custom decorator type

quick bramble
#

yeah, I guess I'm less used to using a blackboard on my previous projects and it feels like a strange intermediate step

#

e.g. I have the data why can't I just read it

ocean wren
#

the priority selection would handle the fact that as we change the BB value, it might trigger a higher priority node in the selector

quick bramble
#

but that's because the BB checks have value-changed callbacks yeah?

ocean wren
#

basically, BB is world state so we can trigger selection based on BB values

#

yeah, the higher priority selection would be "on BB value change" etc

quick bramble
#

gotcha - I'll give it a go and try leaning into the BB more heavily

#

thanks for the tips! ๐Ÿ™‚

ocean wren
#

The main thing to get your head around.. is that its all about priority.. you shouldn't think of states

#

so try and consider what has higher priority in any given set of decisions

#

then write them in the BT left to right

#

with a selector

#

so combat might be higher priority than idle and have a condition that a BB key is set for a detected enemy

#

its not a "state" of combat.. its just a priority change

#

and that combat might have different types of priority too.. like engaging the enemy, or getting ammo, or closing the distance, or increasing the distance

quick bramble
#

nice yeah, been doing this for some time now, but always used custom systems. First time doing stock unreal AI

ocean wren
#

people tie themselves in knots because they watch tutorials by people that talk about state and it isn't the right way to think about it.. annoys me ๐Ÿ™‚

#

BT is a conditional priority selection system ๐Ÿ™‚

quick bramble
#

aha yeah, I remember struggling with the same thing getting started and literally had our AI lead at the time explain something very similar ("it's not a state machine!") ๐Ÿ˜›

ocean wren
#

Hard to get your head into it if you think in terms of states..

#

I guess the statetree is for those people ๐Ÿ™‚

quick bramble
#

Ah interesting, I havenโ€™t even looked at the state tree

ocean wren
#

A few of the guys in here have been looking at it, but it seems like its not ready for prime-time from what they're saying

quick bramble
#

Thatโ€™s great to know, might have a peek as well just to see whatโ€™s potentially on the horizon

ocean wren
#

Working on this NLP stuff, makes me think that a generalized RL-based matcher is useful for both AI and NLP purposes

#

I mean, I don't dislike the idea of giving training examples as a way to select action outputs, its just the lag in the UI I don't like ๐Ÿ™‚

#

using a cloud based NLP intent matcher for a project.. you give it example utterances and it classifies the intent from them.. with slot filling so you can name variables.. I mean it works pretty well aside from the web UI being a bit slow

#

and Meta owning them now ๐Ÿ™‚ hahaha..

inner zephyr
#

I have this BT and the first time MoveTo is executed will fail, because the Run EQS service (GetLocationAroundChar) will be to slow and return the first valid value after the MoveTo has been executed once. Is there a way to fix that inside the BT?

neat grove
#

Is it possible to get some kind of event inside my character or AI controller when a specific blackboard value changes? I need to notify my gamemode whenever an AI changes its target but really don't want to poll through the tick event

misty wharf
#

Change... your gamemode?

neat grove
misty wharf
#

I mean are we talking about AGameMode? Seems like changing that when an AI does something seems a bit.. unusual, but maybe it's just me lol

#

iirc there is a way to listen to BB changes, but you might need to do it in C++

flint robin
#

(New to blackboards)
How can I make the selector go across to the other selector instead of being a loop

neat grove
misty wharf
#

Okay that makes more sense :D

#

if you look at UBTDecorator_BlackboardBase, it has logic there to observe a BB key

#

you can probably use the same method to observe it somewhere else

neat grove
ocean wren
#
#

Seems legit ๐Ÿ™‚

#

Thats a lot of zombies

flint robin
#

U made me realise half of my ai thing was made with selectors

harsh storm
ocean wren
#

Hahaha.. erm.. no ๐Ÿ™‚

harsh storm
#

In time....in time....

ocean wren
#

NEVER

#

you'll never take me... dead?

stiff mural
#

Anything special I need to know about dedicated server and AIController / Behavior Trees / Blackboards -- I cant seem to get my AI to execute the BT, says inactive when debugging -- I'm running the Behavior Tree on "begin play" of my derived AIController and I have my "Animal" set to use that controller, did I miss a step?

rose forge
#

@celest python for a RTS game...do you think RVO can suffice? or definitely not?

celest python
#

Crowd will suffer on performance for more than 50 agents anyway

#

I'd say rvo would be sufficient if tweaked right

rose forge
#

ok... so my understanding of RVO is basically units raycast a little distance infront of themselves, and use normal of any collision to slightly adjust their path on each frame

#

i'm runnig into issue where they constantly oscillate though

#

not really avoiding eachother at all ๐Ÿ˜†

celest python
#

i managed to tweak its settings once

#

they only rarely oscillated

#

but i dont have it right now

#

but at least i can say its possible to tweak them right

uneven cloud
uneven cloud
inner zephyr
#

I had it as a BT at first but wanted to try my hands on a service

#

So that is just something I have to keep in mind, I guess? Did you have such cases too?

#

I tried to debug it with a breakpoint and visual logger. The value was actually correct when the breakpoint hit the moveto but the visual logger showed some funny numbers. Not sure how that works.

#

Btw, I loved SoD1

harsh storm
#

Pretty sure they worked on SoD2. SoD1 used CryEngine. SoD2 uses UE4.

uneven cloud
#

I worked on SoD3

harsh storm
#

Still no new news about that entry other than that video from a few years ago ๐Ÿ˜…

inner zephyr
#

I know they moved to UE4 on SoD2 and you felt it ๐Ÿ˜…

#

I hope they got some experience on SoD2 and SoD3 will be a banger again

uneven cloud
#

I helped out a bit with 2, because their AI needed some rework. But I mostly worked on 3.

inner zephyr
#

Yeah, I remember the spawning zombies inside of rocks ๐Ÿ˜‚

#

any story you have? anything super weird?

uneven cloud
#

3 shouldn't have that problem, unless they've changed my spawning system. Can't really say much, because of NDAs.

harsh storm
#

I know they've never really had a dedicated AI programmer. That supposedly changed with SoD3 though

inner zephyr
#

The spawning inside of rocks was fixed at some point

#

I just hope they don't have plague hearts in 3 or make them less of a pain

uneven cloud
#

A tech designer did the AI for 2. It was quite a mess. The studio wasn't set up to have specialists, like an AI programmer, so it was a bit of a nightmare.

ocean wren
#

thats a lot of sodding

#

Do you guys ever look at something you've created and feel uneasy about how hacked it is? I've got that vibe right now, but have to fight the urge to improve stuff, because its only a short funded project

harsh storm
#

All of my code is hacked together.

ocean wren
#

It just feels dirty ๐Ÿ™‚

uneven cloud
#

The user never sees the code.

ocean wren
#

Also, have this thing about dataprovider and dataconsumer.. but considering where to visualize the connection, on producer or consumer? I guess it depends on how many consumers a provider can have etc.

#

I wonder how many companies don't have AI programmers? seems so weird to me

terse bear
#

my character slows down when he's close to the target location using MoveTo in BT, I don't want this behavior I want him to look normal and keep moving,, I have EQS updating the MoveToLocation once when the character reaches the target

stuck imp
#

is there a distance limit to the MoveTo node?

#

my behavior tree is setting my blackboard goal location correctly but if I move the AI pawn far enough from the goal actor, they will stand completely still

#

nvrmind I think my navigation grid was just screwed up

harsh storm
#

When doing a native task. What is the preferred way to set a value for the BB?
OwnerComp.GetBlackboardComponent()->SetValue<UBlackboardKeyType_Vector>(TargetKey.GetSelectedKeyID(), ResultLocation.Location);
or
OwnerComp.GetBlackboardComponent()->SetValueAsVector(TargetKey.SelectedKeyName, ResultLocation.Location);

uneven cloud
uneven cloud
harsh storm
uneven cloud
#

Yep.

quaint radish
#

is there a better way to switch on sense?

uneven cloud
quaint radish
#

example? Id rather not have a bunch of == to a chain of branches if possible..

uneven cloud
quaint radish
young lintel
#

I blame product management

harsh storm
sullen crater
#

Hello guys. How do I find out if the player character and AI are in the same NavMeshVolume?

grizzled schooner
#

Is there a way to change AI Perception direction? You can see the cone is rotated 90 degrees to the left. Perhaps if I attach an arrow to the mesh that has the same rotations as the doll then attach the AIPerception to the arrow I could fix this issue??

verbal shore
#

You don't have to do everything the same, but it shows how you can override perception location & rotation

ocean wren
#

Hahaha.. for some reason my beam emitter endpoint won't update properly on first becoming visible again.. which is a pain

viscid wolf
#

is a dynamic nav mesh possible im making a rogue like dungeon type game thing and because the levels are random i need a dynamic nav mesh that can change during game. is that possible?

ocean wren
#

yeah, set it to dynamic and it'll regenerate

viscid wolf
#

oh

#

lesh go

#

where do i find this??

ocean wren
#

on the recast volume if I recall.. its a checkbox.. you'll find it in the docs somewhere too

viscid wolf
#

i cant find anything on this recast navmesh object

#

wait i think i found something

ocean wren
#

well, its definitely there.. might be on the volume

viscid wolf
#

i found it dw

#

but it has already been set to dynamic

#

ill give it another test

#

yeah didnt work

#

both tilemaps used to be the same but due to the random gen the second one has a different texture but same nav bounds

#

even force rebuild on load

ocean wren
#

you might have to debug it.. but that's the setup..

#

check the content examples for a demo of it working

viscid wolf
#

ahh

#

is there another way to make ai that isnt super dumb with no nav mesh

ocean wren
#

not really no.. I mean if you want navigation, you have to have a navigation system

#

you could always do your own pathfinder if you're doing a grid based thing

#

there's a grid based pathfinder in the engine that they added for the old fortnite I think? but I've never had a need to use it

viscid wolf
#

i had an idea but its too close to another rogue like game called tiny rogues

#

my idea was that each room is just a different level

#

i guess if i get that runtime issue fixed then i guess i can make the game very much different from tiny rogues

#

i figured how to do it

#

similar to the way tiny rogues does it but just multiple levels it can pick from

pallid mica
#

When setting a Focal Point on an AIController. What controls how fast the AI rotates towards it?

celest python
#

nothing

pallid mica
#

So it's always instant?

celest python
#

Check APawn::FaceRotation

#

you can override it and implement a lerp

#

but by default its directly setting rotation

pallid mica
#

Oki, thanks

#

Also, is it somewhat possible to extend the FocusActor and FocalPoint stuff with a Rotation?

#

Cause I only have "you are standing on this location with this rotation" and currently need to calculate some point offset in forward direction cause I can't just use Rotation

floral parcel
#

Hi all. I'm trying to get ai to use different nav agents for different step heights. no matter what I change, it will only ever use the default (Default, green, index 1) agent and I haven't been able to get it to use the new agent (Hover, blue, index 0). Screenshot shows both agents, with the Pawn's movement settings on the right. I have turned off "Update Nav Agent with Owners Collision", tried lots of different values in nav agent radius, height, step height and default query extent. Any help or ideas would be greatly appreciated!

ocean wren
#

haha.. bloody typical, missed an "update beam" thing in my particle update... fml ๐Ÿ™‚

#

you think its a bit overkill to add a fluid sim so I can basically metaball a particle system with it? ๐Ÿ™‚

#

seems like a fair idea to me

flint robin
#

How can I get the location of where my AI is going to and display it? Trying to create a debug thing but im stuck

late spade
#

did anyone have any luck with finding a downloadable Unstable Diffusion? because the normal one doesn't allow blood and too "scary" things

ocean wren
#

haha.. I've lost the will... calling my particle system "blort" is a bad sign ๐Ÿ™‚

ocean wren
ocean wren
#

there's actually a predicted position sense I think? never used it.. but pretty sure I saw one

celest python
#

also always check visual logger first

#

it already draws the target goal for you

pallid mica
#

What exactly calls when a Stimuli expires? Is there another event I can listen to or does the PerceptionInfoUpdate delegate call once more?

#

Or is it up to me to check all currently sensed actors in some interval? I see lyra doing that

ocean wren
#

if I remember right, I kept a list of sensed actors and compared those against an update which got all sensed actors.. if the lists didn't match up, then the ones that don't match are no longer sensed

pallid mica
#

The thing, the debug view shows the stimuli aging exactly like I expect it to

#

Maybe I'm printing at the wrong point, 1 sec

ocean wren
#

yeah, it gives you the age and what not if you break the sense info apart

pallid mica
#

The Update Delegate calls when I run out of Max Distance

#

But not when the Stimulus expires

#

-.-

#

I don't believe that I have to bookkeep this myself

#

The AI system knows this, there must be something that notifies me of a stimulus being expired

ocean wren
#

You'd think ๐Ÿ™‚

pallid mica
#

;_;

#

I thought the idea of this Aging is that the AI can try to go to the last point it saw the enemy

#

But if it's too old it will be forgotten. It's not helpful if the forgetting part happens somewhere without notification

ocean wren
#

No, the aging is just how long since it was sensed

pallid mica
#

But the MaxAge literally says time until it's forgotten :<

#

The Debug also renders it that way

ocean wren
#

I used the age for stuff like adding to perception counter so that you could be "seen" but not sensed until it counts up to a threshold

pallid mica
ocean wren
#

Maxage is when the sense gets removed

pallid mica
#

That point is out of the "Lose sight" distance and is aging (3 would be gone)

ocean wren
#

but I don't know if it notifies before removal

pallid mica
#

I hoped so, cause I get notified when I lose track fo the enemy, but not when their last sensed location vanishes

#

I guess I have to manually manage this..... maaaaaaaaaan

ocean wren
#

Yeah, I feel your pain

uneven cloud
ocean wren
#

Had another amazing day chasing down why a particle system wasn't attaching to an endpoint..

#

I mean hey, its almost end of 2022, so shit is bound to get better from here on out

uneven cloud
harsh storm
pallid mica
#

I did this now..

#

Key are CurrentTarget and LastKnownLocation

#

ยฏ_(ใƒ„)_/ยฏ

#

I can make that more complex with "likely areas" later

#

Just wanted the "Must have been the wind" moment done first

#

It works for now, so won't touch it until it gets the next iteration

ocean wren
#

"works for now" ๐Ÿ™‚

#

its like a motto

harsh storm
#

This is the way

pallid mica
#

I would have loved to just get notified when the stimuli dies, but whoever created this system had other things in mind i guess

ocean wren
#

its like it might SMELL like its gone rotten, but it works for now ๐Ÿ™‚

pallid mica
#

It's more like "We can leave it at that, it's working and not broken."

#

At least for this prototype

ocean wren
#

Yeah, I'm on board with the "its just a prototype so who cares if its trash" thing this last few weeks ๐Ÿ™‚

#

using blueprint

#

ugh

pallid mica
#

;_; I wouldn't call my solution trash

ocean wren
#

well, ok, but mine is ๐Ÿ™‚

pallid mica
#

That's also fine :D

ocean wren
#

its written in blueprint ffs ๐Ÿ™‚

pallid mica
#

Quicker iteration time fwiw

ocean wren
#

Well, some of it is

pallid mica
#

I gotta go now though, need to get ready for New Years Eve which I actually don't want to participate in

ocean wren
#

writing blueprint code, is like walking across quicksand to me ๐Ÿ™‚ scary and a little shaky

#

Have a good new year.. all the best for 2023 and all

pallid mica
#

Same!

random jay
#

Is there a way to hide certain params in a struct from the BTNode's visualizer?

IE This node has a really long name/text

#

And I'd like to hide the "animation" params

celest python
#

nope

#

i was going to do a PR for it but then switched to ST

stiff mural
#

When I run my behavior tree directly off my actor, I then while running double click that behavior tree and select an actor to debug. However if I start the behavior tree from the AIController, and remove it from the Actor, it seems to be still running, but I can no longer debug it the same way?

#

it only works if you begin the tree directly on the actor?

#

I definitely have three llama's moving around, and only way they move is this behavior tree, only difference is I started it in the AIController vs the AEnemy

uneven cloud
floral parcel
uneven cloud
floral parcel
uneven cloud
floral parcel
# uneven cloud You're welcome. I should have started with that as I think that's not very clea...

Apparently I spoke too soon. I was just testing the hover nav, turns out increasing the nav radius by 1 updated something and everything then used that one. After a little bit of tinker and closing/re-opening the project I'm somehow back to where I start but with the updated values. One thing that stands out to me though is that if turn on viewing the nav data, it doesn't actually seem to be building the 2nd option. As in, if I turn off the default supported agent in the nav mesh volume, no navigation is shown in the map at all. Does that make sense?

uneven cloud
floral parcel
stiff mural
#

Am I just using this thing wrong and expecting it to work a way its not designed? Should I run the behavior tree on the actors themselves in order to get Behavior Tree debugging? Or is it valid to run it from the AIController?

neon monolith
#

Hey, this is sort of AI related. I'm trying to use Simple Move To Location to move a player controlled character. Basically, the player can move them like a TPS with WASD, etc - but when they click on an object and click a button, they should move to the object. I added a NavMeshBounds volume to the world, made it large enough to cover the scene, then added this:

#

The location is just 0,0,0 for now. My character just stands still and does not move

odd atlas
#

is 0,0,0 in the bounds? (not inside walls, high above the world etc.)

neon monolith
#

it is, though tecnically the floor iRIGHT at 0,0,0

odd atlas
#

if you press "P" in editor, can you see the navmesh?

neon monolith
#

yeah

#

Full disclosure, originally I was passing in the position of an actor and moving to that, but it wasnt working either, so I decided to simplify to debug.

odd atlas
#

hmm

#

how is your player movement code?

#

you are using Character Movement Component, right?

neon monolith
#

Yeah, I'm doing a few things but basically input action sending an add movement input with an axis.

odd atlas
#

yeah okay

neon monolith
#

Not too different from the TPS template

stiff mural
#

Is there some type of trick to this behavior tree debugger I could smash my computer I"m so pissed off trying to understand how all my pawns are walking around using Behavior Trees yet I can't see any active actors using them supposedly.. peice of SHIT.

neon monolith
#

SO yeah, not sure whats happening. I set it up similar to the top down, but not working

stiff mural
#

welcome to the club

#

I cant for 5 hours figure out why in the name of HELL this is "INACTIVE" with no actors, yet my shit are obviously using this behavior tree, the ONLY behavior tree in my game.

uneven cloud
stiff mural
#

I'm straight triggered. No amount of weed smoke can even get me to calm down over how much time I wasted today, thank you for the reply tho.

#

JESUS I got it working, literally all I had to do -- was use this option?!?! I've tried 100s of things in the past few hours -- I hope this helps someone using dedicated server and behavior trees - not even sure its dedicated server specific, but thats what my project is using.

lethal helm
#

well this is a new low

odd atlas
lethal helm
#

I've found that one of the AIs apparently works by switching between entirely different behavior trees that all contain a single task
And some of the switching is done inside of the animation bp

odd atlas
#

if so, I think you can attach the debugger in some arbitrary window? I'm not quite sure I never use it

lethal helm
#

not a public project

odd atlas
#

is it good tho

lethal helm
#

๐Ÿคท

#

some is fine.

odd atlas
#

if it works, it's good. If it doesn't, can be fixed

lethal helm
#

bah, thats a good way to doom your future self

uneven cloud
grizzled schooner
late spade
gaunt pilot
#

hi. its possible to write a custom AI for city sample crowds metahumans characters?

misty wharf
#

It's the one thing which is completely impossible to do in programming no matter what

#

Maybe if you use forbidden techniques

#

But they're forbidden for a reason

ocean wren
#

ALWAYS use forbidden techniques

#

theyre forbidden so they have to be good

#

its the law

ocean wren
#

I thought you were joking ๐Ÿ™‚

late spade
#

it doesn't allow blood and such

ocean wren
#

The one on itch has a way of disabling the censor thing, it loads the model itself

ocean wren
#

Don't have it linked at home.. its on a wiki at work (put it as a link for my students)

late spade
#

if posting links are not allowed u may dm me

#

on a wiki?

ocean wren
#

If you search for stable diffusion on itch you should find two or more.. one didn't work, the other did

#

yeah, its a CMS called blackboard, its how we communicate with students for links and papers and videos and such

ocean wren
#

think it was the grok one

#

I mean, there are a few, so try em out?

#

grok one was basic, but worked enough for us at the time

late spade
#

yeah u are right tough

timid iron
#

Hi, is anyone experincing an issue where World Partition Navigation completely will not work in a Packaged game? But it is working in the editor.

#

The version is 5.1.

#

Hi, did you solve this?

high summit
#

what is best way to implement Goal-Oriented Action Planning for AI/NPC?

#

Let say there is NPC in unreal, And I want NPC to do some tasks that real human does. NPC need to do anything like break window with bat, cook food, go to traveling and so on.

sweet ibex
#

hllo got a question about simpele ai

#

i have a custom event with a patrol from point a to point b, after workflow it retriggers the custom event, also there is a pawnsensing with sight, i think if that is triggered the patrol event also runs so the ai process 2 functions ??

#

what is a good way to have this problem solved

flint robin
#

is there a way to detect if one of my characters is stuck on a moveto BT?

#

ive been told to get the velocity of the character but dont know where to put that

flint robin
#

nvm got it

#

totally makshift

#

will probably break but it works

uneven cloud
uneven cloud
neon monolith
#

Can anyone help with this pathing issue? I have a scene, added a Navmesh Bounds Volume to it, then I took my character (more or less the standard TPS character) and added an event with a simple MoveTo of the location of another actor on the scene. When I trigger that event, my character just stands still and does nothing.

#

Could it be because the actor is a static object that doesn't have navmesh under it?

#

If I issue a moveto at a position the character can't reach, does it fail or should they move to as close as possible?

#

I tried setting the moveto position as 0,0,0 but that also did not work, despite it being clear

pallid mica
#

Is there something in the Engine that can be used to smoothly implement some sort of "Enemy was in range of another Enemy that got aggrod and is now also aggro"?
Is it possible to write a Sense for that or is that misusing the perception system (sounds pretty fitting tbh)?

neon monolith
#

Ok, so I sort of figured it out but I have some new issues lol.

Turns out I forgot that I had to RPC the function call (Since I'm in an MP environment) so I did that and now the character moves, but I have three new problems I'm hoping someone can help with.

  1. Character won't turn/animate, he just slides to the position
  2. Performance seems to be shit, or maybe it's the netcode update but he sort of jitters to the position
  3. Seems like yes, if you can't move to the actor's location due to a static mesh changing the nav bounds, it fails. Before I right a function that finds the closest navigation point between the actor and the target, is there something that already exists lol
stiff mural
#

Anyone else have a world partition wide navmesh that keeps needing rebuilt like seems insane, i'll open my project and for wahtever reason the pawns won't move, I go look the navmesh is there, and its in the size it needs, but its not "built" or something? if I adjust it, and it casts out that red that turns to green, then all the sudden it all works fine again? seems REALLY weird?

minor kindle
#

is there a way to cut a move to in a BT short? currently the behavior is a bit bursty, i want something like random roaming. by bursty i mean the way the character speeds up and stops and then picks a new point. ive discussed this before and one thing people suggest is splines tho using splines for move to paths is not something easy to find info on

ocean wren
#

Well, this voice interface stuff is almost completed for the demo.. just a few particle system utterances to match and I think we're done

#

Its quite weird generating textures with your voice.. but its actually a really nice way of doing things

#

Something tells me we need FAR better NLP toolsets before its ready for chatGPT to be creating game levels with us though

ocean wren
ocean wren
#

Mine had the typical "ticking up until fully sensed" thing going on.. so you got a bit of stealth and time to get the drop on an enemy that wasn't fully aware

pallid mica
#

Yeah it's more just a "THERE HE IS!" and then they all come and you are f'd sort of thing

ocean wren
#

and also had stuff like perception incrementing differently based on cover, angles, stuff like that

pallid mica
#

I could do that by hand

#

Or even via a Noise Sense

ocean wren
#

and if you were prone

pallid mica
#

But just wondering if I could build upon the system and just notify AI based on some custom sense

ocean wren
#

so basically use the perception system as input into a proper perception system

#

I notified mine using an FMessageEndpoint so I could communicate the threat to the whole squad with a single message

#

highly recommend FMessageEndpoint for pretty much everything ๐Ÿ™‚

#

its basically a pub/sub message system

pallid mica
#

I will look at it, thanks!

tawny dust
#

I'm making a procedurally generated dungeon and I'm having some issues with a dynamic navmesh being very CPU intensive

The whole dungeon is generated on level start, so I just need a navmesh generated once at the start - does anyone know if this is possible? catWut

Or maybe even just lowering the rate at which a dynamic navmesh is updated?

minor kindle
#

i wish someone had told me u can use move to location and obtain the points it picks for the path woulda saved a lot of time

minor kindle
#

super simple blueprint method for spline based ai movement:
(cant really attest to performance)

pallid mica
#

I'm wondering how I could ensure that AIs in formation have different move speeds to reach a calculated point in the formation. Currently having 3 AIs following a Spline, where the "first AI" in the Group is the one progressing the Distance Along Spline. If I create a formation where two AIs are left and right of the "first AI", they will still try to follow their points with the same move speed as the center one, but any turn obviously require the inner one to slow down and the outer one to speed up, but they only know a fixed speed. Hm

#

However all that is currently used is the MoveTo task from BT, together with a BT Service that updates the Distance Along Spline and thus the actual World Location (and BBKey) the AIs are walking towards (+- the offset for the two outer AIs)

#

๐Ÿค” Does one know the current Point inside the CMC? But even then, I wouldn't know how fast the inner AI has to move unless I know how fast the point moved from current to new location.

#

Ah, I get it. The PathFollowingComponent is already taking care of this, as long as the MaxSpeed is not too low it will be able to catch up and then brake down to a reasonable speed if needed.

#

So I sabotaged myself by actually setting the MoveSpeed I guess

#

I would still need to set the Speed though if I want the AI to move slow on its own (not following a point that is moved slower than itself) I guess

celest python
#

If the speed is related with the path itself handle in pathfollowing

#

scale the direction it provides to cmc

#

and... good luck with the math to find approximate speed to sync it in line with the center ai ๐Ÿ˜…

pallid mica
#

Yeah it's fine actually if I just keep the speed high enough

#

I didn't think that far, cause all other movement behaviors (like roaming or walking to interest points) have an actual speed they move at

#

But here it's enough if I keep the speed high, or rather normal and only move the spline distance at the reduced speed

celest python
#

maybe a quick hack

#

you could compare distance to next spline point and if it is closer than the ai in center you could slowly decrease scale

pallid mica
#

Again, Path Following does it

#

So it's fine for now

#

I just had a too low MaxSpeed, so the AI could not catch up to the point if it was further away

minor kindle
#

changed it to an EQS system with approximate move to task :) and made it a detour ai

just some AI roaming around (but much faster than i will use for zombies)

#

the eqs picks a random point with 25% best score. it is scored using a cone of points with 360 degree radius, sorting them by distance making closer higher. then points in front of the ai are weighted a little bit higher so it is not likely to turn 180, but it could

pallid mica
#

Hm, Crowd AI Controller + UseControllerDesiredRotation + OrientRotationToMovement has some really ugly jitter when the AI decides where to go for avoidance

#

Also has no effect changing between CMC handling rotation or me handling it via FaceRotation

#

Guess it's just the crowd avoidance that's jittery

#

Gets a bit better if the MaxSpeed of the AI is close to its actual Speed, but even then, the default settings for Crowd Detour stuff seems really bad? AI really struggles to walk past me, sometimes even gets too close to me. Hm

minor kindle
#

U can adjust the max avoidance radius for it I forget the real name of the variable

pallid mica
#

Yeah i will have to toy around with it I guess

uneven cloud
pallid mica
#

It's not following the leader actually

#

It's following a Spline

#

Just that only one of them is progressing the location along the spline

#

Works quite well and isn't really complicated :P

uneven cloud
#

My point was that it would be considerably more easy and probably work better with fewer edge cases if it was simply a follow the leader formation. Even if the leader is just the one in front.

pallid mica
#

I don't see the big difference

#

It's a TargetLocation plus an individual offset to get the Formation

#

If that TargetLocation is the SplineLocationAtDistance or the Leader, who is more or less in the exact same location, doesn't really make a difference

#

I don't need any "Follow The Leader" logic outside of the Spline Following

flint trail
#

I made some basic AI for single player project. Now I am wondering what do I need to do to adapt it for multiplayer coop.

uneven cloud
#

There is actually a very big difference in that now you have movement speed issues to deal with.

lyric flint
#

can anyone point me in the direction of documentation for open world AI in a multiplayer setting? havnt really touched ai so i dont rlly even know where to begin

pallid mica
#

The function that moves the AI is the exact same in both cases

#

And I already mentioned 2 times now that the Path Following took care of the Movement Speed part

uneven cloud
uneven cloud
minor kindle
#

Ai is basically just state machines and behavior trees are a way to make and organize those trees

#

Blackboards hold variables for those trees to use

uneven cloud
#

Behavior Trees are not State Machines. State Machines are just one way to organize the functionality.

minor kindle
#

They work a lot like them to me

#

But they do have a bunch of special terminologies u need to learn

uneven cloud
#

They are fundamentally different. You can try to make your BT function like a SM, but you lose most of what makes a BT good.

minor kindle
#

Well what Iโ€™ve used for Btโ€™s they tend to only be able to do one task at a time and the order they do the tasks depends on criteria or a set order, which is a lot like a state machine

neon monolith
#

GetRandomReachablePointInRadius - anyone know if there's a way to get the CLOSEST point that's reachable in radius? Or will I need to write my own function

minor kindle
#

Why closest

#

Like closest is arbitrary cause there r infinitely many close points

#

Or u could call just 0,0,0 local the closest cause itโ€™s 0 distance

ocean wren
#

It didn't help that initially people wrote tutorials on BT's for UE4 that talked about "states" and treated them like a state machine... which is all sorts of wrong.

minor kindle
#

Idk itโ€™s fine for me since Iโ€™ve worked with architectures that do stuff like that and have just called it a state machine. Specifically with fpgaโ€™s

#

But itโ€™s true that u arenโ€™t always locked in one location and u go in and out with depth and priority and at the end of it all u start over

minor kindle
#

Anyways ya it sounds like tribal needs EQ but idk what they mean by pick the closest point. Side note. Is best 5% and 25% the only options for random amounts in EQ? Cause it seems to be the only in drop-down. Itโ€™s no biggie for me but curious why itโ€™s not a variable

timid iron
#

Is anyone else having an issue where World Partition Navigation does not work in a packaged game? The built navigation simply does not exist in the packaged game.

#

Maybe these 2 unloaded Cast actors have something to do with it, along with these 2 warnings (which I get in editor too, where navigation works):

Warning: NavData RegistrationFailed_AgentAlreadySupported, specified agent type already has its navmesh implemented.

#

I have tried to load the entire map but they remain unloaded. I think they need to be deleted, how can I do that?

timid iron
# timid iron Maybe these 2 unloaded Cast actors have something to do with it, along with thes...

Hello, for anyone else having trouble with Navigation not working in packaged, what fixed it for me is one of these 2 solutions:

  • Right click both the unloaded RecastNavMesh and copy File Actor Path, then go there and delete it. Restart the editor, it will be gone.
  • Check your output log, search for 'nav', see if there are any deprecated navigation nodes, and if there are, replace them with the new ones.
ocean wren
#

Whoot, I was actually semi productive today! Sadly no time for Unreal shenanigans though, mostly doing Unity test runner code. BUT I did manage to use chatGPT to help with python syntax and honestly it was shockingly useful to help me not have to rage at python quite so much ๐Ÿ™‚

#

TLDR: chatGPT is actually a really good code helper if the syntax of a language is at the edge of your knowledge but you know what you're trying to do and have a decent way of describing it

#

i.e. "show me in python how to parse a json file into a dictionary"

#

I mean, sure, its no turing test and its not AGI, but hell if that isn't just like a really intelligent code snippet tool ๐Ÿ˜‰

#

NO BLUEPRINTS though sadly ๐Ÿ™‚

deep bramble
ocean wren
#

IS there a wrong kind of AI?

#

besides, this stuff is going to impact Unreal just as much.. eventually anyway

deep bramble
#

Sure but in the mean time we use this channel to talk about existing game Ai within UE. Ex: How to setup a character NPC that follows your character and reacts to sounds or has perception. Goals, decision making, actions and interruptions.

#

Not to be confused with ML, or neural networks that kind of AI is a completely different subject.

ocean wren
#

And why would you exclude those from an AI channel?

minor kindle
#

Itโ€™s an unreal engine discord

ocean wren
#

what makes you think it doesn't apply to unreal engine?

minor kindle
#

So AI means the AI systems

ocean wren
#

You realize its not just limited to what you're provided right?

deep bramble
minor kindle
#

It is according to who made the channel

harsh storm
#

๐Ÿฟ

minor kindle
#

They made it for the behavior tree and navmesh system

deep bramble
#

Why even have specific channels in the first place right?

#

Anyways, Iโ€™ve been adding AI to my game and found itโ€™s totally consuming most of the game thread.

#

What are some basic high level optimizations I can do?

#

I have max of 7 agents all using the same parent class but each is itโ€™s own unique child character.

harsh storm
#

Where does the profiler say the issue is?

deep bramble
#

Mostly movement component and skeletal mesh.

#

Those are taking the longest and I donโ€™t really know what else I can do. Iโ€™ve disabled camera components for those NPCs and anything else I donโ€™t think needs to be activated all the time.

#

Just having them running around is causing performance issues. So Iโ€™ve tried adjusting component tick rates a bit and found it helps but looks awful.

ocean wren
#

only 7 agents?

deep bramble
#

Yea it wonโ€™t ever be more

#

Thatโ€™s worst case scenario, typical case is probably half

harsh storm
#

Shouldn't have an issue with 7 honestly.

ocean wren
#

I can't imagine why it'd be taking up the whole thread.. you must be doing something insane with them.. or there's a bug

harsh storm
#

There is some more funny business going on. #profiling

deep bramble
#

I use the same character as a human playable one but with stuff turned off.

ocean wren
#

are you doing lots of calculations every frame?

deep bramble
#

Define lots

ocean wren
#

loads of EQS queries..

deep bramble
#

No

ocean wren
#

definitely need to profile it better then.. you should be getting a lot more than 7 agents without seeing anything in the profiler

deep bramble
#

Itโ€™s the movement, when I drop the characters into the world without auto possessing them itโ€™s fine

ocean wren
#

whats your BT look like?

deep bramble
#

And when I look at insights the movement component and skeletal mesh jump out at me as taking longest

ocean wren
#

are these stock UE characters??

deep bramble
#

Canโ€™t show right on, on my phone

ocean wren
#

they might have a ton of extra bones and whatnot maybe?

deep bramble
#

They donโ€™t have fingers or toes lol

#

In general what should the actor, movement and mesh tick rates be?

#

Iโ€™ll just try recording more data with insights and take another look I guess.

ocean wren
#

probably sensible

uneven cloud
terse bear
uneven cloud
terse bear
uneven cloud
topaz light
#

Does anyone has expierience wit building AI for meele enemy in Hack & Slash game? Mine is based of one from Ryan Layley's meele enemy tutorial but something's off

uneven cloud
#

What problem are you having?

terse bear
topaz light
# uneven cloud What problem are you having?

Something's just off. I bet it's the strafing and directing the enemies that makes it feel off. I watchet GDC Conference about Creating combat in God of War 2018 but TBH it's kinda black magic to me what they did there

uneven cloud
topaz light
#

Yeah i know. I think how to depict this. AI just feel stupid. Enemies ether are running and swarming you or hesitate to attack making combat to easy. It's not about that i do not know how to make them run or attack or taunt. It's more about that i some tips how to connect these elements. Maybe if i could "compare the notes" i'd get some idea

misty wharf
#

It's a bit hard to suggest solutions when the problem is kind of vague. AI behavior depends so much on how exactly you want it to feel that you'd probably have to elaborate on the details of what seems wrong with it compared to how it should be acting

ocean wren
#

Chris Jurney did a good GDC presentation about making a circle around an enemy for melee attacks from one of the Warhammer games. There was a great presentation about it, but unfortunately its no longer available by one of the square enix guys too. Sadly a lot of the old aiGameDev.com videos are down now, but maybe you can find them on YouTube.

lethal helm
#

How would I go about building nav modifier volumes in all the areas that are covered/can't see the sky automatically?
I was thinking raining down line traces in a grid based on the nav bounds location/scale and spawning really tall rectangle volumes below the impact points

minor kindle
#

Make the volume fit in the space

modern owl
#

What's the difference between Failed and Abort in bt tasks?

lethal helm
modern owl
celest python
#

Anyone knows if PathFollowingComponent itself trigger a re-path request?

#

and does it makes sense to pass a FNavigationPath that is filled with custom FVectors to make path following follow a custom path?

#

it has tons of properties that imply pathfollowing will break and manipulate the given array

harsh storm
#

Hmm - I wonder...can we use InstancedStructs with native BT tasks? I'd imagine yes, but not sure if the nodememory stuff takes that into consideration ๐Ÿค”

celest python
#

its not POD

#

so probably not

late spade
#

is someone member of the unstable diffusion discord here?

lyric flint
#

I'm using a well-known 3rd party AI navigation library in Unreal. Can anyone speak to, at a high-level, how to automatically generate cover points in a similar way to automatically generating nav links? Is this something that should be tied in to when the navigation mesh is baked and I walk the mesh looking for line intersections with the geometry, or something like that?

celest python
haughty coral
lyric flint
minor kindle
#

You can pinpoint locations behind objects and weight them

#

But itโ€™s a pretty simple approach idk how good u want the AI to be, tho it would probs be better than COD ai

#

I like to use it to find potential hiding spots in a level which is nice

quaint radish
#

I dont think ill need to use EQS.. but also wouldnt know exactly how to... or if thats better than my solution i just mentioned.

#

haha maybe im already using eqs? it is enabled but i dont really reference it directly often as far as i know. Not using Get EQS nodes or anything.

#

Dont have "EQS" components attached to pawns

#

I do have AIPerception though

minor kindle
#

EQS basically just makes points and scores and filters them to find the best option

#

U can probably setup one to pick points behind walls in relation to the player height with some specific spots it looks for

lyric flint
minor kindle
#

i havent messed with it in 3d but if you setup ur nav mesh so that multilevel works it would probably consider higher levels further away, and if ur EQS scores further away higher it may have a tendency to pick cover spots not on the same level

lyric flint
#

Thanks! I'm going to do a bit of fiddling with these tonight

ocean wren
# lyric flint I'm using a well-known 3rd party AI navigation library in Unreal. Can anyone spe...

Typically there's two approaches to cover.. first is to use some line traces or sphere sweeps projected against the world. My own implementation walked the edges of the generated navmesh polygons (the outer edges of the navmesh, theory being those are the ones against cover), it then projected line traces along lines generated along those edges and added actors at the points where a trace worked (in the opposite direction of the trace, so its basically on the navmesh). The other main option, is to build cover points into your blueprint world items and add some extras for static meshes etc. So basically build it into your blueprints (I suspect you could use a lightweight actor now too). Advantage of the latter is that you can custom add cover points etc. I also had a few tools I built to generate cover points along designer placed edges (you can see those in Crytek's cover system).

#

TLDR: line traces or build points into your blueprints that you place in the world.

lyric flint
# ocean wren Typically there's two approaches to cover.. first is to use some line traces or ...

Thanks, that first approach is sort of where my mind was at. To be clear, you generated traces perpendicular to the outer nav mesh edges and checked for hits? If a hit was found, you generated a cover point in the opposite direction? The second approach makes sense as well, especially w.r.t. custom points.

It seems like your work was all done offline. Was online too much of a pain in terms of speed and debugging?

ocean wren
#

It could work either way to be honest.. just grab the navmesh generation events and do it then

#

but yeah, mostly did it offline, I did a mixture of edge tracing and some custom objects for things like doors and ladders where I wanted a queing system to be in place too

lyric flint
#

Thanks, that's awesome. I appreciate it.

ocean wren
quaint radish
#

any idea why the blackboard float is being set successfully, but the get is returning 0?

#

trying to compensate for broken print string in 5.1, and ai debugger limited ability to see one ai at a time

lyric flint
quaint radish
#

where?

#

isnt that only for 1 ai at a time?

uneven cloud
#

Learning the names of tools is important.

The gameplay debugger is what you use on a per AI basis that shows debug information in real time.

The visual logger is a debug timeline view of a recorded session. This is by far the easiest way to debug, especially when you have multiple AI running around.

harsh storm
#

visual logger is super cool, lol

quaint radish
#

I think i have been scared of this thing. Years ago, in school, saw this and then stuck my head in the sand. Its mostly for AI or can you use it for things like particles.. or even a sm cube placed in the level?

uneven cloud
#

You can use it for anything. It's actually really easy to add vis log debugging to anything, but you do need an actor. There is nothing to be scared of.

celest python
#

i wish same thing could be said for gameplay debugger too

quaint radish
#

Do I have to know c++ to use it fully?

uneven cloud
#

No. There are BP vis log nodes.

quaint radish
#

and is there any reason someone would not want to use this vis logger?

uneven cloud
#

The only reason someone wouldn't want to use it is because they don't know it exists. Or they hate themselves.

quaint radish
#

seems like it records lots of stuff for example, might be too demanding?

harsh storm
#

It's not like you ship this to your clients

#

So that doesn't matter

celest python
#

it works in a different way than UE_LOG iirc

harsh storm
#

Debugging tools are king when building your game.

celest python
#

so its optimized

uneven cloud
#

It does record a lot of things. Then you can toggle categories and search for things.

celest python
#

it only lags when it draw things - which happens in editor only

uneven cloud
#

It's compiled out in shipping builds.

quaint radish
#

nice. Thanks. maybe you just leveled me up a bit lol

uneven cloud
#

And does nothing when you don't have the vis log running.

celest python
#

it'd be nice to have it as standalone software btw

#

since it can load files

#

like frotend session thingy

quaint radish
#

Does this tie into breakpoints in any way?

uneven cloud
#

There's rumors that insights will eventually replace it. You used to be able to record a session outside the editor, but they made that impossible in the last few years.

uneven cloud
quaint radish
#

ah so you dont typically use them together?

#

or you do but breakpoints just dont appear in the time scrubber?

#

I jus tknow that breakpoints show specific values of the connected nodes usually.. and vis logger looks like it does a similar thing without stopping play

#

seems safe to assume some sort of feedback to each other one way or both ways

uneven cloud
#

Breakpoints don't show up in the timeline.

Honestly I don't do much debugging that isn't just the visual logger anymore. Breakpoints are pretty meaningless when you have a bunch of AI running around.

quaint radish
#

cool. I dont like breakpoints haha

#

use print string much more often

#

so looks like I can enable vislogger in developer tools, but need code to capture data?

#

according to the documentation

#

only shows c++

uneven cloud
#

No. There are BP nodes. Just search for vislog

celest python
#

just imagine print string logs to a tab named visual logger but with more detail and ux friendliness

quaint radish
#

Where is the vislogger? I cannot even find the developer tools in ue5

#

Docs says windows, dev tools, vis logger. It's not there

potent valley
#

hey guys is it worth learning how to use VisAi plugin or just code ai for myself..i want to program ai for a third person shooter..i know how to program ai using behavior trees already

uneven cloud
quaint radish
silent ivy
# potent valley hey guys is it worth learning how to use VisAi plugin or just code ai for myself...

i'm obviously a little bias but I think where VisAI really shines is just code comprehension (especially at scale), streamlined & optimized structure, and extensibility. Another few notes;

It comes with lots of features out-of-box and you can easily use those or other systems you have already.

You can use C++ with it if desired, just expose to BP to tie it in. The framework itself is BP but all it does is compare float values, so most of the performance cost comes from any code you add on top of it. I have lots of optimizations planned for 2.x but this is the state of the current release.

There's quite a bit more i could add but i'll keep it brief. Would definitely recommend checking out the Designing and Creating AI tutorial on YT as it overviews the entire design/creation process and provides a quick review at the end to summarize.

potent valley
potent valley
silent ivy
silent ivy
# potent valley the thing that turned me off is the learning curve and the deathmatch bug we loo...

Honestly with this, the initial design of your AI is pretty straightforward once you 'get' the design theory. I come up with entire designs on paper all the time, it's really nice for iterating on ideas cus you don't really have to code anything to make a lot of assessments. the behaviour structure gives you

I will say though, there are a lot of things that could be streamlined (and will be) that lead to confusion on implementation. A lot of this just comes down to the fact that it's really up to you as to where you place your data, how you integrate systems with the framework, etc. We reached 100,000 users a few months ago and over the course of 2022 I learned a lot about how people are using the framework. Will be able to fill in a lot of the existing gaps in the 2.x builds.

#

but yeah if you hit me up in the support chat over on our server I can help ya out with any issues that arise. In my experience, most users get over the learning curve after creating a few AI features and some breakage. sometimes you get hindered from even attempting to create features though which can be frustrating enough to stop using it (definitely get it). I try to provide support / docs to assist with this as much as I can. the community is usually pretty good about helping as well

celest python
#

if anyone interested

quaint radish
#

Can anyone post screenshots of how theyve used parallels?

#

I have tried but I think parallel suggests to me that it runs just like a service, basically any time the branch is executed... but that is apparently wrong

harsh storm
#

I use it mostly when trying to handle moving and attacking scenarios.

#

On the non-main task, it is the moving part. The main one is the attacking part.

#

This way they can move & attack at the same time.

uneven cloud
ocean wren
#

oh man, I don't have any patience for particle systems ๐Ÿ™‚

#

Trying to tweak a tornado.. bloody hell ๐Ÿ™‚

#

Funny how brains work.. I can sit and hammer on code for days, but tweaking a particle system parameters? nope

quaint radish
#

Same! doesnt help that the particle interface uses completely unfamiliar UI layout and terminology haha.. Id most likely be happy with rotating a cone with a material lol.

lyric flint
#

What are thoughts on placing low level logic (play sound, run animation, move to location) in custom AITasks that are then called from the AIController? I'm trying to come up with a way for designers to automatically have a list of available actions an AI can take from within the AI controller (not using behaviour trees). I want to restrict the designers to only have access to n AITasks that they can be behaviour from.

high summit
#

The AI character is not going behind the chair. Instead AI character stuck between box and chair when AI move to node is called.

#

The AI character should go back to chair like I draw a 90 degree circle(when AI move to node is called)

#

Not just go straight forward

ocean wren
#

Looks like your character width isn't set right for the agent radius

high summit
#

what is difference between this node and "AI move to node" and Behavior tree move to node? which one is most efficient?

celest python
#

they are same

#

they run the same UAITask

uneven cloud
lyric flint
uneven cloud
lyric flint
#

Ah, yes, those are both good callouts, thank you!

uneven cloud
#

You're welcome!