#gameplay-ai

1 messages ยท Page 169 of 1

ocean wren
#

The lack of examples and documentation

#

Then for some weird reason a ton of people seem to want flying AI

#

There's not a lot of AI toolchain stuff. I know there's statetree now, but there really should be a planner properly supported, along with a Utility system and if we're being real, there needs to be an ML setup now

#

Basically, if AI got the love that Graphics got, or even a fraction of it, the toolchain would be far more developed

granite vault
#

Did not Epic added the gym ML last year or 2 years ago?

#

I forgot where. I was sure i saw it

ocean wren
#

There's an ML thing in the same way there's a HTN planner thing

#

i.e. not really ๐Ÿ™‚

granite vault
#

Yeah i definitely agree with the smartlink and especially doorways. Heard too many complains about stuck in doors here

#

In google search too regards the door.

#

I would like to try to make an ai moving around areas with door sometime later

misty wharf
#

Yeah doors are a bit annoying depending on how you want them to work

#

In my fps project doors just don't exist on navmesh and if npc's bump into them they just automatically open lol

ocean wren
#

Yeah, we did that too ๐Ÿ™‚

granite vault
#

Yeah that's smart way to design it. However, many cases i think people want to have it "realistic" lock

#

Interesting one to play around

misty wharf
#

Yeah my other project would kinda need something like that ideally

#

Ie. the AI doesn't know the door is locked until it walks up to it to try it

granite vault
#

Is there any games with AI and "realistic" door lock? It would be nice to see what are they doing

#

I think Fortnite's ai open doors automatically

misty wharf
#

I don't think I've ever noticed it in any game

granite vault
#

Make sense people tend to avoid this kind of complex door and ai combination

misty wharf
#

I think even in my other game you might not notice it so it might be kinda pointless for it to exist as a complicated feature :P

granite vault
#

Agree

misty wharf
#

Simply having the AI not go through locked doors is easy enough, just change the navlink area class

#

They'll stop trying to pathfind through the link, now you have a locked door

#

(assuming you've set up your nav query filters correctly)

granite vault
#

But what if is it a dynamic lock/unlock door?

misty wharf
#

Just toggle it at runtime, at least with dynamic navmesh it should just regenerate and work

granite vault
#

Navlink area class can be toggled?

misty wharf
#

Yeah you can change it to something else, say you have two nav areas NavArea_Normal and NavArea_LockedDoor or something

#

You can just switch between the two depending on whether it's locked or not

granite vault
#

Oh interesting. I thought that would confuse/break the ai by having 2 different Navlink area in same location.

misty wharf
#

I've not tested it a lot but at least with the testing I did it basically just does the same as if you change it in editor (with runtime navmesh generation enabled)

granite vault
#

Thanks for the letting me know. Appreciate the additional details

misty wharf
#

You could probably also just disable it altogether, but with this method you can optionally have certain npc types that are allowed to navigate through locked doors (perhaps they have keys)

main heart
#

I don't think it is about improvement. It is more about the need of hour type of thing. For instance, the latest Crowd AI is a novel introduction.

#

ML should be on priority list, in my POV, but they are just tooo reluctant to learn from limited or special cases.

#

they need large number of test cases to learn which is already annoying for real time

granite vault
main heart
#

other than Atari type games which can run loops in berserk mode

granite vault
#

Crowd type of Ai. I find that even the old cpu can run 100 ai easily. Moving only, i never tested beyond that. I suppose by crowd you all want above 10,000 ai?

main heart
#

I haven't explored UE's take on that

#

but I'd like to imagine something like Boids Algorithm

#

Simple rules for large number of entities to generate controlable complex behaviors

granite vault
#

I see. Complex behavior surely has high added cost

main heart
#

yeah tell me about that

#

that not only introduces unpredictability (which is desired in some cases) but self-harming tendencies

#

that is unacceptable

thorny jay
#

Hi everyone, quick conceptual question: what is the main difference between hierarchical path finding and regular path finding? I noticed that using EPathFindingMode::Hierarchical is significantly faster than EPathFindingMode::Regular, but I'm assuming there must be a trade-off? Currently using hierarchical for everything, but not sure if I'm missing a trick in doing that

gritty pebble
#

There is a way to generate navmesh runtime on a spawned mesh? Is pretty expensive to activate navmesh rebuild runtime, so I just want to rebuild it on a small part of the map.

misty gale
#

Invokers could do that i believe

slow bobcat
#

Hello!
I'm testing the new StateTree outside mass and I have two questions:

  • Does anybody know about any documentation or thread explaining how to use EStateTreeStorage? or at least the difference between internal and external?
  • I can't see any way to check what a state tree is doing that is not set a breakpoint in code or use the visual logger. Does anybody know if there anything else?
desert dagger
#

Is there an event that you can call when navmesh has finished loading?

main heart
#

there could be

#

try looking into the source

celest python
#

Wdym by "loading"?

#

Literally getting loaded in a map or some other functionality?

misty wharf
#

There are delegates on the navigation system for it

#

Including for when the navmesh has been regenerated if using runtime generation

slow bobcat
misty wharf
#

Anyone have any idea what is the intended usage of the perception Team sense?

harsh storm
#

My guess would be that it'd only be useful if you have teams already configured (which requires C++ IRC). Then it'd only notice pawns on the "Blue" team for example.

misty wharf
#

It doesn't seem to really "notice" anything per se, it just receives events

harsh storm
#

It'd only get those events if w/e team triggers it though, no?

visual silo
#

Is it just for coordinating team stuff? Like if you had a team leader call for everyone to advance

misty wharf
#

๐Ÿค”

#

Possibly some kind of send random data to team thing yeah

sharp junco
#

I'm trying to get a character to move to location (current position Y + 100), but he just does not move...I have a NavMeshBoundsVolume which encompasses the entire map. If i use Set Actor Location I can instantly move the character, but I want him to walk/run there....any ideas what I'm doing wrong?

#

Note that I'm using the ThirdpersonCharacter template. The character is spawned in but not yet possessed by any controller. (I've tried using Get AI Controller instead of player controller, but that also does not work)

desert dagger
celest python
#

Highly doubt you can

#

Not sure about specific to navmesh, but FWorldDelegates has a delegate firing when assets loaded or spawned in map

#

Or at least when map loaded

desert dagger
#

hmm.. okay.

sharp junco
#

I figured out my problem...I needed to set "Auto Possess AI" to "Spawned" on the character, so that when I spawn it in, it gets an AI controller, then plugin the Get AI Controller into the Move to Location

sharp junco
#

Now I have the problem that the character moves, (rotates correct and moves), but his walk animation does not play? I've tried with both "Move to Location or Actor" and "Simple Move to Location". But when i possess him with player controller and run around the animation works fine

celest python
#

@ocean wren I guess you were right PepeHands EQS only returns items if you select "All Matching", and just returns one in others

ocean wren
#

๐Ÿ™‚

ocean wren
slate beacon
#

Hello! I've a problem with my AI. Another person made a level and the AI would not move. I've done debug, they have target as character, all the keys are correct in BB, but they fail the move to task and just stand there.

#

the logic inside BT is correct and on any other levels they move just fine

#

Nav mesh is there and i see no issues

#

what might be the cause?

celest python
#

Check visual logger

slate beacon
#

what is that?

#

the BT flow or debug in game?

#

i googled it and i never used it before XD

celest python
#

It's in Tools -> Debug -> Visual logger

slate beacon
#

ye i found it, gone run it in a sec

#

so it's navmesh...

#

i though so , but idk why

#

this how it goes on the other level

#

same AI same nav mesh options

#

(just fresh nav mesh all defaults)

celest python
#

Print the move goal

#

Either actor or location

#

its not on nav mesh

slate beacon
#

i kinda find a fix

#

still confused what causes this

#

but smaller navmesh volume works

