#gameplay-ai

1 messages ยท Page 157 of 1

crimson galleon
#

quick cash concepts may change, but its the same allure

#

why work for it when you dont have to?

ocean wren
#

hate them all ๐Ÿ™‚

crimson galleon
# ocean wren hate them all ๐Ÿ™‚

you want to be slave to corporate all your life? dont you hate that idea? wouldnt you rather make money without any sort of effort? arent you lazy? dont you want things and have no sense of exchange? you mean you're not so selfishly motivated?

#

baseball cards.... beanie babies... NFTs

ocean wren
#

no, I hate corporate too ๐Ÿ™‚

crimson galleon
#

lol

crimson galleon
ocean wren
#

right, night all

green vault
#

why would someone use a black board key to get the variable over getting it from the actor itself in a task?

celest python
#

You can't have modularity and re-usability if you bind your variables to your actor class

#

For example in Crysis, both Korean soldier AIs and flying alien AIs are using same BehaviorTree

ocean wren
#

You could have a blackboardinterface that the AI used to get its values from the actor?

celest python
#

That could be a workaround but why would you do that? You can just store the common key names and pass values to BB via BlackboardComponent. Inheritance should stay between blackboards imo while actor/character classes can be completely different

#

Not doing that would not be a disaster or a very bad thing but having a proper BB that holds variables is a good practice imho

ocean wren
#

I'd argue that UE implementation isn't a proper BB in the first place

celest python
#

Never saw other implementations but UE's look like a fancy UDataAsset

ocean wren
#

well, the fact that you cant use arrays pisses me off

celest python
#

Yeah, also using raw FNames instead of FGameplayTags also annoying

ocean wren
#

the fact you can't share a blackboard with other actors pisses me off

celest python
#

Since AIController is less likely to be seperated between inheritance branches

ocean wren
#

Yeah, its just a bullshit limitation that never should have been

#

again, you could add an interface to AI controller I guess

#

but still, it pisses me off ๐Ÿ™‚

celest python
#

Sure, we're paying %5 of our income to use the engine in the end ๐Ÿ˜„ It sucks UE ignores features like this

ocean wren
#

only past the first mill.. I can live with that

#

and frankly, its our responsibility to make these things, not epic's

celest python
#

They rely on "developers able to PR or implement their own solutions since we provide source code for free" mindset

ocean wren
#

And you know what? they're right

celest python
#

Since they provide premium support to AAA by UDN no one complains either

ocean wren
#

its what sorts the men from the boys (and girls)

celest python
#

It's right, but lets say I'm a project manager instead of a developer, I'd need to pay extra money to my developer to do what Epic had to do in the first place

ocean wren
#

I doubt UDN offers much value to be honest, other than "we're really screwed, give us a hand" stuff

celest python
#

For very specific and low-level engine things they really provide god-level support, from what I've heard of

ocean wren
#

Well, its OUR responsibility to make our games right? not theres. If this is a game-required feature, then get on with it

#

Yeah, they're the knowledge provider of last resort. But I suspect that's mostly only useful when you're in the shit with the innards

#

usually UObject and blueprint's grossness ๐Ÿ™‚

celest python
#

That makes them comfortable and dismiss the game/project-breaking issues

ocean wren
#

well, yeah, I'd berate them for not having stable features

#

but having not implemented something you need? do it yourself!

celest python
#

Yeah ๐Ÿ‘Œ ๐Ÿ˜„

celest python
ocean wren
#

at least you can, unlike with Unity say

autumn ibex
#

I'm using the "MoveTo" node in the behavior tree.. and it works fine if I set the collision capsule size to "1 unit" as the AI are able to easily walk past each other and don't get stuck. but I don't want to set the capsule to 1 unit as they'll clip into the world

waxen saddle
#

It looks like you have avoidance on?

#

I think its RVO something, a setting on the actor

autumn ibex
#

lemem check.

#

Nope, I have it disabled ( by default )

waxen saddle
#

hm

autumn ibex
#

these are my Character Movement settings

ocean wren
#

You've got your capsule settings wrong

autumn ibex
#

my capsulse settings

ocean wren
#

Check it by standing one on top of the other and you'll see, it won't fall

autumn ibex
#

hmm..

waxen saddle
#

Is it set to dynamic obstacle on the capsule?

ocean wren
#

your capsule is set to block pawns

#

and it is a pawn

autumn ibex
#

no, it's a PAWNAI

#

I made a new category

#

PawnAI is non-solid to each other

#

and they CAN go through each other

ocean wren
#

is it derived from pawn?

autumn ibex
#

my Actor is yes

#

My AI actor is derived from pawn

ocean wren
#

The collision is going to be on your actor, not your ai actor

autumn ibex
#

oh hmm

ocean wren
#

aicontroller

autumn ibex
#

ah lemme check that

#

so I need to put the Capsule collision on my controller

#

NOT on my Actor

ocean wren
#

well, you want it on your actor, but if you have it on your AIcontroller too, then it might be that its colliding between the two

waxen saddle
#

Dynamic Obstacle is probably on

autumn ibex
#

hmm i checked it's off

waxen saddle
#

hmm

autumn ibex
#

is that setting on the Capsule collision?

ocean wren
#

did you derive from detourcrowdcontroller?

waxen saddle
#

yes it is

autumn ibex
#

no, It's derived from AIController

ocean wren
#

Yours definitely look like rigid body collisions

autumn ibex
#

this is what my AI controller look like

ocean wren
#

and not just avoidance

#

and your collision is huge ๐Ÿ™‚

autumn ibex
#

for testing purporses

#

just to show the effect

waxen saddle
ocean wren
#

and RVO is off?

waxen saddle
#

Heres my capsule collision

autumn ibex
#

yes, RVO is off

waxen saddle
#

it really looks like RVO

#

its off in game too? not turned on with code somewhere?

ocean wren
#

does doesn't it..

autumn ibex
#

lemme check

#

I dont even know what RVO is.. so I'm sure it wasnt turned on accidentaly

#

is there a global setting for it in the Project settings?

waxen saddle
#

It makes the things adjust their path to not touch other things on their way to places

autumn ibex
waxen saddle
#

hm

autumn ibex
#

ah shit.. looks like someone did enable Avoidance

waxen saddle
#

all good

#

i could kinda tell right away lol

autumn ibex
#

thanks for your help guys

#

gonna try disabling that

waxen saddle
#

๐Ÿ‘

autumn ibex
#

boom! fixed

#

god.. thanks for your help

waxen saddle
#

yaay

ocean wren
#

I'd use DetourCrowdController instead of RVO anyway, it deals with blocking a lot better, but needs some tweaking from the defaults

autumn ibex
#

didn't realize it could be enabled in code

waxen saddle
#

yeah the inspector is annoying sometimes that way..

#

but you could ask them to do that stuff in the class constructor

#

then it wont mismatch at begin play

autumn ibex
#

ill look into that detourcrowdcontrooler, thanks

#

but tbh, I kinda prefer having the AI non-solid as I'm used to that in Source games like Left4Dead

ocean wren
#

just be aware the default detour settings Epic did are.. kinda wonky

autumn ibex
#

they have some push-away code when non-solid actors are too close to each other

waxen saddle
#

yeah they were always non-solid with your settings

#

just actively avoiding eachother

ocean wren
#

yeah, I usually turn off rigid collisions and do a force-penetration seperating force myself

autumn ibex
#

and don't have to run expensive detour code.

ocean wren
#

expensive? I guess it depends on the scale of your crowd

#

but yeah, simple seperation force works well enough, works in all of valve's games and players live with it.. so yeah

autumn ibex
#

yea, plus I have these prety narrow corridors

#

where I want tons of AI running through

#

and I'm not sure any detour algorithm will work well in those spots

ocean wren
#

well, it'll definitely work better than RVO, but narrow corridors are always going to look wonky unless you're happy for agents to pass through each other

autumn ibex
#

yea, I definitely can live with that.

#

it's not so noticable when they're moving..

ocean wren
#

its one area of focus for crowd agent research

autumn ibex
#

only when they stand still where it looks odd, and that's where I run the seperation code

ocean wren
#

yeah, I do allow my agents to pass through, but have them swap if they're stuck after a while

#

and use a seperating force to push them apart

#

just in case the seperating force causes a blockage

autumn ibex
#

ah, good point

ocean wren
#

