#gameplay-ai
1 messages ยท Page 157 of 1
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
no, I hate corporate too ๐
lol
also those funko pop figures
right, night all
why would someone use a black board key to get the variable over getting it from the actor itself in a task?
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
You could have a blackboardinterface that the AI used to get its values from the actor?
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
I'd argue that UE implementation isn't a proper BB in the first place
Never saw other implementations but UE's look like a fancy UDataAsset
well, the fact that you cant use arrays pisses me off
Yeah, also using raw FNames instead of FGameplayTags also annoying
the fact you can't share a blackboard with other actors pisses me off
Sometimes I keep variables inside AIController for this
Since AIController is less likely to be seperated between inheritance branches
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 ๐
Sure, we're paying %5 of our income to use the engine in the end ๐ It sucks UE ignores features like this
only past the first mill.. I can live with that
and frankly, its our responsibility to make these things, not epic's
They rely on "developers able to PR or implement their own solutions since we provide source code for free" mindset
And you know what? they're right
Since they provide premium support to AAA by UDN no one complains either
its what sorts the men from the boys (and girls)
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
I doubt UDN offers much value to be honest, other than "we're really screwed, give us a hand" stuff
For very specific and low-level engine things they really provide god-level support, from what I've heard of
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 ๐
Rather than 'lack of features' I don't like they expecting us to PR for issues, like we are getting paid for it
That makes them comfortable and dismiss the game/project-breaking issues
well, yeah, I'd berate them for not having stable features
but having not implemented something you need? do it yourself!
Yeah ๐ ๐
๐ฏ
at least you can, unlike with Unity say
I have a problem with my AI actors unable to walk past each other ( even though I set their collision capsules to NON-SOLID to each other). Is there a setting where I can tell the Navmesh pathfinding to ignore the collision capsule of the actor?
https://www.youtube.com/watch?v=AcT3InyqQDU
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
It looks like you have avoidance on?
I think its RVO something, a setting on the actor
hm
You've got your capsule settings wrong
my capsulse settings
Check it by standing one on top of the other and you'll see, it won't fall
hmm..
Is it set to dynamic obstacle on the capsule?
no, it's a PAWNAI
I made a new category
PawnAI is non-solid to each other
and they CAN go through each other
is it derived from pawn?
The collision is going to be on your actor, not your ai actor
oh hmm
aicontroller
ah lemme check that
so I need to put the Capsule collision on my controller
NOT on my Actor
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
Dynamic Obstacle is probably on
hmm i checked it's off
hmm
is that setting on the Capsule collision?
did you derive from detourcrowdcontroller?
yes it is
Yours definitely look like rigid body collisions
this is what my AI controller look like
and RVO is off?
Heres my capsule collision
yes, RVO is off
does doesn't it..
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?
It makes the things adjust their path to not touch other things on their way to places
hm
๐
yaay
I'd use DetourCrowdController instead of RVO anyway, it deals with blocking a lot better, but needs some tweaking from the defaults
didn't realize it could be enabled in code
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
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
just be aware the default detour settings Epic did are.. kinda wonky
they have some push-away code when non-solid actors are too close to each other
yeah they were always non-solid with your settings
just actively avoiding eachother
yeah, I usually turn off rigid collisions and do a force-penetration seperating force myself
and don't have to run expensive detour code.
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
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
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
its one area of focus for crowd agent research
only when they stand still where it looks odd, and that's where I run the seperation code
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
ah, good point
the old switcheroo is pretty common ๐
is it okay to have multiple services on 1 node ?
i got multiple on one node ๐คช
ok
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
after he died in that plane accident with maverick?
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
doesnt isset use a bool?
I'm fairly sure this was possible to do in BT's with the Blackboard decorator at least? ๐ค
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 ๐
ah thanks ill look into that
I assume IsSet is true when the key has a value, false when it's null
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
I belive is not set is null and is set is true or false, except for bools
Zoombapup will come down with the axe if i am wrong though ๐
Yeah, I think you're right, I'm a bit vague on the details, but it sounds right to me
Setting up a test now, will report back
probably easier just to check the code ๐
I started to, but it's a bit of a jungle
get used to it ๐
Might be this, in which case you'd be correct
seems so ๐
trial and error wins me another ๐
You win this one, but I'll be back!! muhahahaha!
thanks guys
sure thing, good luck
My ai is not moving on loaded levels
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
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
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
I feel like i had it working at one point but yeah a bit tricky
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
๐คฆ just checked my BT, I am using it after all!
I have a problem with my ai. If i play my game from a loaded level the ai dont want to move.
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 ?
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
that's the thing, where exactly do you configure the character's settings so it matches the agent you want ?
Wasn't it in the character movement comp or the character class itself? I forget but it was definitely in there somewhere
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
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
test it to make sure its giving you real results...for me it thinks theres a path to a enemy ai thats flying 2000 units in the air...sure, theres a path to the point directly below it 2000 units but i wouldnt consider that a "path" for a land based character lol
Ive had jt on for awhile and was testing so i do believe it all works but i can check again. I think when i thought it was not working right was because i did not set it up correctly. But it checks navmesh path (fastest) from self to target
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
That is how ive been testing it and need to work anyways. I want the ai to know when the player is too high up and unreachable
instead of eqs i just created a condiational check that checks the distance in Z
That is also something i do :)
oh thats probably why it seems like its working for you
cause youre checking the Z distance after
Well ive tested with that btd
Without*
But ill check it all again, it should simply not work if it cant find a path
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
Oh i believe it is finicky
so i made the condiational check and it worked out great
Some level of magic is at work
Yeah but i also dont want the ai to try navigating if the player is simple unpathabke
eqs knew right away tho, but adding an expensive call for something i can do with a distance check seemed like overkill
Navmesh check is fast
Eqs for just a valid path shouldnt be that bad
Anywho, ill get back to you when im on computer
have a nice holiday ๐
Back atcha
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
just checked it, working fine ๐
with it putting more people at home, im sure holidays arent necessarily as jolly as the norm
lots of killing off grandma and grandpa, lovely ๐
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
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 ๐
lol my campuses just opened up a day before finals were over for the holidays
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
Hell yeah! Modular BTs online, now to hook em up to the data tables ๐
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
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
trying to make my own BT decorator node and i dont get how to make this for my own (in bp)
You don't, its in the base class?
after scouring, i guess its cpp locked from me ๐ฆ
Well, it'll just be there by default
I saw a presentation where they suggested putting stuff like cooldown times in a BB key also, can't remember the reasoning though ๐
here's my custom blackboard decorator
here's the ue one
i just made tick check, to see if that works the same way
Oh I see, you mean the Notify observer is missing?
yes
i think its centered around the events that i can override.... since thats the only thing i can really alter
I'd have thought it would be available by default in a decorator... maybe you derived from the wrong class?
Looks right
You'd have to lookit the code ๐
I might have to break open UE5 today and make something
Need to record a new years video ๐
writing a better nanite renderer eh?
Kind of want to mess around with some control rig proc anim stuff
id be down to check that video out
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
oh right, so override tick and it shows up?
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
yeah, honestly it needs a proper re-write, but that's never going to happen ๐
seeing that they're doing something else right?
kinda feel they stopped on the perception system just like pawn senseing
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
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
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
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
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
i was thinking the debug view for BT would be helpful... but it really isnt
yeah, thats all i mean, i know he didn't actually come up with it, but he's leading the charge
You can always write a better one
I've extended the visual logger a few times, its kind of fun to do
probably not with 0 cpp skill
ah, yes, that would be a problem ๐
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
the worst time to start learning c++ is never 
And deadlines
But yes one day
Im not trying to be or get work as a programmer though
Best not, its for the birds ๐
art is definitely for the birds ๐
the only truly valuable job position to be skillful at is ideas guy
right right.... i dont know if i can come up with half-baked ideas that i cant see them through
looks like my custom dec is firing on tick, but its not updating when it goes false...
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"
your quick ๐

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 ๐
will be in credits