#

she made big level with several flores and 1 huge mesh around it

#

if i put a smaller one into a room it works

celest python
#

No idea tbh ๐Ÿคทโ€โ™‚๏ธ you gotta provide more context and info. What visual logger says is your location is either invalid or not on nav mesh

slate beacon
#

the key is there, it just fail to use pathfinding

#

all i can say is that both bot and player were in same 'room' inside of navmesh

#

idk why this happened, but using smaller nav meshes seem to help

silk fulcrum
#

Is there a way to determine if a character is actively pathfinding or not? I.e. on route via Simple Move To location

magic jasper
#

You can get the controller, then get the path following component to query it

deft hound
#

Anyone know why these two uses of a "Move To Location Or Actor" give very different results?

#

The second one shows it going to an actor I've placed in the level - this works completely fine.

#

The first one is going to a location (the exact location of the actor I used in the second one)! So it should go to the same spot.

#

FYI gravity is off, it's in flying mode. (Vertical movement in a 2d platform game)

#

I ideally need to use the first one, i.e. a calculated Vector for the AI character to move to. I suppose every time I want to do this I could spawn an object where I want it to go to and use the second example, so it actually gets there.

#

I just can't fathom how they are different (not being able to see the code as I'm in blueprints).

abstract ember
#

Is the issue that the first example isn't going to that same location that the actor is placed in world space even though you manually entered the position?

deft hound
#

yep exactly that

abstract ember
#

Can you give me a ring to stream the test example?

deft hound
#

I've also tried giving it a vector + another vector that's way above, but it doesn't help it get any further. Sorry... a ring?

abstract ember
#

Call me..? Like ring the phone..?

deft hound
#

Ah - i don't have a headset atm + didn't realise you could do that in Discord!

#

I can show a video clip of it occuring if that helps

abstract ember
#

You don't need to talk per se, just stream your computer screen to me so I can see what's going on. It really helps.

deft hound
#

Thanks. I'll make a clip - 1 mo.

abstract ember
#

Streaming allows me to interact real time when I see an issue.

deft hound
#

I understand - I can't really do that atm. But I can make 2 quick clips which will show the issue

abstract ember
#

We can try

deft hound
#

This is when i'm telling it to go to the object:

#