the old switcheroo is pretty common ๐Ÿ™‚

green vault
#

is it okay to have multiple services on 1 node ?

crimson galleon
green vault
#

ok

mossy nexus
#

it's ok, but not necessarily efficient

#

but you're not breaking any laws by doing it

#

also never expected to see gooseman on this discord

ocean wren
#

after he died in that plane accident with maverick?

runic flare
#

Is it possible to set up an Observer Aborts with a boolean value change?

#

I can't figure out how to do this...

#

seems like I can only use IsSet or IsNotSet rather than the condition itself changing

#

I see I can observe value changes for numbers or strings

ocean wren
#

doesnt isset use a bool?

misty wharf
#

I'm fairly sure this was possible to do in BT's with the Blackboard decorator at least? ๐Ÿค”

autumn ibex
#

any way to prevent the navmesh from creating areas on top of certain static meshes. I don't want a nav area on top of my cars ๐Ÿ™‚

ocean wren
#

navarea set to navarea_null

#

navmodifiervolume that is

autumn ibex
#

ah thanks ill look into that

runic flare
#

but maybe IsSet is false when the key itself is false, even if the key was explicitly set to false

#

that would be kind of confusing but I'll test it out

crimson galleon
runic flare
#

ohhh

#

interesting

crimson galleon
#

Zoombapup will come down with the axe if i am wrong though ๐Ÿ˜‹

ocean wren
#

Yeah, I think you're right, I'm a bit vague on the details, but it sounds right to me

runic flare
#

Setting up a test now, will report back

ocean wren
#

probably easier just to check the code ๐Ÿ™‚

runic flare
#

I started to, but it's a bit of a jungle

ocean wren
#

get used to it ๐Ÿ™‚

runic flare
#

Might be this, in which case you'd be correct

ocean wren
#

seems so ๐Ÿ™‚

crimson galleon
#

trial and error wins me another ๐Ÿ˜

ocean wren
#

You win this one, but I'll be back!! muhahahaha!

runic flare
#

thanks guys

crimson galleon
#

sure thing, good luck

rustic lark
#

My ai is not moving on loaded levels

cerulean girder
#

did anyone ever help you with this, or did you figure it out? becuase im having the exact opposite issue...does path exist is returning true even though point b is in the air...as if the decorator is not taking Z into account at all

crimson galleon
#

yeah, ill get true even if the player is on a separate island of navmesh from the ai, clearly failing to move. I ended up making my own task using the move to function and then base it off of that

cerulean girder
#

yeah this node is completely wonky, im just going to EQS it...its not a prblem when my ai is ranged but if the flying character is above a melee ai...the ai just spins around in circles underneath...atleast I can fix that fairly easy....i wonder how exactly this node is intended to be used cause it clearly doesnt work in my case

#

if it works at all

crimson galleon
#

I feel like i had it working at one point but yeah a bit tricky

crimson galleon
#

it can be in either place

#

but a task is a self contained bp graph (at least for those of us that dont cpp)

#

i have a few tasks which cast the controller to the specific ai class so i can call functions within it

#

uhm

#

letting the bt do as much work as possible is what i try to go for, but sometimes i have to do some things in the ai class

#

probably cleaner to manage these aspects in one place if possible

#

but behavior trees are not as state based as i thought, they can only run one task, but its more of.... deciding which task to be performing

#

ive been applying my previous familiarity of fsm concepts and its not too different for the most part though

crimson galleon
rustic lark
#

I have a problem with my ai. If i play my game from a loaded level the ai dont want to move.

marsh aspen
#

So, i wanted to know more about navigation. And in the project settings you can set differents agents, you can also create new nav area and make them only for a type of agent. My prob is, once i've set up the agents in projects settings, i don't find how to tell an actor that it's part of this agent class. The result is, no one move anymore, any tip ?

misty wharf
#

afaik you have to just set the character's settings so that it matches one of the agents you've configured and it'll use the appropriate navmesh

marsh aspen
misty wharf
#

Wasn't it in the character movement comp or the character class itself? I forget but it was definitely in there somewhere

marsh aspen
#

my prob is, i can't "easily" assign each actor to be from a part of a city and another actor to be from another one. I thought the agents were just a little enumeration to set up, but it seems way more complexe

misty wharf
#

There is more exposed in the C++ side

#

I was also looking at this at one point and you can get the agent names and such but it didn't seem to have any really obvious way to say "use this navmesh"

#

other than getting certain agent props and then returning them from the actor itself

cerulean girder
crimson galleon
cerulean girder
#

make a target for the ai that uses it and place it high enough where you wouldnt consider that "land reachable" see if your ai thinks there is a path anyways

#

place it above nav mesh area that can be nav'ed tho

#

and see it return true

crimson galleon
cerulean girder
#

instead of eqs i just created a condiational check that checks the distance in Z

crimson galleon
#

That is also something i do :)

cerulean girder
#

oh thats probably why it seems like its working for you

#

cause youre checking the Z distance after

crimson galleon
#

Well ive tested with that btd

#

Without*

#

But ill check it all again, it should simply not work if it cant find a path

cerulean girder
#

idk then, i debugged it for like an hour and no changes in the settings made the ai realize that 2000 units above a nav mesh is not reachable

crimson galleon
#

Oh i believe it is finicky

cerulean girder
#

so i made the condiational check and it worked out great

crimson galleon
#

Some level of magic is at work

#

Yeah but i also dont want the ai to try navigating if the player is simple unpathabke

cerulean girder
#

eqs knew right away tho, but adding an expensive call for something i can do with a distance check seemed like overkill

crimson galleon
#

Navmesh check is fast

#

Eqs for just a valid path shouldnt be that bad

#

Anywho, ill get back to you when im on computer

cerulean girder
#

have a nice holiday ๐Ÿ™‚

crimson galleon
#

Back atcha

ocean wren
#

Can't believe its almost New Years

#

Been busy prepping some lectures for early next year and thinking about plans within plans ๐Ÿ™‚

#

Thats if we survive the C-vid situation here in the UK

crimson galleon
crimson galleon
ocean wren
#

lots of killing off grandma and grandpa, lovely ๐Ÿ™‚

crimson galleon
#

already seen more turmoil around me than prior - domestic/relationship problems with people and neighbors for example, lack of working class, more unemployed beggars - its risen drastically now that its holidays

#

eh yeah that too

#

had i think 3 or 4 visits from the fire dept here and not to the same place

ocean wren
#

I'm just wondering if we'll be having another lockdown at work.. that'd be pretty unpopular with the students

#

Likely be early in the new year though, so we'll have to wait and see

#

going to wear an N95 for a bit though ๐Ÿ™‚

crimson galleon
#

lol my campuses just opened up a day before finals were over for the holidays

ocean wren
#

Going to have to pull my finger out and get some papers published this year, which is a tricky task at the best of times

crimson galleon
#

Hell yeah! Modular BTs online, now to hook em up to the data tables ๐Ÿ˜

crimson galleon
#

i tend to lean towards a manager class that solves locations, sort of like formations

#

i havent tried, but i suppose EQS could work, but im pretty sure it wont help for being in air

ocean wren
#

What kind of behaviour do you want? can you find an example on YouTube in another game?

#

I've worked on flight sim AI before, but I'm guessing you're not talking about that?

#

You probably want to look into steering behaviours

#

What you've basically done is add a seperation force ๐Ÿ™‚

#

makes sense collision wise

crimson galleon
#

trying to make my own BT decorator node and i dont get how to make this for my own (in bp)

ocean wren
#

You don't, its in the base class?

crimson galleon
#

after scouring, i guess its cpp locked from me ๐Ÿ˜ฆ

ocean wren
#

Well, it'll just be there by default

crimson galleon
#

here's my custom cooldown decorator

#

lol shit, hang on, bad example

ocean wren
#

I saw a presentation where they suggested putting stuff like cooldown times in a BB key also, can't remember the reasoning though ๐Ÿ™‚

crimson galleon
#

here's my custom blackboard decorator

#

here's the ue one

#

i just made tick check, to see if that works the same way

ocean wren
#

Oh I see, you mean the Notify observer is missing?

crimson galleon
#

yes

#

i think its centered around the events that i can override.... since thats the only thing i can really alter

ocean wren
#

I'd have thought it would be available by default in a decorator... maybe you derived from the wrong class?

crimson galleon
#

pretty sure thats the one

#

nothing below that

