#gameplay-ai

1 messages Β· Page 8 of 1

celest python
rich veldt
#

Hello! I'm trying to study EQS and AI spatial awareness a bit more and figure out what I'm able to do.

I have a basic "find hiding spot" EQS which gets locations on pathfinding grid, does a line trace test to the AI's CurrentTarget (custom Context), and filters out any items that are visible to that actor, and then scores the non-visible items based on distance (preferring the closest to the querier).

It works well enough, the AI runs behind (ish) the nearest wall.
On some occasions, the AI might be totally occluded by the wall, and on some occasions I guess the winning item is JUST barely occluded from the CurrentTarget so the AI sticks out and is hardly "hiding".

My goal here is to get the AI around a corner or something and have them hug the corner, sort of like Condemned's enemies, where they are baaarely visible (and maybe then play a "leaning out" montage)

#

I have a few ideas on how I could get a more suitable position behind the wall, like having a custom trace test which doesn't trace from the item's position, but something like 20-30uu to the left and to the right as well to simulate the total width of the hiding character, and only returns items which have blocking hits on both/all trace tests.
Then have the grid items be generated more densely to get a more accurate item.

#

I'm just wondering about anyone's thoughts on how this could be achieved, or if I'm barking up the wrong tree here or missing something with EQS and behavior trees that would make this far easier than my custom test idea.

ocean wren
#

Personally, I dealt with this by generating cover points as a seperate process and then used EQS to select from the cover points with specific characteristics. So you can make a cover generator select cover with a specific height, with visibility (or non-visibility) to a location, with step-out wall cover etc. Then use EQS to choose from them. I also have a claim system on the point so that more than one AI doesn't go to the same spot.

#

I didn't feel like making EQS do it all was going to work

#

That's not to say it couldn't with enough finessing.. but I was mainly just doing what other games did

#

copied mostly from cryengine in this case πŸ™‚

rich veldt
# ocean wren Personally, I dealt with this by generating cover points as a seperate process a...

I've considered this method too, but if "cover" in this case is any corner in a hallway, pillar, etc the AI can put their back up against, what's a method for generating cover points? Perhaps a similar method to what I suggested but not at runtime and instead something generated in-editor? Generating points around the navmesh, running linetrace checks on those points to see if they're near a wall, then on the left and right to see if they are indeed near a corner?

#

Then I guess collecting all "winning" points and spawning the coverpoint actors with necessary characteristics such as a "claimed" bool etc like you mentioned

#

I certainly would prefer doing that I was just having a hard time conceptualizing how the generator would be coded. Finding convex corners is certainly more complicated that concave corners lol

viral field
#

Hey guys, does my ai need a real behaviour tree to get nav links working, or does a move to actor/location also work? My ai doesnt fall from platforms. Walk off ledges is activated

misty wharf
#

regular move to will use nav links just fine if they are set up correctly

#

A behavior tree is nothing but a way of organizing logic

viral field
#

hmmm, i wonder whats wrong with my nav mesh / nav links, its not working

misty wharf
#

Is it not moving through the links or is it getting stuck when it attempts to enter the link?

viral field
#

It looks like its moving to the first point, but then doesnt drop down. You can actually see that its supposed to fall, but it doesnt. So either i have to make a new colission capsule, because its a sphete right now, or something else is wrong which i cant figure out. I can send you pics as soon as im home

misty wharf
#

Yeah I'm sure someone can help you with that if you provide a bit more details :) If it's just for falling off a ledge, then it seems like as long as the positions of the start/end and the settings are correct it should work as long as your CMC if you use a character is set up to allow it to walk off ledges as I recall it has a setting that prevents it

viral field
#

What is cmc? And yes walking of ledges is activated

misty wharf
#

character movement component

viral field
#

ah ok thanks, so i will take some screenshots now

#

movement component is default ( its the default pawn blueprint )

#

*movement component settings are default

#

I noticed with the behaviour tree, it moves down like it would be a ramp, buts not supposed to be like that :p

terse bear
#

I'm using node memory in my service, does it lose the data when the branch evaluates or when the whole tree is re-run?

viral field
#

sorry i dont know what you are talking about :S

viral field
#

im currently using ai moveto anyway, since the tree would somewhat work, but not as intended

terse bear
viral field
#

so the recast default says initpathfinding start point not on navmesh. the controller says trying to find path to "ai name" resulted in error

#

ok looks like its only happening when im jump. so basicly everything is blue, it also shows my position on the debugger

#

and the ai's path

#

as soon it reaches the navlink point, it get "trying to find path to "ainame" resulted in error

viral field
#

ok i guess i have found the problem, the event tick was causing the troubles. But now its just floating down, not realy falling :/

#

it somehow slows down if reaches the point

rich veldt
celest python
#

Glass doesnt support it anymore though

#

but its still one of the most advanced ones ever released so far

celest python
#

i.e. change the braincomponent (what UBehaviorTreeComponent is) or asset

elfin hinge
#

Hi. What's the better way of controlling multiple (around 50) AIs in the arena? Each one have their own AIController or have a single controller that is controlling each and every one of them (even if their types are different, all of them use same class AIController).

celest python
#

if you need a manager for your AIs, either use actor(s) or subsystems

crystal hatch
sudden citrus
#

@crystal hatch would Gameplay Abilities Behaviors reasonably serve as building blocks for an AI system where there's a separate decision making layer on top of BTs/FSMs/whatever?

crystal hatch
# sudden citrus <@333981651245727755> would Gameplay ~~Abilities~~ Behaviors reasonably serve as...

You can make Gameplay Abilities work pretty well with AI (see Paragon bots). One problem with GAs is that there's so many different ways to implement things, so much freedom, that if you don't define clear rules for the designers building abilities you'll have hard time having AI reason about the available abilities and their effects.

separate decision making layer on top of BTs/FSMs/whatever?
can you elaborate on this part?

sudden citrus
#

For example a utility-based system which has a few BTs to choose from, and runs one in a loop or once, etc. It seems to be a popular pattern

#

OH sorry I said Gameplay Abilities instead of Gameplay Behaviors. I meant Gameplay Behaviors

real dock
#

I have a simple actor MeshActor with only a skeletal mesh component. If I tell my AI to Controller->MoveToActor(MeshActor) it works great.

#

I have an exact duplicate of MeshActor with the only difference being its root component is a Scene component rather than the static mesh actor. Let's call this SceneActor.

#

If I tell the same exact AI to Controller->MoveToActor(SceneActor) it does move to the correct location, but when it arrives, it stands there for 5 seconds and then the path following request result ends with a Blocked error.

#

In some cases it reports failure (blocked) even though it is WITHIN the acceptance radius of the original request!

#

Something about the scene component in the destination actor is causing the navigation system to completely break.

#

Any ideas what I should look at?

uneven cloud
uneven cloud
crystal hatch
sudden citrus
real dock
charred lava
uneven cloud
sudden citrus
#

I'm architecting against other people's mistakes πŸ™‚

uneven cloud
#

You think I don't work with designers? It's better to teach than to architect for their mistakes.

sudden citrus
#

It's a neat system all in all - I've got behavior trees wrapped in objects which handle the initialisation of the BB and can be parametrised by other systems thanks to that. There is some overhead but it feels clean.

sudden citrus
uneven cloud
sudden citrus
#

Do you have dedicated AI designers?

#

And @crystal hatch so would Gameplay Behaviours be a good fit for such a system? I'm guessing yes but wanted to doublecheck the intent since they first appear for Smart Object use

crystal hatch
uneven cloud
# sudden citrus Do you have dedicated AI designers?

I have 1 tech designer dedicated to combat AI, but other designers make AI.

I've done it the way you are suggesting on Psychonauts 2. I didn't use the gameplay behavior, but used the same functionality that it does for starting/ending a tree. It made things incredibly difficult to create new AI.

sudden citrus
#

What were the issues? If you are allowed to say

uneven cloud
#

The issues were that we had to initialize every blackboard key and clear it when the utility state changed. It was a lot of extra work and it created a lot of bugs.

#

You'd think it would be worse with sharing a BB, but I find people to be more intentional with their BB keys.

sudden citrus
#

Do I have to worry about it if I bin the whole BB every time I pick a new behaviour?

celest python
#

I wonder what designers do in bigger teams

#

for example do they ever script with BP? - in AI context -

sudden citrus
#

Just one example but Rocksteady is very code driven on AI side, almost to the level of hardcoding behaviour

crystal hatch
celest python
#

Daym, you're working with the wrong people!
πŸ₯²

crystal hatch
celest python
#

I'm jealous now πŸ˜„ I'm too used to also designing what I created πŸ˜…

sudden citrus
#

More and more non-technical people join games, and that's good. I'll soon have 3 paper-only designers on the team. The further this shifts, the more an engineer becomes a system builder rather than content builder

uneven cloud
#

As an AI programmer, you have to be a designer as well. That also means making good tools that reduces the complication of making good AI. I've worked on teams where no designer would touch AI and ones that they felt empowered to. It's always better when more people can try interesting things.

elfin hinge
# uneven cloud Unless you are writing a lot of expensive functionality, the AI Controller is no...

I though so too, but I have expensive functionality it seems. Because when I increase from 20 to 50, my frames drop from 60 to 40~. Models are Paragon regular minions, Behaviour Tree got 3 EQS (1 EQS at root and 2 at different branches) and I've got GAS. With SizeMap I can see that one AI has 200mbs and I've noticed with stats unit I have Game and GPU 26ms usage. So I'm just trying to figure out is it really that expensive or is it because I have seperate AI Controllers for each of those enemies (50 enemies, 50 controllers of the same Class). But thanks for response.

uneven cloud
crystal hatch
crystal hatch
elfin hinge
#

Yeah when I turn off behaviour tree and leave AI controllers, it's not the behaviour actions for sure, seems like Paragon mobs is the issue... Thanks both of you.

chilly bolt
#

Navmesh doesnt work in Shipping build
Hello there, has anyone ever faced the problem with navmesh rebuild in shipping build? In development/Debug everything works fine, but when we tried shipping build, we would get super weird behaviour like whole navmesh is moved somewhere, it doesnt rebuild, etc etc.. I read some discussions with same description but no luck with a solution so far

crystal hatch
chilly bolt
#

what a joker nah πŸ™‚
c'mon man, there bunch of links on the internet about the same issue. e.g
https://forums.unrealengine.com/t/ai-navigation-works-on-development-build-but-not-shipping/396802
or
https://forums.unrealengine.com/t/navmesh-not-updating-on-shipping-build/466418

so have you ever heard about something like that.. we are in a hurry a bit.. We need to deliver the build to a Distributor tonight but till today no one bother to try shipping build and now we have a real deal in here 😦

crystal hatch
#

have you tried turning it off an on again (delete navmesh and auto recreate)?

uneven cloud
lyric flint
#

I am having some issues getting my AI characters to hear a grenade sound. It worked a few days ago, but now it doesn't, and I can't for the life of me figure it out. Can someone please help me?

chilly bolt
#

that's not the case.. we generate navmesh on the fly. On a mission start, when an invisible obstacle(like quest barriers) disappears, etc etc.. everything runs smooth on development build but since tried the shipping build, things tend to be quite complicated. Navmesh is still there, but slightly moved. It is really really weird

crystal hatch
ocean wren
#