(which is way above where he should go (he's supposed to be climbing the ladder))

#

And this is the one where i tell it to go the position of the spawned object way above:

#

It looks like he's getting stuck on the platform, but considering the only change I am making is the goal location to a goal actor (both the same world pos), I can't see how

#

Do the videos help?

#

I wish there was a way to have vertical navmesh up my ladders, this would be so much easier. I'm having to blueprint hack my way of telling AI to do eveything through blueprint... i.e. if the player is above and it can't get there, but there is a ladder, find the base, go to it, move up in flying mode, etc etc

#

@abstract ember Do the vids help?

abstract ember
#

Break down the actor component and get actor location. Try again.

#

Sorry. Don't know what else to say.

deft hound
#

np - thanks for looking. Do you think there's a chance that any of the code runs differently based on whether you choose location rather than actor?

#

hmm just had a thought of something to try...

#

bah - didn't work.

abstract ember
#

I really wish you could stream it.

misty gale
#

Wouldn't it be easier to spline it and lerp its location moving upwards?

#

Setting up platforms and ladders in a graph, and suddenly its just about applying a regular pathfinding algorithm

#

Or a navlink proxie might work

#

Never used those so not sure how usable it is for this scenario

deft hound
#

@misty gale Sorry i was away. Navlink proxies don't work consistently from what I've found. I also have objects in the world (e.g. a rope) that you can create a new up/down path with, so whateverI do it needs to be realtime nav.

misty gale
#

Setting it up in a graph is realtime

deft hound
#

(I can get navlinks to wrok fine in 3D - they are much more problematic in 2D at a small scale from what I've found

misty gale
#

Adding new paths/ladders at runtime, no problem

deft hound
#

how do you mean? In a graph? Sounds intriguing

#

Sorry I haven't heard of this before. Is a "graph" a sort of network of splines?

misty gale
#

A graph is a set of nodes and edges, connecting the nodes together

#

A node in your case would be a platform, and an edge would be a traversal method from one node to another

deft hound
#

thanks - is this a feature of UE4 or would it require a lot of non-BP code?

misty gale
#

It would be some extra work to set up, for sure

#

I guess it can be overkill for this, depending on complexity of the levels

deft hound
#

@misty gale I think given my design it's not overkill - it's more complex than my example shows.

#

do you know of any tutorials or examples out there?

misty gale
#

I have yet to see it in a pure bp setup

#

Mostly one uses c++ for this sort of thing

deft hound
#

Yep - I can code enough in C++ to probably do a bit of it... but i'm from a Scripting and Design industry background. If it was in LUA or similar i would be fine :0

#

What would this be referred to as? "Building your own navigation graph"?

deft hound
#

thanks that reddit post looks illuminating!

misty gale
#

This seem to cover a lot aswell

deft hound
#

Thanks. So why might i ask can the UE4 system not do this? Is it just it can't do vertical navmesh?

misty gale
#

Sounds about right yes

#

But

#

In your case

#

I would almost think it'd be easier to just have your world flat?

#

And use the flat navmesh

#

Tradeoff would probably be worth it, not needing to implement your own path algo etc

deft hound
#

!

misty gale
#

Instead of up being Z, let up be X

#

And just modify nav as ladders are added

deft hound
#

that's a clever idea

#

thank you very much indeed. Need to ponder all of this

#

trying to think of a reason why the world can't be flat...

misty gale
#

Jumping

#

Must be changed

#

Gravity must be changed

deft hound
#

what if the nav was flat, but the world was normal - could i transform the numbers?

#

hmm no forget that one

#

gravity is already "not normal" - so faking it wouldn't be a bad thing - i'm not happy with my character movement atm anyway

#

Thanks a lot I really appreciate the advice. I shall have to investigate which path to take... ironic eh ๐Ÿ˜‰

misty gale
#

Heh , served on a silver platter :p

ocean wren
#

Honestly, I think this kind of case would be better if you just wrote your own navigation graph system.. Its already a tile based world after all.. so you know where tiles are etc.

misty gale
#

Probably, but there is a certain ease using built in systems :p

ocean wren
#

So build it in then ๐Ÿ™‚

#

the engine and editor is freely extensible

#

in fact, its pretty good for that kind of thing to be honest..

#

aside from the lack of documentation

misty gale
#

Im doing my own nav system, it was just an alternative suggestion that one can get away with without to much trouble :)

deft hound
#

I'm not sure on the implications yet for pursuing the "flat world" approach. I'm using Pixel2D which also uses Tilemaps (their own i think).

deft hound
#

would this kinda work?

#

instead of jumping I would have walking

#

would it make going up/down valid in pathfinding?

#

(assume it is done in flying movement mode)

#

@ocean wren @misty gale What about a Flying Navmesh?

#

There appears to be some in the store

#

e.g.

deft hound
#

or maybe SVON?

cedar dust
#

question

#

do you guys use more behaviour trees or just code without it

misty wharf
#

I use it if it makes sense for what I'm trying to do

cedar dust
#

lets say a melee ai that is evaluating an incoming attack

#

dodge, block whatever

celest python
#

BT might not be able to handle it

#

BTs are all about prioritizing (why English is so difficult to write ANGERY) behaviors

#

You can not jump from a node to another node

#

So you have to evaluate that blocking behaviors condition in everything and thats not suitable

#

You can either make a very minimalistic state logic in (or outside of the) BTs or handle this outside of the BT

cedar dust
#

yeah i kinda got something working with bt but it seems a pain to handle this stuff with it

celest python
#

Have a const function in character class that determines if AI can dodge or not

#

And handle blocking logic inside the character if BT gets too complex

#

Dodge looks like a "reaction" rather than a behavior

#

If your AI had some specific sequence of actions to do when dodging and if it would be easy enough to handle with BT elements (selector, sequence, decorators etc) you could do it in BT

#

But for a simple reaction-like action, you just disable BT for a while and enable it again when you are done

#

Like after dodge anim finished etc

#

You can do state-machine logic for this in character class but dont do it in BT

cedar dust
#

make sense

celest python
#

And dont communicate with BT directly

#

BT should gather data on its own from environment and character

cedar dust
#

alright thank you

celest python
#

If you would do that in BT; you would use simple parallel and check for these conditions in a child BT

#

and on the second task (the right one, non-pink output) you would handle the behavior

celest python
#

If it's not a very dynamic system its not a problem

#

If you can cover everything in a single child BT, its alright

#

If the behaviors does not rely/change on game progression or environment its alright imo

cedar dust
#

i tried with something similar but as i said, it became a mess once the ai got more complex

celest python
#

Gotcha, then do it in character class

#

Some studios I've joined was strictly trying to do everything in BT so slowly I decayed towards "try keep everything in BT" mode ๐Ÿ˜„

#

It really depends tbh

harsh storm
#

idk - I find that I don't have much issue doing pretty much everything in BT. Even super simple stuff. I like the workflow more personally.

celest python
#

Real problem is you can not cover everything in BT, it's very static and declarative

#

Execution flow makes you create thousands of nodes

#

But if you really organize everything properly it can be a workable workflow

cedar dust
#

thats true, it does have the power to do almost everything i think

harsh storm
#

I feel like @misty wharf and I are like the only ones here who appreciate the BT's sometimes ๐Ÿ˜…

misty wharf
#

lol

celest python
cedar dust
#

well at least has enough stuff so you can actually complain about something ๐Ÿ‘€

celest python
#

You gotta write so much things to make AI module serve at its %100 potential/capacity

#

Its only thing I'm blaming in this server

#

Didnt even blamed hot reload yet sad

harsh storm
#

Sorry, Lorash has a monopoly on complaining about that in #cpp

cedar dust
#

hot reload is not that bad

harsh storm
#

It's pretty bad. Live++ on the other hand...

cedar dust
#

sorry was trying to bait like #cpp does

cedar dust
#

thats actually pretty scary

#

i think im gonna stop

misty wharf
#

lol

harsh storm
#

My initial way of solving the dodge thing in BT would be as such. Seq2 would have a decorator on it making sure it could only be entered if a BB value was set, bShouldDodge or something. Then sele3 would have a decorator where it would only enter if that value is not set, and will abort immediately when the value is changed. Simple.

Could even just replace Sele3 with a RunBT node and have your non-evasive stuff be in another BT entirely.

celest python
#

That's what I would try to avoid though

#

It's a fine approach, its just you have to repeat this for all behavior sequences once you do it

harsh storm
#

Not really.

celest python
#

But on the other hand Sele1 is root selector so yeah not

harsh storm
#

Yeah, at scale, something like this could be a nightmare, but so could most other things. So I'm still in the camp of, just do what works best for you.

#

I prefer BT's because they're quite descriptive and easily reusable when done right. At least, the way I do things. Don't know about others.

celest python
#

I'm working on a BT that I must implement states (hopefully zoombapup wont kill me at night), and having logics like this forces me to place seq2 to everywhere

#

That's why I mostly avoid reaction-like things

harsh storm
#

Half the time I just feel like people care too much about perfection. If it solves the problem and gives acceptable performance, ship it.

#

"Oh this detail has a flaw in it!" - who cares. It works. Problem solved. Move on.

celest python
#

You're right

rugged talon
#

can you increase the senstitvity of the hearing of an Ai or only radius of the the hearing

cedar dust
celest python
#

Then either dont do states or avoid it, in your situation you dont have a choice except having a confusing BT

#

(assuming your BT is big enough, otherwise go brrr)

cedar dust
#

i cant stare at more then two sequences and two selectors without getting confused

#

throw a simple parallel in and im lost

#

i guess its just preference anyway

celest python
#

lol it shouldnt be that confusing

harsh storm
#

Here's the BT for The Division ๐Ÿ™ƒ

cedar dust
celest python
#

They are right to left (logic starts from right, reverse of the BP execution flow)

cedar dust
rugged talon
celest python
#

I wonder what happens here

cedar dust
rugged talon
cedar dust
harsh storm
#

BT's are my favorite way to write AI currently. I'm interested in HTN stuff as well. But just don't have the time ๐Ÿ˜ญ

celest python
#

as a combo

harsh storm
#

I'm very interested in the HTN plugin on the marketplace, it's just overkill for like...all of my games ๐Ÿ˜…

rugged talon
#

what is this Lo SHearing

celest python
#

Its LoSHearing but UE parsed the variable name incorrectly

#

Probably hearing radius specifically for the things in line of sight

rugged talon
#

i see

#

thanks

#

this node makes the singal for hearing right ?

#

like even if sound is playing ai wont hear unless this is used

cedar dust
#

yes

#

i used loudness for doing the custom hearing stuff. i have no idea if is intended to be used in another way but worked for me

#

you have the location the loudness and the instigator

#

you can do your stuff

misty gale
#

I think loudness is related to the range it can be heard on , and at what strength(?)

#

Pretty sure i just altered it for sneaking, which reduced the range i was noticed at

full lotus
#

Is there any way for me to just make a character move for longer? It looks pretty artificial when they move a lil bit and then stop and idle

#

I'm using Behavior Trees

misty wharf
#

Move longer than what?

#

If you're using MoveTo or something then if you want them to move longer.. just move them further

main heart
#

Maybe they need easing function introduction.

mint terrace
#

probably the latter that is your issue

misty wharf
#

you could use EQS to get a position that's at least a minimum distance away, or select a new position if it's too close

mint terrace
#

yeah if the position changes then observe Blackboard value will be helpful. If it does not change, then it won't be helpful.

#

by the way, as a reminder to any aspiring behaviortree developer out there-- seriously make sure your actors are valid when you run move to actor-- unless things have improved since 4.27, the whole game crashes when the actor reference on the blackboard is invalid, and its rather difficult to understand this

#

of particular import is when the pointer is valid, but the actor is destroyed

#

(which happens, if say, it dies)

misty wharf
#

Really ๐Ÿค”

#

I've never ran into that and I'm pretty sure I've tried to move to booleans and all kindsa things lol

mint terrace
#

specifically what plagued me was Move To with Blackboard Key set to a value of type Object, passing an Actor in to that, when the actor is destroyed prior when the Move To starts, it crashes

misty wharf
#

Interesting, seems strange they wouldn't have handled target actor being nullptr

mint terrace
#

i agree. i would hope this has been fixed by now

#

in my case i fixed it by ensuring that I maintain the blackboard values that point to actors properly -- if you destroy said actor, the other actor should probably stop "pursuing" him according to the blackboard

#

(ie just unset so its unambiguously invalid) [lol at my edit chain]

main heart
mint terrace
#

i think nullptr is fine, its destroyed actor

#

ie stale pointer

main heart
#

so what be the true reason for crash?

ocean wren
#

Who mentioned states in behaviour trees? <sharpens knives>

#

I don't mind reacting TO states in BT's btw.. having a state machine elsewhere etc

#

but states IN BT's I have a strong objection to.. usually because people trying to do it are mixing mental models and are going to shoot themselves in the foot with it

celest python
#

Client wants an AI that requires to have states but also hired me for a short time so not have time to build a FSM framework from scratch panda_nobully

#

I had to commit this crime

ocean wren
#

burn the heretic! ๐Ÿ™‚

alpine pecan
#

Afternoon all, I've been searching for something all morning and I'm either using the wrong terms or this isn't a thing.

Is it possible to tell my AI to run an EQS from an arbitrary location?

I'm basically trying to get my AI to look behind walls. I have an initial EQS query that I want to get my AI to look at and I want to build a second EQS query to find a location near to that where my AI should stand in order to see that hidden location.

misty wharf
#

Yeah, it feels like it should be possible to just send this as a parameter to the query, but it's not (except with great great difficulty)

alpine pecan
#

yeah it feels very much like the whole EQS system is actually quite hindered by this and I don't know why

misty wharf
#

It seems to have been designed kind of half-way through :)

alpine pecan
#

Is it possible to get EQS to pump out two locations?

misty wharf
#

It works quite well but you have to sometimes work around these kinds of strange API choices

#

Yeah, you can have it return the entire set of items that are valid

alpine pecan
#

That might work - perhaps it's even more streamlined

#

rather than having two EQS queries one after the other

#

I guess this is what I need

misty wharf
#

Yep

#

You can create a custom context (even in BP's) and just have it return whatever point you want

alpine pecan
#

Looks like I can pull the location of my first point by hardcoding a grab from the actor's blackboard inside the context which feels a little weird but should technically work

main heart
#

are you doing this for a client?

alpine pecan
#

No, just learning ๐Ÿ™‚

#

Works though - EPSPawn on the right, a test pawn on the left

#

(ignore my unfinished EQS query)

#

test stuff at the bottom

main heart
#

so gauge the redundancy

alpine pecan
#

hmm?

main heart
#

I don't see result location being used

#

why is node even there

#

in the cluster

alpine pecan
#

the nodes at the bottom are just for testing in editor at the moment, will be replaced by the blackboard entries at the top when i get my query working

#

which seems to be now...

tidal pelican
#

Hi all. Is multiple navmesh agent types (ie Supported Agents) a broken, missing, or hidden feature? I can create multiple agent types easily enough in settings but can't find a single place to set an actor's agent type or Agent Name. A solution in either C++ or Blueprint will do.

#

I've tried googling but all I can find are people asking this question and never getting an actual answer.

misty wharf
#

I vaguely remember fiddling with it in my other project

#

Look at the C++ interfaces and classes used for navigation, it's somewhere in there

#

like.. NavAgent something or other

#

iirc there's a function which returns the nav agent properties for an actor or the ai controller, something like that

night panther
#

Trying to use tags in EQS

#

tag check

#

my problem is I cant just say has to match this

#

which it asks for

#

I need more like doesnt match mine

#

cause mine will always be different based on who played me

celest python
#

There should be an inversed condition check

#

A boolean

night panther
#

usually but not for this and it asks for what tags to match

#

i was hoping I could just leave it at dont match but

#

requires input

#

im just creating my own

#

same onjective through a service

misty wharf
#

๐Ÿค”

#

I could've sworn the tags decorator had a inverse checkbox but maybe not

night panther
#

no that is decorators in a bt

#

EQS gameplay tag checker has reject incompatible

#

But I need to be able to change what is rejecting based on what I am

misty wharf
#

Ohh right the EQS one

#

Yeah sounds like it should be a fairly trivial custom test

#

No idea why they wouldn't support that out of the box

night panther
#

yeah bummer

#

woould work great if everything was set

#

like check for an enemy type or object type thats always the same

#

but for checking if it matches my own which could always be differnet as well has nothing

#

I got it working through a service

misty wharf
#

You could probably literally just copypaste the existing tag check test and flip the condition inside it :D

night panther
#

I dont need to flip the condition I need to have it be changeable

#

If if player one do my tags match

#

if im player two do my tags match that

#

but im not always just player one or 2

#

so unless I want to make seperate bts per player

#

lol

#

service worked all the same

misty wharf
#

Ahh right

latent coral
#

Guys. I need your help. I am for a quite while trying something stupid and have looked on forums, tried what exist etc etc etc. But THIS is not working at all.

What I am trying to do: When the player overlaps the overlap thing it should spawn a AI. And this AI should follow and shoot the player.

Whats happening: The AI is being spawned, but player cant see the AI and shoots are working fine. Just the AI itself is not being shown tot he player.

The location and rotation of AI and the shooting is fine. But he is a invisible object to player.

help

rugged talon
#

i am using report noise event but it doesnt work. what could be the reason

misty wharf
#

Incorrectly configured hearing sense or too far from whoever is supposed to hear it

rugged talon
#

im in the yellow circle

#

for hearing

misty wharf
#

if you haven't set up the team stuff you need to set it to hear all the teams

#

that might also affect it

cedar dust
#

they havent exposed the team stuff to bp with ue5 right?

#

i didnt actually checked

cedar dust
#

nice

#

its a shame they didnt exposed this to bp, i heared more then one people say that is bugged when it actually just need to be setted up

rugged talon
#

how do i make the instigator in report noise the actor holding the gun. im making the sound on the gun class. is there a way i can set the character holding the gun the noise target? like for player i would just do get player character but if its another AI character shooting the gun then waht @cedar dust @misty wharf

#

i think get attached parent actor worked

cedar dust
rugged talon
#

@cedar dust how do i switch between the debug info for actors? like i want to see the hearing and vision circles for enemy but it shows for my ai partner not enemy

#

i have to remove partner for it to show enemy

#

can i like switch between them or show all ?

cedar dust
#

i dont know if you can switch

#

if you look directly at who you want to debug it should debug that one

rugged talon
#

how would i do that

cedar dust
#

you point your camera at it and press the debug keu

rugged talon
#

ah

#

ok

#

thanks

#

it doesnt seem to work tho only works if the enemy is the only ai in the map

#

ill try to look around tho

#

see if i can get it to work

ebon lagoon
#

is EQS important in the grand scheme of things? I was following a course that had an EQS section but I found it tough to understand and resulted in many weird bugs (like viewport eqs visualization being broken among other things).
I wonder, what can EQS do that cannot be done with BT/C++?

night panther
#

YOu can switch

#

its like Shift ]

#

or something like that

#

im pretty sure it says on the debug screen for ai

#

to cycle through

#

@rugged talon

rugged talon
#

i tried to look for it i couldnt find it but ill check again

night panther
#

right bracket and then 6 is for perceptoin and shift + ] should work to switch between them but it should say