ocean wren
#

Looks right

crimson galleon
#

ive been making tasks and services no problem

#

this is more elusive

ocean wren
#

You'd have to lookit the code ๐Ÿ™‚

crimson galleon
#

well, my cooldown works fine

#

yeah...

#

i guess ill check the git

ocean wren
#

I might have to break open UE5 today and make something

#

Need to record a new years video ๐Ÿ™‚

crimson galleon
#

writing a better nanite renderer eh?

ocean wren
#

Kind of want to mess around with some control rig proc anim stuff

crimson galleon
#

id be down to check that video out

ocean wren
#

Got to make an annouce video for new year for new consultancy business and maybe do some discussion on the multiverse, because its on my mind

crimson galleon
#

looking like it is tick

#

this shit is so fragmented

ocean wren
#

oh right, so override tick and it shows up?

crimson galleon
#

oh im still reading the code....

#

i doubt im going to get that to show up

#

i made the same entries as in the original

#

dont think there's a way to expose any of it

ocean wren
#

yeah, honestly it needs a proper re-write, but that's never going to happen ๐Ÿ™‚

crimson galleon
#

seeing that they're doing something else right?

#

kinda feel they stopped on the perception system just like pawn senseing

ocean wren
#

yeah, I saw the massAI thing that Mikko Mononen was working on

#

I don't know if they're redoing the tooling for behaviour though

#

seems more like navigation stuff

crimson galleon
#

i saw some of Mikkos blogs, its over my head, but they sound like more that what is in engine

#

lots of navmesh stuff indeed

ocean wren
#

Well, Mikko did the open source navmesh generation library that's in both UE and Unity, so he's got form in terms of navigation

#

he did detour system too

#

And to be fair, the navigation stuff could certainly use a boost to functionality

#

but I see way too many problems with people struggling to make basic behaviours, feels like having some work on behaviour specification is needed

crimson galleon
#

gotcha

#

the man is the maker of navmesh it sounds like

#

owning the concept at least

#

makes sense why eric referenced his solutions for death stranding

#

i actually have the same kind of functionality of my BT all in BP but i wanted to learn BT so i recreated it and aside from some friction, its a bit better than my BP version

ocean wren
#

Well, navmesh as a concept has been around for ages, but Mikko did the recast library while he was at CryTek and open sourced it.. everyone then used it ๐Ÿ™‚ because he was kind enough to use a permissive license

crimson galleon
#

i was thinking the debug view for BT would be helpful... but it really isnt

crimson galleon
ocean wren
#

You can always write a better one

#

I've extended the visual logger a few times, its kind of fun to do

crimson galleon
#

probably not with 0 cpp skill

ocean wren
#

ah, yes, that would be a problem ๐Ÿ™‚

crimson galleon
#

i could go back to BP and continue that route, but still, this is a minor snag

#

ive already considered workarounds, but if i could, id like to have my own blackboard decorator for condition checking

#

need to remake most of the ue nodes so i can drive them from data table lookups

simple crest
#

the worst time to start learning c++ is never elmorisefire

ocean wren
#

correction, its ALWAYS the worst time ๐Ÿ™‚

#

so might as well get on with it ๐Ÿ™‚

crimson galleon
#

But yes one day

#

Im not trying to be or get work as a programmer though

ocean wren
#

Best not, its for the birds ๐Ÿ™‚

crimson galleon
#

riiiight

#

they said that about art

ocean wren
#

art is definitely for the birds ๐Ÿ™‚

simple crest
#

the only truly valuable job position to be skillful at is ideas guy

crimson galleon
#

looks like my custom dec is firing on tick, but its not updating when it goes false...

ocean wren
#

ideas guy ๐Ÿ™‚ hahahah yeah, I've seen plenty of those. No real skill but want to be in charge because they are the "ideas guy"

crimson galleon
#

your quick ๐Ÿ˜œ

simple crest
ocean wren
#

Its pretty much every "job" post on most of the forums I've been on over the years

#

wanted: team of 15 to make my game. I don't have any skills, but I'll be the owner and the ideas guy.

#

payment: zero ๐Ÿ™‚

crimson galleon
#

will be in credits

simple crest
ocean wren
#

yeah, "we'll add your name to the credits" is a good one

simple crest
#

exposure

crimson galleon
#

they wont

#

thats someone elses job anyways

simple crest
ocean wren
#

worth quitting a job eh?

crimson galleon
#

no thank you

ocean wren
#

please dont

simple crest
#

oh fuck yes gimme that hot free nitro

ocean wren
#

it says dicsord ๐Ÿ™‚

crimson galleon
#

i mean, there's a target on them already...

ocean wren
#

that's a new one

crimson galleon
#

.ru hahah nice one

simple crest
#

<@&213101288538374145> you aren't all online/green yet so maybe they're going slow with this one

ocean wren
#

totally legit

crimson galleon
#

speaking of derailing AI

simple crest
ocean wren
#

AI is for the birds

fair zealotBOT
#

:no_entry_sign: MC Reaper#2506 was banned.

ocean wren
#

I mean literally, I've worked on bird AI before ๐Ÿ™‚

crimson galleon
#

thanks Roy! your awesome!

night hazel
#

yeah, that was the first ping about it

ocean wren
#

Thank you kindly, sir!

crimson galleon
#

oh does everyone not ping mods?

night hazel
#

you cant ping at-everyone

#

but at-moderators works fine

simple crest
#

sometimes they only post in one channel every minute or so... you know, for extra authenticity

night hazel
#

just, immediately ping moderators if you see that

crimson galleon
#

the offender pings at-everyone, so i figured no need

night hazel
#

only moderators can do at-everyone

#

that ping did not go out

crimson galleon
#

oh shit, ok

ocean wren
#

Man, that's a job i don't miss. Having to moderate the old indiegamer forums.. ugh, it was like 99.999% spam

crimson galleon
#

lol, i see, thats a use

#

user*

night hazel
#

if someone who cant ping the role tries to, it'll hilight like it did ping, but it wont ping

crimson galleon
#

gotcha gotcha

simple crest
night hazel
#

saves all y'all from getting notifications all the time ๐Ÿ™‚

crimson galleon
#

thanks for the info Roy

ocean wren
#

bots are actually quite easy to make for discord

crimson galleon
#

explains all the scammers

night hazel
#

the scammers are compromised accounts

crimson galleon
#

oh that sucks

ocean wren
#

I did a livestream for my students and wrote some python code to do a discord bot based sentiment analysis

night hazel
#

the reason we use manny is because it gives them a way to appeal the ban. we get a lot of "my account was compromised, i didnt mean to scam" appeals

ocean wren
#

then fed that into unreal engine in the last stream

crimson galleon
#

mhm

ocean wren
#

next stream, we are making a crowd battle sim

crimson galleon
#

TABS?

ocean wren
#

like that yeah

#

using fun particle system based AI

crimson galleon
#

oh, wasnt someone asking about that?

ocean wren
#

you can use a skeletal mesh component and anim blueprint in particles now, since 4.26

crimson galleon
#

hey, thats the version im on ๐Ÿค”

#

ive had the idea of doing some kind of swarm like enemy

ocean wren
#

its actually kind of easy now

#

niagara is kind of weird, its massively powerful, but really complex and of course the documentation sucks and the usability is a bit.. weird ๐Ÿ™‚

crimson galleon
#

yep, havent dove in after the last time

ocean wren
#

I keep giving it a go, but sometimes it just doesn't do what the hell I expect it to

crimson galleon
#

lol

main heart
#

What are the freaking laws of AI?

ocean wren
#

Law #1 NEVER ask what the laws are. Law #2 See Law #1

ocean wren
#

25% cat, 27% dog

celest python
ocean wren
#

thimble the hamster?

crimson galleon
#

Theyre still asimovian iirc

cyan sigil
#

Merry christmas. Has anyone been able to implement GOAP in unreal? How?

simple crest
#

Tried. Got annoyed by it. Built a utility ai instead.

How? 3-12 months of effort I guess? ๐Ÿ˜„

misty gale
#

I havnt dove into utility ai yet but o the surface it reminds me of alot of the same stuff goap was doing

midnight scroll
#

I'm wondering if anyone has any insight on AI behavior organization. Behavior trees initially seem nice until you need to start doing multiple things at once. For example, a simple bot that runs and shoots at the same time while staying faced to their target. This seems to require a few parallels, and a lot of copy pasted nodes to slightly alter behavior for conditions. I find myself wanting to convert a lot of this over to tick based actor or component behavior to simplify the logic pattern.