Had a great meeting with an immersive arts collective I'm working with on a story generation toolset last week. Basically brainstorming the toolset they wanted for immersive storytelling. I kind of miss that design discussion, just doesn't tend to happen in academia. They had some whacky ideas and we're going to try some of them. Will have a prototype plugin working before xmas and some fun demo videos early next year (its part of the funding agreement that the company demo's their use of the toolset). Looking forward to sharing some of it (things like voice controlled AI scene generation stuff)

#

My design notepad from the meeting looks kind of weird too.. got words like "chaos field" and the like πŸ™‚

#

voice controlled particle effects... hahahaha.. just thinking about it is funny πŸ˜‰

#

natural language is quite hot as a topic for generative stuff right now. Recommend looking at it. Huggingface do some really nice usable libraries for it too.

misty gale
#

Voice controlled sounds pretty awesome

#

I had an idea using that for VR DnD sessions

#

Procedurally generated as the narrator tells the story and sets the scene

real dock
severe cypress
#

My AI is a massive amount of the data going to clients on my dedicated server, specifically the ReplicatedMovement. Is there a good way to clean this up / optimize without making the AI movement choppy?

crystal hatch
safe crescent
#

Anybody know why my navmesh seems to be in the sky?

#

No aimoveto or moving nodes seem to work

crystal hatch
safe crescent
#

Alright i'll try that

#

Seems to appear fine when not in play mode though

#

which is the weird part

crystal hatch
safe crescent
#

All good thanks for you help

#

could it perhaps be something to do with the size of the navmesh since i have a pretty large map right now

crystal hatch
safe crescent
crystal hatch
safe crescent
#

The size of the navmesh is like 3250x3250x50

crystal hatch
#

3250 what? Tiles? Meters?

safe crescent
#

I think meteres

crystal hatch
#

it's not large πŸ˜‰

safe crescent
#

Just like the scale of the navmesh is 3250x3250 under the component like transform rot and scale section

safe crescent
#

Could be something to do with the engine version since im on 5.1 preview 2

crystal hatch
safe crescent
#

The navmesh boybds volume

#

bounds*

crystal hatch
#

right. So it's 3250 times the default volume size πŸ™‚ No idea what that is πŸ™‚ Around a meter I guess. Still - not large.

#

ok, so when I said remove the navmesh actor did you remove the bounds or RecastNavMesh actor?

safe crescent
#

I tried both

safe crescent
#

Quite weird but hey atleast its fixed

serene basin
#

The AI perception callbacks only seem to work when i walk into sight radius, if the actor spawns next to me that event doesnt get triggered? Anyone knows how to solve this with the AI perception component ?

serene basin
#

Ok I seemed to solve it by just disabling and enabling the component

proven plinth
#

I've created a BTService that on an interval attempts to attack. However when that service executes it hard locks the UE editor and i have to force quit and re-open UE. I've reduced everything inside of it down to a is valid check and a print string trying to trouble shoot it. I was modeling my BT after Lyra's BT_Lyra_Shooter_Bot example, that made use of a BTS_Shoot. Is there a catch/known issue around services with intervals? I get 0 logs, and cannot tell what is going on.

#

This is the BT if it helps at all.

crystal hatch
proven plinth
celest python
#

so this 100% happens right after that service executed? thinkblob

proven plinth
#

removing the service, no more locking, NPC will just move to its target and then stick to it like glue..

celest python
#

is there any chance you are hitting an ensure() or something similar in C++ side

#

because assertions collects callstacks when you hit them if you are not in debug mode

#

and it takes... quite a lot of time

#

did you try waiting 2-3 minutes?

#

you would see it in logs i guess though but.. nothing else comes to my mind

proven plinth
#

So, once i started seeing this, I switched to actively debugging in Rider, i never get a breakpoint from an exception, and ya.. nothing in logs. I'll let it sit here for ~5 and see if i get anything different.

celest python
#

if you ran with DebugGame Editor on Rider it should open the IDE immediately

#

if it didnt, then something else is wrong

proven plinth
#

I'm running Debug with the Development Editor | Win64 configuration

#

i'll switch to DebugGame and see what i get

celest python
#

it wont change anything if you're 100% sure debugger is attached to your editor, which should be if you ran with Debug

proven plinth
#

it is. i hit other breakpoints

celest python
#

can you try printing callstack on rider debugger

#

one sec

#

do this when editor is frozen

#

see what is evaluated/executed last time

proven plinth
#

so, hit pause and then invoke that? Because you dont get an immediate window unless you are at a breakpoint (that i'm aware of)

celest python
#

immediate window can be opened manually, at least in VS -- not sure if it allows you to do something with it tho

#

just play your game and let editor froze itself when you run the service

#

then invoke that

proven plinth
#

ahh that may have helped. I think I have a recursive call in c++ thats in an eternal loop.

#

Specifically the retrieval of the ASC in that service.

celest python
#

interesting

#

but nice, if it helped

spring jetty
#

is it possible to start running a BT from a specific branch ? or maybe go back to a previous task ? I have reached a point that I need to do sth like this. is it possible without cluttering the BehaviorTree with more decorators or services.. etc

uneven cloud
spring jetty
#

I have thought about doing it in code and not BT but it might get ugly, I thought this might be more intuitive but didn't think, implementing a back functionality would be hard

celest python
spring jetty
#

I dont' like using plugins, I'd rather implement sth myself and learn sth new, how would you implement a dialogSystem then >?

celest python
#

You can learn from plugins too, though πŸ˜‰

#

FlowGraph is basically a generic graph that lets you run latent nodes and it lets you customize them very easily

#

so its design makes creating dialogue system easier by its nature

#

for other type of systems there are GDCs for in-depth explanations

#

mostly for branching dialogue systems like in RPG games

spring jetty
#

I see thx, what is GDC though ?

celest python
#

Game Developers Conference

#

developers from industry do talks and GDC organization releases videos/slideshows

spring jetty
#

oh, thx for sharing!

uneven cloud
drowsy plinth
#

how to prevent AI from getting dragged on edges?

#

he is getting temporarily stuck on corners

uneven cloud
drowsy plinth
#

and ai stopped catching corners.

normal mist
#

What is the difference between a USmartObjectBehaviorDefinition and a UGameplayBehavior? It seems the UGameplayBehavior also has access to the smart object owner.

#

wait a minute. the rabbit hole just got deeper.

#

what is the difference between gameplay behaviors and gameplay interactions?

severe cypress
#

What kind of movement component do games like Ark use for AI?

normal mist
#

I notice that teams tend to be stored in the PlayerState (looking at ShooterGame). If I have a structure/building that can be assigned a team (say, a barracks for auto spawning pawns of its team), does that mean I should have the barracks be a pawn with an AIController that has a PlayerState?

#

feels a little overkill to make a structure be possessed by an AIController, however I don't want to have two different implementations of interacting with an Actor's teams

misty wharf
#

This depends on how you intend it to be identified

#

Nothing says you can't simply have a field on your building that tells you which team it belongs to

#

PlayerState etc. would be used for things that are players (human or AI), of course you don't need to do all that for things that aren't

normal mist
# misty wharf Nothing says you can't simply have a field on your building that tells you which...

Thanks, I appreciate the response. I'm using gameplay behaviors & smart objects to facilitate a "capture" interaction. Feasibly this could be used on buildings or units. If the implementation of the actor's team is the same, then the gameplay behavior is streamlined. If for units its stored in their playerstate, and for structures its in their actor, then the implementation for team-checking becomes divergent.

#

Also, does anyone know the difference between User Tags & Object Tags for a smart object definition?

#

I'm reading through the source code and looking at its usage in the USmartObjectSubsystem but I'm still scratching my head

misty wharf
#

I'm not familiar with the smart object stuff, but you should be able to identify teams by using IGenericTeamAgentInterface

#

So regardless of how the information is stored under the hood, if the actor implements that, that should be enough.... or if not, guess you could always use a custom interface :)

cosmic gulch
#

so say part of my behavior tree is devoted to roaming. Is adding a "Is roaming enabled decorator" then changing the value to false on child classes the most elegant way to handle that for child classes?

tidal spade
uneven cloud
crystal hatch
normal mist
#

Thanks for the response @crystal hatch

lethal helm
#

any idea why a dynamically spawned smart link isn't functioning

#

dynamic regular links work but not smart

#

okay... they spontenously started working after a editor restart

celest python
#

actually I finished it a while ago already but I wanted to provide a custom parser to let people write conditions like how it's presented in that GDC.. like someValue > 4 && otherValue == true on editor.. probably with csv or json support. but it was more time consuming than I thought and I was out of free time to continue developing the plugin

forest tundra
#

I said if the NPC doesn't see us, it should wander around randomly, if it sees us, it should run towards us. I adjusted the NPC tree by checking it with the bool variable. but why does the NPC stop when it sees us? can someone help?

crystal hatch
#

if you're referring to something said or posted in the past please reply to it, otherwise we're missing context

tidal spade
#

the tag-based approach is an interesting setup. I'd definitely want to lean heavily on gameplay tags but would also want to utilize other things like attributes from the gameplay ability system. I've been looking for the video of the presentation from that slide show but it seems the archives are incomplete

celest python
celest python
#

The "fuzzy tuple/pattern matching" they mention in the GDC is actually a "language feature", and C++ doesnt implement it by default - they wrote a custom software/engine for it to make it optimized afaik. Its probably implemented in some other old school languages like haskell, erlang.. and maaaybe in C#. I went through tons of research about finding the best and most optimized way to implement it on my own, but I ended up in an alternative solution. But I couldnt test it yet, so even if I release it today it'll be unusable because there wont be a proper way to add dialogues because you'll be adding structs to nested arrays in editor, which is infeasible to work with if you are developing something serious πŸ˜„

#

thats why I'm working on that parser I mentioned earlier, so designers will be able to type to a string field in editor and system will convert it into actual data with reflection system

tidal spade
#

oh wow. I knew the solution was over my head, but that's a lot more involved than what I expected.

#

I just followed you on github so hopefully I'll see if you ever decide to publish any of your work. thanks a lot πŸ™‚

finite parrot
#

hello, I'm new to ai behavior tree

#

what does lock ai logic mean? does it mean during this task, BT stops checking conditions?

celest python
#

animation system and AI system (brain component) has resource locking systems

#

it pauses the execution logic when you lock

#

so lets say if you are already running MoveTo task in BT, and you run that BP node, it stops the execution of BT so two moveto nodes wont conflict

#

or any other behavior

finite parrot
#

What if I still want to check BT condition during this move? do I need to store this task and manually kill it?

celest python
#

just uncheck the tickbox

#

if you dont lock it, it will continue evaluating the tree

finite parrot
#

yes but will this task still be running?

#

if condition does not satisfy

celest python
#

which task and which condition?

#

are you running this inside of a BTTask

finite parrot
#

yes it's inside a bttask

celest python
#

path following logic is not a part of behavior tree, so even without BT it would work if you just manage to call Move To (its actually a function in AIController, MoveTo and the node you posted are just wrappers for it with additional params to make your life easier)

#

if you are in BTTask, do not use Lock AI Logic

#

if you abort the current task or switch to another task, call StopMovement in AIController

finite parrot
#

ok

#

thanks

#

Solves my problem. Want my AI to break circling player task and switch to chasing task immediately if player gets out of attack range when the circling move is still running.

#

Adding a little bit of cooldown to the branch seems to help with BT flashing too fast.

leaden fulcrum
#

I struggle to understand the condition for Bool Match on a Trace test in environment query:
If I want to get the point of a donut from which the player is visible then it seems like I need to set Bool Match to false. Which doesn't make sense to me, since in the block it displays it as "require not hit".
How do I need to understand bool match?