#

did you do the C++ setup for your perception?

night panther
#

#include "CoreMinimal.h"
#include "AIController.h"
#include "GenericTeamAgentInterface.h"
#include "TeamPerceptionAIController.generated.h"

UCLASS()
class POLYGOD_ALPHA_API ATeamPerceptionAIController : public AAIController
{
GENERATED_BODY()
ATeamPerceptionAIController();

public:
ETeamAttitude::Type GetTeamAttitudeTowards(const AActor& Other) const override;

};

#

what wrong wit this ai team perception thing

#

always says build failed

#
#

this guys tutorial never works to set it up

ocean wren
#

"Tutorial" ๐Ÿ™‚ hahaha

#

FYI you can change the AI being debugged by selecting it from the dropdown in the BT editor

placid bloom
#

Hey all, Im doing my first attempt at ai and im a bit stuck and cant seem to find an answer anywhere. Basically i have some ai doing a standard roam and when they are activated they chance the player. Most of the time their pathing works fine but they cant seem to work out the ramp. Any ideas on how i can fix this?

ocean wren
#

are you sure the navmesh is on the ramp? have you fixed the step height of the agent? Have you used the visual debugger to have a look? Have you created some test cases to work out the problem?

night panther
#

Anybody set up the AI Team perception successfully yet?

misty wharf
#

?

#

the team sense or just the ability for the senses to differentiate between teams

main heart
#

I'd like to imagine collective sense, in the sense, look what I did here, where, for instance, if a member or entity of patrolling team senses intruder, then entire team of entities start executing a sequence of actions. Making formation to strike down the intruders by making formations and whatnot.

#