#

Should I maybe consider writing much larger task nodes that encompass this more complex behavior? I just find the large huge sprawling graphs, or having to make several large smaller trees to subdivide logic in very disruptive and ugly to follow.

crimson galleon
#

i have that sort of thing, there's a look at and jump check that I have in BP, the BT can talk to them (start/stop) but they dont exist in the tree. Run Dynamic might also work to manage calling the same kind of ~~task ~~ tree under different branches in your main BT.

celest python
#

I rarely do parallels, not because I don't like them, just most of the times my BT usage is not above "moderate" complexity and whenever things get complex I try to decouple it from BT

#

Lately I was thinking about a project specific FProperty (for bools) listing on decorators so I could set them to true/false in the editor without writing a custom decorator for each boolean in my character

#

So I don't have to signal bWantsToShoot bWantsToRun manually by writing etc.

midnight scroll
#

My first and real use of BTs was when I was messing around creating "Customers" for a shop style game. This actually worked out incredibly well because these pretty much did one thing at a time. Spawn, find store, run to store, find shelf, navigate to shelf, decide to buy or not, repeat last couple steps with a chance to decide to leave the store. It was very linear and behavior trees made that incredibly easy. But I'm really finding that complex behavior trees where the AI needs to handle multiple different states all at the same time is just.. stupid convoluted. And I'm only at aiming, moving and shooting. Already considering how to work a lot of other states in that I need to consider later is making BTs look like a terrible idea.

celest python
#

I wonder how Epic did their shooting bot AI on UT -- I was never be able to compile it since it requires vs15 ๐Ÿ˜„

celest python
crimson galleon
#

i do suppose thats what a parallel is for, but its limited to a task. I had jump checking as a BT branch, but it would interrupt other behaviors and i needed conditions and services to determine the series of tasks. I offloaded that from the tree, only because i always need it running, so it made sense to just do it in BP since it interrupts other states. Since it fires regularly, i check if the AI is moving (not attacking and some other stuff) to allow this check to perform. I have both melee and ranged attack logic, and tried to keep that all together, but found it easier to just have a look at task call the event in my BP, the animation notify calls to stop the look at.

#

so i do have this stuff spread around, but i feel thats not unusual when it comes to communication

#

overall, there's less masses of bp graphs, and more concise little things

celest python
simple crest
#

Epic's ai module has some resource class somewhere but I don't know what it's for

#

When I built my thing I set it up so an ai has resources (head, arms, legs) and each action requires one or more resources so it becomes possible to "move" and "reload" and "look at" independently

#

I never figured out how to do anything quite like that with ue bt's

cyan sigil
#

From what i understand, GOAP is like Astar but it navigates differentq states instead of nav points. Utility is where you give all possible actions a score and pick the one with a higher score?

simple crest
#

Yeah that's the most basic summary

misty wharf
#

The resource system afaik just allows you to lock/unlock some resources which does things

#

As far as I can tell the two builtins are logic and movement, which lock/unlock BT logic and movement respectively

main heart
#

I need to find eight more

#

Or five more, depending on the context

crimson galleon
main heart
#

Names?

crimson galleon
#

Attributes?

main heart
#

OF the facets, I mean

#

Sure

crimson galleon
#

I dont recall them but i remember reading that there are 8

main heart
#

ah, my manners need polish

#

Nevermind!

shadow sierra
#

Anyone know if its possible to factor in a nav agent's radius when projecting a point to a navmesh?

I'm trying to spawn characters onto a valid nav area and using the appropriate query to project random locations onto the nav mesh, but as you can see the character is spawned right over the edge of the nav area

mossy nexus
# midnight scroll I'm wondering if anyone has any insight on AI behavior organization. Behavior tr...

Just to throw my hat in the ring: I generally try to think of how real life behaviors would be and model trees based on that. I think starting from a point of a FSM is a fallacy (as pointed out by others, repeatedly, in this channel). If you're finding yourself doing multiple complex behaviors then perhaps it's worth rethinking if those behaviors truly are relevant at exactly the same time. I use very few simple parallels, and usually only in edge cases

#

I find that many things we think of being parallel in life often happen in sequence

celest python
#

For AI states its alright but I have those vars in my character class

#

Some of them are replicated

ocean wren
#

states? ptooey!

crimson galleon
#

its so clean ๐Ÿ˜

bold dove
#

Hello guys! I'm working on a fnaf game. I made a ai in blueprints, but i can't solve how i can make the jumpscare because my ai is taller than the player, and i want to made it, if my player get jumpscared, he move up a bit. Anyone can help me?

celest python
#

I think this is a game design question rather than UE's AI framework or AI behaviors

#

I didnt play fnaf but this could be solved by moving camera to upside or via animations?

bold dove
#

Hmmm. Maybe moving the camera is the solution. Thank you!

bronze yacht
#

The most dreaded part of my project has come, an AI

simple crest
#

ez just code an ai to write your ai for you

bronze yacht
#

This is actually the one thing I've never done before

bronze yacht
#

I was gonna watch Ryan Layley's AI overview, anyone have a resource they really liked?

crimson galleon
#

you plan on using BT?

bronze yacht
crimson galleon
#

i wouldnt expect from any one video to achieve your entire AI, that one helped me understand each area

bronze yacht
#

Thankfully, it's a simple AI

#

Remember Slender: 8 Pages?

crimson galleon
#

i know of the game

#

i know that there are many variants

bronze yacht
#

It's a simple AI with simple rules. Teleports when you're not looking, gets closer with each page or as a function of time

crimson galleon
#

i know not of the actual AI, i always thought it would simply move to player constantly, didnt know it teleports

#

and i thought it only got faster after each page

#

but hey, sounds like you know it

bronze yacht
#

It's probably more complex than that, but simple goals first

crimson galleon
#

true true

bronze yacht
#

I'd like to make it more complex, but considering I've never made an AI before

crimson galleon
#

well, complex does not necessarily mean its better

#

test a simple AI, see how it feels

#

youll get a sense for what it may need, or ideas of how to make it interesting

#

its all problem solving as usual though

quasi pecan
#

I am having a weird issue and I can't pinpoint what is causing it, I have a companion AI setup that you can switch to and it's working all fine but sometimes if I switch to the companion, the other character's AI stops working. If I use the debugger then to see, the BehaviorTree shows paused and I don't understand what's causing that because I have called the RestartLogic from brain component to restart it.

ocean wren
#

Are they both using the same BT by any chance? if so, I wonder if its that you need to run the BT as instanced in some way?

#

Usually it tries to share BT's amongst AI, so I guess if you pause one, maybe it pauses them all.

#

Just speculation though

celest python
#

Conrad's link is awesome

quasi pecan
quasi pecan
#

It confuses me further because it works 1 time and refuses to after that first time. Meaning, when I try it once I am able to switch between the characters just fine and the other character does it's AI thing, but as soon as I swap a second time, the one I swap from, stop running it's BT.

#

I am able to switch between the two just fine but I can't have their AI's running.

ocean wren
#

I guess you'll have to break out the debugger and take a look at the code

quasi pecan
#

Yeah it seems like that.

quasi pecan
ocean wren
#

Interesting, thanks for the info

celest python
#

Anyone tried to run BT without an AIController?

#

After several days of brainstorming I decided BT is a good choice for some elements of my game director but using AIController makes the code more messier than ever

ocean wren
#

Why does it? its just an actor

celest python
#

Game Director needs to spawn AIController for each player, just accessing it and storing references (and maybe communicating with it) makes the game director subsystem sphagetti

#

But not much of an issue, just wondered if anyone ever tried it

ocean wren
#

?

#

Well, yes, AIController for each AI... and the problem with that is?

celest python
#

Not each AI, I want to use BT to help Game Director prioritize player's behaviors (for example if player is not fighting during a combat BT will notify game director and game director will focus to this issue). For they will communicate with a UActorComponent that added to PlayerCharacter

#

I need to spawn an AIController for each player character in the game

worthy python
#

hello. I created my own EQS generator but i can't debug found points with EQS Testing pawn. What i need to do to make it possible?

ocean wren
#

Why can't you use the pawn?

mossy nexus
#

Even for my AI directed pawn I use a BT component rather than through the AI controller