#

From the docs:

When performing a Test, not matching this value will not change the score.
I interpret this as all points that don't lead to a sucessfuly trace (line of sight) should be filtered out. Therefore, Bool Match should be true, since I only want to keep the points where the trace was indeed sucessful. However, something seems to be wrong about my logic here, because to get it to work I need to set Bool Match to false.

spring inlet
#

is there some way to integrate something like exchangeable sub routines in the AI, or to execute two BTs for one actor?

keen crow
celest python
#

What is the best way of checking line of sight without using perception component?

#

My AIs are lightweight and doesnt require anything perception component provides other than checking LoS

#

I guess there is AIController::LineOfSightTo

#

but it also seems to be doing linetraces which makes me think it its really accurate or not

lusty nebula
#

what else would you expect the system to use if not a line trace?

celest python
#

It does 4 line traces to different locations, I'm wondering how it detects things between those traces

#

I think I'll write a custom one..

uneven cloud
celest python
uneven cloud
ocean wren
#

Oh wow, that was embarassing, thought I'd goofed with some rendering because it was running slowly.. turns out I was literally downloading the planet in the background, forgot about those torrent files πŸ™‚ hahaha

ocean wren
# celest python I think I'll write a custom one..

The stalker series picked random bones and just did traces to those.. I did the same and it felt pretty decent.. perhaps not 100% immediate every time, but pretty damn near.. and you can priorities specific bones if you like

spring inlet
stoic cliff
#

Hi, so im quite new to AI but saw it as an inevitable step in the game im making. So, im making an rts style game, where units can be selected and pressed to move. Currently, i can make them move with the Move To Location command, but they all try to move to same position. How can i utilize the AI systems to make them move to form formations automatically and space out? And select optimal location based on current position?

#

And how can i program them to move out of the way when another unit is attempting to move through them?

#

Or should that just be accomplished by allowing the moving actor to push the others? πŸ€”

celest python
stoic cliff
crystal hatch
# stoic cliff I just saw that EQS was a feature in development, and i want to avoid bugs as mu...

EQS is marked as experimental only due to the tool’s UI, which is not to Epic’s standards and we don’t have time to work on it. The core of EQS is as solid as it gets and there’s a countless number of games that shipped with it (both internal end external, including all Epic’s games from past 8ish years). The core is so mature no more than two issues get reported a year for it, and it’s edge cases usually.

stoic cliff
crystal hatch
#

this might not have been announced publicly yet, so.. there you go πŸ˜„

stoic cliff
#

Sounds exciting! :)
Thank you

haughty coral
#

I wonder how EQS would compare to this https://twitter.com/skylonxe/status/1588861427380805633?s=46&t=UkmCzsMlxlj7ukCZRwzgIg . To me it looks a bit too much like EQS. Not sure what was the motivation to create this instead of using EQS. Looking forward to any movement in EQS, I hope it happens one day. My wishes are only more modern handling of stuff like param types (I guess planned as I heard state tree has that already covered). Now I also have a great opportunity to say something I imagined to say at the beginning of development of all AI systems: don’t you dare to use there somewhere AAIController instead of AActor πŸ˜† These things are too useful to be tied to AI stuff.

Generic targeting system plugin was recently added to UE5. It can be used also with abilities to build your targeting in a modular way using tasks like selections, filters and sorts. https://t.co/VVHuApxU4B

crystal hatch
haughty coral
#

Awesome :P thanks for the reply.

celest python
#

For example unreal's current actor transform system was used by Sony for PS2, but they refactored it at 2006 for PS3, and at 2007 they made a talk about how terrible it was. And unreal still using that system in 2022. dont expect to have moving 1k actors in Unreal without some crazy changes in the core system of UE πŸ˜„

crystal hatch
celest python
#

yeah, to be honest, it was the best idea so far I've seen πŸ˜„

#

it literally provides an alternate gameplay framework

crystal hatch
celest python
#

now thinking about it, since years looks like AI team actually had the lead of development for most of the gameplay framework in Unreal Engine thinkblob

#

so I'm not surprised #mass came out from AI team πŸ˜„

crystal hatch
celest python
#

Yeah, sure. Though when developing a project without diving into low-level code you mostly see things are shaped by AI team

misty gale
#

sorta sounds like it just traces towards target, regardless of source rotation

celest python
#

yeah i guess its not what I'm looking for

#

until I write my custom one I'll go with that function + dot check i guess

ocean wren
#

Avoidance Alice wants a word

stoic cliff
celest python
#

Am I too young or green to understand this joke? cryalot

celest python
#

so its more flexible for a fast paced action rts where a lot of things going on in the screen

ocean wren
#

So, had a few days of working in Unity.. I like the C# language, but got really annoyed at the pass by reference nature of its data structures.. real pain in the arse

#

Kept blowing past my geometry buffers because it was using a class for primitives and apparently it was treating every geometry primitive as a shared reference rather than what I actually wanted (individual values). Sheesh

#

Now back to voice control plugin

celest python
#

aww

clever mason
#

I'm on the verge of rage quitting! How do I create a [Combat Manager].

I'm trying to create an open world game similar to Shadow of War.

I need Enemy AI to attack one at a time and I keep failing. Pictures would help pls.

celest python
#

are you trying to have something like a token system?

#

only single AI attacks to player at once

celest python
# clever mason I'm on the verge of rage quitting! How do I create a [Combat Manager]. I'm try...
GDC

In this 2018 GDC session, id Software's Kurt Loudy & Jake Campbell detail the philosophy behind the combat design of 2016's DOOM and its implementation, and discuss the possibility for its inclusion in multiple genres.

Register for GDC: http://ubm.io/2gk5KTU

Join the GDC mailing list: http://www.gdconf.com/subscribe

Follow GDC on Twitter: htt...

β–Ά Play video
clever mason
#

@celest python I watched the important bits but I still don't get it. Do you have blueprints or a behavior tree I could follow to at least get step 1

celest python
#

all you need to do is setup the plugin properly then subclass UAITokenBase and override SelectBestSubscriber function and do your own logic to select best one

ocean wren
#

OPEN SOURCE!

#

goddam it πŸ™‚

#

taking our jobs etc..

celest python
#

taking our jobs
I just need.. uh.. checks notes have 20+ years of CS experience and some god-level ML knowledge to do that.. πŸ˜‚

ocean wren
#

Yeah, well, easy to come by πŸ™‚ hhahaha

celest python
#

See you 20 years later sadcatup
unless I pass the exams to Lincoln University to study CS πŸ˜‚

ocean wren
#

I think you'd be ok.. given you're already programming

#

You can learn a hell of a lot by actually doing it πŸ™‚

celest python
#

One of the most solid computer scientist I've spoke earlier was said "the useful part was about studying CS is knowing what book to read and the homework assignments" and "rest of the time was wasted"

so if I'd ever study CS, it would be probably only to involve into ML researches or projects etc.

#

because in 2022 you can already access information everywhere and get code reviews, open source projects everywhere etc.

ocean wren
#

Yeah, its a bit of a weird viewpoint, but yes you can pretty much access anything

#

degrees are more like social clubs than anything really important knowledge wise

#

BUT, its a friendly place to learn stuff if you're of a mind to, which isn't that often πŸ™‚

#

I mean, I've got a masters student looking at neural radiance fields to try and generate usable meshes for them.. I'd argue that was a good thing to work on and study

#

The reality is, most students would be happy just paying the $$ and taking the degree paper.. I'd rather we offered them for sale, but apparently we can't πŸ™‚

#

The whole system is messed up

celest python
ocean wren
#

Would be better honestly, to make a small studio and just work on really hard stuff for a few years πŸ™‚

celest python
#

I guess that's what you're turning your classroom into, right? because whenever I see you are talking about your project your students also always involved in it - unless its completely commercial thing

ocean wren
#

That said, there's a lot to learn out there.. if you're that way inclined.. lots of avenues for mindful approaches (neuroscience and neuroaesthetics for instance)

#

I wish I could do more

#

mostly I'm just doing commercial contracts myself.. don't have enough time to do enough of it to get a proper business going

#

So much opportunity, so little time πŸ™‚

clever mason
#

@celest python Wait I never used github before does that mean I have to install Git to UE4 plug-in or can I just use the code immediately?

celest python
celest python
#

then paste the folder to your ProjectFolder/Plugins

#

then compile your project

ocean wren
#

Honestly, not even sure anymore.. we're about to go on strike, I suspect it'll get nasty, in some ways I'm hoping I get laid off or something, will give me the incentive to take a new approach

celest python
ocean wren
#

I can come back to the research later.. commercializing it would be fun right now

celest python
ocean wren
#

Lots of weird stuff going on in the UK right now

celest python
#

but yeah no doubt there is a valid reason behind it

ocean wren
#

and education is no exception

celest python
#

my country is no different so I completely understand

ocean wren
#

They're basically pushing us to bring in $$ as consultancy etc.. at which point I'd rather work for myself πŸ™‚

celest python
#

who knows maybe you can even create some cool stuff for UE too πŸ˜„

ocean wren
#

Less dealing with beaurocracy at least

#

Yeah, I've already got a big company in London interested in my current project's outcome

#

After Thursdays event πŸ™‚

#

I guess voice based AI driven pcg got them a bit interested

celest python
#

are you thinking about some end-user facing or something like a (social) platform related AI work soon?

#

be it something related with game dev workflow or something like text-generator AI for users etc

ocean wren
#

This is mostly production tooling

#

Bit in the middle.. the use case is non-expert creative types in VR/AR

#

and virtual production

#

Basically, its all immersive Unreal Engine stuff, but we're exploring voice driven PCG as a toolset for creative exploration in that space..

#

given that we've got pretty solid natural language tools and voice understanding and voice generation.. and good language modelling of characters and the like..

#

I mean anyone can do this stuff, as long as they grok ML and PCG and UE πŸ™‚ hahahaha..

celest python
#

I guess industry relies on a few open source frameworks.. πŸ˜…

ocean wren
#

I've got some second year students looking at maybe tying gpt3 and stable diffusion together

#

there's so much stuff to sort of smoosh together if you're of a mind to

celest python
#

not SD but a different type of it

ocean wren
#

yeah, I told them to look at that too

#

those large language models are pretty much everywhere at this point

celest python
#

if everything shares the same base framework where is the innovation tho

#

everything is GPT3 burn

ocean wren
#

its not all the same base.. there's bloom which is an open source one, there's gpt3 which is OpenAI + Microsoft, there's T5XXL which is googles one, there are a few more. There's huggingface's api etc.

#

and there are like a dozen more being trained at massive scale currently, both open and closed source

celest python
#

what it takes to create one from scratch? -- if you dont mind explaining like I dont know anything πŸ˜…

#

is it same thing like not creating a game engine from zero but working on UE

ocean wren
#

basically, scrape every bit of text you can from the internet πŸ™‚

#

then train a model with attention across all of it for thousands of hours πŸ™‚

normal mist
#

What is the difference between User Tag Filter and Object Activation Tag Filter in a SmartObject Definition?

#

I looked at the source code and couldn't quite infer

celest python
ocean wren
#

the basic idea of these language models, is that at larger scale, they learn concepts.. not just words like "dog" or "cat", but they have the concept of dog as a cluster in the language model.. so dog, chihuahua, canine etc.. all live in the same area in latent space (like a reduced set of numbers that captures the core of language)

#

they're spending like half a million quid training these models

#

or more

celest python
#

quid?

ocean wren
#

GBP πŸ™‚