But yeah I don't think it would need special Engine side work. I have been wrong before though ๐Ÿ˜„

ocean wren
night panther
#

Do you have a base class that I could inherhit my AI from to get it working?

wary kraken
#

Hello, is there a reason why UE not creating navmesh on some parts on landscape? Tried to change tile size, slope angle and other settings

west talon
wary kraken
#

I tried to make it any size, but nothing helps.
I can see that ignored area has exact size as our landscape tile, so it basically ignores some of our tiles. We do not use world composition or something else, just standard landscape.

Also navmesh works ok on roads that were creating using landscape spline tool

night panther
#

is somebody can give me base class for AI to use for proper Team Detection lmk

night panther
#

wow thank you

night panther
#

its from like 5 years ago tho you know it works ?

#

and no cpp file do I just create this and inherhit from it?

misty wharf
#

That's the engine's interface for it

#

Just inheriting from it doesn't do anything

night panther
#

so still not what I need?

misty wharf
#

It will be what you need if you implement the GetTeamAttitudeTowards function

#

That's what gets called to determine the attitude towards other perceived actors

night panther
#

what do I do with this one?

ocean wren
#

It already has an implementation doesn't it? don't you need to just call SetTeamID or some such? been a while

night panther
#

is that why when I build the AI controller with that function it never builds?

misty wharf
#

@ocean wren no, the default implementation returns everything as neutral

night panther
#

im no C++ pro

ocean wren
#

ah, ok, so you need to implement the attitude function and set the different team id's

misty wharf
#

The team attitude function gets called with the other actor that's being perceived

#

So you need to check what it is and determine what the attitude should be (eg. hostile, neutral or friendly)

#

Once you've done that you then just return the appropriate attitude value

#

If you don't have a complicated system, you could check for example if the target is the player pawn and then return it as hostile

#

And return everything else as friendly or neutral

#

But if you need a more complex team system then your checks will need to be more complex

night panther
#

I just need if not matched team ID is enemy

ocean wren
#

its really just an integer comparison

night panther
#

and I need to be able to set the ID by who spawned that actor

ocean wren
#

yeah

misty wharf
#

Implement a function that lets you set the team ID, and save it in a variable in your class

night panther
#

I believe I need that function set up through a Parent for my AI controller in a custom class

misty wharf
#

Then you can compare that to the team ID value on what is being perceived

night panther
#

my problem is getting the enemy detection set up

#

yeah I need to be able to get perceived hostiles instead so less time weeding out

#

my tag system works which I did the C++ for

misty wharf
#

Tbh you could just do it in BP's too :)

night panther
#

but it could be btter

misty wharf
#

Simply have everyone neutral and check in your perception function what the pawn was

#

it won't work with the team values in perception, but the implementation is easier if you don't know C++

night panther
#

yeah using gameplay tags

#

did that

#

works but leaves me with gaps

misty wharf
#

Gaps?

night panther
#

where they are cycling through none enemies

#

waiting to get to th e proper one

#

to act on it

misty wharf
#

well it's not going to be magically fixed if you implement it in C++

night panther
#

no its not but doesnt change the fact that I still need to do that part

misty wharf
#

well the only benefit from the C++ implementation is that it saves you some linetraces

#

which is not really a problem unless you have a lot of AI's trying to perceive everything

ocean wren
#

Was reminded about this and thought of Mass system: https://www.youtube.com/watch?v=biYOHAEbn40

#

That's a lot of AI

night panther
#

Cant get my AI move to to end

#

just gets stuck on this task

night panther
#

fixed it \

main heart
mint sundial
#

Hi! Is there a simple way to move some pawns with a Move To Location node, but using different paths on the nav mesh? (by default all pawn controllers are calculating the same path)

#

I want that each pawn moves to the player but using different paths

rugged talon
#

what is the ideal place to put a selector in a behaviour tree? if my AI has 3 states whihc are shootig player , losing sight of player and following when spotting player where would i use a selector or should i just put it all in 1 sequence? would the shooting part come under a selector ?

dry oxide
#

show me your Behaviour tree

rugged talon
dry oxide
#

try using sequence

rugged talon
#

i was gonna add the shooting next

#

ok

#

so right on the left of these

#

so if enemy is not spotted then i go to the rest of the tree

dry oxide
#

If enemy seen then shoot ?

rugged talon
#

basically im making this for an AI partner

#

if it sees the enemy ai it shoots it

#

i did it with alot of branches but it got v messy so wanted to implement using tree

dry oxide
#

Add new sequence and try adding Decorder

rugged talon
#

like the ones i have for the other 2 right

#

which will have bool

dry oxide
#

Add Sequence and then add Decorator

#

and select condition if seen == true then

#

your program

rugged talon
#

alright thanks

#

i will ty it

#

@dry oxide if i add 2 decorators then it will go into tree if both conditions are met right

main heart
#

I think so, if both decorators agree.

gilded basalt
rugged talon
#

ok thankyou

#

what is the diff bw these 2 pins. the first one is the controller bp? and the second one the actor the controller is controlling ?

dry oxide
#

Controlled Pawn is the Pawn / Character which is being controlled by the controller

#

in this case its probably your ai character

rugged talon
#

so i pick owner controller ?

#

and then cast

#

or controlled pawn

dry oxide
#

Owner Controller is like AI Controller

#

Player Controller

rugged talon
#

ahhh

#

so which one is normally used

#

for the thing im doing rn

#

cuz ive been using controller then casting to ai character

dry oxide
#

its fine

#

try compiling

rugged talon
#

it works

misty wharf
#

๐Ÿค”

#

So the pin you use depends on which object you need. If you need the AI controller, you use the controller pin, if you need the pawn the AI controls, you use the other

#

I don't really know how casting the controller into a character works but... :D

rugged talon
# misty wharf ๐Ÿค”

i see. so if there are soem variables i want to use in task from controller then i do the first pin and cast

#

right

misty wharf
#

Yep

rugged talon
#

ok thanks

rugged talon
#

so ive gotten the thing to work but i have 2 ai in my level atm. one is friendly and 1 is enemy. the friendly does shoot enemy ai but as soon as it senses me it starts shooting me. how do i get it to only sense and shoot the enemy from everyone it is sensing

#

@misty wharf @dry oxide

dry oxide
#

are they separate characters ?

#

character class

rugged talon
#

yes

dry oxide
#

you have a function or custom event to shoot ?

#

for the ai to shoot

rugged talon
#

yes

#

so bascially when focus is set it starts shooting

#

my focus fucntion call is in the tree

#

branch

#

like in the pic

dry oxide
#

it shoot the focused player ?

rugged talon
#

yes

#

i want it to stop focusing me

#

on every parception update

dry oxide
#

try setting the sensed actor

rugged talon
#

i put tags but it doesnt work

#

ok

dry oxide
#

you want the friendly ai to shoot your enemy ai ?

rugged talon
#

i set the sensed actor right after perception

rugged talon
dry oxide
#

show me your shooting code

#

ai shooting code

rugged talon
#

so when focus is set it sets aiming to true

mossy nexus
rugged talon
#

aiming sets the char to start shooting

dry oxide
#

show me the start shooting code

#

you must copy this for the friendly ai

#

and change the target to enemy

celest python
rugged talon
celest python
rugged talon
#

im casting to get variables from the class controller is controlling

dry oxide
#

then use the function and change the ai ref

#

put inside your friendly ai character

mossy nexus
celest python
rugged talon
mossy nexus
rugged talon
#

i wil try

celest python
rugged talon
#

@dry oxide i have this bool set from the sensing stimulus. so when it senses it sets it and when it doesnt sense it un sets its ?

#

or i have to unset it manually

visual silo
#

Definitely worth playing if you're making something similar. Lessons to learn in both directions.

celest python
#

We were just talking about it at #lounge

visual silo
#