#

but, an empty default AI controller is necessary for AI BTs to work

celest python
crimson galleon
#

Morning AI ppl

misty wharf
#

I think custom contexts work just the same, but obviously Get Player Pawn will return nothing if you're not in play mode

#

so you could add some logic to accomodate use of the testing pawn and have the context return something else if player is null

ocean wren
#

Yeah, I just made something derived from EQS Test pawn and added a "target" to it, that I use as the target for the query etc..

#

with contexts and whatnot, basically the same way I do for AI characters

cedar quartz
#

does taking a sha256 hash of a number and then the hash of the result over and over accomplish the same thing as using an rng with a seed multiple times?

mossy nexus
#

an excellent AI question I believe

#

!8ball does taking a sha256 hash of a number and then the hash of the result over and over accomplish the same thing as using an rng with a seed multiple times?

fair zealotBOT
#

@mossy nexus, :8ball: My reply is no.

mossy nexus
#

well then

celest python
#

Cranz lmao ๐Ÿ˜‚

cedar quartz
#

roger

mossy nexus
celest python
mossy nexus
#

blackboards can be handled directly through BT assets

#

I haven't actually taken a look at what AI controller does with BBs as I at the time just wanted to separate BT from AI

celest python
#

Hmm, so you just created the BehaviorTree component in the actor and did not implement anything related BBs on AIController?

mossy nexus
#

I have a BT component that handles starting a BT outside of the AI controller. BB is routed in through the BT asset pointer

#

And... No, my AI controller currently is blank

#

I'm debating whether or not to move logic into it atm

celest python
#

Alrighty, thanks

mossy nexus
#

that being said I use no AI controller features even in the BT. If it wasn't because pawns needed an AI controller to function I'd not need them whatsoever

celest python
#

I'm thinking to get rid of AIController for some of my pawns too

#

I realized removing BTs completely and some of the AIController logic could provide ~%15 performance increase

mossy nexus
#

that's interesting

celest python
#

Thats for my case though, you know my game mechanics

#

It's mostly because of zombie horde

mossy nexus
#

sure, I was just thinking how removing the AI controller would affect other things. you'd need custom MoveTos

celest python
#

You can use built-in AITask for MoveTo

#

UAITask_MoveTo

#

What MoveTo task node is doing just creating it and running it if you enabled bUseGameplayTasks on project settings

mossy nexus
#

doesn't that require a controller?

celest python
#

iirc no

#

It requires pawn

mossy nexus
#

huh

celest python
#

It might trying to access controller inside through by using pawn reference

#

Its been a while since I analyzed it

mossy nexus
#

I'll have to look into it

#

I tried using MoveTo previously without a controller and it hard crashed every time. Took me a while to figure out what even was wrong

celest python
mossy nexus
#

well then

celest python
#

It needs pathfollowingcomponent which stored in ai controller

mossy nexus
#

that's the one

celest python
#

If PathFollowingComponent does not require any AI Controller; what moving the AI pawn is pathfollowingcomponent anyway, you can easily refactor UAITask_MoveTo it to pawn instead of AIController refernce and get your own pathfollowing component inside the initialization function

#

AITask_MoveTo just subscribes to a delegate in pathfollowingcomp and waits for the signal

#

then ends the task and notifies the required places

mossy nexus
#

sure but it does seem like the binding between controller and pawn was created for a reason

#

which is why I pivoted on the idea of not using the AI controller

celest python
#

PathFollowingComponent seems to be not asking for AIController specifically at the first glance

mossy nexus
#

but I am interested in how this could potentially work without a controller

#

and if it indeed is cheaper

#

whole idea behind a pawn is to have a controller though, so if there is no controller any actor could be a pawn

celest python
#

From what I can see PathFollowingComponent asks for AControllers on virtual functions that you can override and implement your own logic

celest python
#

For me its usually BT tick makes the overhead

#

~100 pawns running and BT keeps ticking just to check if signal received from pathfollowingcomp

#

~70 of them are just blind dead zombies that has no actual AI implemented other than running to target goal

#

Removing BT on them would mean getting rid of 70 additional ticks and some for loops to search data on BT for each of ticks

mossy nexus
#

yeah I'd love to consider BT tick to not happen as frequently

#

or get activated only through delegates

#

and it doesn't affect any of the navigation of your zombies?

celest python
mossy nexus
#

removing the AI controller

#

BTs were always optional

celest python
#

I'm not considering to remove the AIController completely yet, I'll just delete the some of the custom logic I implemented to AIController

mossy nexus
#

ah, fair enough

celest python
#

But if I would remove AIController too I dont think it would affect anyway

celest python
#

Looks like Epic gave a way to alter pathfollowingcomp to your own system

mossy nexus
#

makes sense

#

I'll have a look around the next couple of days. Although it is a bit premature optimization on my part

#

I'm yet to implement factions properly

celest python
green vault
#

why does it go into this node ?

celest python
celest python
mossy nexus
#

also my AIs are mostly what you would consider "bosses" in other games with satellite AIs acting as support

celest python
mossy nexus
#

my biggest issue has been trying to reconcile the fact that one AI could be spread out over a vast area, and how to handle this

celest python
green vault
#

what a visual logger ๐Ÿ˜„ ?

mossy nexus
#

most likely BB condition returning true

celest python
#

Also you can just check CurrentTarget on decorator instead of bHasTarget

#

It can understand if its nullptr or not

green vault
#

i cant find a view tab ?

mossy nexus
#

I have had issues with the default BB based decorators though so I understand the issue

celest python
green vault
celest python
#

I dont have UE open at the moment

#

Fighting with bugs in Rider ๐Ÿ˜ฆ

mossy nexus
celest python
#

Ah, nice. Though EQS does not care about perception directly, if you havent yet, you might wanna take a look

mossy nexus
#

I did take a look before I decided making it try to do what I wanted to do would be too much work

#

so I opted for 600 lines of combined perception component/AI director code to solve it instead

celest python
#

Haha like a boss ๐Ÿ˜Ž

green vault
#

ok i found it lol

celest python
green vault
#

np dude

crimson galleon
# green vault why does it go into this node ?

because no matter what, TargetInAttackRange is Set. I don't know what your BTS does exactly, i assume it checks distance, but your decorators are only checking if it is set with a value and not checking if it s greater than or w/e

mossy nexus
#

greater than only works with arithmetic anyway

crimson galleon
#

its my guess on the service without seeing the logic

#

if its a boolean, then true and false are still considered Set, and instead it should be cleared

mossy nexus
#

usually the solution is a custom decorator. I would expect that to work here as well ๐Ÿ˜Ž

green vault
#

the service looks like this

crimson galleon
#

clear the key instead

green vault
#

i thought is set / is not set is exactly what i think it is

crimson galleon
#

maybe bool is different, but is not set means you've cleared it

mossy nexus
#

ah yes, the good old ambiguous wording of the BB condition decorator. I suggest either looking at the code for it or making your own

#

is set/ is not set has no meaning for bool afaik

crimson galleon
#

i think you are right, and is not what i assumed that it was distance based

#

or float, but indeed a bool

green vault
#

didnt change anything still running into that node

#

if i did it right ?

#

oh wait im stupid lmao

#

forget to pin the condition

#

ok still not working ๐Ÿ˜„

crimson galleon
#

thats a bummer

#

aside from the advice of writing your own, i would mess with some of the decorator settings

celest python
#

what visual logger says though

crimson galleon
#

maybe also print the distance result from the service

green vault
#

@celest python it looks like this dunno if that helps

celest python
#

when you click blue things

#

it will provide a text below

#

that are logs

#

each blue one is timestamp with logs

green vault
#

@celest python this is the last one before the other pattern

green vault
#

maybe its stuck in the task ?

crimson galleon
#

seems weird, service should run regardless

green vault
#

oh no

#

i think i found the mistake

crimson galleon
#

lol yeah

green vault
#

im assuming its not a tick

crimson galleon
#

but you can do both

#

looking at mine, i run ReceiveSearchStart and ReceiveTick

#

search start is for the casting and variable setting so tick can reference them

green vault
#

if i use tick it does fire but its delayed or some shit so the condition is true but it starts the task like random some run further some stop

crimson galleon
#

?

green vault
#

i mean it doesnt get stuck on the node anymore

#

when using the tick

celest python
#

try clearing the key on ondeactivated node

green vault
#