celest python
#

oh πŸ˜„

ocean wren
#

pounds

#

the power of the models, is that you can ask them to do things like fill-in-the-blanks on masked input.. "the ??? sat on the mat" style

#

or you can ask them to give you all the verbs, or nouns

#

you can ask them questions about the sentences

#

you can see longer term relationships between texts, because they've literally seen all the text there is on a concept

celest python
ocean wren
#

so for instance your character.ai thing, they've seen all the albert einstien text out there.. his history, his writing, people discussing what he said etc..

#

it interprets it as a latent vector... its basically a compressed code (bunch of floats)

#

the point is that you can give it something like an image that has been compressed into its own latent vector space... and something like Clip, which was trained on image/text pairs.. so the text gets compressed into a vector along with the image.. they map to the same space in vector space

celest python
#

so there is a "nativization" step to make AI approximate the output

ocean wren
#

so for instance, the word "dog" is in the same latent space as the image of a dog

celest python
#

turns things into "nueral" language

ocean wren
#

its a tensor of numbers which represents a notional concept space, where different words/images/whatever are expressed as clusters of similar things

#

i.e. dog image maps to same space as "dog" text

#

(not quite, but conceptually)

celest python
#

sounds terrible for CPU cache, I guess I understand why GPUs are widely used πŸ˜„

ocean wren
#

from a practical point of view, they're just tokenized vectors

#

the point is, given billions of them.. the model learns the relationships between concepts

celest python
#

so if you just have.. enough power to supply the training you can just re-create a GPT3 with enough of engineering care?

ocean wren
#

i.e. it probably sees "hair" quite often near the word "dog" so it "knows" that dogs are likely hairy

#

yeah, bloom is an open source gpt3, trained on a cluster..

clever mason
#

@celest python I feel like I'm walking in the dark. I've never used visual studio.

celest python
#

if you put that to .ini file mentioned, it will compile automatically for you

#

so you dont have to deal with Visual Studio

#

or simply just open the .uproject and when it asks you to automatically compile things press yes

celest python
#

to organize the data to not make AI biased to produce wrong results

#

so it can train itself

#

with less engineering care

#

so you dont have to manually train AI each time

ocean wren
#

There's a whole funnel of stuff to work on.. yeah, trying to unbias the training data is part of it

#

most of the time, you don't train AI from scratch.. you use a process called fine tuning, which basically freezes parts of the model and lets you train the other bits

#

with ML, you're basically pushing floats up and down in the model by tiny amounts

celest python
#

ughh ai looks so fun to work with panda_hype

#

wish I could have time to work on ML

ocean wren
#

try some practical stuff and you'll be hooked

#

but be warned, you'll have to learn python (ptooey)

celest python
#

yeah switching to weak typed language from C++ wont be smooth i guess πŸ˜„ but a small price to pay

celest python
#

books i guess?

ocean wren
#

huggingface πŸ™‚

celest python
#

I should directly start working with a framework? thinkblob

ocean wren
#

hmm, books? nah not really.. try the fast.ai course, its free and pretty good to get straight into it

celest python
#

alright

#

thanks salute

ocean wren
#

you're very welcome

#

apparently they're doing an image generation course with fast.ai and jonathan whittaker.. due out in a week or so

#

the reason I mention fast.ai is that they basically go straight into doing something cool with ML, then back up and introduce all the parts.. its a neat way to teach

#

means you understand what it can do even though you don't know why until later πŸ™‚

clever mason
#

@celest python Sorry I utterly failed to follow directions maybe I'll try something else.

celest python
clever mason
#
  • Extracted the Token
  • added the auto compile set up to UE4
  • I didn't have projectfolder/plug-ins for my UE4 project so I created one in the actual project
  • Nothing happened
celest python
#

can you show whats inside of your Plugins folder?

#

it should be Plugins/AnotherFolderThatYouCanNameToAnything/ExtractYourZipHere

#

UE looks down to paths by folders and finds .uplugins files on each folder to recognize them as plugins

#

if you directly extracted it to /Plugins it mgiht not work

clever mason
#

Alright I give it a shot after I take a break

spring inlet
#

is there a way to set the socket for the AI Perception component?

cinder garnet
#

having a problem with my AI, in the middle of a chase, or even if i stand in front of him, randomly he will stop chasing me and then start patrolling again. does anyone know what i should edit in what i have, or a way to fix this problem

right before i added his random patrolling, there was no problem with him following me

#

his peripheral vision angle shouldnt be the problem

uneven cloud
uneven cloud
cinder garnet
#

replaced with custom event, works now

celest python
#

you can recall event after this node

#

to make it loop

#

latent nodes and tick doesnt go well

cinder garnet
#

and what is the noe called i have to replace with tick, still very next with this, only been doing it for a week

celest python
#

you can call the event node you created

#

the one you replaced with tick

#

to the is moving set?
after it

cinder garnet
#

Okay so delete the event tick, and put "IsMoving?" Where the event tick currently is

meager imp
#

I am having problems understanding what the different versions of "Abort" do
Abort Self / Abort Lower / Abort Both
any idea where I can get some info about this? πŸ€”

#

or help me understand this:

  • Abort self is to cancel the subtree if the condition becomes false
  • Abort lower is to cancel the other subtrees if the condition becomes true
    is this correct? πŸ€”
crystal hatch
severe tangle
#

How can I set up Detour Crowd avoidance? I have my custom AI Controller set as AI Controller Class on a Character Blueprint, this custom AI Controller has Detour Crowd AIController as parent class, but it doesn't work. AI doesn't avoid other character..

crystal hatch
magic jasper
old lichen
#

Isn't there a BT node for modifying BB values?
Do I need to create a task?

celest python
#

there isnt a generic one

old lichen
#

alright

#

BTW, I don't get the point of conditional loop decorator checking if a key is set or not rather than its value.
How can I do the same but checking a boolean value?

#

I mean, same as before? Do I create my own decorator?

#

Also I need the task to be executed at least once, like a do while

#

Can't see how to do that

lyric flint
#

Can AIPerception be used with an AI that can see 180 in horizontal and also vertical?
By default it seems that it can only see horizontal and a bit vertical as it seems a cylinder rather than spherical.

plush cargo
#

I have been trying to troubleshoot my knockback function and it seems that i cannot affect AI actors movement when they are running behaviour trees. Is there any easy way to override this?

normal mist
#

For some reason USmartObjectSubsystem::FindSmartObjects isn't finding any smart objects on a world partition level. However, it is finding smart objects on a non-world partition level

#

does anyone have any ideas?

#

I found the SmartObjectionColelction actor in the world partition level and hit "rebuild collection" and can see the smart objects in the collection

uneven cloud
plush cargo
uneven cloud
plush cargo
#

but thanks for showing me launch character

waxen hare
#

Hello! I am trying to create some wall-traversing NPC's (Spider robots), but I'm only now realizing that navmeshes are Z-up only. Are there any plugins that does a decent job of vertical traversing, or will I just have to build my own pathfinding from scratch?

#

Haven't found anything premade so far

uneven cloud
plush cargo
#

if i just make a new actor and apply the knockback to it, it works. assigning the ai controller disables the knockback

#

i tried disable movement and stopping movement as tasks

#

nothing works

uneven cloud
#

The behavior tree only controls movement by navigating, unless you added something.

plush cargo
slow sphinx
#

Man I have no idea what I did but suddenly my character won't move...I checked the player controller and the Simple Move To is firing...the character simply isn't moving....

plush cargo
crystal hatch
crystal hatch
crystal hatch
normal mist
crystal hatch
# normal mist Thanks for the response. Would this explain why one of my smart objects returned...

Would this explain why one of my smart objects returned in a FSmartObjectRequestResult not finding its proper SmartObjectComponent
This is not WP related, it's a feature of the Collection. The whole point of the collection is that you can simulate smart objects (using Mass under the hood) without needing the actor to be streamed in. This logic is a bit convoluted and I'm working on changing that.

Also, do you have a rough ETA on when they would support WP? Is this something I could submit a PR for?
This should be available in 5.2. If you want to use it asap (i.e. using Master branch) then it should be ready(ish) in around two weeks (baring no distractions). You can post PRs but note that it's not really an implementation issue, the architecture of the approach needs to change.

normal mist
crystal hatch
normal mist
#

Absolutely, will confirm. Booting up. Version 5.1 preview 2

#

It's taking me longer than expected to get results. When I remove the actor with the smart object from the level to validate that is the associated actor, my player's spawn gets despawned after a few seconds which prevents me from opening an in-game menu to check

#

okay got it. confirmed the actor

#

Pressed F8 after hitting play and I'm looking at the actor

crystal hatch
#

and you're sure the smart object you're handing is associated to this actor?

normal mist
#

I hit "Rebuild Colelction" on SmartObjectCollection and found 3 collection entries, one associating with each of the 3 "depot" actors, each of which has a smart object component

crystal hatch
#

Do you happen to hit a failed ensure when you end PIE?

normal mist
#

Querying USmartObjectSubsystem::FindSmartObjects(FSmartObjectRequest), I get three results, one for each of the bases. and for one of them it can't find the smart object component when running USmartObjectSubsystem::GetSmartObjectComponentByRequestResult

normal mist
normal mist
#

I did a ctrl + f in Output Log for "ensure" and didn't find any matches

#

message log looks fine, no errors or warnings

crystal hatch
#

might contain hints.

normal mist
#
LogSmartObject: VeryVerbose: Registering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428 not added to collection since Main Collection is not set yet. Storing SOComponent instance for registration once a collection is set.
LogSmartObject: VeryVerbose: Registering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607 not added to collection since Main Collection is not set yet. Storing SOComponent instance for registration once a collection is set.
LogSmartObject: Main collection 'SmartObjectCollection_0' registered with 3 entries
LogSmartObject: VeryVerbose: Registering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: 'BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428[2149769503]' already registered to collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: VeryVerbose: Registering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: 'BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607[1782400616]' already registered to collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: Collection 'SmartObjectCollection_0' registration from USmartObjectSubsystem initialization - ESmartObjectCollectionRegistrationResult::Succeeded

This is only referencing 2 out of the 3, first hint

#

going through the log...

#
LogSmartObject: VeryVerbose: Registering BP_TerritoryControlBase_C /Memory/UEDPIE_0_MainGrid_L0_X-1_Y0_DL0.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DA824701_2019018016 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: 'BP_TerritoryControlBase_C_UAID_E45E37FB55DA824701_2019018016[4231601148]' already registered to collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: Verbose: Adding SmartObject '1782400616' to runtime simulation.
LogSmartObject: Verbose: Adding SmartObject '2149769503' to runtime simulation.
LogSmartObject: Verbose: Adding SmartObject '4231601148' to runtime simulation.
#
LogSmartObject: Rebuilding collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0' from component list
LogSmartObject: Reseting collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: Verbose: Adding 'BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428[2149769503]' to collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: Verbose: Adding 'BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607[1782400616]' to collection 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0'
LogSmartObject: Verbose: Claim SUCCEEDED for handle Object:4231601148 Slot:3 User:1. Slot State is 'ESmartObjectSlotState::Claimed'
LogSmartObject: Verbose: Start using handle Object:4231601148 Slot:3 User:1
LogTemp: Error: SmartObjectOwner in UCaptureBehavior::Trigger does not extend team interface
LogSmartObject: Verbose: Released using handle Object:4231601148 Slot:3 User:1
LogSmartObject: Verbose: Claim SUCCEEDED for handle Object:4231601148 Slot:3 User:2. Slot State is 'ESmartObjectSlotState::Claimed'
LogSmartObject: Verbose: Start using handle Object:4231601148 Slot:3 User:2
LogTemp: Error: SmartObjectOwner in UCaptureBehavior::Trigger does not extend team interface
LogSmartObject: Verbose: Released using handle Object:4231601148 Slot:3 User:2
LogSmartObject: Verbose: Claim SUCCEEDED for handle Object:4231601148 Slot:3 User:3. Slot State is 'ESmartObjectSlotState::Claimed'
LogSmartObject: Verbose: Start using handle Object:4231601148 Slot:3 User:3
LogTemp: Error: SmartObjectOwner in UCaptureBehavior::Trigger does not extend team interface
LogSmartObject: Verbose: Released using handle Object:4231601148 Slot:3 User:3
#