Ah ๐Ÿ™‚

celest python
#

It's more similar to my game in sense of being horde survival

granite vault
#

That game is clone of some Korean developer's mobile game.

#

Surprisingly that game is more popular when the original was released few years ago on mobile

#

It is called Magic Survivor i think. On mobile store

rugged talon
#

can i do an OR condtion before going into a task in a behaviour tree

misty wharf
#

composite decorator

rugged talon
#

where do i set conditions

misty wharf
#

doubleclick it

#

it opens a node editor

rugged talon
#

ok im there how do i make the conditions like OR

#

o i think i found it

#

this right

mint sundial
#

if the pawns are also obstacles for the others pawns...I think it would work like in vampire survivor, using dynamic pathfinding

celest python
#

You have to use RVO Avoidance

misty wharf
#

Yeah I don't think the enemies in that video are really doing any kind of fancy pathfinding

#

they're literally just moving directly towards the player

celest python
#

Probably boxes are not even doing pathfinding

#

They couldnt move while being an obstacle

#

There isnt any path at their origin

main heart
#

I love it though

celest python
#

Anyone knows if path velocity overrides impulse or force in CMC? i.e. pending forces

mint sundial
misty wharf
#

Do they? It looks like they're literally just moving in a straight line towards the player

mint sundial
#

for example....in unreal....they follow the player in straight line one after the other...is a pity

#

that never hapens in vampire survivor

misty wharf
#

You might have better luck if you enable RVO avoidance

mint sundial
celest python
#

Engine difference

ocean wren
#

There's plenty of information out there on pathfinding

#

But yeah, A* and its variants like HPA* are pretty standard

opal crest
#

Yeah, pretty sure Vampire Survivors is just using 'Go straight toward player' + RVO + rigid body collision. You can see it when you get a big wave and bats/mini beholders fly through.

ocean wren
#

There are other avoidance approaches than RVO btw ๐Ÿ™‚

opal crest
#

I use (but have absolutely no understanding of) Detour. But it seems to do a much higher quality job than RVO (and never seems to push characters off the navmesh).

ocean wren
#

yeah, honestly RVO is a bit.. crap ๐Ÿ™‚

#

it was one of the first "popular" avoidance algorithms in games. But its been ages since it came out. So there's plenty of better options

#

Even though the games industry tends to move as fast as a glacier with things like that ๐Ÿ™‚

celest python
#

And UE is a very fancy engine with various implementations to not make people lack modern algoritms coughs blood

ocean wren
#

Well, they are algorithms, just not always complete ones ๐Ÿ™‚

celest python
#

Never innovative as other engines sad

#

Mass was an exception

ocean wren
#

None of them are ๐Ÿ™‚

celest python
ocean wren
#

I wonder what would feel like leading edge for stuff like AI in UE you know?

#

I mean sure, the nanite stuff is good, but lumen is just now being on par with cryengine and frostbite from maybe 4-5 years back

#

Would be interesting to see what the state of the art in AI is for all these engines. I suspect not particularly user friendly ๐Ÿ™‚

celest python
#

id Tech still using FSM hellmo

ocean wren
#

I must say, this new modelling toolset in UE5 is pretty nice

#

especially the block modelling thingy..

celest python
#

CubeGrid?

#

Yeah I was just using it

ocean wren
#

I mean for blockout levels its amazing!

old flame
#

Hi guys! Why is this not valid?

ocean wren
#

Did you look at the inputs (blackboard, key) and verify they're as expected?

#

Pretty simple debug stuff.. print out the values.. check they're not null etc.

old flame
#

i set the enemy key in blackboard. how can i check the blackboard itself

ocean wren
#

check its not null

#

check the enemy key is correct

#

stuff like that..

tepid cove
#

Guys I have an Event dispatcher in my Base Ability, which is called in OnEndAbility, but sometimes it never reaches this finishExecute
and therefore it hangs in there infinitely. Does someone know what could it be? NotLikeThis
Also I'm using non instanciated abilities

rugged talon
#

i have a friendly ai and multiple enemy AIs. how do i get the friendly AI to start shooting next target after the first one is dead

tepid cove
#

you have to clear the target of your AI when it is not valid, and then set a new target

rugged talon
#

also which one should i be using

brazen abyss
#

Is an AI Controller+BehaviorTree more efficient than using just straight Blueprints for ordering separate AI characters around?
(Context, Units in an RTS game, ordering them to move, attack, etc)

Because doing it with BPs seems way more straight forward, but I don't want there to be a ton of overhead, since there could possibly be hundreds on screen at a time depending.

misty wharf
#

It depends entirely on what kind of logic you're running and how... behavior trees tick and can have overheads of their own

brazen abyss
#

Essentially, and bear with my inexperience here, all any given unit needs to do is move to a location, attack a target, perform an ability, and auto attack any enemy within range (if it passes an enemy for example). I have found one way using the "Move AI to actor or location" node in BP, and another that assigns a blackboard value for a vector location, then has the behavior tree do "move to location" with a variety of checks.
I see the way the behavior tree is doing it, and it just seems way more complicated. But I don't want to be making myself more work in the long run not using an AI system or something.

misty wharf
#

If you don't feel like you get any benefit from using BT's then don't use them :)

#

Doing AI logic without it is entirely fine if it works for what you need to do

harsh storm
#

Is there a way for the sight sense to see through pawns?

#

Trying to get my AI to see through the pawn in front of them, so they can still see the player.

#

Pawns don't auto register as a stimuli

main heart
#

I'd imagine tagging the player and feeding that into the sensing condition.

harsh storm
#

Where can you feed in a tag in the sight sense?

fossil sentinel
#

Hello, there. I'm trying to develop a simple project, based on the Third Person Tutorial, that involves collecting coins (which are meant to be AI-controlled pawns that travel around the stage.) However, when I load the project, the coins don't move. https://imgur.com/a/5gD9COy Here's the AI Controller, Behavior Tree, BT service, and Blackboard. Is there something wrong in how I'm planning on executing?

main heart
# harsh storm

Ok let me get this straight, pawn and player have different affiliations?

harsh storm
main heart
#

you need in-editor debugging procedures.

#

I believe there is some video.

harsh storm
#

You talkin' about showing the perception stuff?

#

And even more clear picture of what is happening.

main heart
#

I'd first try with single AI and enemy setup.

harsh storm
#

Why on Earth would I try a single AI setup when the issue is DIRECTLY with more than one?

main heart
#

dude, that is basic debuggin procedure. You do ground-up debugging

#

maybe something is not getting stored properly

#

Once that is done, by process of elimination, you can be sure that pawn in front is essentially blocking

harsh storm
#

Cool - already done.

#

The issue is impossible to exist in a single AI setup

main heart
#

show me the screen

harsh storm
#

Because the issue is specifically that the AI is being blocked by the other AI

main heart
#

ok

#

so do you have aiperceptionstimulisource on AI's enemy i.e player

harsh storm
#

Yes. And it is the only pawn in the entire game that has it.

main heart
#

would you mind posting the relevant section

harsh storm
#

And I have turned off pawns auto registering as source, as explained initially

main heart
harsh storm
#

That video is useless in my situation

#

I have 2 ai

#

The one in the front works as expected

#

The one in the back has his sight blocked by the one in the front, not detecting the player

main heart
#

hmm

harsh storm
#

I legitimately do not understand what part you are lost on

main heart
#

I get the picture. I didn't write the ai perception

#

I don't know if it sends raycasts or something else

#

if raycasting is being done, then the ai pawn in front needs to be insensitive to raycasts

#

you know the collision PRESETS

charred glade
#

Hey, has anyone else had the issue of UE4's hearing sense not detecting team affiliation properly? It treats every noise as friendly regardless of instigator's team, sight sense however is detecting fine.

main heart
#

woow, I love this channel