but some run close even tho they should stop when the distance is below 400

crimson galleon
#

they all look stopped in a picture

green vault
#

the 2 in the middle should be that close

#

all should be on the edge

crimson galleon
#

shouldnt*?

#

ah

green vault
#

oh yeah sorry

#

shouldnt

crimson galleon
green vault
#

nah but have to look again maybe its some logic issue they think the target is not in range that why they go in to the move node

#

im assuming you have some experience would you make a state system for the thing i try to do like an enum with walking/attacking/idle and use that as a decorator?

ashen mica
#

Why won't my "Set Blackboard Value as Bool" work? I've ran into this problem before but now I can't figure it out.

crimson galleon
crimson galleon
crimson galleon
green vault
crimson galleon
#

the highest priority is on the left, correct

#

the tree you have setup looks right, when its the custom stuff you have though, there might be some problem, or the data being fed into it

green vault
#

when an actor gets destroyed its auto null right so i dont have to check if its alive with a service or ?

crimson galleon
#

i suppose, though checking if it is valid is always good just in case

green vault
#

is there a way of running the bhaviour tree slower ?

crimson galleon
#

increase the check rate

#

its at .2 right now

#

oh, my bad, the tree

green vault
#

yeah

crimson galleon
#

dont believe so

#

but you could put a cooldown on the branch you specifically want to iterate less on

green vault
#

i think its working now damn

#

satisfying feeling

crimson galleon
#

๐Ÿคž

green vault
#

but it feels like the outcome who wins is random ๐Ÿ˜‚

stark oyster
#

is AI usually derived from the Pawn class, or Character class?

crimson galleon
#

what do you mean by AI?

#

AIController comes from Controller

stark oyster
crimson galleon
#

AIController is what you want, but you need to make your logic for those behaviors

#

you also need a pawn or character for this AIController to posses

stark oyster
crimson galleon
#

i dont understand that question

stark oyster
crimson galleon
#

i dont understand what you are asking about

#

the former

stark oyster
# crimson galleon i dont understand what you are asking about

I have recently Dipped my feet into Structures in UE4, soon after starting, I created a struct that could hold character data.

I know full well that if I'm goin to have multiple of the same character. (multiple creepers / multiple storm troopers / whatever) that I'm going to need to instantiate something for each character.

I'm just starting to realize that this struct which is supposed to be used a database for all character data, will need to be instantiated since it holds an original copy of a characters data.

now I'm not sure this is a good way to clump together variables for a specific character. In other words, I don't know if structs should be used to hold all character data, (since I don't even have logic setup yet)

Because of this, Would an instance of class not only be better but a replacement for this struct idea?

(I feel like my implementation of structs is starting to go outside the scope of structs capabilities)

crimson galleon
#

class and struct are different things, that doesn't make sense to solve the issue. I would not recommend using structs for what sounds like a large collection of data and instead check out Data Assets.

#

Data Assets would allow you to work with them in order to customize settings. You could also use Data Tables instead of Data Assets, which will need a struct to define its data columns. But Data Tables cannot be manipulated, only referenced - in general it will get messy if you want to try setting values in struct - so look into Data Assets or Data Tables to see which align with your needs.

stark oyster
crimson galleon
#

manipulating variables throughout gameplay would be better as their own variable reference and not through manipulation of the data asset or struct

#

you could have health, which defines the max health, but when taking damage, that should be a different variable, like CurrentHealth, so you can do checks/changes with it without fetching the data set

stark oyster
crimson galleon
# stark oyster and this variable (CurrentHealth) would be local to the exact actor blueprint th...

depending where you want to store it, it would live in one actor (pawn, character, or controller)

fetching the data is not that bad, it's assuming that you should manipulate the parameters within the data asset during gameplay - there are ways, but its not very pleasant

local variable is also a term for a variable that lives in a specific function that cannot be referenced outside of that function - even in the same actor

stark oyster
crimson galleon
#

yeah, sure thing, its stuff you learn over time, now comes wrapping your head around it for your needs, good luck and good night

stark oyster
mossy nexus
#

yes but it would require a perception system

keen crow
#

is it an ok situation if a blackboard key which I set on a task node has selected key name correct but the selected key id incorrect (255) which results in .IsNone() check return false even though the value (at least by name) is set?

celest python
#

Anyone knows what "execution forbidden" means?

#

When I spawn my enemies runtime BT does not execute and give this error

#

Doesnt happen when placed to level

misty wharf
#

if the can.... is a decorator then it probably means the decorator blocked execution

celest python
#

Interesting, all decorators should return true since values are either true or not nullptr

shadow vortex
#

so im trying to get Ai to form a line, or a queue system, where line up and take turns getting to a point. how would i go about something like this?

crimson galleon
#

array, offset location behind each

#

just a thought

shadow vortex
#

im not sure how i would use an array in that fashion

crimson galleon
#

alright then dont ๐Ÿ˜›

shadow vortex
#

so like, an array of blank actors as the places to wait or actual vectors? cause right now i have only the front point in line and they just gather around it.

#

the front point is a blank actor

crimson galleon
#

not what i was thinking. more that each actor gets behind the other

shadow vortex
#

me either, thats just what i got so far lol. so how would the array factor in?

crimson galleon
#

the array would be of the AI you want in the line ๐Ÿ˜›

#

index 0 is front of the line

#

then just reference each, generate an offset location behind it for the next one to move to and so one

#

could have them look at the AI if you want to (when they finish move)

shadow vortex
#

mhm i see, and how would the ai know when to move up the line?

#

and to the next point

mossy nexus
celest python
#

I wanted to do same thing a few years ago, most difficult thing was handling the situation when there is no space in the nav mesh to draw a line

#

-> prevent AI from moving when AI needs to go there with a line formation
-> send some of the units only and let the others try a random point in the nav mesh

#

I just cancelled the project instead xD

misty wharf
#

I probably need to do something about my queue system for that at some point

#

Right now it just goes in a straight line so it would put the npc's outside the building if it got long enough lol

#

I'll probably just try to find a way for it to keep adding queuers to the left and right side of the last valid position in a straight line

#

or just have them stand nearby I guess because I can imagine that being a pain to implement

celest python
#

If the queue is a static location in the world, its fine

#

Querying the dynamic locations is hell

misty wharf
#

Yeah it's 100% dynamic player selectable and there can be other player-placed objects in the way too :P

celest python
#

Maybe a grid system could work in your case though

#

You were developing a supermarket game iirc?

mossy nexus
#

a linked list type queue could work

misty wharf
#

video rental store but close enough lol

mossy nexus
#

even without an AI director

shadow vortex
#

What I am doing essentially is creating "lemonade stand" I want to form a line whencustomers make the choice to get Into line and after 1 st in queue leaves the line moves forward. That's what I am looking for

shadow vortex
crimson galleon
#

sounds like the above convo talked about it

shadow vortex
#

That's the reply to my convo

crimson galleon
#

i think one good point was about the situtation where the line may be long and needing to account for it

#

the idea is to place actors in a line, generically speaking, which there might videos on, or possible something similar like formations. You'll probably find these tutorials use a separate actor to handle the formation logic, i.e. an AI director/manager

ocean wren
#

I did door stacking for my AI squads, by creating a component I could add to things where I wanted them to stack. If I issued the squad a command to stack on a door or use a ladder, the AI director would look at where I'm pointing (this is an FPS) and would check if there was a component that could be used for stacking/waiting etc. So the AI director would pass that component + object to the squad members. the component handled the choosing of squad members to stack and where to stack (component had a list of positions which had gizmo's you could move around the level), so the logic of stacking/climbing and sequencing was in the actor being used.

#

So basically, create yourself a queue component (or maybe something a bit more general) and have it contain a list of queue positions. Have methods on the component to request being added to the queue, which would return a position to move to. The component can then shuffle things along the queue etc.

#

You can make properties have custom gizmo's and stuff, which allow you to add locations when you select the actor the component is on

#

stuff like that

#

Just had an interesting thread from Borut Pffiefer about his work on Wierd West on twitter.. nice thread about using tag-based utility style decisions based on world tagging

#

so the TLDR was that he's tagging pretty much everything, locations, objects, events etc. But the objects can have multiple tags. Then at decision time, he's using a utility style system to filter and evaluate the tags the system has collected

#

so for example, standing at a bar, in a saloon, in a busy town, might have "TownBusy","Saloon","NearBar" tags for location and then tags for time of day, if a barkeeper is there etc.