Final bit:

LogSmartObject: VeryVerbose: Unregistering BP_TerritoryControlBase_C /Memory/UEDPIE_0_MainGrid_L0_X-1_Y0_DL0.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DA824701_2019018016 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: Verbose: Removing SmartObject '2149769503' from runtime simulation.
LogSmartObject: Verbose: Removing SmartObject '1782400616' from runtime simulation.
LogSmartObject: Verbose: Removing SmartObject '4231601148' from runtime simulation.
LogSmartObject: 'SmartObjectCollection /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.SmartObjectCollection_0' ASmartObjectCollection::EndPlay - Succeeded
LogWorld: UWorld::CleanupWorld for Level_Virtual, bSessionEnded=true, bCleanupResources=true
MassEntity: New page: MassEntity
LogSmartObject: VeryVerbose: Unregistering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACE4501_2092616428 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
LogSmartObject: VeryVerbose: Unregistering BP_TerritoryControlBase_C /Game/RoyalDivision/World/Levels/Virtual/UEDPIE_0_Level_Virtual.Level_Virtual:PersistentLevel.BP_TerritoryControlBase_C_UAID_E45E37FB55DACF4501_1154875607 using definition SmartObjectDefinition /Game/RoyalDivision/Features/Interactions/Capture/CaptureDefinition.CaptureDefinition.
crystal hatch
#

something does seem off, but it's hard to tell what exactly without stepping through code. Sorry.

normal mist
#

no worries, I really appreciate you taking time out of your day to chat

#

thanks for all of your work on this system & Mass!

#

Are you aware of any literature online detailing how to properly set up smart objects in World Partition such that they are registered properly into the subsystem & collection? I am just hitting Rebuild Collection on the SmartObjectCollection actor in the level. I wouldn't be surprised if I was skipping a step

#

I am aware of the commandlet

#

Not sure how I would be regenerating the list at runtime though to account for a smart object attached to a moving actor

crystal hatch
crystal hatch
normal mist
#

Ill take a look at how Lyra handles their capturable control points since that is effectively what I'm implementing

#

I'm building out a debug menu which shows what interactions are near a player, and I am currently using Smart Objects + UGameplayBehavior as the foundation for the interaction system

crystal hatch
normal mist
# crystal hatch we are working on a "gameplay interactions" system that's an AI-independent exte...

Awesome! I feel so fortunate to be able to look through the engine and sample project's source code to see how folks are going about these implementations. Not being in a big company anymore, I miss that ability to look through company wide repos to see how folks who are really knowledgeable about a specific use-case do their implementation. Using Unreal Engine gives me a bit of that with the source code being available.

#

I guess there's nothing stopping me from making multiple drivers for my implementation system (i.e. one using Smart Objects, another using a very lite home-grown system that gets me as far as I need to go until Smart Objects is feature complete)

#

I already have my own UMyCoolGameInteractionSubsystem which provides the standardized interaction API ontop of whatever the underlying foundation is, whether that be smart objects or something else

crystal hatch
normal mist
#

It's been fun seeing the recent shift towards FSomeFeatureHandle and it being interacted with through USomeFeatureSubsystem in various new UE features

slow sphinx
crystal hatch
#

vislog, what does it say?

slow sphinx
#

I was unaware of the vislog @crystal hatch Thanks for that

#

not sure what it means though 'Start point not on navmesh'?

crystal hatch
#

it should draw the relevant locations in the viewport. It means the system was unable to project the point to navmesh. So either no navmesh in that area, or the starting point was too high above the navmesh.

slow sphinx
#

This is what I'm seeing for the navmesh...that's really confusing

#

I was standing in the center of the picture when it was doing that

#

@crystal hatch I may have messes with the Navmesh settings for the project...is there an easy way to reset those settings?

crystal hatch
slow sphinx
crystal hatch
#

there might be, I just never used it πŸ˜„

slow sphinx
slow sphinx
#

The Navmesh bugged out

#

that's all it was....yet another UE5.0 bug

#

I have no clue why it seems I keep coming across every UE5.0 bug in existence

#

if you change anything on the Navmesh settings in UE5 it seems likely it will bug out the Recaster
that I am assuming is the cause of the bug

crystal hatch
#

if that's the case then it's an unknown bug. Have you tried debug drawing navmesh at runtime? Is your game Client-Server or standalone?

slow sphinx
#

They did change the RecastNavmesh actor in 5.0

#

Everything I have noticed so far that they have changed has one or more bug so far...I've literally not found one thing they changed that wasn't ate up with bugs

#

Can't wait for 5.1

#

I'll look into that debug drawing though at runtime, I've done it once but don't remember how. Thanks for introducing me to the Visual Logger.

crystal hatch
crystal hatch
slow sphinx
#

Nevermind

#

I thought they did

#

lol

#

I never touch it anymore and I thought I checked and didn't see them. I know that in UE 4 changing it from there never worked so I must have assumed they were removed finally

#

It would but restarting would reset them

#

Maybe it's only meant for testing or perhaps the link between that and the project settings were never setup? Idk

crystal hatch
slow sphinx
#

Maybe I'm mistaken but I clearly remember changing them from the RecastNavmesh actor and it didn't work in UE4...I even remember spending days trying to figure out how to do it properly until I came across a video showing how to get around that by setting it from the Project Settings

crystal hatch
#

whenever anyone reported that as a but it turned out they were messing around with agent properties πŸ™‚

slow sphinx
crystal hatch
#

that's why I said that these specific ones should be hidden in instance's properties display.

slow sphinx
#

when I was first learning about nav meshes that really threw me off...like I said I spent days trying to figure out how to do it

slow sphinx
#

I haven't touched them that often since then because I've been exploring other areas but I guess I'll have to refamiliarize myself again

#

Thanks for the talk and the info, appreciate it

vast relic
#

Who here is the navmesh guru?

#

I'm working on a vision and influence mapping system, I wonder if I should piggyback on the navmesh instead of doing my own thing in parallel

meager galleon
#

Quick question, I'm implementing a drone companion for my character and want it to follow the character (among other things), would it be smart to add a Key to my blackboard with the player's location and constantly update the value in the AIControllers tick function?

#

Something tells me there must be a better way.

#

Nevermind, just answered my own question. I just update the location in a task of course.. Overthinking.

celest python
crystal hatch
lethal helm
#

is there a way to enable debugging or logging for navlinks?

#

I know the navlink line fails to draw if the navlink is invalid for some reason but I haven't figured out how to get it to tell me why the navlink is invalid

celest python
#

I didnt use navlinks so far but check visual logger

#

is there any thread safe way to project a point to navigation?

#

without accessing any type of UObject

celest python
#

it just needs more love to stop creating weird curves like this but if I ignore this result looks like 1:1 to Death Stranding's method

lethal helm
#

I hate smart navlinks so much

#

I'm somewhat tempted to just add a sphere collision to the non-smart navlinks so I can get nav link started event without the bugginess

uneven cloud
lethal helm
#

I'm using c++

#

sometimes the smart links work sometimes they don't. sometimes they work and appear visually while debugging navigation sometimes they don't

#

sometimes they don't appear visually yet still work

#

Works perfectly

FVector SpawnLocation = FVector(0, 0, 0);
FRotator SpawnRotator = FRotator();
ANavLinkProxy* NavLink = GetWorld()->SpawnActor< ANavLinkProxy>(FallNavLink, SpawnLocation, SpawnRotator, SpawnParams);
NavLink->PointLinks.Empty();
FNavigationLink PointLink = FNavigationLink(GridPointArray[i], FoundPoint);
PointLink.Direction = ENavLinkDirection::LeftToRight;
NavLink->PointLinks.Add(PointLink);```
#

Only some of these links work and they aren't visualized by nav debugging

FVector SpawnLocation = FVector(0, 0, 0);
FRotator SpawnRotator = FRotator();
ANavLinkProxy* NavLink = GetWorld()->SpawnActor< ANavLinkProxy>(FallNavLink, SpawnLocation, SpawnRotator, SpawnParams);
NavLink->PointLinks.Empty();
NavLink->GetSmartLinkComp()->SetLinkData(GridPointArray[i], FoundPoint, ENavLinkDirection::LeftToRight);```
#

also works perfectly

FVector SpawnLocation = FVector(0, 0, 0);
FRotator SpawnRotator = FRotator();
ANavLink_Climb* NavLink = GetWorld()->SpawnActor< ANavLink_Climb>(ClimbNavLink, SpawnLocation, SpawnRotator, SpawnParams);
NavLink->GetSmartLinkComp()->SetLinkData(OutPoint, Start, ENavLinkDirection::LeftToRight);
NavLink->PointLinks.Empty();
NavLink->ClimbPoints = ClimbPoints;```
lyric flint
#

is there any way I can have my AI be stuck to a single axis via the blueprint chart? I've tried a lot but the AI doesn't respond to it. I've tried constrained to plane and blocking off the other axis with the volume modifier.

lethal helm
lyric flint
#

like I want to constrict it to the Y-axis

#

so my AI can just move up and down only

lethal helm
#

oh you will want to make a custom ai movement system then

lyric flint
#

is that possible in BP?

lethal helm
#

no

lyric flint
#

oh

#

then I'm kinda screwed

#

oh geez

#

I appreciate the help

harsh storm
#

It is possible in BP.

#

Just a lot more laborious πŸ˜…

lyric flint
#

you say

#

it's possible

#

where can I start?

harsh storm
#

Just create an actor component

#

Then start doing what you need to.

#

You will be starting from absolute scratch mind you.

#

So you won't have nav support out of the box.

#

You can do it in BP, but it 100% is not worth it.

#

Just pick up a little bit of C++ and then create what you need.

lyric flint
#

alright

harsh storm
#

All that said - I'm pretty sure the movement components can already restrict movement πŸ€”

#

There are settings here in the CharacterMovementComponent for example

#

It's also in the FloatingPawnMovement component

lyric flint
#

I have that enabled on the AI but he will just move a bit but then sit there

#

it's weird

crystal hatch
# lyric flint I have that enabled on the AI but he will just move a bit but then sit there

How do you make your AI move? If you’re using pathfinding at all then there’s your problem - the path probably isn’t restricted to your plane, so character’s movement doesn’t match path following component’s expectations, thus path following failure, thus stopping.
Your AI should be able to move if you just use β€œdirect” movement commands (i.e. without using navigation).

winged zinc
lyric flint
#

I'm using the basic Navmesh. It seems to me you are right because that could be the reason. Do you mean just go into the BP itself and just write down movement commands? I just want the AI to roam about the one plane without moving one unit into the other and still doing the whole AI tree commands.

crystal hatch
lyric flint
#

hmmm, so I need to pick the axis of where to move before I start to move there?

crystal hatch
lyric flint
#

oooooh

#

I think I understand

ocean wren
#

looks good Eren!

ocean wren
#

Hmm, whats the preferred way of capturing mic audio in unreal do you think? there's an onlinesubsystem for voip, but I dont need the online bit πŸ™‚

celest python
ocean wren
#

Yeah, maybe thats the one.. I used that before.. but I don't really want to use a component for it.. cos I'm after doing some editor tools using it too

#

I guess I could look at how it works and just see if I can make it a subsystem

#

First, I'll have a go with FVoiceModule and see if that works

winged zinc
ocean wren
#

There are a bunch of apps like that

#

I mean its a fair idea, just a lot of competition

median arch
#

anyone able to help me debug my Perception Component? It suddenly seems to have stopped firing OnPercptionUpdated events and I don't know why.

Controller constructor:

    AIPerceptionComponent = CreateDefaultSubobject<UAIPerceptionComponent>("AIPerception");

    UAISenseConfig_Sight* SightSenseConfig = CreateDefaultSubobject<UAISenseConfig_Sight>("AISense_Sight");
    SightSenseConfig->PeripheralVisionAngleDegrees = 360.f;
    SightSenseConfig->DetectionByAffiliation.bDetectEnemies = true;
    SightSenseConfig->DetectionByAffiliation.bDetectNeutrals = true;
    SightSenseConfig->DetectionByAffiliation.bDetectFriendlies = true;
    SightSenseConfig->SightRadius = 5000.0f;
    SightSenseConfig->LoseSightRadius = 7000.0f;

    AIPerceptionComponent->ConfigureSense(*SightSenseConfig);
    AIPerceptionComponent->SetDominantSense(*SightSenseConfig->GetSenseImplementation());

Controller PostInitializeComponents:


void AEFAIControllerCPP::PostInitializeComponents()
{
    Super::PostInitializeComponents();

    AIPerceptionComponent->OnPerceptionUpdated.AddUniqueDynamic(this, &AEFAIControllerCPP::OnPerceptionUpdated);
}

And the callback is now just


void AEFAIControllerCPP::OnPerceptionUpdated(const TArray<AActor*>& Actors)
{
    for (AActor* Actor : Actors)
    {
        UE_LOG(LogTemp, Log, TEXT("Observed %s"), *Actor->GetName());

    }
}```