kindred ruin
#

Question, how would I go by doing this, in run time the player ( you ) draws out a path for the AI to follow ?

main heart
#

Interesting direction!

#

I did monkey with that in UT2004

#

tentatively though

#

basically it is a series of "hold this position" commands

#

now I think you can do that with unreal script to store the so generated "nodes".

harsh storm
#

Oops - didn't mean to reply to you ๐Ÿคฃ

main heart
#

there you go!

#

np

harsh storm
kindred ruin
#

I tried using the array of the locations to make a spline

#

But couldn't get it to work

fossil sentinel
#

OK, so now I changed the Pawn to a Character and gave it an AIMoveTo after setting a mesh, but it isn't moving now either!

#

I have the coin I'm trying to move set as a Third Person Character, and gave it this algorithm, but yet the item I'm trying to move won't move! Please help...

#

I really need to figure this out because I procrastinated for a school project, and this needs to be figured out by tomorrow...

#

Guess you could call me a real Unreal Slacker there.

charred glade
fossil sentinel
#

Oh. I see.

fossil sentinel
charred glade
#

Do you have a navmesh bounds volume in your level covering the area?

fossil sentinel
#

Yes, I do.

charred glade
#

Is your character being possessed by AI?

fossil sentinel
#

No.

#

Should I have it so it is?

charred glade
#

yes

fossil sentinel
#

Do I give it an AI Controller Class?

charred glade
#

Yes

fossil sentinel
#

OK! Now it moves, but it gets to a point and just stops. I want it to go all around, so what would I do next?

charred glade
#

All around where? What you have here just gets a random point in a radius and goes there on beginplay, do you want it to keep doing this or go around the entire map in a route?

fossil sentinel
#

I was hoping for it to go all around the map.

charred glade
#

Well that's more complicated and would probably be better fit for something other than AI

fossil sentinel
#

OK.

#

I could probably tell my professor that the objective is to chase after the coin and collect it.

#

The idea is once you collect it, the game will spawn another that you have to go find and collect.

#

Now the trick is to make it collectable, and then do the whole "Spawn another coin upon collection" thing.

ornate pagoda
#

@fossil sentinelTo collect the coin use on hit component, then you spawn an actor, to get a random point you use the function get random point in radius and then you use the function destroy actor.

rugged talon
#

if im setting up a prediction sense how and where would i implement it in the behaviour tree

bleak lance
#

how do i make an AI go arround an obstacle

#

right now hes just going into the obstacle but he can easily go arround it

fossil sentinel
#

No, wait, I've got it.

old flame
#

How can i have an actor be owned by the player and also an ai? I need to get line traces from the actor but i only get it from one or the other owner

celest python
#

Explain what you are trying to do

old flame
#

Trying to make ai and player combat but my weapon is using a bp class and it gets confused who owns it

#

I mean this is a complex topic

harsh storm
#

It really isn't. Spawn an instance of the BP class per actor, set the owner if necessary.

#

An actor shouldn't be owned by multiple actors. As a matter of fact, I'm pretty sure it isn't even allowed.

celest python
#

Yeah

harsh storm
#

So, without more information, that's about the most accurate answer you'll get.

old flame
#

Okay i got it somewhat working. Now the problem is when the player and ai traces touch they activate at the same time.

old flame
#

I'm using the same characterbp for the ai

celest python
#

Anyone knows a cool trick to select a random sequence from selector without having tons of BB keys to randomize indexes?

misty wharf
#

you could probably create a decorator or service to force a specific child node execution

#

I think that's doable in C++, ie. similar to how the loop nodes work

#

a simple way to do it would also be to use a service to generate a random number and assign it to a BB key and select based on that

opal crest
#

A decorator that just fails randomly (attach it to each node except the rightmost) would work, but it'd be a headache to control the relative prob of the nodes.

harsh storm
#

zomg's simple way would be a better solution than that epigraph imo

celest python
#

I ended up doing what zomg said

#

It would be nice if we had a Random composite

opal crest
harsh storm
celest python
#

Not sure how can I make multiple outputs like in the simple parallel

#

Source code is terrible to read btw ๐Ÿ˜‚

#

It's a very bad implementation with no comments

#

Barely understood some parts of it

celest python
#

Since you are also familiar with slate black magic

ocean wren
#

its a function in FEdGraphNode you'll need to override

#

So you're trying to create a node with multiple outputs?

#

its basically just a set of SGraphPin ... pins being the input output connectors

celest python
#

How can I tell composite to select a specific pin

ocean wren
#

have you got an edgraphnode derived class?

celest python
#

I got aUBTCompositeNode derived class only

#

It's essentially same with sequence composite

ocean wren
#

hmm, whats the base class of that?

celest python
#

UBTNode

ocean wren
#

which is derived from?

celest python
#

It's the abstract BT Node, derives from UObject

#

All nodes derive from UBTNode in BT

#

From task nodes to decorators, services etc

#

With some extra layers like UBTAuxilaryNode etc

ocean wren
#

ah right.. yeah, thats the "logical" node, not the visible one

celest python
#

Yep

ocean wren
#

it'll be wrapped in a slate version somewhere

#

but there'll be a list of inputs and outputs in UBTNode right?

celest python
#

Can't really see anything relevant

opal crest
ocean wren
#

kind of surprised it doesn't inherit from FGraphNodeBase

#

Think I'm having a seizure, state machine selector.... ugh... <dies>

opal crest
#

Haha. Sorry, didn't mean to summon unthinkable horrors into the channel.

ocean wren
#

I'm crossing myself right now

#

The power of christ compels you!

celest python
harsh storm
#

I'd say use it just so you can see zoom's eye twitch in any screenshots you post with it ๐Ÿคฃ

ocean wren
#

That's just mean ๐Ÿ™‚

#

Thing is, I'm actually a fan of FSM, but mixing them with BT sets me off ๐Ÿ™‚

celest python
#

I love FSM too but until it gets a sphagetti hell

ocean wren
#

Usually pretty quick ๐Ÿ™‚

#

actually, no, I tell a lie. Statecharts could get quite complex and still maintain usability

#

but nobody uses them ๐Ÿ™‚

lyric flint
#

hey would anybody have any ideas on how I can make the detection animation smooter and somehow turn towards the player when he moves?

night panther
#

Why do my MoveTo nodes not show all my blackboard options

#

my two other keys show but not the new object one I made

#

I have a object and vector I can choose from and selfactor

#

but my new object wont show unless its a custom move too or a different node

#

only on the simple moveto does it not appear as a optoin

misty wharf
#

try specifying that the object's type is actor

tropic flume
#

Has anyone seen the Visual Logger record to file (-EnableAILogging) getting capped? Seems like maybe there's a ~1GB file size limit...

night panther
#

thanks @misty wharf i felt like I missed that let me double check that

#

yeah was forgetting that thanks

#

you know why Icant get my custom move tos to ever finish execution? I have it fail or succeed depedning on the outcome of the moveto and it always just runs forever.

rugged talon
#

what is the benefit of pawn sensing over AI perception

harsh storm
main heart
#

touche, almost!

main heart
#

@ocean wren what do you think about this issue?

ocean wren
#

Pawn Sensing was... not great. If AIPerception is half baked, Pawn Sensing was quarter baked

main heart
#

tut tut

#

how are they gonna proceed?

main heart
#

I mean the pawn sensing guys. I hear Tom has it in his tutorials

ocean wren
#

Tom?

#

Who Tom?

#

But yeah, pawn sensing was superceded pretty quickly by the perception system. Which needs a good rewrite at this stage.

celest python
#

Looman iirc

wheat arch
#

hey guys I've got a question regarding AI behaviour. So my blueprint coder has suggested to me that a hostile AI circling around the player controller will be difficult and I should consider 'smoke and mirrors' methods to trick players into believing what is happening is happening, but in reality it's a trick