yeah, "we'll add your name to the credits" is a good one
exposure
i've de-AI'd #gameplay-ai enough for one night haven't i
worth quitting a job eh?
no thank you
please dont
oh fuck yes gimme that hot free nitro
it says dicsord ๐
i mean, there's a target on them already...
that's a new one
.ru hahah nice one
<@&213101288538374145> you aren't all online/green yet so maybe they're going slow with this one
totally legit
speaking of derailing AI
AI is for the birds
:no_entry_sign: MC Reaper#2506 was banned.
I mean literally, I've worked on bird AI before ๐
thanks Roy! your awesome!
yeah, that was the first ping about it
Thank you kindly, sir!
oh does everyone not ping mods?
sometimes they only post in one channel every minute or so... you know, for extra authenticity
just, immediately ping moderators if you see that
the offender pings at-everyone, so i figured no need
oh shit, ok
Man, that's a job i don't miss. Having to moderate the old indiegamer forums.. ugh, it was like 99.999% spam
if someone who cant ping the role tries to, it'll hilight like it did ping, but it wont ping
gotcha gotcha
we could really use some #gameplay-ai to autoblock the bots 
saves all y'all from getting notifications all the time ๐
thanks for the info Roy
bots are actually quite easy to make for discord
explains all the scammers
the scammers are compromised accounts
oh that sucks
I did a livestream for my students and wrote some python code to do a discord bot based sentiment analysis
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
then fed that into unreal engine in the last stream
mhm
next stream, we are making a crowd battle sim
TABS?
oh, wasnt someone asking about that?
you can use a skeletal mesh component and anim blueprint in particles now, since 4.26
hey, thats the version im on ๐ค
ive had the idea of doing some kind of swarm like enemy
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 ๐
yep, havent dove in after the last time
I keep giving it a go, but sometimes it just doesn't do what the hell I expect it to
lol
What are the freaking laws of AI?
Law #1 NEVER ask what the laws are. Law #2 See Law #1
25% cat, 27% dog
thimble the hamster?
Theyre still asimovian iirc
Merry christmas. Has anyone been able to implement GOAP in unreal? How?
Tried. Got annoyed by it. Built a utility ai instead.
How? 3-12 months of effort I guess? ๐
I havnt dove into utility ai yet but o the surface it reminds me of alot of the same stuff goap was doing
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.
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.
I usually code those things in Character and just signal "start" "stop" states based on the behavior. I also like to sequence actions in a single BTTask. My personal attitude against huge Behavior Trees is negative
In any case: <#gameplay-ai message>
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.
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.
I wonder how Epic did their shooting bot AI on UT -- I was never be able to compile it since it requires vs15 ๐
If you are going to design the BT with states, maybe you can see Alien Isolation's AI. Their AI ultimately relies on states and they have a great example of it
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
Alien Isolation BT source code (requires Alien Isolation installed): https://github.com/MattFiler/OpenCAGE
How To Use BTs properly GDC talk (this one explains the rules against Alien Isolation's methods, but this one is more correct): https://youtu.be/Qq_xX1JCreI
Demonstration of Deadalic's RTS AI: https://www.youtube.com/watch?v=1Dm1G6fUuFs&t=884s
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
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?
Yeah that's the most basic summary
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
You sir, are a gem!
I need to find eight more
Or five more, depending on the context
Lol it was meant as a joke. But believe there are eight facets to AI
Names?
Attributes?
I dont recall them but i remember reading that there are 8
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
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
For AI states its alright but I have those vars in my character class
Some of them are replicated
states? ptooey!
its so clean ๐
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?
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?
Hmmm. Maybe moving the camera is the solution. Thank you!
The most dreaded part of my project has come, an AI
ez just code an ai to write your ai for you
This is actually the one thing I've never done before
genius!
I was gonna watch Ryan Layley's AI overview, anyone have a resource they really liked?
you plan on using BT?
Yes
i wouldnt expect from any one video to achieve your entire AI, that one helped me understand each area
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
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
It's probably more complex than that, but simple goals first
true true
I'd like to make it more complex, but considering I've never made an AI before
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
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.
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
Dont watch Ryan laley
Conrad's link is awesome
Different BTs and Different AI controllers as well but that is an interesting point.
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.
I guess you'll have to break out the debugger and take a look at the code
Yeah it seems like that.
I have managed to solve it, so apparently, the pin on the MoveTo tasks that says, "Lock All Logic" if that is ticked to true and you swap in between, what happens is that tasks gets to never finish, even if you possess that pawn with the same controller that started it and as a result the AI freezes, forever @_@
Interesting, thanks for the info
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
Why does it? its just an actor
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
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
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?
Why can't you use the pawn?
I use it without an AI controller. But that will only work if you're not using it for AI. I use my secondary BT for camera movement
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
Hmm, alright. Thanks for letting me know
You should see the eqs when assigned to the eqs pawn so long as the context is querier. If you have a custom query context, such as for the player, it will not show. I think there is a way to do so but i just change the query context to preview then change it back.
Morning AI ppl
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
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
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?
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?
@mossy nexus, :8ball: My reply is no.
well then
Cranz lmao ๐
Why not #cpp instead? ๐
roger
๐๐๐
Did you handle blackboards as how AIController handles it?
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
Hmm, so you just created the BehaviorTree component in the actor and did not implement anything related BBs on AIController?
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
Alrighty, thanks
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
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
that's interesting
Thats for my case though, you know my game mechanics
It's mostly because of zombie horde
sure, I was just thinking how removing the AI controller would affect other things. you'd need custom MoveTos
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
doesn't that require a controller?
huh
It might trying to access controller inside through by using pawn reference
Its been a while since I analyzed it
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
disregard - it asks for AAIController
well then
It needs pathfollowingcomponent which stored in ai controller
that's the one
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
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
PathFollowingComponent seems to be not asking for AIController specifically at the first glance
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
From what I can see PathFollowingComponent asks for AControllers on virtual functions that you can override and implement your own logic
I don't think it would make any difference in your case
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
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?
What do you mean? Removing BTs?
I'm not considering to remove the AIController completely yet, I'll just delete the some of the custom logic I implemented to AIController
ah, fair enough
But if I would remove AIController too I dont think it would affect anyway
Based on this assumption
Looks like Epic gave a way to alter pathfollowingcomp to your own system
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
Although it is a bit premature optimization on my part
I'd go brrr if I was on your situation ๐
why does it go into this node ?
My next game is never going to have big amount of pawns/AIs ๐ฆ
Interesting
I was never going to aim for more than 20-50 really. I like balancing towards AIs you have to think laterally about
also my AIs are mostly what you would consider "bosses" in other games with satellite AIs acting as support
I thought making a horde shooter would be easier in sense of indie-spirit but that was the biggest mistake I guess ๐ I'll never reach more than 30 for my next games. I also want to try other types of game designs since I earned some experience with this current one
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
I really couldnt point out to anything by looking at to screenshot, have you checked Visual Logger?
what a visual logger ๐ ?
most likely BB condition returning true
It's a logging tool made by Epic, you can find it on View > Developer Tools
Also you can just check CurrentTarget on decorator instead of bHasTarget
It can understand if its nullptr or not
i cant find a view tab ?
I have had issues with the default BB based decorators though so I understand the issue
Isnt EQS literally made for this ๐ค
ok thats maybe handy
On the left *up side of the editor
I dont have UE open at the moment
Fighting with bugs in Rider ๐ฆ
I don't know, I use my own custom perception system. Eyes and ears are now components ;)
Ah, nice. Though EQS does not care about perception directly, if you havent yet, you might wanna take a look
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
Haha like a boss ๐
ok i found it lol
Sorry both chatting and coding right now, I dont know how did I wrote "left right side" instead of "left up" ๐
np dude
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
greater than only works with arithmetic anyway
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
usually the solution is a custom decorator. I would expect that to work here as well ๐
the service looks like this
clear the key instead
i thought is set / is not set is exactly what i think it is
maybe bool is different, but is not set means you've cleared it
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
i think you are right, and is not what i assumed that it was distance based
or float, but indeed a bool
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 ๐
thats a bummer
aside from the advice of writing your own, i would mess with some of the decorator settings
what visual logger says though
maybe also print the distance result from the service
@celest python it looks like this dunno if that helps
when you click blue things
it will provide a text below
that are logs
each blue one is timestamp with logs
@celest python this is the last one before the other pattern
i dont know why but the service doesnt get executed anymore?
maybe its stuck in the task ?
seems weird, service should run regardless
i think you need to be using RecieveTick so it runs
lol yeah
im assuming its not a tick
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
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
?
try clearing the key on ondeactivated node
but some run close even tho they should stop when the distance is below 400
they all look stopped in a picture
the service runs every .2 is that what you mean?
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?
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.
seeing that the ai gets its target, sounds possible
uh.... no i dont think so
the structure of BTs (though im sure to be roasted once again) is you can treat each branch as a state decision - essentially a hierarchy of the most important to the least important state to be in, though in some cases those branches become a bit more complex
but is it right that the one on the right is always the "fallback"
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
when an actor gets destroyed its auto null right so i dont have to check if its alive with a service or ?
i suppose, though checking if it is valid is always good just in case
is there a way of running the bhaviour tree slower ?
yeah
dont believe so
but you could put a cooldown on the branch you specifically want to iterate less on
๐ค
but it feels like the outcome who wins is random ๐
is AI usually derived from the Pawn class, or Character class?
I mean a character that can move and shoot but is operated by the engine it's self, not an actual player.
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
Ok thank you. That helps out a lot.
Also, Don't know if your knowledgeable about blueprints but I had a pretty interesting question on Structs and AI characters.
i dont understand that question
Don't understand as in I didn't explain it well, or Don't understand as in you don't have the knowledge?
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)
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.
You say that "Data Assets would allow you to work with them in order to customize settings"
By this you mean that data assets could be used to update a specific characters variable in real time like health? Or is that sort of operation not supposed to be used that frequently with data assets?
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
and this variable (CurrentHealth) would be local to the exact actor blueprint that represented the character?
therefore instead of fetching the entire dataset for a stormtrooper's health (lets say), instead it would be fetching the variable of the character whose original reference was from the data asset?
Hopefully that makes sense and I understand this right
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
Ok, I'm definitely starting to understand it now.
And that's may bad with the misinterpretation of the local variable, I had no idea it was that specific
I think that's it though. (going to start researching all of this more to get a better grasp)
I can't even articulate how much this info helps.
Thanks for the help man, Means a tremendous amount.
With help this good, why have google! :)
yeah, sure thing, its stuff you learn over time, now comes wrapping your head around it for your needs, good luck and good night
You have a good night as well,
And awkwardly late Merry Christmas! lol
yes but it would require a perception system
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?
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
if the can.... is a decorator then it probably means the decorator blocked execution
Interesting, all decorators should return true since values are either true or not nullptr
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?
im not sure how i would use an array in that fashion
alright then dont ๐
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
not what i was thinking. more that each actor gets behind the other
me either, thats just what i got so far lol. so how would the array factor in?
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)
mhm i see, and how would the ai know when to move up the line?
and to the next point
AI director is a neat way to solve issues like these
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
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
If the queue is a static location in the world, its fine
Querying the dynamic locations is hell
Yeah it's 100% dynamic player selectable and there can be other player-placed objects in the way too :P
Maybe a grid system could work in your case though
You were developing a supermarket game iirc?
a linked list type queue could work
video rental store but close enough lol
even without an AI director
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
Where would I look into that
sounds like the above convo talked about it
That's the reply to my convo
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
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
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
don't think this is an AI problem. sounds more like an animation/skeletal issue
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
it's breaking my mind
yeah but it isn't an AI issue
yep but ask yourself what it does
as can i see it's updating ai control rotation for a focus
more than likely it exists virtually only
in either case it's not really anything to do with AI IMO
Ty, i can understand it ๐ But only people who working with AI know how to resolve it, imho
not really no. I'd say ask in #cpp
your main issue seems your approach of control rotation, which is abstract from AI
thank you. I will try, eh
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
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.
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
Alright, thank you!
https://github.com/Tencent/UnLua Tencent has a Lua system for UE
Though its not battle tested
VR is nice with UE but never try with multiplayer
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
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
I want to make a game like Pavlov shack on the quest, maybe even rift and other platforms, but I want to sell it for free just like Pavlov for a while, then make a different game but in a different style like a battle royale or a mission based one.
Was Pavlov multiplayer?
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
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
yes, experiments
So its not like there hasn't been a fairly normalized setup. Just depends on the game genre as you'd expect
it's too early to have anything normalized
there isn't even a real market for it outside of some early adopters
for VR stuff?
the market for VR is mainly business to business enterprise stuff.. not really games
case in point
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.
VR from a consumer perspective is still largely at a fad level
I wouldn't call it fad, I'd call it "early adopter"
sure, semantics
It honestly can't be fad, I've been working on VR stuff for over 20 years now ๐
And there's some serious $$ for VR dev in the B2B market
people want it, then forget about it, then want it again
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
Yeah, there's quite a difference between the consumer VR thing and the military stuff for instance, pretty much a different thing market-wise
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
I have 0 concern for meta
yeah, I don't really care much about meta, but at least them putting money into VR can drive the hardware forward a bit
Same...its secondlife with FB logins
... and NFTs
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
who would have thought I'd turn into a luddite in my later years
I'm working on holodeck stuff, so only tangentially related to VR, but I still appreciate the money going into it
To be fair SL got me interested in code when i was younger ๐
So in a way i owe them some respect
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 ๐
AR hardware isn't there yet.. but yeah, I really think AR is the future
So what engine do you recommend then?
and it doesn't necessarily require a massive helmet screen
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
one can hope
even though the hololens is trash ๐
#deprecateVR
VR is on top
I was an early VR guy too.. like REALLY early VR, which was even more trash
well yeah VR 20 years ago I can imagine was terrible
AR is basically a superset of VR
AR is ok, but I personally prefer VR.
cool, thanks for letting us know ๐
lets see.. first headset I tried had a resolution of 180x120 or something ๐
๐
sounds all kinds of awful
Agreed
high end was like 320x240 or something
I had an interesting experience with a VR movie almost a decade ago, but I'm not going near that stuff again
๐คฃ
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
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
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
give it 20 years ๐
Yeah, don't think I'll be bothered by then ๐
besides, I'm aiming for a holodeck before that happens ๐
sure
I'll probably pick something like that up and see if there's going to be some applications for LD
Where we're heading, there aint no levels! ๐
there'll always be levels because people will always need direction
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 ๐
I'll create visual markup in some sense or another
it's what I do
I can recommend "don't look up"
even if it's sad in a frustrating kind of way
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
it's frustrating because it was too real
Yeah, too realistic
"Upgrade" (https://youtu.be/36PDeN9NRZ0)
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
ex machinima was great
on the off chance you haven't played it, hitman
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
I got nothing
I'll probably try out Ark Raiders when they ship it
wait until I release something ๐
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
I kind of want to work on a big AI project now.. but have to complete this latest research really
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
dishonored is just modern thief
Yeah, I loved dishonored, althought they spelt it wrong ๐
(give or take)
its definitely in the vein of thief like games
it's definitely interesting going back the family tree on immersive sim games
speaking of, Prey 2017?
SOMA?
Prey hmm
that the sort of horror style thingy?
yes
yeah, not into horror ๐
and possibly the best writing any video game has had... well, ever
if dishonored is modern thief, prey is modern system shock
except better tbh
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.
Probably there is a better way but one thing comes to my mind is checking the closest navigation affector in a distance threshold and query the environment with given distance and store the locations and queue them in an array, then use MoveTo
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
Detour Crowd is currently the best method in Unreal Engine, but you have to tweak it some
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
i don't understand how the navigation system calculates the agent radius, is it just from the center or is it around the model?
Pretty sure its in the navigation system properties
if you go into the preferences and look for navigation system, its probably in there somewhere
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
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
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
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)
each pawn has its own instance of a controller
then why are they duplicated in the dropdown?
@keen crowEngine version?
Wondering if they're not just named similar. But still four different instances.
4.26.2
Hmm. 4.27 version of that looks a little different.
you could double check by seeing what the print screen tells you
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.
That'd be very usefull!
Specifying inspirations, fidelity and whatnotz and just get a procedural mesh output !
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
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.
And meshes generated by actual people etc 3d scanned ones and whatnot
The archive should be more than sufficient
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
if you get it working sign me up
bonus if it comes pre rigged and you can do the same with animations
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
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
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
There's a project point to navmesh you could use for sure
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...
That sounds pretty expensive, given how low res the navmesh is
doesn't help with navmesh islands ๐
but I do do the same
exactly...2ms for a path test is disgusting
it does string pulling on the nav generation, I suspect if you didn't switch that on it'd speed up a fair bit
pathfinding algorithms are expensive
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?
thats why i was wondering if there was another way to check if im selecting a nav mesh point
nlogn sounds expensive to me ๐
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