It's definitely marked as a UFUNCTION:
UFUNCTION()
void OnPerceptionUpdated(const TArray<AActor*>& Actors);

Moreover I'm certain this used to work and have no idea why it has suddenly stopped...
#

It's like UAIPerceptionComponent::ProcessStimuli is never called... hm

slow shadow
#

I'm trying to make a, hopefully, basic behaviour tree. I followed a few guides but my "rotate to face BB entry" is getting stuck. Any tips for a guide?

median arch
#

If I click the + on the Senses Config array, and then choose AI Sight config, it populates the sense with all the values I set in the constructor... πŸ€·β€β™‚οΈ

#

(I changed 7000 to 8000 to double check that)

#

Wow... After searching for Sense config I found this: #cpp message

And so I tried renaming the components in CreateDefaultSubobject.... and it worked

polar crown
#

Hi guys, anyone have any idea why the area underneath my AI model isnt working with navigation? he just gets stuck in this square when trying to move. i have deleted each aspect of the model and nothing seems to change. thankyou in advance

brittle lynx
#

and anything attached to the character

polar crown
#

hi that is selected because i had the floor selected. it is off on the character

brittle lynx
#

is there a weapon etc. that the character is holding? That could be blocking navigation as well.

polar crown
#

i have gone down the list of what is included in the character, sword, shield etc and they all have that option turned off... strange

#

i have a feeling its the mesh but i cant see any options that would effect this

#

sorted

meager galleon
#

Hmm, I have a very simpel EQS query that just finds the character on a test map. Thing is, the grid points does not seem to work when the AI is in the air. Anyone know if there is a solution for this?

celest python
#

increase projection extent

meager galleon
#

Just started with EQS today and is quite new to game dev as a whole, where can I find projection extent?

#

Nevermind, it was the Pathfinding grid I tried with, that one seems to only work on groundlevel.

crystal hatch
crystal hatch
shrewd pumice
#

Heyo, using BTs and AI Perception, is hearing sense the best way to implement a detection radius even for stationary actors?

Example: A patrolling ai wanders past a point of interest (a dead body) and stops to investigate the area.

Should I put a sound stimuli on the actor, or should I just use a collision box with event overlaps?

shrewd pumice
#

Hmm, would it be a problem if these things were always making sound? Perhaps a blueprint interface with box collision would be the smarter way...

keen crow
shrewd pumice
#

Ah, well I'm making a game where the primary antagonists are ghosts. While they randomly patrol they should be drawn to dead body actors, and if anything that's living enters a certain proximity radius they will aggro. What do you think would be a good way for them to detect things in such a scenario?

#

"Sensing life force" as the top priority sense, followed by sight.

#

I'm just not sure if using the sound stimuli would be the best way to implement proximity sensing.

keen crow
# shrewd pumice Ah, well I'm making a game where the primary antagonists are ghosts. While they ...

well if they should be drawn to dead bodies during patrol and then attack player on sight I'd suggest to

  1. attract ghosts to dead bodies either by EQS queries OR put smart object components on dead bodies and utilize smart objects spatial lookup system
  2. do nothing with players since by default pawns have sight stimuli component implicitly added to them unless you disabled it manually or not using pawns for players at all
shrewd pumice
severe tangle
#

I'm using EQS, where the target location is picked from 25% best matches, which resolves in AI looking more believable.

The issue is with the path itself, where AI always tries to take the shortest route, meaning cutting sharp corners and hugging walls.

Is there a way how I can achieve more believable pathing with EQS system?

meager galleon
#

I'm trying to use MoveDirectlyTowards in my BT for my flying AI ACharacter. I've eneabled CanFly and set FlySpeed, but the AI won't move. I've also made sure TargetLocation has been set correctly. Is there something I'm missing here?

#

I've also tried with Gravity off for both StaticMesh and Capsule.

crystal hatch
meager galleon
#

Never used that tool, don't really know what I'm looking for to be honest

crystal hatch
# meager galleon

the log says the movement task is invalid. I'd check the output log for errors and or warnings. Also check the vislog for the same - easy to find since errors and warnings are marked on the timeline.
Some more details would be helpful, like which movement component are you using?

meager galleon
#

Thank you though.

slow shadow
#

For some reason my BT goes to Idle after one hit from combat, shouldn't it refresh combat selector as long as the target is in sight?

crystal hatch
slow shadow
#

But I have it on "aborts lower prio" while blackboard/AI has a PlayerTarget, it doesn't make sense.

Do note that I'm very fresh to BTs. What is this "VisLog"? An external plugin?

crystal hatch
# slow shadow But I have it on "aborts lower prio" while blackboard/AI has a PlayerTarget, it ...

But I have it on "aborts lower prio" while blackboard/AI has a PlayerTarget, it doesn't make sense.
But if the condition fails it will still go to Idle. It will also go to Idle if all the options under Combat fail.
VisLog is UE4/5's native AI and Gameplay debugging tool. My favorite way of summoning it is running vislog console command. There's a way to open it form editor as well, but I never remember how.

weary holly
#

has anyone ever created new custom flow nodes for the behavior tree?

celest python
#

its pretty easy to do unless you want multiple outputs

#

i lost my sanity after trying to understand how simple parallel implements two output pins

ocean wren
#

That implies you had some sanity to begin with

opaque whale
#

Be careful making composites, it can get violent

weary holly
#

πŸ‘€

silent drift
#

How can i set a blackboard value when AI sees a player and unset it when AI doesnt see the player anymore?

lethal helm
#

so weird scenario

#

I've got a different nav meshes at different altitudes

#

and the pathfinding seems to think a path teleporting from the lower nav mesh to the upper nav mesh from points A to B is legal

uneven cloud
silent drift
uneven cloud
silent drift
silent drift
uneven cloud
silent drift
#

when successfully sensed false?

#

Okay! I will try that. Thank you

shrewd pumice
#

Heyo, How do I make sure my ai controller is not sensing noises that it is making itself? I mean that in an instance specific way. The problem occurs at that third branch node.

In this an example, a mob of ghosts is making noise that will aggro other ghosts they pass while chasing the player.

severe tangle
#

When AI picks a path with EQS, can I somehow get the nodes in this path and make them more expensive to travel, so that other AIs will have lower chance to pick the same/similar path?

uneven cloud
severe tangle
# uneven cloud Not without a lot of C++

I see, well then randomly spawning more expensive nav areas at AI location when he is moving to the target will have to do πŸ˜… . Not sure about other approach to make AI's pathing more believable and not always the same/the shortest path to the target.

uneven cloud
severe tangle
charred lava
#

For AI's Hearing Sense, do AI's standing closer to the Noise Event Location process it before the ones further away?
I want to make sure that only the closest AI will handle the Noise Event.

#

I could wait one frame and check every AI that registered that noise and then compare the distance and let the closest react, but if there is an easier way I take it ^^

#