#

the desired mechanic involves a barrier or area around the player that project which stops the AI pawn from getting closer, so they will circle around waiting until they can get at you

#

how would one go about doing this? how difficult, and what measures would need to be taken for multiplayer open world compatibility?

ocean wren
#

circle strafing the player is something you'd do with EQS pretty easily. They used that approach for a Square Enix title.. sadly the presentation online is in Japanese, but I saw the english one and using EQS queries would work fine.

main heart
#

you don't know tom

#

Tom Looman

ocean wren
#

I didn't know WHICH Tom ๐Ÿ™‚

main heart
#

I think only one Tom has pawn sensing tutorial

#

in entire universe

#

or even multiverse

ocean wren
#

ah, possibly.. I haven't seen it

main heart
#

it is on udemy

ocean wren
#

oh right, probably why then

main heart
#

hehe

#

you also dislike proprietary stuff

ocean wren
#

Not always, but I'm suspicious of it ๐Ÿ™‚

main heart
#

good

#

FOSS is fun FOSS is life

wheat arch
main heart
#

read the book

#

but yeah

ocean wren
#

its the environment query system.. so the example was that you use that to select a position around the player, using EQS you can get the player relative positions on a circle and move to that

main heart
#

it is about sensing stimulus generated within the environment of a pawn

#

I am invisible

#

just so it is clear

ocean wren
#

if you look for environment query system on the UE docs you'll see some examples of what it does

wheat arch
# ocean wren its the environment query system.. so the example was that you use that to selec...

okay that makes sense, and how costly would that be in a large open world multiplayer project?

just to throw this out there on the mechanic itself so whatever is suggested would suit the needs;
player has a torch and shadow monsters cannot come within the radius of the light. it's not a hard block on the radius they can still come into it, for example to 'test' how much it hurts or make a quick swipe at the character even if it means taking damage, or being forced into a corner and then the torch light shined on them.
otherwise when not being hostile they will circle the player and wait for an opening like a predator circling a group of prey in a defensive position

#

light in general modifies where the AI pawn can and can't go, so environmental lights as well or the sun BP

ocean wren
#

There's an example of this in action if you look for the EQS might be pinned in this channel. You won't understand the logic, but you'll maybe understand what its doing

wheat arch
#

I can grasp what I'm visually presented, yea

#

I'll look up the EQS documents right now, if you'd be able to provide any point to said pinned note that would be wonderful

ocean wren
#

There was a square enix presentation, by Eric.... can't remember his name. If you're around later I'll dig it out for you

main heart
#

you may need to redefine how shadows are produced

ocean wren
#

Eric Johnson I think?

#

might be on youtube, but I'm not at my PC right now

#

in meeting at work ๐Ÿ™‚

wheat arch
ocean wren
#

Well, give me about 4 hours ๐Ÿ™‚

wheat arch
#

sitting here all night I may as well manage and research for my project know what I'm saying? aside from catching up on my books haha

wheat arch
ocean wren
#

fairy nuff

main heart
#

aaand I am invisible

#

again

ocean wren
#

you are?

main heart
#

lul

#

I am AI?!

ocean wren
#

semi transparent?

main heart
#

maybee

#

it is raining cats and dogs here

main heart
#

I may provide its link to you zoombapup

ocean wren
#

You can make characters do all sorts of fun rendering stuff..

celest python
# wheat arch I'll hold you to that! just flick ya a quick DM so you can find me easily

-> Create a circle either with EQS or just pure math by projecting points to navigation
-> Store locations in an array
-> Move to each location and when you reach increment the index integer and move to next location in array
-> Before you move do a path finding test by FindPathSync function, if path is not reachable skip the index and increment again to move to next circle point
-> If index is > length - 1 set the index to 0 and loop again

main heart
#

hehe yeah

celest python
#

Pretty much same mechanic

main heart
#

huh

#

what is happenning

celest python
#

?

frail gulch
#

i've got my my AI to follow the player effectively but they will just stand still every second or so for some reason, the screenshot below fixes the stopping problem but then makes the movement of the AI extremely jittery, is it easy enough to add "Move To" code to a task or is there a better solution?

main heart
#

define jittery

main heart
frail gulch
#

the character literally shakes left and right which i'm guessing is due to the find player task running twice

main heart
#

mhmmm

frail gulch
#

I tried just connecting move to and the task with a parallel but then they don't move at all

celest python
main heart
#

is that so

main heart
#

but if you wanna ignore, your choice

celest python
#

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

frail gulch
#

which is weird because surely if i'm making the find location task the priority in the parallel then it should work fine

frail gulch
#

right so the question is why isn't the move to node working in this scenario?

main heart
#

well check the blackboard

untold jolt
#

hy everyone ,
im having here a problem with my random ai spawn code :
glad if i cant get some help

#

thats my code who is i made inside the level blueprint and somehow it doesnt work

misty wharf
#

It's a bit difficult to say without more details, but my guess is that your player pawn is not a SimpleAI

rugged talon
#

How does dominant sense in ai perception work

ocean wren
#

Pretty sure its just a sort index, so that if you get competing senses there's a tiebreaker value for which one has priority? vague memory of it though, so check the code.

rugged talon
#

ok thanks

#

also im trying to get my ai zombie to go towards the target thats closest to it. how would i set that up

#

i already have set up the logic for the zombie to only detect friendlies and store them in a variable

ocean wren
#

friendlies??

#

you want it to eat other zombies?

#

Anyway, that question is the kind of thing you'll find in literally every AI tutorial on YouTube, so suggest you avail yourself of those. It'll be easier.

hybrid grove
#

Question. Is the EQS system an alternative to Behavior Trees?

harsh storm
#

Not really. It's used to get data about the environment. It's more of a compliment to AI systems overall.

hybrid grove
#

Ok thanks.

#

Does it require a navmesh? Or could it detect objects that are not in a navmesh environment? like a vehicle, or aircraft?

misty wharf
#

It depends on what generators and tests you're using

#

Some of them make use of navigation data, but many don't

misty wharf
#

Has anyone figured out how to force an update on AI perception if the FGenericTeamId of some actor changes?

#

Eg. I want certain actions to make the player to be perceived as hostile

#

It seems the only way to do it is to unregister the player from the entire perception system, and then re-register? Seems kinda iffy to do that :P

#

Ah, looks like you can do

PerceptionComp->ForgetActor(ActorWhoIsNowHostile);
PerceptionComp->RequestStimuliListenerUpdate();
#

Oh. Actually you don't even need to ForgetActor, just request the stimuli listener update

#

I thought I tried it and it didn't work but it would appear to be working now :P

rain wyvern
#

Is it possible to have a navmesh on land and a navmesh on a boat and link the two while the boat moves so enemies can go between land and boat (if the boat is nearby)?

rain wyvern
#

Or have a baked navmesh on a moving object?

celest python
#

@ocean wren Can you add me to your friend list if possible? I've mentioned a studio about you and would like to send their message to you, I remember you were interested in job offers a few weeks ago

main heart
#

cmon

#

you think it is coincidence that I lost my job and the message just pops here

ocean wren
#

morning all

ocean wren
#

You can add me apparently ๐Ÿ™‚ its what my students usually do

#

goddam it, its python time again ๐Ÿ˜ฆ

#

Parsing imdb data from a zip file, turns out the imdb scraping library I was using was waaaaay too slow. I've got thousands of movies to get through

#

So, its back to zip file unpacking json files because there's the same info in the archive. But now I need to add a MovieNet import settings dialogue in PyQT so it isn't quite so goddam poor usability wise

celest python
ocean wren
#

Yeah, for the automated cinematography initially, then for AI behaviour generation later

#

But generally useful for being able to learn from video

#

i.e. for robotics demonstrations, or for storytelling, or for action recognition or captioning