#gameplay-ai

1 messages ยท Page 21 of 1

ocean wren
#

Or a decleration.. perhaps if the IF fails, then it declares agent, which then is a null object?

celest python
#

MaybeAgent thing is indeed an optional

#

but Agent alone is quite weird

ocean wren
#

This is a functional language though right? so maybe that's declaring an empty agent object if one doesn't exist

#

otherwise if the IF passes, then it assigns it to the agent object (so basically you either get an agent, or an empty agent)

#

I doubt I'll have the mental bandwidth to learn an Epic specific language ๐Ÿ˜‰

#

unless gpt5-6 can code it for me

celest python
#

c'mon, its metaverse language ๐Ÿ˜„ ๐Ÿฅ

ocean wren
#

๐Ÿ‘๏ธ

celest python
#

You were saying it could be a good scripting language for AI coding, assuming from how shookum designed

#

Does Verse looks like something can be helpful at AI programming?

ocean wren
#

I'm assuming that AI style event driven programming might be its use-case

#

I can't see much of a point otherwise tbh

#

But hey, the "not invented here" part of Epic is strong ๐Ÿ™‚

harsh storm
ocean wren
#

Yeah, but who would adopt it?

#

And why?

celest python
ocean wren
#

Hahaha.. only way to be sure

harsh storm
# ocean wren And why?

Well, that depends on how it actually pans out, right? According to what they're trying to solve, other languages don't fit the bill. Tim has been talking about these problems for 2 decades. So it isn't exactly an out of the blue type of thing for him. Some people that I know are excited because it is a legit new language and not just an amalgamation of multiple languages apparently.

#

Maybe it'll crash and burn. Maybe it'll be the best scripting language for years to come.

#

There's just...not enough info really. There are some high level math papers and all that.

terse panther
#