#

He then filters things based on tag priorities etc. Filtering and scoring utility style (bit like EQS if you like)

#

That idea of having everything use that same tag interface is pretty nice. Might have to play with it.

#

I guess you'd need some UI to be able to debug what tags are being evaluated per actor

#

and probably want to be able to visualize the tags on each object somehow

worthy python
#

hello. I added leaning/peeking around cornees (procedural spine bones rotation). And It broken AI aiming. How to fix rotation of bones back to AI control rotation? I'm using ALS

#

any tutorial or example of leaning for AI will be very helpful

mossy nexus
#

that being said AI aiming should probably be independent of any kind of aim offset

#

also AI control rotation isn't a thing. control rotation implies camera. AIs don't have camera

mossy nexus
#

yeah but it isn't an AI issue

worthy python
#

it's base function inside AIController

mossy nexus
#

yep but ask yourself what it does

worthy python
#

as can i see it's updating ai control rotation for a focus

mossy nexus
#

more than likely it exists virtually only

#

in either case it's not really anything to do with AI IMO

worthy python
#

Ty, i can understand it ๐Ÿ˜… But only people who working with AI know how to resolve it, imho

mossy nexus
#

not really no. I'd say ask in #cpp

#

your main issue seems your approach of control rotation, which is abstract from AI

worthy python
#

thank you. I will try, eh

ocean wren
#

Usually, you'd want to have your weapon location controlled outside of your skeleton, then add a control rig for your skeleton so that it IK's to the weapon position. That way you can move your weapon around properly and the skeleton moves to match it. You can add some lean into the basic skelton then, but have the IK still solve for the final position/rotation

#

Think I might implement that tagging stuff in UE, see what it feels like to use

modest tusk
#

So I have a question about this, can I use two different languages for a project? I couldn't find any results, but I want to use python for AI, and C++ for the game, is that possible?

#

I heard that unreal is the best for VR development so I wanted to see if I could do that for better AI.

celest python
#

UE just supports C++ and Blueprints system out of the box, Python is supported only for editor modules

#

You can implement your own system, some people did that on #cpp

modest tusk
#

Alright, thank you!

celest python
#

Though its not battle tested

celest python
#

You'd need to rewrite a lot of things from scratch

#

Since Character framework does not work well with VR movement

#

For a competitive game it'd be a hell to work with

ocean wren
#

Epic are working on a new language too

#

Personally, I use http requests for AI stuff, if you're talking about ML use

#

in game AI we tend to use C++

#

on the other hand, you can create ML models in pytorch and use torch C++ library

modest tusk
celest python
#

Was Pavlov multiplayer?

modest tusk
#

It is

#

But not mass, 10 player

celest python
#

Rather than player count, UE's default framework limits you very hard by orienting everything to ~2010's shooter mechanics

#

You wont be able to get prediction out of the box if you dont use CharacterMovementComponent

#

And it's not suitable for VR at all, afaik

mossy nexus
#

to be fair VR is still getting to grips with many things. it's going to be a while before anything gets normalized for it. HL Alyx was probably the first real attempt

ocean wren
#

Naw, plenty of VR experiments out htere

#

there

mossy nexus
#

yes, experiments

ocean wren
#

So its not like there hasn't been a fairly normalized setup. Just depends on the game genre as you'd expect

mossy nexus
#

it's too early to have anything normalized

#

there isn't even a real market for it outside of some early adopters

ocean wren
#

for VR stuff?

#

the market for VR is mainly business to business enterprise stuff.. not really games

mossy nexus
#

case in point

ocean wren
#

I guess the Meta thing will make it more consumer friendly and add more of a market, but its still mostly about digital twins and collaborative tools etc.

mossy nexus
#

VR from a consumer perspective is still largely at a fad level

ocean wren
#

I wouldn't call it fad, I'd call it "early adopter"

mossy nexus
#

sure, semantics

ocean wren
#

It honestly can't be fad, I've been working on VR stuff for over 20 years now ๐Ÿ™‚

mossy nexus
#

it's been fad for at least half that time

#

if not longer

ocean wren
#

And there's some serious $$ for VR dev in the B2B market

mossy nexus
#

people want it, then forget about it, then want it again

ocean wren
#

I'd still not regard it as a fad

#

its just not mainstream is all

mossy nexus
#

plus it's not like any other market. it requires expensive hardware to run

#

it requires people to be able to stomach the VR experience

#

so the market can only ever grow so large

ocean wren
#

Yeah, there's quite a difference between the consumer VR thing and the military stuff for instance, pretty much a different thing market-wise

cerulean girder
#

Meta terms of service for assets placed in thier "world" will most likely cause a lot of asset vendors to blacklist use in Meta...just food for thought... apparently the meta terms make some statements about ownership that doesnt sit well with asset creators

mossy nexus
#

I have 0 concern for meta

ocean wren
#

yeah, I don't really care much about meta, but at least them putting money into VR can drive the hardware forward a bit

cerulean girder
#

Same...its secondlife with FB logins

mossy nexus
#

... and NFTs

ocean wren
#

second life drove some things forward though, even if it was a trainwreck in the end

#

SL was a very fad based thing to be fair

mossy nexus
#

who would have thought I'd turn into a luddite in my later years

ocean wren
#

I'm working on holodeck stuff, so only tangentially related to VR, but I still appreciate the money going into it

cerulean girder
#

To be fair SL got me interested in code when i was younger ๐Ÿ˜‚

#

So in a way i owe them some respect

ocean wren
#

SL was one of those short term fashion things that probably ended up as a gateway for some.

#

I just saw it as an annoyance because of all the media ๐Ÿ™‚

mossy nexus
#

AR I can sort of get behind

#

I think there's potential for neat stuff

ocean wren
#

AR hardware isn't there yet.. but yeah, I really think AR is the future

modest tusk
mossy nexus
#

and it doesn't necessarily require a massive helmet screen

ocean wren
#

if they can fix the optics to render no background

#

The first time I tried a hololens, I understood that eventually AR will win out against VR and monitors

mossy nexus
#

one can hope

ocean wren
#

even though the hololens is trash ๐Ÿ™‚

mossy nexus
#

#deprecateVR

modest tusk
#

VR is on top

ocean wren
#

I was an early VR guy too.. like REALLY early VR, which was even more trash

mossy nexus
#

well yeah VR 20 years ago I can imagine was terrible

ocean wren
#

AR is basically a superset of VR

modest tusk
#

AR is ok, but I personally prefer VR.

mossy nexus
#

cool, thanks for letting us know ๐Ÿ˜‰

ocean wren
#

lets see.. first headset I tried had a resolution of 180x120 or something ๐Ÿ™‚

modest tusk
#

๐Ÿ‘€

mossy nexus
#

sounds all kinds of awful

modest tusk
#

Agreed

ocean wren
#

high end was like 320x240 or something

mossy nexus
#

I had an interesting experience with a VR movie almost a decade ago, but I'm not going near that stuff again

modest tusk
#

๐Ÿคฃ

ocean wren
#

yeah, I think mostly at that time, it was people who knew 3D and sort of imagined the future stuff of VR

#

same with the hololens now.. its actually usable, but not great. But give it 20 years and it'll be perfected

mossy nexus
#

I can definitely see that

#

plus AR can be on phones etc.

#

so I think there's something to be had there

#

can't wait for the geocaching games

ocean wren
#

AR with a phone is a bit of an odd one

#

We've done a few projects using that. But I'm not a fan of the form factor

mossy nexus
#

give it 20 years ๐Ÿ˜‰

ocean wren
#

Yeah, don't think I'll be bothered by then ๐Ÿ™‚

#

besides, I'm aiming for a holodeck before that happens ๐Ÿ™‚

mossy nexus
#

sure

#

I'll probably pick something like that up and see if there's going to be some applications for LD

ocean wren
#

Where we're heading, there aint no levels! ๐Ÿ™‚

mossy nexus
#

there'll always be levels because people will always need direction

ocean wren
#

well, not levels in the sense that you'll create them. Maybe you'll describe them or select them

#

dammit, I need a movie to watch ๐Ÿ™‚

mossy nexus
#

it's what I do

mossy nexus
#

even if it's sad in a frustrating kind of way

celest python
# modest tusk So what engine do you recommend then?