πŸ‘€```c
class AIMODULE_API UAISense_Hearing : public UAISense
{
/** Defaults to 0 to have instant notification. Setting to > 0 will result in delaying
* when AI hears the sound based on the distance from the source */
UPROPERTY(config)
float SpeedOfSoundSq;

crystal hatch
charred lava
#

I'm on it πŸ‘ Thanks MieszkoZ

keen crow
#

why do I no longer see EQS items scores on the spheres when I enable AI visual debugging (apostrophe). It was working in UE4.26 but it seems that by default it doesnt work in UE5.03. I can still see the scores in the query details table by pressing '/' but I'd really like to see scores on the items themselves

hoary hawk
#

Good morning everyone ! I have a project where I have 50-100 AI moving around in the scene, I did all the optimization I could possibly think of, except one and it seems to be the biggest memory eater : characterMovement. I am using the default component from unreal, I know I already read that it does take a lot of ressources. I was looking for other alternatives but could not find ressources on doing specifically this for AI, and everything it could include like getting NAV path from navmesh etc. Where could I start? Do you know any ressources / documentation to implement this ?
Thank you !! altair5Love

manic karma
hoary hawk
#

Only tests I did was running the stat character command in the game, Nd disabling on command the movement of on AI at runtime. When I do the char movement goes to normal ( 1 call per AI), but when I activate it back it goes crazy for all AIs

storm zephyr
#

hello, by enabling the "Do Fully Async Nav data gathering" would that also update the navmesh async at runtime or that is just for the building of the navmesh at design time?

severe tangle
#

With Move To Location I can set Filter Class dynamically via variable, but when using Behavior Tree's Move To node, I can only set this filter manually, I don't see an option to use a variable, that I can later change, so that AI is using different nav filters from time to time.

celest python
#

you can either inherit from UBTTask_MoveTo in c++ and listen for blackboard keys and update your filter class when its changed and recall MoveTo() or create a BP and use MoveTo node task and work with delegates + service

uneven cloud
severe tangle
severe tangle
# uneven cloud I've never seen this. How many AIs do you have bumping into each other? Regene...

Well basically I have a Character that can be both player and an AI, and inside CMC I set up to use RVOAvoidance, on server I loved how it worked, exactly what I needed, but then when I tried using it on client, I couldn't even move forward without getting rubber banded right back, like the client doesn't even care about RVOAvoidance radius and server is sending him back because he is colliding with his own radius or I have no idea. Then each time client hit other AI, he once again completely ignored this RVOAvoidance radius, going right through the AI, but then server started heavily correcting him because he should've been "pushed" to the side.

celest python
severe tangle
celest python
#

yeah only difference is one of them is able to listen BB values other one is not

uneven cloud
severe tangle
#

Crowd Following is one of the new UE5 features? Trying to google it but there doesn't seem to be much info

uneven cloud
uneven cloud
celest python
#

how RVO even works in client anyway? ChillBar_think

#

client's laggy movement can cause some distortions in avoidance and it might look weird in client

severe tangle
#

Ooh it's the Detour Crowd? Because if so, I was playing with it, but the jittery movement was really bad

severe tangle
celest python
#

with how much ping you tested?

severe tangle
#

I tested it on both decent hardware and net connection all the way to the very poor hardware and garbage internet connection, ping around 500, at that point it was a circus πŸ˜…

celest python
#

500 is "huge"

#

its only to test critical features

#

it takes half of a second to arrive the information to client

#

ofc it will look bad πŸ˜„

#

some games use lockstep networking which UE doesnt support, when client goes out of sync it continues to simulate the world with the last info it received

#

in client-server architecture you have different advantages and disadvantages

uneven cloud
#

A ping of 500, all movement is going to look terrible.

severe tangle
#

well with CMC it's actually not bad at all, only the RVO was doing ruckus

sacred shale
#

does anyone know an elegant solution to AI listening for both pawns and distant sounds? I've been using the pawn sensing component on my AI as well as a pawn noise emitter on my main character, but it feels like it's only good for pawns with noise emitters and not regular sounds. been trying to look into something consistent but haven't had any luck

#

ideally the same component should be listening for both pawn footsteps/sounds as well as distant sounds in 3d space

lethal helm
#

I've got a different nav meshes at different altitudes
and the pathfinding seems to think a path teleporting from the lower nav mesh to the upper nav mesh from points A to B is legal
What could be causing this?

haughty coral
# lethal helm I've got a different nav meshes at different altitudes and the pathfinding seems...

Happened to me before with nav projection extent if dest was on the mesh above the lower mesh. I think default extent is in project settings but you can override it at many places. Iirc also projection in character movement comp was causing the char to incorrectly switch between these. But if this us happening mid path (not near path start/end) then I am not sure. Maybe check vislog / gameplay debugger.

lethal helm
#

which setting is default extent?

haughty coral
#

Default Query Extent

#

try to lower Z

#

and delete your RecastNavMesh actor and rebuild navigation again

lethal helm
#

what would I even be looking for in the viz log

lethal helm
#

well the current solutino is just making those areas not part of the navmesh

#

which sucks but there doesn't seem to be any alternatives

lethal helm
#

also this comment makes it seem like query extent is the agent size

uneven cloud
uneven cloud
lethal helm
#

nooooo

#

that was it

#

I hate my predecessor sometimes. why was that even turned on

lethal helm
uneven cloud
lethal helm
#

hmm still happens but much less often

rich veldt
#

Hi, I'm trying to brainstorm a solution. I have points an AI can run to using EQS (cover points), and I'm trying to filter out any points that would result in the AI running past a context (their target). I want them to pick the furthest cover point from the target which is fine, but sometimes that results in them running right at the target which isn't really "running to hide" behavior.

#

Just drew up an example: it's scoring the green box lower because it's not as far from the target as the red box, but the red box should be disqualified because it means running past the target. Not sure how I could check for that reliably.

#

Maybe just disqualify any that are in the direction of the context +- 90 degrees? Wouldn't be totally reliable but would at least reduce the amount of times this happens. Would still like a solution that essentially checks if the pathfinder path to the item goes "near" the context.

keen crow
# rich veldt Hi, I'm trying to brainstorm a solution. I have points an AI can run to using EQ...

you could try either

  1. create your custom test that takes the target player as the context and filters out items in angle range [- X degrees + PlayerRotation; + X degrees + PlayerRotation]
  2. add an extra distance test but this time between an item and the player and make a negative score for this test so that it drags down the score of items which are closer to the player

or try using both of them

rich veldt
#

Correct me if I'm misunderstanding you here, but 1. just sounds like my suggestion under the picture? and 2. sounds like what i'm already doing (closer to target = less score, farther from target = higher score)

  1. doesn't work on its own because if the farthest point from the target is way behind them, then the AI would have to run past the target to get to it and that doesn't make sense.

adding 1. in conjunction with 2. would filter out those points^, and ensure the AI always runs away from the target, but it would prevent the AI from considering cover points which are between them and the target. Here's an example of a situation where using an angle to the target would disqualify totally valid cover points.

#

"most viable" is no longer allowed because it's within the angle which is meant to disqualify that "furthest point".

#

If there were cover points behind the AI, to the left of the image, then he'd go there and that's fine. If there weren't, then he just wouldn't take cover. So it's not a perfect solution but this is the only one I have.

#

Maybe only disqualify items in that V which are further from the AI than the target is?

keen crow
#

is the black circle here is NPC? if so, are those green lines are angle filtering? are you filtering by the npc's field of view?

rich veldt
#

Yes the black circle would be the NPC. I'd be filtering by direction from NPC to Target, with an FOV of like, nearly 180 degrees (-90 to +90)

keen crow
#

but why don't you want to filter out items that are in the field of view of the player if you want to make an NPC avoid players FOV?

#

oh right

#

because some item can be out of the players FOV but still an npc would have to run through the player

rich veldt
#

That's not what I'm trying to do.
I'm trying to make the NPC run somewhere "deeper" into the location and hide in ambush. It gets all possible ambush points in a radius around itself, then determines the best place to hide.
The checks are:

  • Cover point is not in use
  • Cover point would not be "exposed" to the target should they come towards it (no parallel covers) : i.e if the cover point is opposing +X, the target must be on the +X side of it
  • Cannot be in line of sight to the target
  • Prefer the cover point which has the furthest path from the target
  • Is a reachable point via pathfinding for the NPC
rich veldt
keen crow
#

you've got me interested. I'll try to draft something on an empty project out of my own curiosity

#

besides, I might be doing my own cover system for AI some time soon

rich veldt
#

I'm thinking about making a test which generates a nav path to the item, then loops through the points in the path and checks if the points "pass" the target relative to the NPC (or get closer in distance to the target).

keen crow
#

i believe the answer might be easier

rich veldt
#

I mean a sphere trace toward the item could be OK. If it hits the context/target it's a bad item. Would be iffy in weirdly shaped corridors though and adds cost.

#

Ohh...maybe I could generate a path to the item, get the first point in the path that's further than the target is, and check if the direction from the NPC to that next point is within like 180 degrees of the direction from the NPC to the target? If so, then disqualify it because it's requesting the NPC runs "toward" the target **and **"farther" than it - which would sort of indicate "passing" it wouldnt it?

#

Complicated but seems not terrible. NPC breaks out of "run and hide" sequence if they get within combat range anyway so player would be none the wiser that it was a failed sequence. I'm open to an easier solution though πŸ˜›

keen crow
#

How and where are you going to generate path from npc to best cover point in eqs items?

rich veldt
#

idk id just code a new test in c++ to do it

#

i have a custom pathfinding component on all npcs that i can request to make a temporary path very easily

keen crow
#

hmm, have you thought of doing that with 2 eqs queries? one to find the best spot, second is to find the best proxy point to reach it avoiding target's FoV?

#

perhaps the second query might be fired in a service while running BTTask_MoveTo cover

#

because the player might be looking around and stuff

rich veldt
#

well it's not related to the fov of the target/what the target can see.

#

the target could be turned around/not looking at the AI and they'll still think "oh shit someone's here i'd better run deeper into the tunnels and hide around a corner"

#

im gonna try my method i mentioned above later

keen crow
#

well if you don't consider player's FoV while an npc is getting to the cover player might change its position and rotation and that cover won't longer be viable

#

wouldn't it?

rich veldt
#

Its supposed to work like hide n go seek/tag. You are spotted, they run off to hide, if you catch up to them before they get to their hiding position yes they will cancel and face you. if you dont, they will try to surprise you.

I have a behavior tree node checking self visibility against the target's pos and fov yes, thats how you can force a cancel (by chasing them).

But the method of choosing isnt related to if the target can or cannot see it. It's filtered by trace from target's location to the cover point- so even if they arent facing a cover point it will disqualify points that are "in the open" so to speak

#

Oh I see what you mean. There's also already a Behavior Tree node that checks if the currently occupied cover point is visible by a target which is currently visible by the NPC, and it will leave said position and either engage or move accordingly or cancel moving to it or something. Yeah.

#

but that's sorta beyond what im talking about which is simply just considering the initial cover position and how to not move PAST the target

#

rather, to not consider at all, any cover positions which are beyond the target

keen crow
#

hmm, considering your gameplay requirements one other thing I'm thinking right now is to make an eqs test that should be placed final and it should test each remaining eqs points from best to worst in the following manner: cast a cone-like shape from the player (like player's fov) and then do a shape sweep by object channel from the querier to that item and if it overlaps player's fov cone then this point is invalid. But I feel like it's only going to work in a simple and flat level geometry πŸ€”

#

and I have no idea how to cast a single-use shape of such form like that from the player. perhaps make it a collision component attached to the player πŸ€”

rich veldt
#

you could do all that with some simple vector math/dot product

#

then acos degree and check against the target's fov (is less than?)

#

but that's not really related to the issue because like i said all points that are in line of sight to the target (whether or not they're actually looking towards it) are disqualified anyway. the player looking toward the point is irrelevant since it's already confirmed to not be within line of sight.

#

and if you dont do that line trace, and just do what you said, AI will avoid all points the player is facing even if he can't see them. so it's a moot check regardless

keen crow
rich veldt
#

i dont care about that. it's a horror game so seeing something run through your LoS that you didn't even notice before as it disappears running down a hallway is cool

keen crow
#

then it seems I failed to understand what you actually need πŸ™ˆ

rich veldt
#

yeah i know lol

#

i thought i was helping you lol

#

since i already solved my problem when i said i will get the intended path to the "winning" cover position, and ask if its points indicate movement toward and beyond the target. if so then disqualify it and go to the next "winning" position and do the same test.

silk fulcrum
#

Does anyone have any basic wisdom on using the new state tree as the basis for my AI vs of I should stick with behavior trees?

ocean wren
#

Probably depends how brave you are πŸ™‚

#

Its still being worked on afaik, so you know..

rich veldt
# rich veldt since i already solved my problem when i said i will get the intended path to th...

just a btw but this worked. just finished programming it. ai won't go to a cover point (only test the winning ones!) if the path to get there has 2 points one after another, the first being closer to the AI than the target is, the next being further than the target, and the direction from the closer point to the further point is within +-90 degrees of the direction from the closer point to the target. indicating that we're likely "passing" the target at some point during that path, which is no bueno.

uneven cloud
cinder garnet
#

hey can i get someone to help set up my roaming Ai, finally got time to do it

cinder garnet
zealous sierra
#

Does anybody know of any Unreal games that ship with the ability for players to make their own AI?

celest python
#

best thing comes to my mind that is any UE game has modding support?

zealous sierra
#

That is what I feared πŸ˜„
I couldn't find anything that let players use a scripting language or something in a way that didn't involve downloading a whole dveeloper kit of some kind.

celest python
#

there is a 3rd party open source Lua plugin that I can recommend

#

or if you trust Epic enough, wait for Verse πŸ˜„

zealous sierra
#

That sounds like a good start! +1 for nostalgia, too πŸ˜„

shrewd pumice
#

Heyo,
What type of code should be handled by the ai_controller?

So far, I've mostly used it for interpreting perception data and altering BB keys. Am I missing something? Let me know what you guys use it for so I don't stay a confused ignorant noob.

celest python
#

so you can just create an empty map and spawn that widget and let people run their lua code

#

your only problem will be designing your codebase properly to expose things to users

celest python
#

You can handle any logic in AIControllers that is specifically related with AIs if it doesnt fit to other things

shrewd pumice
#

Right. I've just noticed that there seems to be overlap between what you can do in the ai controller and on the behavior tree. I know the controller runs the behavior tree, but if I can make something in the behavior tree using tasks and services should I prioritize that? Am I wrong?

celest python
#

exactly, though AIController runs BT through "behaviortreecomponent"

#

it just has a helper function to spawn it and init

#

you can slap that comp to any actor and run your BT without controller

#

"bots should be treated as players"
this mindset is a tech debt tbh, btw πŸ˜„

zealous sierra
#

Writing lua code with highlighting and everything sounds perfect.

shrewd pumice
#

It seems the behavior tree is the most important factor here and I should double down on it huh?

#

Or I should just do it dirty cause rent is coming up.

celest python
#

if your goal is to get familiar with UE AI framework yeah start with %100 getting the grasp of BTs, then you'll end up with questions of "how to implement X in best way, should I do it in bt graph or use tasks or any other solution" etc -- then you'll need to read source to develop an approach to solving common problems

#

also there are people who are very experienced and some of them even working on AAA games, so you wont have difficult times reaching information, especially if its UE framework related

#

Using subtrees help to decouple logic from a single tree

minor pawn
#

Does someone know how to set up the navigation so that you can create a rts?
My units are moving weird and pretty much shaking all the time, like they decide to move left or right every frame.
I've followed the tutorial in the documentation to avoidance to setup my units and their controller.
Also they won't stop moving, when they have reached their destination because they want to stand all on the exact point. I'm not sure if I need to create a different point for every unit, but I don't really want to create a formation. Something like in SC2 would be preferred, but maybe they also calculate the position they need to go. Also I never was able to "allow" units to push other ones away

celest python
minor pawn
celest python
#

yeah, there is detour crowd manager thing in Unreal Engine, that gives you avoidance, but it doesnt scale well

#

like they decide to move left or right every frame.
this smells RVO avoidance, which doesnt work well as detour crowd

minor pawn
celest python
#

if you want your pawns to keep their formation while they are moving thats a lot of work

#

UE doesnt provide that out of the box

minor pawn
celest python
#

then I think you can just use EQS to create formation at move goal and use detour crowd

minor pawn
#

I'm using RVO with the detour... as told in the tutorial right from unreal. They don't go well together?

celest python
#

yeah they dont

#

use detour only

#

though I also thought they go well together but another very experienced person here warned me about it a while ago

#

ohh btw. I'm sorry. I just realized I completely misread your question

#

i thought you want formations

#

but anyway yeah your current issue seems to be related with the params you are using with detour crowd and RVO

#

navmesh itself shouldnt be a problem

#

also detour crowd has a limitation like target movement goal should be at max. 256 poly distance is navmesh -- based on it's source code

minor pawn
#

I can't really believe, that this is the default way, unreal ships their ai navigation

celest python
#

that's not the expected behavior

#

so lets start with obvious ones
1- are you using detour crowd path following component in your AIController?
2- are all AIs registered to detour crowd manager?
3- have you tried tweaking params in project settings for avoidance?

minor pawn
#

Does the Nav mesh look correct? That's while playing

celest python
#

no, agents shouldnt block navmesh

minor pawn
#

ARTSPawnAIController::ARTSPawnAIController(const FObjectInitializer& ObjectInitializer): Super(ObjectInitializer.SetDefaultSubobjectClass<UCrowdFollowingComponent>(TEXT("PathFollowingComponent"))) { }

#

2: I'm not sure what that means. all units have the same controller class

#

3: yes

celest python
#

can you try printing SimulationState on your detour path following comp, to ensure its set to Enabled

minor pawn
#

how? πŸ˜„

celest python
#

get your pathfollowing component in aicontroller, cast it to UCrowdFollowingComponent, then use IsCrowdSimulationEnabled()

#

it will return true if its set to Enabled

minor pawn
#

on begin play?

celest python
#

yeah

#

gotta leave for a while, might not be able to answer soon, but let me know with the result

minor pawn
minor pawn
rich veldt
# uneven cloud What you want is the dot product with a filter. Dot of target to querier and ta...

I explained why only doing a dot isn't reliable because it filters out items that are toward the context/target, even if they would otherwise be valid in terms of level layout (dont require going past the target), and doesn't take into account items which might be out of the dot angle (even if it's like 180 degrees) but still require running past the target to get to (like a U shaped hallway).

#

Labyrinthine level design sort of necessitates path check i think.. so unless you're telling me checking path points on 2-3 items once per encounter is game breakingly expensive i'll stick with it

uneven cloud
rich veldt
#

ah i misread your message. dot from the target

uneven cloud
rich veldt
#

...what do you mean?

#

of course they move

uneven cloud
#

If your targets move, then the cover points will need to be updated if they are no longer valid. So you aren't just checking it 2-3 times per encounter.

rich veldt
#

AI spots a target, picks the furthest possible place to hide from that target doesn't doesn't necessitate running past said target, then runs and hides.
if the target catches up or otherwise takes their focus off running and hiding, the run and hide behavior is abandoned. if they successfully run and hide, they stay there until they are counter-ambushed/attacked/provoked, or their target walks up to their "surprise bitch!" hitzone, at which point they pop out from cover and swing at the target.

#

there's only one attempt to run and hide in an entire encounter.

#

think Condemned, when enemies spot you they run behind a pillar or something until combat starts

#

so no, cover point validity is only considered at the very start of a possible encounter in the game mechanics.

#

after that the ai relies on whether or not they're in danger based on their own real position (on the way to a hiding spot, or in position at one, either way), target distance, target threat level, target behavior, other threats in the area, sounds, etc.

zealous sierra
#

For an RTS, it's usually best to calculate a goal formation at the time of the movement command.

rich veldt
uneven cloud
rich veldt
#

i want the querier to always run to the furthest (path length) point from the target

#

checking in a fairly large radius

#

so i dont see how the closer one would win, since the scoring is based on how far from the target they are.

forest tundra
#

ai no collision

minor pawn
celest python
minor pawn
celest python
#

what do you expect exactly? there are already two avoidance systems you can use

minor pawn
celest python
#

and AIModule is mostly abstract, other than "necessary" stuff to call it an "ai framework" - so there are many missing things especially if you are working on an RTS

celest python
minor pawn
celest python
#

some develop everything from zero.. by wasting 6 months minimum

minor pawn
celest python
#

yeah, even for an indie you go through some initial boilerplate stuff to build up some AI if you need a little bit more than what UE provides when it comes to #gameplay-ai

#

so its normal to feel some absence of necessary things in AI module

minor pawn
#

I feel overwhelmed by AI

#

I need to create the player AI and I don't know how to build that up

celest python
#

you can try going through pinned messages, there are some useful links about both philosophical approach to AI design and UE framework

minor pawn
#

Gonna chew through that

celest python
#

high level approach to AI design is basic, having core functionalities in a shared base class and letting different systems manipulate it. so both BTs and Player systems can drive movement, make weapons shoot, trigger abilities etc.
AI part just requires some additional tools to "make decisions", and behavior tree is most common one. its useful to prioritize behaviors, meanwhile there are also other tools like finite state machines, GOAP editors, utility systems (which go well with BTs)
each tool introduces a different workflow, once you get the workflow and set-up your system modular and reusable as possible it becomes very easy to design things

minor pawn
#

I've created a GOAP from a tutorial πŸ˜„
I dont't understand the algorithm but I'm fine with that

celest python
#

never worked with GOAP, but i keep heard its mostly overkill for many situations from the people used it

#

definitely has its place though

minor pawn
zealous sierra
#

So the big reason to set the formation on the move action is exactly so that you can label individual spots as taken for future move actions with other units. This becomes more important in networked RTS games where deterministic commands become more important.

#

If you're making a single player RTS it doesn't matter as much, though.

#

Is there no open source RTS AI framework for UE? I should see if I can make a plugin from some of my work in it πŸ€”

minor pawn
zealous sierra
#

Throw up a link to it?

#

I did some work on an RTS a while back. And by a while back I mean like 2014.

minor pawn
zealous sierra
#

Yoooo it's Nick!

#

Very cool!

#

I think highly of myself, but I probably won't have anything that beats this knowing who did it πŸ˜…

#

Which parts do you find complicated?

minor pawn
#

The fact, that every feature has its own component seems a little off to me. I'd rather merge some of these together. From a designer perspective, you don't want to switch to every component and make changes. Name, Icon and description can be placed perfectly into a single component.

#

The Fog of war is ok for a free to use plugin but I think it's hard to change

#

And sadly he has no time for it so it's kind of spoiling. Not working in UE5 for example. The AI BT Nodes are created in Blueprints which I moved to c++

zealous sierra
#

Looks like there's a UE5 branch.

#

I'm going to download this and give it a go later!

minor pawn
#

Which was updated 7 months ago πŸ˜…
So that's newer than my approach

#

It's a good start though

#

And he's from germany so it makes me a bit proud πŸ˜„

zealous sierra
#

How far along are you in your game?

minor pawn
#

not very far. I'm struggling with the unit control

zealous sierra
#

Just reading the code, the camera looks pretty rudimentary. One quick "win" might be to look at the universal camera and integrate that. It's free this month, I think.

#

AI is obviously the focus here, though.

minor pawn
#

I really like the approach on the Lyra Game for "Experience", where you can easily create different game modes.
But it's hard to "free" it from the rest

minor pawn
zealous sierra
#

I'll take more of a look when I get back to a computer! I was planning to make a miniature RTS myself this coming week, so I'll run into the same problem as you, I think.

minor pawn
#

The universal camera looks interesting

clever skiff
#

is there a particular reason a behavior tree doesnt run even tho run behavior tree is running in th ai controller

#

and when i look in the tree it not even showing it being ran

#

though the variable is being updated

clever skiff
#

never mind it didnt like nothing was in it even tho i had a service in it

ocean wren
#

There's also an RTS thingy by an AAA developer where they open sourced their abilities system.. can't remember the company name though

#

Dontnod? something like that

#

Daedelic

#

There's a video from Unrealfest Europe 2019

minor pawn
#

And Nick also contributed

ocean wren
#

Nick?

minor pawn
#

Nick Pruehs

neat marsh
#

I'm creating a simple realtime autobattler and have been using Behaviour trees but as I scale i'm starting to wonder if I should be using something else like the StateTree system.
My AI just needs to essentially attack move but scaling above 1-200 and my performance is sttuggling

grave coral
#

Does anyone know if we can till what the AI is navigating toward currently? I’m trying to disable RVO avoidance if the AI is navigating to a navlink because they keep cluttering up if multiple AIs go after 1 navlink and none of them reach it because of RVO avoidance

grizzled bolt
#

what is the recommended approach for setting up a large enemy mech AI ? O_O

celest python
grizzled bolt
celest python
#

are you not using a character currently?

ocean wren
#

Isn't a UGameInstanceSubsystem meant to auto-register? it appears that inheriting from it doesn't actually instantiate it