I got a pdf and in that there are some techniques for the AI, i am thinking to give it a read it might give me some idea of pathfinding and its problems...
I am currently working on crowds and using detour crowd controller, i am using it at the default settings currently but thinking to experiment with the values ...
As for the RVO i think it's not that good but it's optimised than detour so i might give it a try to( haven't tried it yet)

#

For the utility i think there is a plugin in the market place?

#

Is ml used in general AI behaviour?

celest python
#

Not in game ai

terse panther
#

Yeah slate is a good thing to go for ..

terse panther
celest python
#

And its used for other mechanics too

#

Not just ai

terse panther
celest python
#

Tldr you get items, score them, then normalize values to 0-1 range and use a function to decide how score will impact the result

terse panther
celest python
#

FSM is different

#

Its when you need to do arbitary conditional jumps between states

terse panther
celest python
#

Because EQS is a fancy utility scoring tool

ocean wren
terse panther
ocean wren
#

Yeah, there's a bunch of work by Ubi and others

#

James Holden (I think that's his first name?) has done a ton of anim work in ML

#

So many interesting problems to work on

#

not enough time to work on them ๐Ÿ™‚

#

Or money to pay me to work on them ๐Ÿ™‚

harsh storm
ocean wren
#

I need to make vast sums of money ๐Ÿ™‚

#

Got to be an easy way to do that right/

#

?

harsh storm
#

NFT shipped sailed. Sorry

ocean wren
#

shit ๐Ÿ™‚

#

NFT Next Gen?

#

FT's fungible tokens?

harsh storm
ocean wren
#

HFT - Hyper Fungible Tokens.. more fungible = more good

harsh storm
#

Science checks out

ocean wren
#

Only 10,000 available at 1000 USD per.. get yours now

celest python
#

@ocean wren train your streamer AI to get donations ๐Ÿ˜„

#

no one can resist a rapping cute anime girl ai

ocean wren
#

I was honestly considering that

#

making a high end AI driven vtuber or something

celest python
#

it worked well for neuro-sama

ocean wren
#

once we have the vicon cameras installed and I can capture a dataset of actor performances.. its so tempting

#

going to order a face mocap helmet too I think

dark kiln
#

Thanks for this! I'll see what I can do

sullen notch
#

hey guys, I have an issue where the behaviour tree flickers when i play the game and the ai wont do anything coz of it

#

could someone help me pls im lost

harsh storm
#

It's flickering because it is trying to revaluate the entire tree.

#

Most common reason beginners have is the nav mesh isn't placed. You're probably trying to use the Move To task and it isn't working.

sullen notch
#

i have a patrol move task i made

#

but its also not working with the move to task

#

even when it def should

harsh storm
#

You don't have a nav mesh

#

Most likely

sullen notch
#

oh

#

ill check it

#

coz that makes sense

#

and i feel dumb

#

i did just migrate it to a new project

harsh storm
#

If you never brought in a "Nav mesh volume" into the world, then you don't have nav mesh down

sullen notch
#

you were very right, i feel like a melon

#

haha

#

thank you though, saved me from rebuilding it

rigid tulip
#

Can I get a list of all AI that currently see an actor (ai perception)?

grave coral
#

can someone tell me why my navlinks keep going black?

ocean wren
#

You know what they say...

grave coral
ocean wren
#

Sheeeit..

#

I mean, I doubt anyone in education is really watching.. but damn this stuff is easy now

uneven cloud
#

Watch GCC videos and read articles from Game AI Pro on topics you are interested in. But the only real way to learn is to do. Understanding the concept of the EQS isn't the same as being able to do anything with it.

silent hamlet
#

I just noticed that StateTreeComponent has no way to determine if the StateTreeRef is set to a valid asset or is null. This makes it impossible (unless I ofc subclass the component) to have a scenario where one of my characters has no state tree (can't check if it is set before running StartLogic). This is easily fixable but it more raises the question: why is this not built-in? Am I doing something very far from the standard use case?

#

^all of the above is referring to Blueprints

cobalt fox
#

how can I access AIPerception from a behaviour tree task?

dark kiln
#

Maybe create a variable for your AI controller then pull off of it and get the Set Sense Enabled or something?

#

I'm sure you could play with some nodes once you have the ai controller ๐Ÿ™‚

night panther
#

What is the default game engine line for not perceiving all actors stimuli sources by default

white pasture
#

on the same topic of learning more advanced AI code, specifically in UE, are there any existing good open source, C++ UE projects with good, advanced AI to review how things are done professionally?

floral brook
#

Hey guys, any clue if there's a function to get the closest point on FNavigationPath? My alternative would be to generate a spline and use the functions there but it seems super hacky

terse panther
terse panther
astral sail
#

Hey ! My Behavior tree works well in the editor. But in packaged game, selector doesnt behave the same ... The decorator is supposed to return true ... which it does ! (print string "Is TargetPoint"). But it also prints "going to range", which means the selector chose the right path.
This screenshot is from the packaged game :

#

Here is the decorator :

#

And here is what happens in the editor (as I expect) :

#

(Left path get fired in the Behavior Tree, as the Decorator returns true)

#

So I dont get how in the packaged game, the decorator prints "Is TargetPoint", and fires the right path of the Behavior Tree !

astral sail
#

Update : It seems that the "Move To" node FAILS in packaged game. Any idea why ?

celest python
#

Does navmesh exist in packaged build

#

I vaguely remember there was a problem about navmesh disappearing in packaged builds for an individual here, a few years ago

astral sail
#

Ok so

#

Yeah they exist ^^

#

I went to Project Settings => Nav Mesh => Vertical deviation

#

That did the trick

#

But like, why ? My ocean is at Z = 0, and all my Target Points too !

#

and once again, all works well in editor :/

celest python
#

interesting

astral sail
#

Would mean that there are slight difference in Z axis when packaged ... ?

#

Also my NavMeshVolume is pretty thin

celest python
#

I have no idea, usually debugging things that only happens in packaging is also a pain

ocean wren
celest python
#

Anyone knows if its possible to halt execution of the BT but continue evaluating the currently running task?

sour current
#

Hi people, im making a football (soccer) game, im having problems with making an AI that can kick the ball in direction where he predicts you will beโ€ฆsomething like linetracebychannelโ€ฆbut i dont have any ideas on how to make itโ€ฆpls help

misty wharf
#

You would need to calculate the player's direction and their likely location relative to how fast the ball can move or something along those lines

#

doesn't really need linetraces for determining this

glacial sable
#

Hello, I am trying to understand why my ai isn't working, how do I know if the character knows about the nav mesh? I know to press p to view it, but how is it found?

grim vine
#

I'm using the CrowdManager + DetourCrowdAIController to have multiple characters running around in an RTS-style movement setup and it seems to work well with characters moving around other individual characters that are spread out or very small groups, but has trouble when some of the characters are arranged in bigger lines (shown in attached video), what should I look into changing with CrowdManager to make it work in this situation or does this need a different solution from Crowdmanager?

lyric flint
#

How do you stop an agent from sensing a sound on the other side of the wall?

Does report noise support occlusion?

wind surge
#

Is there any way to change hearing height of perception? I want to keep hearing radius widht but want to make it cant hear higher floor

celest python
terse panther
ocean wren
#

As the Unity dev says, it doesn't really work reliably, but eventually it will

celest python
#

How does it translate commands to UE??

ocean wren
#

parses the response text

celest python
#

like how does it know the translation of the point lights it will place etc.

ocean wren
#

you can give GPT the format you want for responses

celest python
#

is there a global pool of possible commands and GPT tries to select one?

#

possible actions should be pre defined

ocean wren
#

no, its just text.. you feed it a "system" message at the start that biases the response

#

and you can feed it a history of previous responses.. so basically showing it a good response pattern

#

part of the problem is that its just language token probabilities at the end of the day

#

its not doing intent matching, which is really what you want

celest python
#

yep but isn't it for a text output? "put a point light to the middle of the scene" means spawning a point light actor and getting the middle of the screen from camera etc. - how GPT gets and process the data stored in the UE editor?

ocean wren
#

all of the chatbots focus on intent matching and "slot" filling.. but they're not natural chat style language models

#

it doesnt know about any of that.. you just have to parse the response texts and find "point light" and try and figure out where its meant to go ๐Ÿ™‚

#

The thing about these models, is that they're just really great pattern matchers

#

That you can bias by giving examples of token lists

#

increasing the probability of those tokens slightly

celest python
#

i guess only reason why GPT4 is better its dataset is bigger right? more data, more connection means less possible false answers unless you explicitly try to bias it

ocean wren
#

32k token streams

#

means that it can pay attention to more structure of language

#

And with 32k tokens, you'll be able to provide more context and history to the interaction

#

What most people don't get, is that each call to ChatGPT is basically isolated... you provide it with a list of message strings.. which can be anything. Usually you provide it some setup "you are a helpful assistant" to bias the response.. then some history (basically what you said and what the response was) and finally a new string as user input

#

And it goes off and generates what it sees as the best completion

#

Part of the parameters you can provide to the API are things like how "creative" you want it to be.. how long the response is etc

#

So all its doing, is matching token stream patterns

#

tokens are just parts of text in some vocabulary

celest python
#

no wonder why it requires 128gb GPU to run ๐Ÿ˜„

ocean wren
#

its just a humungous pattern matcher

celest python
#

I think I read LLaMa is nothing different either

#

so there is no alternative algorithm/way?

ocean wren
#

Well, there's different formulations of how to build the probabilities, they usually use "attention" which means that you bias your words based on words at different positions in the list.. you "attend" to what words farther away are.. which means that your sentences are more likely to make sense

#

But most of the difference is in the attention mechanisms and more importantly, the input data and the training time ๐Ÿ™‚

#

oh and the model parameter depth

#

What's been interesting is that people have found that fine-tuning these large language models really works.. so you can have custom models for almost no training time (paper I read was like 7 hours or something)

#

So we might end up with a sort of general large model, with thousands of custom trained ones for specific purposes

#

i.e. legal documents, or conversation, or medical or whatever

#

and maybe UE scene description would be one of those ๐Ÿ™‚

ocean wren
#

Hmm, looking at the Unity version of that thing, its basically script injection straight from gpt output

#

which feels like a really dumb idea ๐Ÿ™‚

#

This method: static string WrapPrompt(string input)
=> "Write a Unity Editor script.\n" +
" - It provides its functionality as a menu item placed "Edit" > "Do Task".\n" +
" - It doesnโ€™t provide any editor window. It immediately does the task when the menu item is invoked.\n" +
" - Donโ€™t use GameObject.FindGameObjectsWithTag.\n" +
" - There is no selected object. Find game objects manually.\n" +
" - I only need the script body. Donโ€™t add any explanation.\n" +
"The task is described as follows:\n" + input;

#

And it basically executes the response ๐Ÿ™‚

#

So not even doing any parsing

celest python
#

yeah thats what confused me about UE

#

in unity you can run c# script

#

because it can be executed without offline compilation

#

in UE best you can get is python scripts

floral brook
ocean wren
#

Probably python though

celest python
#

or just a bad idea, not sure

#

python is more ideal

ocean wren
#

I mean in editor you can do it right?

#

Its kind of how the blutilities stuff works, or blueprint editor utils

celest python
#

yeah but it has pitfalls and tricks, and likelyhood of serialization errors

#

python would do way better

ocean wren
#

Yeah, I don't think anyone who is injecting scripts care about correctness ๐Ÿ™‚

#

I might look at coding up a VM and language that is easy to generate for a LLM

celest python
#

isnt python simple enough?

ocean wren
#

python can do some risky stuff ๐Ÿ™‚

#

I certainly wouldn't execute python from an external service

celest python
#

how would yours look like? ๐Ÿค”

ocean wren
#

dunno, mostly like english ๐Ÿ™‚

#

simple language really.. there's a ton of blocksworld languages you could create

celest python
#

so it would be like
GPT -> LLM Script -> Other languages?

ocean wren
#

basically you'd run the return script in a VM that has a very strict limit on actions

#

technically, you could actually just use python as the language, but execute it in a limited VM

#

there might even by one.. I know there's a python script for web now.. maybe that?

#

even BE one

celest python
#

what will it execute?

#

one way or another you have to bind that VM to something else

ocean wren
#

it'd execute typical actions.. create/modify/delete stuff, but you'd have guardrails on HOW it does things

#

so basically, it can't execute arbitrary code, it can only execute limited guarded code

celest python
#

recently I heard of this thing: https://www.abstractsoft.net/
a node based scripting system automatically translates itself to a DSL, then DSL to C++
since node system is abstract you are able to plug anything that has a reflection system and it generates proper code from DSL

celest python
#

you can still use BP/C++/python/anything but limit the opcodes/actions

ocean wren
#

Yeah, thats basically what you do with VM#s

celest python
#

but it would be more like a simple compiler for a specific VM i guess

ocean wren
#

making your own VM and the like isn't really that hard.. we used to do that kind of thing on CS programmes

celest python
#

stack based one is easy, register ones are quite difficult if you actually want it to do stuff ๐Ÿ˜„

ocean wren
#

yeah, exactly.. an interpreter for a specific VM

celest python
#

VMs are my new interest area since the new year

#

been working on Blueprints VM a lot

ocean wren
#

Not my idea of fun anymore, but certainly do-able

#

I'm going to try chaining multiple GPT's together first though

celest turtle
#

anyone is able to run EQS requests on Clients? When I'm trying to do so I'm getting
Missing EQS manager!
Which is from UEnvQueryManager* EnvQueryManager = UEnvQueryManager::GetCurrent(World); - the World is properly setup but the UEnvQueryManager is supposed to work on clients as well or the whole EQS system is build only on server?

I can see bInstantiateAISystemOnClient but not sure where should I override it and if it do the work.

lyric flint
#

Hello! How can I make a metahuman waiting for me (first person) to follow? Can someone help me with that?

terse panther
lyric flint
misty wharf
#

There's tutorials on how to make characters chase you on youtube, maybe that would be a good starting point

terse panther
uneven cloud
olive prism
#

Does anyone know how to make this work? He puts a BlackBoard reference and he gets a list of ENUMS below, how can I do the same?

#

I am doing the same, I have the enum and the blackboard but I don't have those options

uneven cloud
pale schooner
#

For a patrol location of my AI does this look good seems off?

proud cove
#

I'm making a native UBTService node to activate a GAS ability, but I'm seeing spammy behavior I don't expect. I've set it to tick every 0.5 ... 0.7 seconds, but I am instead seeing ~30 tick calls in quick succession followed by a delay roughly 0.5 to 0.7 seconds, then more tick spam.

#

The node itself is pretty trivial. Is there a flag I'm supposed to set in the ctor to enforce the tick frequency?

#

The node of interest is ActivateAbilitiesByTag

#

Here's a small excerpt of what I'm logging to show the problem: [0111.09][291]LogAthena: Warning: Tick Node Spam 32: 0.012639 seconds since last tick [0111.10][292]LogAthena: Warning: Tick Node Spam 33: 0.012760 seconds since last tick [0111.11][293]LogAthena: Warning: Tick Node Spam 34: 0.012446 seconds since last tick [0111.71][341]LogAthena: Warning: Tick Node Spam 0: 0.596272 seconds since last tick [0111.72][342]LogAthena: Warning: Tick Node Spam 1: 0.013574 seconds since last tick [0111.74][343]LogAthena: Warning: Tick Node Spam 2: 0.012581 seconds since last tick

#

Nearly all the logic is in virtual void TickNode(UBehaviorTreeComponent& ownerComp, uint8* nodeMemory, float deltaSeconds) override;

#

The only thing I set in the ctor is the NodeName.

uneven cloud
pale schooner
#

i fixed it

proud cove
proud cove
#

Can't believe I missed that.

uneven cloud
proud cove
terse panther
harsh storm
#

Always call super unless you know what you're doing

glacial sable
#

good morning, i am trying to follow a long with an ai debug tutorial, the first thing that lost me straight away was being able to hit the apostrophe key while playing the game

#

that doesn't work, but is there a console command for this shortcut

charred lava
glacial sable
bronze birch
#

How can i make static meshes to be unwalkable on, should i use navigation modifier volumes for each mesh or how can i achieve result i need? Walking mesh unwalkable in static mesh editor does't do anything

charred lava
glacial sable
#

no joy

#

Cmd: EnableGDT
LogConsoleResponse: Error: GameplayDebugger not available

#

hmm do i need to enable a plugin or something?

bronze belfry
#

What is your best ai follows and attacks character tutorial?

#

Thanks

fading wigeon
#

hey guys, I have an enemy who slowly turns.. only problem is that the AI Moveto remains the same so it moon walks at my character if u 180 the enemy, is there anyway to make it so the enemy can ONLY move forward?

karmic pelican
#

Does anyone know why NavMesh doesn't generate at a certain height?

#

It's only positive Z-Value that seems broken

karmic pelican
#

Hm, actually the problem seems to be height of the nav mesh in general. So distance from lowest to highest. Is there a setting somewhere?

uneven cloud
uneven cloud
uneven cloud
glacial sable
#

undefined symbol: AGameplayDebuggerCategoryReplicator::GetPrivateStaticClass() ๐Ÿ˜ฆ

karmic pelican
glacial sable
#

hello, i fixed my gameplay debugger, and i think i can see my ai can't find its nav mesh, i am playing as a network client, so maybe only a server can see if an ai has a nav mesh but that info suggests to me that my ai can't find its nav mesh for some reason

#

i can see the BT triggering move to location which i guess it can't find

#

hangs on it says default, so it must have found a navmesh

celest python
#

you can extend

#

add a blackboard value observer for you acceptable radius

#

watch the value like how it observes FVector/AActor goal

#

then recall moveto in task

tawdry osprey
#

Hi there!
I'm working since a couple of weeks on making my AI Logic with State Trees.
So far I've only did some simpler logic which worked fine, but right now I'm hitting a bit of a wall with how ST's data flow or state selection.
In my example I have a task A that** finds a suitable cover** (basically a task that runs an EQS) and one taks B that moves there. Therefore task B is dependent on the outcome and data of task A.

Case one (image 1):
I put both tasks in the same state. That way task B can access task A's data. But as soon as task A finishes, the state succeeds (as it only needs one task to succeed) and** task B can't finish**.

Case two (image 2):
Hence I make task B a child of task A. That way task B can still use the output data of task A (the cover position). HOWEVER, as soon as task A is selected, the ST also selects all the child states up until the leaf state (task B). So both start execution, even though the data of task A isn't ready yet. Similar issue.

Case three (image 3):
I make both tasks in separate states as siblings. That way they are both leaf states, first state A with task A will execute and finish and then state B with task B.
However, I can't access the previous tasks' output data that way! I can't bind my output to a global ST parameter nor do I see a way to pass it over to another task.

So has anyone an idea on how to break that conundrum?
I personally don't understand the benefit of why all states up until the leaves are selected and executed, it feels like it is taking away a lot of control over the flow.

slow bobcat
#

HI! Probably already answered but, here it goes: Why UStateTreeComponentSchema not exported? Are we not supposed to be able to create our own schemas for the State Trees (or whatever other modules that used them)?

slow bobcat
tawdry osprey
# slow bobcat HI! Probably already answered but, here it goes: Why UStateTreeComponentSchema n...

I've fixed it in dragging the plugin into my own project directory and slapping the GAMEPLAYSTATETREEMODULE_API macro in the definition, like that:
class GAMEPLAYSTATETREEMODULE_API UStateTreeComponentSchema : public UStateTreeSchema
You might also have to change the UStateTreeComponent, as the StateTreeREf only allows StateTreeComponentSchema, not the children. I've simply commented it out:
UPROPERTY(EditAnywhere, Category = AI/*, meta= Schema="/Script/GameplayStateTreeModule.StateTreeComponentSchema")*/)
FStateTreeReference StateTreeRef;

slow bobcat
#

I see. If I need it I might just change the source rather than copy over the plugin. Thanks a lot for the tip. I find it strange that it's not exported when the parent class is. Looks like an "oopsie" from Epic

tawdry osprey
#

I think it was intentional, but I don't know why... let's see if they accept my pull request ๐Ÿ˜ฌ

dawn schooner
#

Is there any event or callback for the situation, when a path is no longer valid because the navigation mesh changed a relevant portion?

#

I have basic pathfinding implemented (doing async path requests), but for example, if a building is constructed and blocks the path, currently my units would keep walking as if nothing xD

slow bobcat
dawn schooner
slow bobcat
#

In this video (link to time-stamp) the person explaining the State tree mentions that returning success from EnterState in a task seems to be buggy and doesn't finish the task. Can anyone confirm? He does a nasty trick on Tick that I really don't want to do. Can anyone confirm this? Is it actually a bug or "tribal knowledge" related to Enter/Exit in Tasks?
https://youtu.be/IylIUlKZaRo?t=1160

Unreal Engine 5.1 State Tree documentation:
https://docs.unrealengine.com/5.1/en-US/state-tree-in-unreal-engine/

Timestamps:
0:00 Intro
0:30 Setup -- Setting up the project
1:15 Setup -- Setting up Character and AI controller
2:32 Setup -- Creating the State Tree
3:20 Setup -- Setting up the level/NAVmesh
3:58 Setup -- Setting context actor for...

โ–ถ Play video
slow bobcat
#

what's the difference?

ocean wren
#

Gameplay?

tawdry osprey
#

GameplayStateTree is using state trees for ai behaviours

slow bobcat
#

Just trying to understand in which cases you want one or the other.

ocean wren
#

State of unreal on now... very nice face cap

#

ooh, nice stuff ๐Ÿ™‚

#

@eren apparently there's a verse session on today

misty wharf
#

really..

#

they added { } into it because all the C++ programmers were whining about indentation for blocks?

#

:P

#

it's almost as if out of those three options shown nobody is going to use the first and the last one (or python programmers might use the first I guess)

#

the last in particular seems like a terrible idea

ocean wren
#

At least they did it right, they put the { on the next line down ๐Ÿ™‚

#

At least it was an interesting watch for some of it.. makes a big change

celest python
#

i wonder how they did ais

#

that robot

ocean wren
#

which one?

celest python
#

and how it even replicates to other clients

celest python
#

the one got exploded

ocean wren
#

the fortnite one?

celest python
#

yes

#

gray metallic

#

laser shooting

rustic nova
celest python
#

no idea

ocean wren
#

Kind of glad they didn't release anything like what I'm working on ๐Ÿ™‚

rustic nova
rustic nova
misty wharf
#

Simple enough to learn as a first-time programmer.

#

are you kidding

#

you offer three ways with unique syntax just for blocks and call it simple

#

:D

#

haha and actually the third option has an additional gotcha

#

so it's more like 3.5 different ways of doing it...

#

this is making me think of Perl lol

celest python
#

well I hate it already

#

definitely has cool features but I cant see any reason why I need this to ship games

misty wharf
#

I think it's going to be another one of these where you just have to pick the approved by professionals way of using it

#

and ignore the other ways of using it

#

:P

rustic nova
#

seems most of the snippets are being written in the spaced format

misty wharf
#

personally I don't really care either way - but the mishmash of different syntaxes makes it feel like they just tried to please everyone

ocean wren
#

bastards.. theyre making a PCG graph editor ๐Ÿ™‚ I was going to get my students to do that!

misty wharf
#

eg. Haskell uses indentation for blocks and it works perfectly fine there

celest python
#

it looks quite awesome

ocean wren
#

zomg: that's just... wrong ๐Ÿ™‚

#

next you'll be saying cobol was a good language

misty wharf
#

Huh? :P

ocean wren
#

blocks

#

its a bad idea ๐Ÿ™‚ like python

misty wharf
#

I don't really see why tbh

#

You're going to indent it anyway

rustic nova
#

as long as my ide formats it for me i'm happy

#

(where is my verse ide?)

celest python
#

as long as BP assist formats for me I wont stop using BPs sobglasses

ocean wren
#

hidden characters kill things?

rustic nova
#

verse assist incoming

misty wharf
#

eg. in haskell

myFunc :: IO ()
myFunc = do
  foo
  bar
#

which technically is syntax sugar for the monadic syntax of

myFunc = foo >> bar
ocean wren
#

seriously, the iphone face scan thing for Metahuman animator has me the most excited.. its so sad ๐Ÿ™‚

#

this PCG thing is also.. nice ๐Ÿ™‚

misty wharf
#

Didn't they already have that a while back already?

#

via Live Link Face?

ocean wren
#

Yeah, but now its good ๐Ÿ™‚

misty wharf
#

It wasn't good? lol

ocean wren
#

They bought out cubic motion, which had a much better face solver

misty wharf
#

I remember I tested it just for a little bit

ocean wren
#

no, it was using apple arkit defaults..

misty wharf
#

Ah

harsh storm
#

idk - I am still quite excited for Verse in mainline UE

ocean wren
#

the cubic motion one has lot better face landmark tracking

misty wharf
ocean wren
#

PCG > Verse ๐Ÿ™‚

harsh storm
#

Eh - that's because it is trying to do things differently. It looks like a mess to some.

#

I appreciate them actually trying to do something different.

ocean wren
#

Why not just use Jonothan Blow's new language ๐Ÿ˜‰

misty wharf
harsh storm
#

He's an ass and I don't even think Jai will see the light of day before I retire.

ocean wren
#

Oooh, I bet houdini will be pissed ๐Ÿ™‚ Epic totally stealing their ideas

#

Yeah, its not the best thing to drive adoption to be a bit of a dik ๐Ÿ™‚

harsh storm
#

Either way - I am excited for the future of Verse.

ocean wren
#

Its been a while since I got actually interested in an Epic presentation.. I guess the gods are deciding not to shit on me right now

#

physics snore ๐Ÿ™‚

#

don't suppose anyone has messed with water much?

#

trying to find where they specify the ocean colour and absorbtion

lyric flint
#

Anyone with experince with 2D in unreal able to help me with my AI?

ocean wren
#

aint no 2D ai in unreal (at least I don't think there is?)

lyric flint
ocean wren
#

Yeah, just don't know of any AI tools to help

#

I suspect you'll need to code your own is all

#

it isn't a huge deal.. just regular old A* or similar

misty wharf
#

It depends on what exactly was meant by "AI"

#

There isn't really much in UE's AI tools which require 3D

lyric flint
ocean wren
#

Why does every bloody AI have to attack the bloody player as soon as they're in range? can't we all just get along? ๐Ÿ™‚

harsh storm
#

Because they want blood

ocean wren
#

Bloody AI

olive prism
#

How can I work so that if I hide behind a wall, my enemy is not seeing me as if he have wallhack?

ocean wren
#

fix the collision on the wall to block visibility

uneven cloud
uneven cloud
digital flume
#

How do I make an enemy ai? Like horror and can I add like a jumpscare when they get caught

grave compass
#

-------- I'm trying to understand the EQS system. Can you give an example where we use the EQS system or suggest a video? -------

slow bobcat
#

Plenty of tutorials in youtube, both official (Epic) and fan-made

grave compass
worldly shard
#

with the new state trees, is there a way to share data bi-directional between 2 states that are not under the same parent?

slow bobcat
# grave compass I know what works. But I think there are things I can achieve in other ways as w...

Depends on your game etc. I have custom tests for Line of Sight, straight line nave-based reachability and other stuff. It makes sense if you need stuff generated based on the environment. Of course you can achieve things in many other ways, EQS is just one of them.
It's necessary when you need a consistent and parametrizable way of generating a set of data based on environment conditions.
Examples:
"Give me all characters in a 10m radius that are reachable by a nav path"
"Give me all characters in a 10m radius that are reachable by a nav path and have Line Of Sight from the querier"
"Give me 10 cover points from which my attacker will not have a line of sight to me"

#

EQS are powerful but easy to mess up in terms of performance

quasi pecan
slow bobcat
#

State Trees question:
does anybody know what's the intended use of FStateTreeBlueprintEvaluatorWrapper? If I want to do a c++ Evaluator that can be used as a BP base too, should I inherit from it or from UStateTreeEvaluatorBlueprintBase?

quasi pecan
#

Yes for the BlueprintBase, I mean.

slow bobcat
#

But what are the advantages of having it using the EvaluatorClass memeber? is this supposed to be a wrapper to make it as generic as possible? Something similar to other wrappers like the ones in the EQS results?

#

It's frustrating there's so little documentation regarding intends of usage from a c++ perspective

quasi pecan
#

Yeah, it's a little annoying.

short kiln
#

I want my NPC move forward ( just a walk anim ) with his root motion and turn thanks to the navmesh ( so by default )
How can i do that ? Any tips ?

slow bobcat
#

that way your root motion will push towards the same direction of the path

#

YOu also have the Motion Warpping feature in UE5, where you can assign locations and the engine will drive the root motion to match said locations. You could feed them from the path calculation I guess

short kiln
#

Ok thx a lot ! I'm checking this right now.
So i assume i dont have to use a Character Movement Component but a simple Pawn instead with the skeletal mesh + follow path C.
Then find how to make him follow the spline component by using his animation and thats it ๐Ÿค”
And finnaly, find a way to make the ai doesn't go through a wall
Ive heard of the Motion Warpping and it could also be a good solution, i'll also check that ^^

short kiln
#

Well i can say its a failure. My pawn is following the curve but the root motion is not doing anything by default. the speed stay the same probably because of my BP_FollowSpline. But if i only play the root anim on the anim BP, the npc still stay in place ( no teleportation after the anim or anything, just IP ). Also, the class default root motion mode is set to Root motion from everything

deft sedge
#

does eqs NEED to be ran from a pawn class? Can I not run it from a controller if I provide my own location contexts?

ornate pagoda
#

Hey guys, how to create the exact same decorator as the custom build in cooldown decorator in the behaviour tree?

terse panther
slow bobcat
#

@lyric flint are there any plans to support multiple State Trees here?
It would be nice to be able to run more than one State Tree. For example: one that controls the AI behaviour and another that controls combat states. Even though they are related (AI will use different behaviours depending on its combat state), they are 2 different concepts. As for now, we have our combat behavior state machine using State Trees (idle, searching, combat...) and BT's driving the AI behaviour. Would be nice to be able to do everything in just one system.
Thanks!

haughty coral
# slow bobcat <@456226577798135808> are there any plans to support multiple State Trees here? ...

on the technical level, I don't think it should be possible to run multiple STs within single component. Ideally you could add multiple components to the AIController but it is not that straightforward because it is a Brain Component and AIController can have only single brain ๐Ÿฅฒ It does not prevent you from creating your own non-brain ST component but would be still nice to have that option...

celest python
#

quick question

#

how much of a pain it would be to make a PR to refactor that single brain thing on BTs/AIC?

#

Maybe we can customize the brain component registration process in AIC and make a PR ๐Ÿค”

haughty coral
#

I suspect the problem is that the code is there since like 4.0. Too many people depend on it, so it will most likely never get merged. Better but uglier option is probably try to get rid of some hardcoded AIController->GetBrainComponent() , AIController->FindComponentByClass<UBrainComponent>() calls. So that you could have multiple brain component added to the AI Controller but these won't interfere one with each other.

In general, BTs work even as a secondary brain component. Problem is just in some tasks which don't get owning BTComp but get it from AIController instead:

void UBTTask_RunEQSQuery::OnQueryFinished(TSharedPtr<FEnvQueryResult> Result)
{
...
    UBehaviorTreeComponent* MyComp = MyOwner ? MyOwner->FindComponentByClass<UBehaviorTreeComponent>() : NULL;
    if (!MyComp)
    {

Her instead of doing something like Task->OwningBTComp, it does AIController->FindComponentByClass<UBehaviorTreeComponent>()

void UBTTask_MoveTo::OnGameplayTaskDeactivated(UGameplayTask& Task)
{
    ...
    UBehaviorTreeComponent* BehaviorComp = GetBTComponentForTask(Task);

or here where it basically does Cast<UBehaviorTreeComponent>(AITask->GetAIController()->BrainComponent) instead of getting actual owning BTComp

celest python
#

I see, I will take a look at this after I finish my gigs, thx!

crimson oxide
#

How can you get a parameter value (State tree) from a state tree task (?

slow bobcat
#

How does one listen to state tree changes? I would like to hook up to some delegate or something that would allow me to listen and react every time the state tree exists and enters an state. Is that supported?
I can see that in StateTreeExecutionContext.cpp there is some log for Visual Logger informing of such thing

but I don't see a delegate or callback I can use.

#

Or am I supposed to add a task triggered from each state that will inform me about it? something that can pass a g.tag along with State.Idle, State.Combat etc and then I do whatever I need to do there? If that's the case, how do you control exiting the state?

slow bobcat
#

ok... so you need to do this to avoid concurrent task execution etc. Weird from my point of view, but ok, it works

#

The main problem I find with this approach is that you can't have a callback for when exiting a state.
In this tree, Idle_Start triggers (prints Idle on screen), then immediately triggers Idle_End, while the AI is still in idle.
Ideally I would love to get idle start when entering and Idle_End only before swapping to another state. Or getting XXX_Start called and a way to know the previous state

celest python
#

I wish Mikko would check Discord tbh, there are many people experimenting things and Epic could benefit from their feedbacks

#

Uh.. you already did (its against the rules to abuse it) and he has been pinged a few times in the past already ๐Ÿ˜„ I think he is active at Twitter though

slow bobcat
#

oh shit you are right. Deleting it. My bad admins! forgive my silliness!

slow bobcat
celest python
#

then you have everything burn lol

slow bobcat
#

I think I found a workaround:

  • Idle_Start transitions to Idle_Running
  • Idle_Running transitions, with conditions checking for other states, to idle_end
  • Idle_End transitions, with exact same conditions as Idle_Running, to another state (found or whatever)

That way I can get a start call, stay on idle and get an End call before jumping to another non-idle state.

Bad side: 3 sub states per main state. I'm glad this is a small state tree

deft sedge
slow bobcat
haughty coral
#

but I think they are aware of most issues, just the priority is elsewhere atm

celest python
#

I wonder why they just dont hire new people to AI team

#

iirc Enhanced Input was a job of contractor(s)

#

I guess like everything else, it has to benefit Fortnite first ยฏ_(ใƒ„)_/ยฏ

haughty coral
#

Enhanced Input is done by internal dev Ben Hoffman, also his LinkedIn states he is the lead of enhanced input. But yeah, there were some systems done by contractors / externals. I think console variables editor was.

foggy moth
#

not understanding this - this works fine in blueprint if i do the same exact functions - however if i attempt this in C++ (yes casts are good - verified by debugstring) it sits in place :/

    Super::BeginPlay();
    AAIController* MyController = Cast<AAIController>(GetController());
    AActor* FollowActor = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
    if (MyController->IsValidLowLevel() && FollowActor->IsValidLowLevel())
    {
        GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Orange, (TEXT("CASTS GOOD - SHOULD BE MOVING TOWARDS PLAYER")));
        UAITask_MoveTo::AIMoveTo(MyController, FVector::ZeroVector, FollowActor, 20); 
    }
harsh storm
fading wigeon
#

so guys Im trying to make an enemy turn based on the direction it's facing (quadruped so turning on a single point/whilst walking looks strange), currently I've got it semi working utilising a spline actor component tracking one point to the first mesh and 2nd to it's target, but the issues range from slow turn rates to sometimes just decided "aight ima turn around now bro" even after messing with the leave tangent. my question is whether there's another solution?

celest python
#

see how BTTask_MoveTo does it, quite complicated for a beginner though

slow bobcat
foggy moth
remote mist
#

Hi there. I'm a beginner at visual scripting and I couldn't find the answer for this anywhere. I have a character NPC that plays a set of barks when interacted with. These barks are set on his behavior three and all works well. Problem is: I want to change his barks to a new list when the QuestStage (variable) is different. So my question is, how do I send this variable to the behavior three?
I've heard that this variable should be inside that NPC's AIController, but how do I turn that into a BT key to use it?
Thanks.

grave compass
#

thank you very much for the reply

celest python
celest python
#

BT evaluation is not suitable for a dialogue system, prefer using FlowGrapg (free/MIT license) instead

#

or use NotYet dialogue system from github, its also free

#

to answer the question, you'd just update the value in blackboard?

remote mist
celest python
#

yeah just update QuestStage integer/enum from blackboard, and prefer using something that is not BT really

#

also enable observer aborts in decorators

#

it would make it abort if condition is changed during runtime

#

leftmost one would cancel the next one on the right, so you would enable for all of them

remote mist
remote mist
celest python
#

get blackboard component, set value by integer, type queststage and set value

celest python
#

yes

uneven cloud
remote mist
# celest python yes

The Set Value as Int is not adding any value for some reason. But if I use Get Value as Int and then increment it, it works. Still, the BT is not getting it.

foggy moth
uneven cloud
ocean wren
#

You guys want to see something cool I just came across?

#

I mean its AI based, but not Unreal Engine-based as yet

terse panther
#

sure

ocean wren
#

We're doing some research on generated meshes from NeRF's so I've been on the look out for new nerf related papers

#

And this one caught my eye

#

Jensen Huang? the guy from NVIDIA has been hinting that we'll be generating pixels rather than render them "soon" and NVIDIA are heavily behind NeRF research

#

I think longer term, we'll be using these for generative worlds

celest python
#

Hmm, interesting

#

I think pixels approach is quite good

#

I have some question marks but GPUs are my weak point

#

So I have no idea if they even make sense

hexed plank
#

Hey, if possible. Can someone explain Vectors and Float are in simple-terms?
Like (if I'm correct) a Boolean is basically a 'yes or no' response.

final loom
#

What's the most optimal way to simulate mass AI?

#

Like a ton of people at once? I think graphics may be my big barrier ATM

ocean wren
# hexed plank Hey, if possible. Can someone explain Vectors and Float are in simple-terms? Lik...

booleans are true/false values yes.. Floats are floating point numbers so a number with a fractional part, like 1.4 is a float as is -1.4 the . is the "point" in floating point values.. they typically are used for magnitudes, things like speed, or distance. A vector is simply three floats (usually) that denote an X,Y,Z set of floating point values. Usually used to describe points in 3D space (the 3 being the X,Y,Z values). Of course its a bit more complicated than that.. vectors can also be X,Y only, or actually any dimensional. There's also doubles which are simply float-like numbers with more precision and more bits store the value

ocean wren
#

Interesting PCG video by one of the Epic devs: https://www.youtube.com/watch?v=hjk9308SCeE

Series of videos to learn how to use the Procedural Generation Content plugin in UE 5.2.
This first video talks about:

  • How to setup a project to use PCG
  • How to scatter points on a landscape
  • How to spawn static meshes on those points
  • How to introduce randomness in meshes.

DISCLAIMER: This plugin is still in experimental mode, to learn mo...

โ–ถ Play video
#

Hahaha.. multiple videos about the new PCG stuff ๐Ÿ™‚

hexed plank
final loom
#

No, a Vector is used to store a 3d position. It's three floats together.

ocean wren
#

It gets a bit confusing because a Vector is basically the same form we use as points and we also use vectors as ways to calculate distances between two points

#

And if you're an engineering or ML type, you get upset because vectors are actually N dimensional in those fields

hexed plank
#

Okay, so a Boolean is a 'true/false' value. Floats are fractional-numbers. And a Vector is (more or less) specifying distances with an X,Y,Z axis?

ocean wren
#

But representation wise, we usually talk of vectors in 3D software in terms of 3 floating point values, typically X,Y,Z

#

yeah, I mean at a simple level, you can think of them that way

hexed plank
#

Right, there's a lot more to them then that.

ocean wren
#

there's a ton of extra nuances and plenty of people would argue about all of it ๐Ÿ™‚

#

typically floating point numbers are actually IEEE floating point numbers denoted by the IEEE standards comittee to designate how those floats are stored (some bits for the whole number, some bits for the fractional part)

#

You also get integers and signed/unsigned values

#

and "fixed point" numbers

hexed plank
#

Thanks. ๐Ÿ‘
I've been trying to learn Unreal, and all these tutorial show me 'how' to do something. But don't explain the 'why' these things work the way they do.
So I wanted to understand what these values where, then I can actually then realize "Oh, I'm in a true/false situation, maybe making a Class for an AI. Oh hey, a Boolean is perfect for that."

ocean wren
#

Yeah, learning these representations and what their values and limits are is a good idea

hexed plank
#

Or if I need to calculate where something is in an axis, I use a Vector.

ocean wren
#

for instance, floating point numbers have a limit on the range of values they can hold

#

the one thing to pay attention to usually, is things like signed/unsigned values.. but in blueprint I don't think they show that?

hexed plank
ocean wren
#

floats are typically used in things like magnitudes.. so size, speed, rates of change etc

#

as long as the values can't grow too big or too small

#

if you were trying to go from one point in the universe to another at the other end.. a floating point number wouldn't work ๐Ÿ˜‰

#

floats are usually represented as 32bits, so they have limits on what they can hold

#

doubles have 64 bits, so can hold a lot bigger range, so look out for those

hexed plank
#

Ahh, so if wanted to, lets say make a crafting system. A float would be good if I wanted it to take time/speed for something to be made?

ocean wren
#

yeah

#

its a bit weird, because time is often represented as a float, but sometimes its shown as an integer (for instance a number of whole seconds)

#

but I'd usually choose a float for things like time

hexed plank
#

So an Integer is a whole-number, while a Float are fractional-numbers, yes?

hexed plank
ocean wren
#

yeah, integers are whole numbers.. but there are signed -1, -23 , +14 etc.. and unsigned which are only 0 or greater

#

fractional numbers work better for time because often you have very small values less than 1 second.. so 0.0004 or something..

#

if you're rendering at 200 frames per second, then each frame takes 1/200th of a second..

hexed plank
#

Makes sense.

#

Thanks man. ๐Ÿ‘
I've learned quite a bit today.

ocean wren
#

No problem..

hexed plank
#

Just a little 'haha funny' I noticed, but the unrealengine.com tutorial for AI's has a minor typo.
Instead of "BTT_ChasePlayer" it's "BTT _ChasePlayer"

slow bobcat
# hexed plank Hey, if possible. Can someone explain Vectors and Float are in simple-terms? Lik...

Freya will help you a lot. It's not unreal knowledge you lack, neither AI. It's math.
https://youtu.be/MOYiVLEnhrw

Welcome to my four part lecture on essential math for game developers ๐Ÿ’– I hope you'll find this useful in your game dev journey!

This course will have assignments throughout, if you want to maximize your learning, I recommend doing them!

If you are enjoying this series, please consider supporting me on Patreon!
๐Ÿงก https://www.patreon.com/acegik...

โ–ถ Play video
slow bobcat
#

It's hours of content but, you get basic games math right? Sky is the limit

hexed plank
#

Yeah, obviously I know math. I just don't know how to implement the math into a game, if that makes sense.

slow bobcat
#

Ok, my bad. You know math. You need then extend your math into algebra. To me, the rule of thumb is "can you explain (insert math concept here) to someone so they can understand? No? Then you don't know math. You know some math". Silly rule, but got me to interesting places.
My 2 cents

hexed plank
#

Not sure what I did wrong here, but for some reason keeps going to the last 'wait' instead of executing the rest of the tasks in order.

uneven cloud
hexed plank
uneven cloud
hexed plank
#

Wait, nvm.
Thought it would've been in Windows

hexed plank
#

Wait, I think I see.

#

"LogAINavigation (Error) AAIController::MoveTo: Destination is not valid! Goal(Invalid)"
Huh...

#

So I'm assuming that means there's something off with the 'MoveTo' task

#

Interesting though.
Looking back at the unrealengine.com tutorial and what I did, it should be fine.
I made a Vector-key called "PatrolLocation" and assigned it to the "MoveTo" task.
There's nothing more to it from what I can see.

keen crow
hexed plank
keen crow
hexed plank
keen crow
#

yeah. the eye icon doesn't mean active/inactive, it's whether it is publicly exposed or not inside other blueprints/graphs. so in your case you need only one of those and click an eye icon. It then should appear in the BT editor and you should assign your BB key there

hexed plank
#

So it's walking now, but doesn't follow the player when they're in line-of-sight?

keen crow
# hexed plank So it's walking now, but doesn't follow the player when they're in line-of-sight...

for that the Has Line of Sight decorator has to observe what NPCs see at the moment, but IIRC default Has Line of Sight decorator doesn't do it, it checks only once. To achieve that behaviour you'd probably need to make your own service that checks every fraction of time (say 1 second) AI controllers perception component currently perceived actors (but I don't remember if that is actually exposed in blueprints). If currently perceived actors data has sight perception triggered by an actor and that actor is the player - than you should update some BB key that should be observed by a decorator that should replace the HasLineOfSight decorator

hexed plank
#

So, I'd need a custom decorator to make sure they properly follow?

keen crow
# hexed plank So, I'd need a custom decorator to make sure they properly follow?

Kind of. You need a way inside your BT to observe what your NPC actually perceives (see AI Perception Component in your AI Controller if you haven't already). I usually put this logic in a service (since services are designed for periodical execution of some logic, however decorators can actually do the same) and place this service somewhere at the earliest composite (AI Root in your case). When the observation service finds a new target (or decides that despite seeing a target it wants to patrol, or to retreat, or whatever) it then updates the BB keys provided in BT. Like a service finds a new enemy - ok, assign found enemy to a BB key.

Then, at any point of BT, you should place a regular Blackboard Decorator that looks at the enemy BB key and aborts either lower priority or self and lower priority. This way you can have your AI behavior to switch from patrolling in your lower priority right branch to the higher priority left branch when an AI sees an enemy

hexed plank
#

I'll reread all of this in the morning.
Thanks. ๐Ÿ’–

cinder condor
#

From a high-level / design POV, how would you go around making an AI & Schedule system similar to the one in stardew valley? -> I have a use-case where I need to implement around 30 agents, which are highly similar with slight differences (dialogues, temperaments, schedule). I'd like to be able to set most of this from some kind of data asset (so that designers can do it and make changes). And obviously, for more specialized tasks, have a way to simply implement them and just select them in the data asset (without changes to the main BT or such). Any suggestions or tutorials? I'm a bit lost

#

Also, no clue how to realistically make a Schedule system that communicates well (event queues?) with the AI stuff - In my case, all the AIs will have the same schedule but different actions, so that makes it a bit easier I guess

celest python
#

in fact, isnt this just DLSS ported to some dataset haha ๐Ÿ˜„

plush cargo
#

Anyone know why i get these

#

if its a general mistake or most likely my own specific thing?

#

i have an attack task. from there i trigger an interface call to the enemy and ask it to charge (flip a bool)

#

if i do a boolcheck in that action, example
if !charge

i get above error

#

But the above error shows up in a variety of similar logic flow splits

#

i think i avoid the crash if i compile the statetree after i make any changes in relevant blueprints

ornate pagoda
#

Hey guys, how to create the exact same decorator as the custom build in cooldown decorator in the behaviour tree?

uneven cloud
ocean wren
# celest python this reminds me the tech behind DLSS

Nah, DLSS is a ML based upscaler. This is a way to modify the output of a neural radiance field by injecting a diffusion model as part of the way the nerf is constructed. Nerf's being a model that captures surface density and colour and lighting values for 3D space as a ML based function. So basically you're using a trained model to guide the generation of another. Quite a popular approach right now.

#

The point of this, is that if you take the nerf as its forming and push it in the direction of the text prompt (which is the essence of what these text to image models are doing), you can get a neural radiance field that similarly matches the prompt. The difference here, is that there are methods to transform the NeRF into a mesh (which is what one of my MSc students is doing), so we can basically capture an iphone video of an object.. generate a modified version of it by training a nerf from the video.. then output it as a modified mesh.

#

And if you want to get extra fancy schmancy, you can do it for environments (using something like nerfusion).. its all not real-time yet, but give it a few years.

#

I stand corrected, it looks like it actually updates the scan source images with the diffusion model and then re-enters the nerf phase.. I'll have go give this a go ๐Ÿ™‚

cinder condor
# uneven cloud You don't want to over engineer it with a Schedule system. Start simple and fai...

For now I started with a time system, that emits events when time changes. I have a main service on the BT which is the entire decision making (trying to keep it simple) and was thinking to just listen for the event, check against the Data Asset and select the appropriate goal (task) - which in my case seems just to be selecting an appropriate Smart Object and using it. (at least for those many generic AIs I mentioned) - What do you think about this approach?

obsidian igloo
#

im sort of confused about the AIPerception Request Stimuli Listener Update node. does it allow you to update the OnTargetPerceptionUpdated event dispatcher whenever you want?

#

and if not, is there any way I can update the target perception whenever I want?

magic prairie
#

hi, im not sure if this is the right space for this, but im having collision issues, basically my enemy when it attacks while its hitbox is already overlapping my hitbox, it doesnt do any damage, i assume this is a collision issue? how would i go about fixing this? i appreciate any help!

#

basically my enemy attack works perfectly, unless im already standing in its hitbox when the attack is innitated (so when im touching its front)

crimson oxide
#

Hey there, how do I properl reference the AI controller/AI pawn from a State Tree Task (?

rare hemlock
#

Anybody else here who thinks that epic games has to improve their ai features? I mean, new shiney graphics are nice, but when it comes to gameplay, enemy behaviour is very important. The Behaviour tree is totally dated and EQS very buggy . No things like ulitity ai and scoring for advanced ai behaviour. No solutions for attack formation,โ€ฆ

celest python
#

Anybody else here who thinks that epic games has to improve their ai features?
everyone including the epic AI team itself

crimson oxide
#

trying to make the actor enter this state continuously. But it is only running once. Whats wrong with the implementation (?

tacit wraith
#

Is it possible to eliminate the 1 frame delay when running a BT through the "Run Behavior" task from another BT?

uneven cloud
uneven cloud
# rare hemlock Anybody else here who thinks that epic games has to improve their ai features? I...

They recently came out with the state tree, mass AI and smart objects. In what way is the EQS "very buggy"? I have not found that to be the case.

A Utility AI system is incredibly easy to make. It is however really hard to use if you don't understand it and is completely unnecessary for most games.

Gameplay systems are incredibly difficult to generalize. How attack formations work is incredibly dependent on the game you are making. Take for example the new smart object system. It works for a very specific purpose (the matrix demo), but doesn't work for a significant amount of other cases. Like multiplayer.

misty wharf
#

It sounds like some misunderstanding of what EQS is for. I've also never had a single issue with it, it's just sometimes difficult to understand why it's behaving in a certain way but it's always entirely as intended.

uneven cloud
#

Using the visual logger is key to figuring out why it's doing something. I've used it since 2016, in multiple shipped games and only encountered a couple of actual bugs.

rare hemlock
#

@uneven cloud yeah, I appreciate the things that have been implemented, like smart objects and the state tree. And I didล„t want to sound too negative and realise that it is difficult to add generic ai stuff, but I am getting a bit frustrated with my ai behaviours . EQs crashed several times without any known reason.

uneven cloud
rare hemlock
#

Okay, thanks. I will check everything again. Good to hear that it is my fault :โ€“)

north oriole
uneven cloud
hexed plank
keen crow
hexed plank
keen crow
haughty coral
sullen prawn
#

Does anyone know any good c++ ai tutorials?

sullen prawn
#

Thx

ocean wren
#

BTW: did you guys know there was a humble bundle with AI books right now?

#

Figured I'd get it for nostalgia and so I've got electronic copies of my chapters

slow bobcat
nimble sequoia
#

Hi there, I have to create an AI using C++ as much as possible. In particular, I want the AI to see and react to the objects in front of it.
I was thinking of using AI Perception for that, do you think this could work ? If not, what would you recommend to do ?
Thanks a lot for any answer

nimble sequoia
#

All right, good to know. Thank you

tawdry osprey
# quasi pecan Sorry to ping you but I have a question for your Case #2 for you. Have you teste...

Hi thre, no problem, and sorry for my late response!
I've added some debug prints and the tasks seem to enter their stages in the following order:

Find Cover: Enter!
Move to Cover: Enter!
Find Cover: Tick! (returning success, as the EQS has already finished)
Move to Cover: Exit!
Find Cover: Exit!

And then - just nothing happens. execution on success of the Find cover should be moved to move to cover (that already is active, and exited before the find cover

quasi pecan
#

I was having an issue where if a Task on a selector state was ticking, it messed up the order of transitions. Basically, to explain it in terms of your setup, my FindCover Exiting was causing my MoveToCover to exit or something like that and I was getting crashes and other problems because of it.

#

I didn't really need the Tick in that task so I removed it and that solved a whole bunch of problems for me.

tawdry osprey
#

Well the issue with my two tasks is that they are latent - I do not know when I've found my cover (the EQS has finished) or the move to is complete. Thus I need to tick to constantly check if the task is done.

#

Also tried it today with the 5.2 preview, doesn't seem to fix the execution problem, nor can I see a way to pass the data outside of the task (without children binding to it).
I'm considering some sort of blackboard on the context actor I could write to...

quasi pecan
#

Yeah a component on the character that can store things would work. Just extending the State Tree component to have that would be cool as well.

crimson oxide
#

Hey there does anyone know how to change the value of a state tree parameter from a state tree task (?

tawdry osprey
quasi pecan
crimson oxide
#

So I should just use an evaluator right (? Just started with them like some mins ago, not sure how to exit the evaluator properly, I cannot use a return node succeed as with tasks

tawdry osprey
crimson oxide
tawdry osprey
#

you can't translate every concept 1:1, STs are a different system

#

decorators you assign to a node in BTs, while Evaluators belong to the whole state tree, and run as long the tree runs.

crimson oxide
tawdry osprey
#

they can have data as ouputs which they can update, and other task can bind to

celest python
misty wharf
#

Ugh, the realization that I think I found another issue with the smart object system lol

#

I actually need two different kinds of ways to interact with one which does not appear to be supported

#

Maybe I can have two smart object components on the actor, where it gets chosen by activity tag and that way it can have two...

ocean wren
#

The GameAIPro books for instance, but also game ai wisdom, game ai uncovered, game programming gems etc.

#

And a number of academic books

misty wharf
#

anyone here happen to know anything about running eqs queries from gameplay behaviors? It doesn't seem to work out of the box for some reason

haughty coral
misty wharf
#

In theory yeah, but it would require keeping some kind of state about what the actor wants to do within the actor itself just for this purpose, which seems a bit iffy :)

#

I was thinking of creating some kind of "smart object activation context" value which could be passed into the behavior via some method

#

since I might need to be able to pull some more data in/out of the behaviors

#

in that case it would be possible to make use of that to make the choice, which could work

haughty coral
#

Yeah, I miss some activation context too :/ I wanted to get activating slot and from there its tag. Weird that there is no such option

#

On one side gameplay behaviors look very generic and usable for various things but on the otherside there is smart object stuff hardcoded. It is weird. If it should be generic I would expect some polymorphic context instead pf SO Owner. If it is expected to be always tied to SO, then I would expect a bit more of SO relevant data like activating slot, tags, โ€ฆ

misty wharf
#

Yeah, although not sure how I'd use those for something else

#

I'm writing some AITask wrappers for certain things I was doing in BTs that I'm now doing via SO's, those are perhaps a bit more generic

haughty coral
#

I use them also for things which would otherwise probably be an AITask. Like FollowActor or FollowPatrolPath behaviors. I like the accessibility of its properties, generic interface & delegates, and BP support. But I also use GBs for behaviors which AI does when a specific patrol node is reached.

misty wharf
#

Any particular reason you chose to use those instead of say custom UObjects or say GameplayTasks?

haughty coral
#

Not really, just that I wanted to create something almost same as Gameplay Behaviors. I could probably make a custom UObject/GameplayTasks class which would fit a bit more. As GBs are mostly just 2-3 plain funcs, I am ready to switch it something custom as soon as there is a first bigger issue. But the nice thing is that I can reuse all this for SOs out of the box.

misty wharf
#

Makes sense

haughty coral
#

The plugin desc makes it sound quite generic, maybe it misleads, idk. We will see when there is a progress on Epicโ€™s side. But updates are minimal thereโ€ฆ.

misty wharf
#

Yeah it sounded like it's intended to be generic, but I did see the smart object bits in there, maybe it's just some temporary thing and they'll clean it up a bit

uneven cloud
misty wharf
#

Yeah testing using multiple smart object comps on the same actor for this purpose, we'll see how it goes :D

harsh storm
#

To be honest - it isn't even all that difficult to roll your own. At least as far as I understand what the point of a smart object is anyway.

ocean wren
#

its all about the UX ๐Ÿ™‚

misty wharf
#

Yeah it's not, but there's a lot of moving parts to it so it's easier to not have to build all the frameworks around it lol

harsh storm
#

And from what I hear from multiple people in this channel - UE's SO system uhhhh, leaves much to be desired

misty wharf
#

The basic concepts in it seem fairly solid, it just have a lot of limitations and for some reason they've made it really hard to extend

#

I'm currently tacking custom features on top of the SO system which so far works ok :P

ocean wren
#

I wonder why its always a bit wonky? maybe because nobody outside epic gets to give feedback?

uneven cloud
#

It took me about 2 weeks to roll my own that borrowed the UX from the smart objects

ocean wren
#

Yeah, got to imagine that'd be my approach too. steal some of the better UX and fix the rest

harsh storm
# ocean wren its all about the UX ๐Ÿ™‚

Oh, speaking about UX - last week, I finally made a component visualizer. Was definitely cool seeing it come to life. I now have a visual link, in the editor, for what a keypad connects to (this component can have multiple things it is responsible for)

uneven cloud
#

My personal project, I use the smart object system and it took an afternoon to add functionality to pick gameplay behaviors in a reasonable way.

ocean wren
harsh storm
#

This is just a simple visualizer. Haven't done a full blown editor yet. One day...one day...

ocean wren
#

its the start of the slippery slope into madness

misty wharf
#

So far so good, multiple SO comps on single actor seems to work pretty good for choosing which behavior to run

#

It's effectively duplicating the smart object definition except for the behavior so it's a bit meh, but could be worse I guess

fading field
#

Hello, I have a question, my enemy doesn't want to use the perception for some reason and I'm not sure why. Even the debugger view doesn't show it being active. Everything else runs fine for this one, the behaviour tree etc works as intended

#

Update: right as I want to take screenshots of the debugging view not working, it magically works. I didn't even change anything PainSmile

sage lagoon
#

Is there a way to have certain enemies avoid certain areas. Example: Hot panels on the floor.
Player can run over them, and basic enemies can run over them. both taking damage, but I want to also have a
smarter enemy, that avoids these zones, and will go around.
The nav mesh seems to only be an all or nothing deal.

misty wharf
#

You can use nav mesh modifiers to mark parts of the navmesh as specific area classes

#

Then you can create a nav query filter which marks those areas a sufficiently high cost, and assign it to your smart enemy. This should make them prefer the cheaper safe routes instead

fringe ermine
#

The gods of UE please bestow your wisdom upon me the know-how on how to make a AI pedestrian system.

tawdry osprey
# crimson oxide Hey there does anyone know how to change the value of a state tree parameter fro...

Hear hear, good folk!
I've found a sneaky way to update the parameters in state trees! thus allowing to pass data not only directly from one task to it's child, but also allowing other tasks to use that data.
It's a bit hacky as it references the parameter only by it's name ๐Ÿ˜ฌ but maybe it can help you:

.h
`//Name of the ST parameter this task should write to
UPROPERTY(EditAnywhere, Category = Parameter)
FName ParameterName;

//This is the value I want to write to the parameter, in this case a custom struct of mine
UPROPERTY(EditAnywhere, Category = Output)
FTargetData CoverPosition;`

.cpp:
`//whereever you want to write to the parameter; we need the FStateTreeExecutionContext though

if (!ParameterName.IsNone())
{
//we get the STs default parameters and find the property with our desired name
FInstancedPropertyBag Properties = Context.GetStateTree()->GetDefaultParameters();
const FPropertyBagPropertyDesc* PropertyDesc = Properties.FindPropertyDescByName(ParameterName);

//some sanity checks
if(PropertyDesc && PropertyDesc->ValueType == EPropertyBagPropertyType::Struct)
{
    //here we set the parameter to
    Properties.SetValueStruct(ParameterName, CoverPosition);
    
    //and here we give the parameters back, so that they get updated and other nodes can use our new data
    Context.SetParameters(Properties);
}

}`

Hope it helps, I just tested it quickly, I take no responisbility for anything

warped solstice
#

any idea how to use "UCrowdFollowingComponent" with multiple navmeshes (recasts/agents)?

There is

else if (CrowdManager->GetNavData() != RecastNavData)
{
UE_VLOG(GetOwner(), LogCrowdFollowing, Error, TEXT("Invalid navigation data in UCrowdFollowingComponent::SetMoveSegment, expected 0x%X, got: 0x%X"), CrowdManager->GetNavData(), RecastNavData);
OnPathFinished(FPathFollowingResult(EPathFollowingResult::Aborted, FPathFollowingResultFlags::InvalidPath));
return;
}

that makes it impossible by default. Maybe someone here worked on this?

short kiln
#

how to make an AI only walks on a specific area
i want my IA to only walk on "Water" static objects. ( I know that on Unity, you can set a layer on a obj and check with a raycast if the layer return true )
I'm also using " Get Random Reachable Point In Radius " and an " AI MoveTo " node

#

Currently, my AI can walks everywhere on the map

quaint radish
#

what is the difference between these 2 nodes? I think one simply shows the spheres in the visual debugger?

fringe ermine
#

hello guys, can anyone here help me figure out how to get metahuman pedestrians on the walk path with crowd simulation... thanks... I think this should be the most basic of AI

terse panther
sage lagoon
# short kiln how to make an AI only walks on a specific area i want my IA to only walk on "Wa...

I was just working on something similar, but reverse.
Check out these 2 videos on YT:
Navigation Query Filters (Separating AI movement) - UE4 With Casey
Part 40_ making your AI avoid parts of your level

Aside from creating a wall around that area, to keep them inside, this works great.
You can just make other areas a lot more expensive for that particur enemy, but.. if they have no other choice, then they make just go out of the box anyway.

ocean wren
ocean wren
#

Although when my students tried, it was quite buggy to have pedestrians and cars, you couldn't have both without crashes

fringe ermine
fringe ermine
#

I don't need vehicles. I just need metahumans back and forth along a zonegraph

ocean wren
#

Why not just use an animation then? use sequencer to record yourself walking and then replay that

fringe ermine
#

I'm an animator and i'm trying to make a indie short pitch plus it'll be a good skill to have

ocean wren
#

Make sure you enabled the plugins.. I can't see what might be the issue otherwise.

#

Worked in 5.1 at least

misty wharf
#

Was wondering if there was a way to get a notification of a gameplay behavior aborting even if it ended "immediately" during activation

#
    if (bTransientIsTriggering == false)
    {
        OnBehaviorFinished.Broadcast(*this, Avatar, bInterrupted);
    }
#

Who thought that was a good idea, it literally would give you the info on whether it was aborted (bInterrupted) if it didn't have that check...

#

EndBehavior is virtual, maybe I'll just make my own version which behaves the way I want :P

#

At least it makes it possible to check for error state without adding unnecessary "Wait 0.01" nodes into it to force it to be async

fringe ermine
fallow hound
#

is there a way to make it so an EQS service sets the BB value empty if the service finds nothing?

ocean wren
uneven cloud
fringe ermine
ocean wren
#

Did you download the city sample from the epic marketplace?

#

Theres a sample with the metahumans on a street corner kind of thing

haughty coral
misty wharf
#
void UKotGameplayBehavior::EndBehavior(AActor& Avatar, const bool bInterrupted)
{
    Super::EndBehavior(Avatar, bInterrupted);

    //default implementation for whatever reason thought it was a brilliant idea
    //to not trigger this event that would let you know if the behavior was aborted
    if(bTransientIsTriggering)
    {
        OnBehaviorFinished.Broadcast(*this, Avatar, bInterrupted);
    }
}
#

lol

#

works fine this way

haughty coral
#

hh nice, I already had worries about copy pasting the whole function. This should do the trick

misty wharf
#

Depending on how you use them might need some custom logic to handle it - iirc the default Use Smart Object AI task assumes it behaves as the default one does. But I have a custom node around it anyway so it was fairly simple to adapt

fringe ermine
fringe ermine
ocean wren
#

There's a couple of samples if I remember rightly

haughty coral
ocean wren
fringe ermine
ocean wren
#

Yeah, so? ๐Ÿ™‚

#

Its only disk space

#

To be fair, I thought it was in the city sample people example..

#

Did you filter for maps?

fringe ermine
ocean wren
#

Ah, thats a problem

#

And you're making a film?

fringe ermine
ocean wren
#

Ah, say no more.. gotcha ๐Ÿ™‚

fringe ermine
ocean wren
#

You're going to need more disk space ๐Ÿ™‚

#

Doesn't netflix require 8k now?

fringe ermine
ocean wren
#

I'd have thought pitching in the format you'll need to deliver with would be wise no?

#

Just to demonstrate you can deliver it

fringe ermine
#

Let's focus on getting the pedestrians functional

fringe ermine
ocean wren
#

Sorry, my life is literally doing pitches for money right now

#

Well, bids, but same deal

ocean wren
#

Part of academic work.. is trying to fund research. Frankly its a pain in the arse ๐Ÿ™‚

fallow hound
uneven cloud
fallow hound
#

thanks

#

ill do some searching in the meantime!

short kiln
#

@terse panther @sage lagoon Thank you both for your help !
The second tuto help me more to think about a solution and finally i found it by myself.
So what i do is pretty simple, i check if the destination's object physical material == Water. If not, try again on another point, and if yes, set the destination and move it to the point.
I think this could help other peoples who wants to restrict an AI in a specific area without using the cost system or modifiers

fringe ermine
#

@ocean wren I sent you a request. Let me give the crowd sim another fresh go...

fringe ermine
#

@ocean wren
I create a Data Asset of type MassEntityConfigAsset.
I add traits like in the video tutorial but when it gets to the StateTree trait, there are no state tree to select when clearly I've created a StateTree. I even try to drag my StateTree from the content browser into the slot for it in the MassEntityConfigAsset trait section with no luck

uneven cloud
fallow hound
fringe ermine
# ocean wren Whic tutorial did you follow?

I tried this one first:
https://youtu.be/2LvUB3_PAhI

Discord server https://discord.gg/XrQjK7hseN
Traits for 5.1.1 https://drive.google.com/file/d/1D1lPc-nIbJq7Q0xmC9Fh-q19nNv1JnCX/view

In this UE5 video, we are adding MassAI with City Sample Crowd to a new project or an existing project... using City Sample Crowd, Zoneshapes and MassSpawner

Part 2 : https://www.youtube.com/watch?v=4-qcSrAxGCc&l...

โ–ถ Play video
#

Then I tried this one yesterday:
https://youtu.be/bVvYn7dEqMA

celest python
#

@fringe ermine you are looking for a solution at wrong place, you should ask those in #mass

#

Majority of people here didnt touch Mass or CitySample

ocean wren
#

And it does look a bit like crap still, but yeah, these things are coming quite obviously

#

The question is more about what the UX is going to be

#

My preference is to have a contextualized conversation with the generator (as in Star Trek Holodeck)

crimson oxide
#

How to use EQSs properly with state trees (?

fringe ermine
ocean wren
#

Not really, there are literally hundreds of different ones

#

My discord list looks like a bomb went off I've got so many

balmy bane
#

Does anyone know how to set it so the ai character changes attack type from melee to ranged when at a certain range from the player?

harsh storm
#

I'd use a service personally.

#

Just periodically check if you are within X distance

stiff gale
#

How can significance manager could be used with the animation budget allocator? So I added the SkeletalMeshCompBudgeted to my char. Then I followed this tutorial. What else? https://prog.world/the-significance-manager-in-unreal-engine-4/

In one of the previous articles, I touched on the topic Significance Managerโ€ฆ Now I want to take a closer look at its settings and integration into your project. Significance Manager โ€“ a single structure that allows you to write flexible, specific code for evaluating and prioritizing objects. Based on the data obtained, it becomes...

balmy bane
celest python
#

dont use a service, put a decorator to more prior state (melee state) and check if you are in given distance radius and BT will switch to melee behavior automatically

harsh storm
celest python
#

Is At Location decorator doesnt produce a result like that though

#

just enable observer aborts

#

it will cancel itself

#

at worst case put !IsAtLocation decorator on less prior state

harsh storm
#

What I'm saying is - once the decorater conditions passes, you can be in the melee state and then the player leaves the range and your AI is still in the melee state when they should be in the ranged state. Because the decorator checks once.

celest python
#

If you have a selector, decorator would run forever while selector is active

#

Normally this type of thing can be moved to AIController, but if its done in BT it should be tied to a selector + decorator combo

#

possibly with injection tags to run different melee/ranged behaviors

harsh storm
#

If it is running forever, there is effectively no difference between the decorator and service approach.

celest python
#

There is, because you need to have a bool in BB and use a decorator again to switch

#

IsAtLocation abstract this

harsh storm
#

I don't think I've ever used the decorator like this. I've only ever seen it as a check once thing.

#

Good to know that it runs forever though

celest python
#

Only valid usage of service for this would be if you have a complex tree with nested behavior and if you cant control the flow directly from higher level of prioritization

#

but in that case probably you have bigger problems ๐Ÿ˜„

harsh storm
#

Either approach you elect to take, make sure you only apply it to the relevant selector at least

balmy bane
#

Basically, I have an AI already set to melee the character. Once outside of x range I want the character to stop and use itโ€™s ranged attack. Iโ€™m new to using Ai and behavior trees and would like to know where to start

celest python
#

start with pinned messages first

#

understand the difference between BT and a state machine, then you'll have an idea of how to structure prioritization in behavior trees

balmy bane
#

Okay, Iโ€™ll take a look at the videos thank you!

celest python
#

damn, Luara's pin removed because she left

#

it was the most important one

harsh storm
#

Which one did she pin?

celest python
#

this one

harsh storm
#

Oh - I thought someone else pinned that

#

Her pins still exist in #cpp

fringe ermine
celest python
#

these days I'm getting a vibe like I might leave the server too ๐Ÿ˜„ Wanna re-post it and ask for a pin? @harsh storm ๐Ÿ˜„

harsh storm
#

I don't think leaving removes the pins

celest python
#

actually yeah, it was.. the cat who pinned that

#

and she probably removed the cat account

harsh storm
#

I probably won't leave the server, but I do have less overall involvement ๐Ÿ˜…

sudden citrus
#

Should the MoveTo node aim to get line of sight to the target even if Acceptable Distance is set to something much farther? Like if I'm over a hill, my NPC will walk up to my face, it's hilarious

celest python
celest python
#

thx blue orangeman

#

โค๏ธ

potent iris
ocean wren
#

I wonder if I'll get away with doing a whole lecture session using only generated AI for content

celest python
ocean wren
#

Oh, I fully expect to be replaced in a few years

#

I welcome it ๐Ÿ˜‰

celest python
#

my current experience today tbh ๐Ÿ˜„

#

only if I had GPT 6 years ago or something

#

i would ace in math

ocean wren
#

There was a presentation by a guy in health and social science dept a few weeks back and he said we're all doomed and I agreed ๐Ÿ™‚

#

Universities are worse than oil tankers for reacting to change... I suspect they'll be dead within 10 years, or at least significantly transformed into more social things

#

Because they sure don't do well for education ๐Ÿ™‚

celest python
#

at least now everyone can get equal/ education, which is what GPT can provide. no one has to worry about their own teachers are bad ๐Ÿ˜„
though I think you are individually quite an awesome teacher and unlike you GPT doesnt write a custom sequencer toolset for their students (yet?) so it might be a bad for your students haha

ocean wren
#

Well, view it a different way, I can spend all my time writing custom demos and stuff and less time trying to teach people for loops ๐Ÿ˜‰

celest python
#

trying to teach people for loops
burn

#

@harsh storm is your GPT4 still available?

#

I have a cool prompt idea if you have any token limit left ๐Ÿ˜…

ocean wren
#

Honestly, I don't know how this is all going to play out. But its coming up fast

celest python
#

did you watch Lex Fridman's podcast with OpenAI ceo?

#

its probably might not be very insightful for you but i ended up understanding their viewpoint

ocean wren
#

Dunno, I watched a few of his recently

#

To be honest, the OpenAI not being open thing has me less interested in them

celest python
#

basically they believe in a few years people will be able to do anything without relying on expensive machines etc.

ocean wren
#

Yeah, there's something in that.. there's plenty of recent papers on making these big expensive models work on single computers and such, things like Llama and Alpaca etc..

celest python
#

Didnt alpaca fail ๐Ÿ˜„

#

they literally said "this cant even beat GPT" and took it down (the users, not the meta itself)

ocean wren
#

its not about beating it

#

its about making it competative with almost no GPU power

celest python
#

is that even possible Thonk

fringe ermine
# celest python at least now everyone can get *equal/* education, which is what GPT can provide....

https://www.youtube.com/watch?v=0Fr-YbV0VEo
@ocean wren how do I get this blueprint into a sequencer.

This is a turnkey solution if you work in the Unreal Engine environment, and you need to fill out your project or game with people in 2 clicks. You can buy this asset in the Unreal Engine store. Download link: https://www.aglobex.com/product-page/population-system
ะญั‚ะพ ะณะพั‚ะพะฒะพะต ั€ะตัˆะตะฝะธะต ะตัะปะธ ะฒั‹ ั€ะฐะฑะพั‚ะฐะตั‚ะต ะฒ ัั€ะตะดะต Unreal Engine ะธ ะฒะฐะผ ะฝะตะพะฑั…ะพะดะธะผะพ ะฒ 2 ะบ...

โ–ถ Play video
celest python
#

dont ping people randomly

#
  1. Be patient when asking for help. This isn't an official Epic Games support channel so we can't guarantee a response. Don't ping people unless you're replying to them. If someone can help, they will. If not, come back in a few hours and consider rephrasing your question or adding more details.
ocean wren
#

Basically the idea is that those LLM's are huge and probably not all of the network is actually impactful, so you can slim it down and have almost no loss of function

celest python
ocean wren
#

No, thats a simple data type optimisation

celest python
#

hmm, more like whats happening for network packages then (in games)

ocean wren
ocean wren
celest python
#

so its like "give me a GPT but only knows things about UE" + quantization

ocean wren
#

Alpaca and the rest are about distilling the useful stuff from a huge model into a much smaller one with almost no loss of function

#

Think of it this way, there's a bunch of numbers that go up and down to change the output.. but most are disconnected or zero'd so you can reasonably remove em and save space in mem

sudden citrus
ocean wren
#

so instead of needing a star destroyer to run your little chat model, you'll use your smartphone ๐Ÿ™‚

celest python
#

Btw zoom, what would you think if all BTTask nodes in BT had a "on failure" branch? I'm listing things to PR for this summer and I often find myself in a situation where I need to know the result of a BTTask in BT and I end up using BB keys, which makes things difficult

#

but never saw such thing in other BTs so far

celest python
harsh storm
celest python
ocean wren
celest python
celest python
#

so you can continue with a different branch to evaluate the BT

celest python
ocean wren
#

GPT4 has up to 32k tokens coming.. that's a LOT of tokens

celest python
#

but you were limited to 1k words you can type a while ago

harsh storm
#
#include "WeirdConnectionTest_C.h"
#include "KismetArrayLibrary.h"
#include "KismetMathLibrary.h"
#include "KismetStringLibrary.h"
#include "KismetSystemLibrary.h"
#include "LinearColor.h"

void UWeirdConnectionTest_C::ExecuteUbergraph_WeirdConnectionTest(int32 EntryPoint)
{
    int32 Temp_int_Loop_Counter_Variable = 0;
    int32 Temp_int_Array_Index_Variable = 0;
    TArray<bool> BoolArray;
    int32 CallFunc_Add_IntInt_ReturnValue;
    int32 CallFunc_Array_Length_ReturnValue;
    bool CallFunc_Less_IntInt_ReturnValue;
    bool CallFunc_Array_Get_Item;
    FString CallFunc_Conv_BoolToString_ReturnValue;

    switch (EntryPoint)
    {
        case 456:
            goto Label_Loop;
        default:
            break;
    }

    return;

Label_Loop:

    CallFunc_Add_IntInt_ReturnValue = UKismetMathLibrary::Add_IntInt(Temp_int_Loop_Counter_Variable, 1);
    Temp_int_Loop_Counter_Variable = CallFunc_Add_IntInt_ReturnValue;
    CallFunc_Array_Length_ReturnValue = UKismetArrayLibrary::Array_Length(BoolArray);
    CallFunc_Less_IntInt_ReturnValue = UKismetMathLibrary::Less_IntInt(Temp_int_Loop_Counter_Variable, CallFunc_Array_Length_ReturnValue);

    if (CallFunc_Less_IntInt_ReturnValue)
    {
        Temp_int_Array_Index_Variable = Temp_int_Loop_Counter_Variable;
        CallFunc_Array_Get_Item = UKismetArrayLibrary::Array_Get(BoolArray, Temp_int_Array_Index_Variable);
        CallFunc_Conv_BoolToString_ReturnValue = UKismetStringLibrary::Conv_BoolToString(CallFunc_Array_Get_Item);
        UKismetSystemLibrary::PrintString(this, CallFunc_Conv_BoolToString_ReturnValue, true, true, FLinearColor(0.f, 0.66f, 1.f, 1.f), 2.f, FName(TEXT("None")));
    }
    else
    {
        goto Label_EndOfLoop;
    }

    goto Label_Loop;

Label_EndOfLoop:
    return;
}

@celest python it said this is a "rough" translation

celest python
#

holy shit

#

lmao

#

fuck ๐Ÿคฃ

ocean wren
#

goto hahahaha.. nice

celest python
#

its accurate

#

which means GPT can convert any bytecode to C++ if its trained

celest python
#

void UWeirdConnectionTest_C::ExecuteUbergraph_WeirdConnectionTest(int32 EntryPoint)
this line means its trained on nativized BP files somehow.. but those files dont exist on web much

#

and BPVM itself is quite unique so no way its learned this from other VMs as a general concept of doing things

ocean wren
#

Well, its seen it somewhere

celest python
#

though since its doing exactly what previous nativization feature did, this one also wont work in a packaged game

#

but once you fine tune it, you can literally make it compile everything to C++ which is amazing

#

no more writing C++ in the future it seems ๐Ÿคฃ

ocean wren
#

Well, anything with structure can be learnt

celest python
ocean wren
#

and code is pretty structured

#

Maybe you didn't dig deep enough into the bowels of the internet? ๐Ÿ™‚

celest python
#

hopefully ๐Ÿ˜„ otherwise it took it from somewhere not publicly available

harsh storm
#

There are some areas of the internet not even Gandalf would venture.

ocean wren
#

Balrog code dumps ๐Ÿ™‚

uneven cloud
civic canyon
#

Is there a way to show the navigation path that the AI is currently taking? Tried looking for it, but I couldn't find anything

stiff gale
uneven cloud
civic canyon
#

Would be nice to like see a blue line or something that visualizes the path that the enemy is currently taking in the editor

uneven cloud
uneven cloud
balmy bane
potent iris
stiff gale
spiral bone
#

In my AI controller, if I add a Begin Play, the behaviour tree goes inactive. Anyone knows why?

celest python
sudden citrus
#

I think last I checked it was hopelessly buried in non-virtual methods

solid pivot
#

guys why does this happen? when other character has any AI Controller set, it makes them warp to the player then back to their actual location on Play...and this only happens if the character is above the ground (falling) on Play

ocean wren
#

You tell us..

#

WHY DOES THIS HAPPEN!

solid pivot
#

maybe due to the way Cached Pose works?

#

this is what causes the teleport

#

but why...is it because starting in air means there is no Cached Pose until the ground is touched? because Locomotion seems to be a ground based pose

weak quartz
#

For a new game, should PawnSensing be used instead of AI Perception?

ocean wren
#

No, pawnsensing is old and deprecated

harsh storm
#

Old and deprecated, but not removed.

ocean wren
#

Why would you ever remove old code? ๐Ÿ™‚

harsh storm
#

Cruft

harsh storm
ocean wren
#

Unbeliever!!!

#

Burn the heretic!

weak quartz
ocean wren
#

Another unbeliever!!

#

Begin the witchhunts!!!

weak quartz
#

I am relatively new to Unreal Engine, have two different methods that differ from each other, significantly at that.

#

While pawn sensing seems more "plug-and-play" per se, AIPerception has a gazillion more customizability and features.

ocean wren
#

I shall notify the witchfinder general that this place is infested.

weak quartz
harsh storm
ocean wren
#

To be fair, I've used both.. seems reasonable

#

zombies everywhere for sure

#

Its zombies all the way down

harsh storm
#

See. Now you're in agreeance.

ocean wren
#

I'll never admit it

#

You can't make me!

harsh storm
ocean wren
#

So does that mean I have to be creating a dumb zombie game now?

#

I wonder what I'd do for a zombie game to make it unique

#

Fashion zombies?

#

Friendly Zombies?

#

A game where you're trying to save the lives of zombies?

harsh storm
#

I have a few ideas for zombie games. Just no funds to chase all of 'em at once ๐Ÿ˜…

ocean wren
#

Zombie racers?

#

Zombie launching

#

Zombie rancher

solid pivot
ocean wren
#

True that

#

But then, your question was a bit like asking other people to do your debugging for you, so maybe rephrasing might have gotten a different response

#

And the zombie stuff is just an in-joke in the channel at this point, given how many people are doing zombie games it seems

solid pivot
#

hmmmm

ocean wren
#

And there's nobody else here anyway

misty wharf
#

Looking at the smart object querying... I wonder if there's some particular benefit to supplying your own predicate function to filter out smart objects as opposed to just fetching all of them, and then filtering the resulting array yourself ๐Ÿค”

#

Although as usual, the predicate functionality seems rather limited given the predicate only receives a FSmartObjectHandle as its parameter

solid pivot
#

AI does not get acceleration by default when moving with AI MoveTo etc

pale schooner
#

Theoretically, if I made a bool key in a Blackboard, can I then set it to True through a BP?

ocean wren
#

Yes, you might want to look at the various tutorials Epic have done on using BP with BT/BB

crisp coyote
#

Hello everyone! I'm working on AI for my first game, its a single player third person shooter set in WW1. I'm starting to work on writing the squad AI, and was wondering if I could discuss the implementation details here. I'm having trouble deciding how I want to implement squads. I've considered using a struct for each one, but I'm not sure that's the best route. I was also considering using a squad class that contains objective information, who fills what roll, and other important information. I was thinking that I could give each squad a UUID that would allow the AI commander to keep all of them separate, but I'm not really sure. Does anyone have thoughts on this? Thanks in advance, I appreciate your time!

final loom
#

Can I change a behavior tree at runtime?

#

Like the one used?

solid pivot
#

cant you try calling this again

final loom
#

I think that works! I saw that late, but thanks for trying

balmy bane
#

I think I'm dumb, I couldn't figure out ai switching from melee to ranged.

final loom
#

Nah. Things seem most obvious in retrospect.

sage lagoon
#

Is there an AI Blackboard modifyier that would allow modification to the MoveTo Target?
i have AI using MoveTo, but MoveTo requires an Actor to move toward, it does not move toward a location. This is an issue, since my AI runs to where my player WAS, or IS, but not to where the player WILL BE, so they are always behind the player, unless I give them a lot more speed than the player.

final loom
#

I think you can use a vector version of MoveTo

sage lagoon
final loom
#

Are you using BehaviorTrees?

sage lagoon
#

yes

final loom
#

Did you set a key as vector?

#

If you're using the same MoveTo node.

sage lagoon
#

hmmm.... mine only has SelfActor and AI_Target

#

I will have to go over some more turotials. I was hoping I could just add an offset

final loom
#

You could

#

Just add a key to your blackboard as type vector

#

And use that for the move to

#

Anything that you don't know how to do there?

sage lagoon
#

I will dig around. I don't want to both people needlessly

#

Thanks for pointing me in the right direction. ๐Ÿ™‚

#

I will have to regularly update this vector in my Task scrpit, correct?

final loom
#

Depends on how often the vector changes.

sage lagoon
#

Well.... its the player... so... constantly

final loom
#

Well. if it's the player you could just use their position, but you said you wanted an offset. Maybe on tick set the vector to the player plus the offset.

sage lagoon
#

It's a bull, so they need to charage at the player. Currently, it only works if they are directly in front of the player. If they get past a 45 degree angle, they attack behind the player.

#

this is why I need the offest, for them to attack where the player will be, not where they currently are.

#

After all the games made in UE, you'd think this would be a toggle, like the homing projectile

final loom
#

Well. UE5 isn't perfect. No engine is, I just think it's perhaps the best. It for example does lack a prone function for character movement

sage lagoon
#

true.
What's the phrase...?
"Programming is finding the correct wrench to bang the right screw into place."

final loom
#

Something like that.

#

It's definitely my favorite, replacing Unity a long while ago

sage lagoon
#

I was using Game Salad.. so.... you are far ahead of me.

final loom
#

Nah. I only recently am really getting back into game dev. Nearly got a first prototype for a smaller game in order!

sage lagoon
#

I think i will look up ai patrolling to find how people are using vectores. that should be a vectored location.

final loom
#

Each point they stop at should be a vector.

sage lagoon
#

I learned UE during lockdown. Didnt want to waste time with just movies and sleep.

#

500 hours of yt tutorials later...

final loom
#

Good for you. Finished any games yet?

sage lagoon
#

1.5

final loom
#

Nice.

sage lagoon
final loom
#

Oh nice. A steam release and all!

#

I've got 0. But I am working on a smaller one which there aren't really any technical barriers to it being impossible, so yeah.

sage lagoon
#

Well.. it was really for learning, but lots of people said i should finish with selling it. no reason to waste my time.