I'd suggest research more about Multiplayer VR in UE and especially ask people who tried before, if you can't get a positive results try Unity. Because there are other frameworks do easier networking in VR (not 'better' maybe but easier)

#

My knowledge about VR multiplayer is based on some friends comments I've met in the industry

#

I'm just sure CMC is not going to work in your case, but I tested that back when latest engine version was 4.23

#

Maybe someone made a workaround, or even Epic provided something new

ocean wren
#

There is a new VR template

#

Already saw Don't Look Up. Good film.

mossy nexus
ocean wren
#

Yeah, too realistic

ocean wren
#

Seen it

#

I've seen everything ๐Ÿ™‚

misty wharf
#

how about Ex Machina

ocean wren
#

Hahaha.. good catch

#

seen it ๐Ÿ™‚

#

on the subject of AI, anyone got any recommendations for games with good AI? I mean I'm after some interesting games to play. Probably going to buy Weird West, but that's not out yet

celest python
#

Have you played F.E.A.R.?

#

"Thief" was good too

#

and MGS V

mossy nexus
#

ex machinima was great

mossy nexus
ocean wren
#

yeah, played all of those, although I guess I could play fear again, but it was pretty simple

#

hitman I didn't really get along with

#

and yeah, played thief ๐Ÿ™‚ and mgs V

#

I'm looking for a new game really

mossy nexus
#

I got nothing

ocean wren
#

I'll probably try out Ark Raiders when they ship it

mossy nexus
#

wait until I release something ๐Ÿ˜‰

ocean wren
#

When's that going to be?

#

๐Ÿ™‚

mossy nexus
#

TBA

#

I'm gonna try and see if I can have a VS ready end of next year for realsies though

#

just on my personal project

#

but I did say that half in jest

ocean wren
#

I kind of want to work on a big AI project now.. but have to complete this latest research really

celest python
#

CE'a game reminds me Dishonored, just came into my mind when he mention his own project

#

If you havent played Dishonored, its a nice candidate too

mossy nexus
#

dishonored is just modern thief

ocean wren
#

Yeah, I loved dishonored, althought they spelt it wrong ๐Ÿ™‚

mossy nexus
#

(give or take)

ocean wren
#

its definitely in the vein of thief like games

mossy nexus
#

it's definitely interesting going back the family tree on immersive sim games

#

speaking of, Prey 2017?

#

SOMA?

ocean wren
#

Prey hmm

mossy nexus
#

soma will live in your head rent free for years

#

so proceed with caution

ocean wren
#

that the sort of horror style thingy?

mossy nexus
#

yes

ocean wren
#

yeah, not into horror ๐Ÿ™‚

mossy nexus
#

and possibly the best writing any video game has had... well, ever

mossy nexus
#

except better tbh

midnight scroll
#

What is generally the preferred method of pawn's walking around each other? There's a few that I've read on so far, but there are also debates on them. Wondering what people here might use.

celest python
#

If there is any object blocking the navigation is a 500m, do a trace or overlap somehow (gonna get expensive ๐Ÿ˜ฆ )
get the closest one from overlap check
if its not closer than minimum tolerance you desire set it as circle radius
query the environment
create pathpoints (fvectors stored in an array)
loop MoveTos

ocean wren
#

They set it up a bit wrong by default

#

You can set the sample distance where it chooses to avoid other agents, how many agents to account for etc. Its pretty tweakable

steady elm
#

i don't understand how the navigation system calculates the agent radius, is it just from the center or is it around the model?

ocean wren
#

Pretty sure its in the navigation system properties

#

if you go into the preferences and look for navigation system, its probably in there somewhere

steady elm
#

i know but for some reason it stops and says it has reached its target before a trigger i gave it reached the target even tho the trigger has a bigger radius so i'm confused why that is

#

@ocean wren

ocean wren
#

Oh, thats in the moveto node itself, if that's what your using

#

there's an acceptance radius value on the node in the BT

keen crow
#

Are AI controllers expected to be unique for each character no matter what BT they are running? I have 4 characters on my level and 2 of them are running the same BTs but I'm seeing something strange - AI controllers names are duplicated in BT debug selector

misty wharf
#

Yes, each AI pawn has its own controller

#

(You certainly could create a controller which manages multiple pawns, but it's probably somewhat complicated - but I'd imagine in some niche usecases it could offer performance benefits)

mossy nexus
#

each pawn has its own instance of a controller

keen crow
#

then why are they duplicated in the dropdown?

ocean wren
#

Only the gods know

#

And they aint tellin

midnight scroll
#

@keen crowEngine version?

#

Wondering if they're not just named similar. But still four different instances.

keen crow
midnight scroll
#

Hmm. 4.27 version of that looks a little different.

mossy nexus
midnight scroll
#

I can't break it like he did. In 4.27 they're named with no doubles, and it actually tells you where they were spawned.

ocean wren
#

Man, its so frustrating not having artists ๐Ÿ™‚

#

I need a machine learning artist

misty gale
#

That'd be very usefull!

#

Specifying inspirations, fidelity and whatnotz and just get a procedural mesh output !

ocean wren
#

We can do a bit of that, but mostly in 2D

#

I wonder if we could do the same but using a nodegraph (thinking about it)

#

Given there's now differentiable renderers out there

#

We can figure out object positions and types.. but actually generating new ones? not yet at least

misty gale
#

It shouldnt be that hard should it

#

Generating complex procedural faces sounds harder

ocean wren
#

Well, the 3D structure has more challenge because its got things like occlusion and a higher dimensional space

#

That said, we've got a ton of data in terms of videos and whatnot, we should be able to eventually learn the whole goddam thing. I'm just frustrated because I've not got enough GPU power to do my work on it right now.

misty gale
#

And meshes generated by actual people etc 3d scanned ones and whatnot

#

The archive should be more than sufficient

ocean wren
#

The problem comes when you're trying to create something that isn't from real life, we can scan everything sure, eventually. But what of art?

#

I guess it needs to have some notion of what art and creativity is and then use that in the generative step

#

You kind of need a differentiable PCG system really

mossy nexus
#

if you get it working sign me up

#

bonus if it comes pre rigged and you can do the same with animations

ocean wren
#

Yeah, my aim is motion based behaviours, so that's always going to be a focus

#

But the idea of using existing scene understanding approaches gives way to the issue of being able to generate novel ones

#

i.e. we can learn stuff like where different objects are in a scene (this is well studied), but what of generating novel scene layouts with the same object distributions? or with novel objects that still make logical sense

#

And in a way that we can properly evaluate and interpret

#

I guess treating scenes as a class of SDF's might work

cerulean girder
#

is there another test i can preform in eqs other than "does path exist" to determine if im selecting a point on the current nav mesh. check if the path exist is hitting my test way too hard in some cases

#

almost 2ms on just that check

misty wharf
#

It seems you could just not use EQS for it?

#

If you're checking a single point for a single thing you gain nothing from EQS

#

If you have some reason to do it with EQS, you would probably have to write a custom test

ocean wren
#

There's a project point to navmesh you could use for sure

cerulean girder
#

the eqs query im doing determines a point that an ai can summon back up units that is furthest from the player characters, that currently doesnt have a unit, and is not visible by the players. one of the test in it determines if the point is reachable...meaning if i spawn the ai at that point can it get to the player...my nav mesh is already hand catered to only allow the nav where i want it (i didnt just slap a huge square in an area and call it done)...but the path test is 2ms long...the entire rest of the query is running at .4-1ms...

ocean wren
#

That sounds pretty expensive, given how low res the navmesh is

mossy nexus
#

but I do do the same

cerulean girder
#

exactly...2ms for a path test is disgusting

mossy nexus
#

well no

#

it's expected

ocean wren
#

it does string pulling on the nav generation, I suspect if you didn't switch that on it'd speed up a fair bit

mossy nexus
#

pathfinding algorithms are expensive

ocean wren
#

they're not THAT expensive, the navmesh is low poly after all 2ms is too expensive, but its doing string pulling which he obviously doesn't care about

#

the other thing is, you're probably doing it for each point?

cerulean girder
#

thats why i was wondering if there was another way to check if im selecting a nav mesh point

mossy nexus
#

nlogn sounds expensive to me ๐Ÿ˜‰

ocean wren
#

what I'd do, is use EQS to query points for the visibility and proximity stuff, then use a dyjsktra to the points and just return the first point when you hit a navpoly with it inside