#gameplay-ai

1 messages ยท Page 156 of 1

zealous ginkgo
#

Not off the top of my head, but I'm going to make my own EQS task. Hopefully that way I'll be able to create a fouling condition

crimson galleon
#

i would think Force Success (read the tooltip) or a bb dec to check if it is or is not set

zealous ginkgo
#

Ive tried that

#

that being said I think Im on the right track. Ill keep ya updated

#

Ok I got it!

#

I made a custom EQS task which allows me to access a return value bool, and if there is a return value I pull the first location out of the array and set it. If the return value is false it skips setting the location vector while still fully executing. Then I just test for if the vector has been assigned or not

crude oar
#

Hey can someone help me with this blueprint for noise emitting and noise sensing on my AI?

#

For some reason this logic isn't working

#

This should make my AI walk towards the noise my player character is emitting but it's not

zealous ginkgo
#

Try plugging in location into destination

crude oar
#

Emitter logic

zealous ginkgo
#

It could also because your loudness is set to 0

crude oar
#

Oh wait I already tried that

#

And Changing loudness doesn't do anything

zealous ginkgo
#

ah ok

#

I'll admit I don't know too much about noise emitters, so I was just going off of my best guesses๐Ÿ˜…

crude oar
#

Yeah Idk I've tried a few different lines of logic but it doesn't seem to work

#

Like I can't get this stupid AI to move to any noise

#

I can make it see the player character and run towards him but not HEAR him

#

This is all the code I have for the AI

zealous ginkgo
#

From what I can find I think you might need to have a report noise event after the make noise one

#

within the player character

crude oar
#

Hmm I'll check

turbid stone
#

Hey folks, does anyone know of a sample project where character behavior is simulated even when far from the player(s) and out of render-range? Thinking through solutions for achieving consistent-enough behavior for both instatiated/rendered actors as well as those which are far away and only live as game state data

#

I guess the most consistent thing to do would be to implement AI behavior on the game state data and then just rely on Unreal for rendering? E.g. processing movement, interactions, collisions outside of Unreal and just asking Unreal to render the results for whatever's in render-range of a player

crimson galleon
#

iirc in oblivion, each npc had a schedule that specified where they would every in-game hour, pretty sure their location could be determined to a finer degree from that

turbid stone
#

These characters will be doing all sorts of stuff according to their AI, so a set schedule won't work for them, unfortunately

crimson galleon
#

Bummer

turbid stone
#

Thx though!

autumn hollow
turbid stone
#

Yeah I'm thinking along the same lines, was interested if there are any open source or free projects to learn from

#

There will be sticking points

crimson galleon
#

there might be some info from Death Stranding, since the AI walks/drives about the entire map

turbid stone
#

Nice ty! Ill search for what the devs have said

crimson galleon
#

eric johnson did a talk about the ai at gdc (2021 iirc) but only briefly mentioned that they do this, the talk was more about navigation solutions

#

fwiw, they would build navmesh around the ai in a large enough area, updating it regularly so they are not actually pathing the entire world

autumn hollow
#

Would this help? Was looking at it the other day, promises to be more performance than the default AI. I think it's something like 1-2k parallel actors where the engine starts struggling, but that's before any significant optimisations of course.

https://www.kythera.ai/

celest python
#

If anyone interested, a good read from Ubisoft ^

ocean wren
#

the basic idea is that you create your AI as full simulation. You capture the behaviour of that simulation as a statistical model (I'd do it as an ML model, but same same) and then use those stats as the backstory for a character when you need to instantiate them. So stuff like where have they just been, why are they going where they're going, things like that.

turbid stone
#

Thx everyone! These are some great suggestions and resources, I'm going to have a closer look this evening and in the morning (KST). For this project there is a tile-based world similar to that of animal crossing but much larger and with far more AI controlled actors. I'm hoping to offset the costs of simulating activity across the world by having common activities take a prolonged amount of time, which will slow the rate of agents needing to reevaluate their behavior. To that end, I think some form of alibi generation makes sense as @ocean wren suggested. For instance in the game simulation I could assign an actor to use a crafting area and then only if/when the player approaches go further and use some kind of alibi generation to figure out where, specifically, in the crafting area the actor is (e.g. by the forge) and which activity he's doing (waiting for iron to heat up)

#

Also hoping simple tile-based navigation will help to scale pathfinding around the world

keen crow
#

How can I find out dynamic behavior tree`s GameplayTag used in "Run Behavior Dynamic" node inside a task that is executed inside this dynamic tree?

#

So far I'm trying to just set the tag in BB right before executing the Run Behavior Dynamic but this seems kinda hacky

ocean wren
#

Apparently its in the UE5 codebase, so might be worth a look

turbid stone
ocean wren
#

There's a nice technical breakdown on youtube by the digital foundry guys.. if you look about halfway into that video they discuss it a bit

#

There's been a few GDC videos from AI sessions about this kind of thing too. Its a pretty common issue

ocean wren
#

There's an interactive version of these talks somewhere, I think on YouTube

#

i.e. the video

idle hazel
#

hello all. how do i set my behavior tree log level to verbose ? ive tried googling it and i dont get any helpful results.

meager imp
#

This is not exactly a question about AI but its close so:
To store the current score for the players I use the PlayerState... but to store the score for the AI I should use.... ????
AI State? that's not a thing.
AI Controller? That's a thing, but I just checked and that is not replicated to the clients ๐Ÿ˜ฆ

misty wharf
#

AI Controllers can have PlayerState as well

magic jasper
#

^

#

bWantsPlayerState = true in controller

meager imp
#

โค๏ธ โค๏ธ โค๏ธ

#

I love you all ๐Ÿฅบ

lyric flint
#

Question. Is it normal when using spawn ai from class for it to spawn the actor/blueprint pawn and a separate ai controller into the level, or am I doing something wrong?

magic jasper
#

Normal AFAIK

lyric flint
#

Okay. I figured it might be but thought for a second maybe it just took control of the player controller for the spawned actor

cursive stag
#

Iโ€™m in need of a way for my actors to navigate long distances. Currently thinking of a road network that the AI could run something like AStar on the network to find the best root. Is this the proper way to do this or can anyone think of something more appropriate?

ocean wren
#

Heirarchical A* (HPA*) is a useful start there.. there's a navgrid pathfinder in the navigation system codebase.. dunno if that's any use though.

#

depends a lot on your levels and whatnot though

celest python
#

Zoombapup, do you have any good ideas to prevent AI from tailing? Currently I'm adding offsets to MoveTo goals, some AI goes right side of the goal, some goes to left and when they near enough they move to the goal itself, this way they dont create a line when following the same goal. But this requires me to track the distance and cretate MoveTo requests over and over too frequently, which kills the CPU a little bit

celest python
#

No

#

+100 moving AIs

ocean wren
#

What we did, was we changed the goto position into a "goto somewhere close" position for each agent

#

actually having a single goto location is just not good anyway

#

then for pathing, we also did the same, rather than follow a path, they follow paths with offsets

celest python
#

I see, so more or less it's the same. Thanks for sharing

ocean wren
#

I mean you can get more complex too.. having proper predictive avoidance and the like

#

we used the detour controller and the circle around nav point thing

#

Having said that, we had a squad of soldiers and not a regular "staying on the path" movement

ocean wren
#

Its probably better to look for ways to make the AI have different goals anyway

celest python
#

I'm currently just adding an offset and using FindAsyncPath -- that works, but possibly there is an engine bug with FindAsyncPath which takes 0.5ms to dispatch the query to the game thread

#

If it would work, it was going to be an awesome system that only uses 0.2ms CPU time for 100 units

#

That bug tempted me to look for other possible solutions, but looks like adding offset is the only optimal one in my case

burnt bay
#

Anyone around willing to hop on voip and chat about about the AI tutorials I have been wokring on?

They do a good job of getting me some basic insight on here is how to do X

#

But I am having trouble understanding some things.

In code I would define a object as having 'needs' or properties I can manipulate via an interface.
Then based on the real time values of those properties, I would want to update a SM to set a desired behavior.
Then based on that behavior I would initiate tasks, move, eat, sleep, fight, etc.

#

I am having trouble seeing the building blocks with the tools given that let me accomplish this.

lyric flint
#

hi

proud peak
#

@lyric flint

ok. I was thinking not just on path finding and such, but when players have a team and they play as a team, how you to make BOTs behave as a team and adapt to the players in realtime?

The way Iโ€™d likely approach it is by treating each of the โ€˜botsโ€™ as โ€˜pawnsโ€™ on a chess board and have a โ€˜central brainโ€™ calling all the shots (rather than each bot having a mind of itโ€™s own). Depends on gameโ€™s setup.

#

Using chess as an example, there are many pieces but only a single player (for the team). That player is the one who strategizes and determines how best to use all their pieces (working together as a team) to achieve victory.

lyric flint
#

that's a great way to see it

proud peak
#

Then when you have a real player take charge of that team, but also want to keep the same AI functionality, you would just treat the playerโ€™s input as beneficial input for the AI. The AI will then play co-op with the player.

autumn hollow
#

NN seems overly complicated for AI to be honest.

Games are about the power fantasy, not believable opposition after all. To fill out MP lobbies maybe though

proud peak
autumn hollow
proud peak
#

I agree; NNs are not appropriate for game-character AI. Their intended use is more for pattern recognition (like audio and images) and content generation (like the daydreamer AI).

autumn hollow
#

RL networks interest me for game testing though, seems like a no brainer. Particularly for breaking games in weird ways.

proud peak
#

Yes, sorry; thatโ€™s what I meant. We do that as part of our โ€˜cry detectionโ€™ research.

autumn hollow
ocean wren
#

You CAN use NN's for characters. You just have to know what you're doing with them. They aren't some magical beast you can just apply and forget.

#

There's definitely room for experimentation in that regard still.

#

I'm using graph neural networks for generating behaviours in a simulation world for instance

#

Most of the time, people who try using neural networks fail because they don't fully understand the limitations and what they represent

#

i.e. they don't have a good grasp of the training data etc.

#

And honestly there's sometimes a lot better ways to do things

#

BUT, don't dismiss neural networks overall as outside of the scope of games.

proud peak
ocean wren
#

I didn't mean you explicitly, I meant people thinking about using NN's for games

proud peak
#

Iโ€™ve seen some pretty creative โ€˜gameโ€™ projects using NNs. ๐Ÿ˜‰

ocean wren
#

I've had a bunch of students try it and fail, because they really didn't understand them properly. I mean you can kind of intuitively think of them and the maths as building blocks are simple enough, but the practice of using them is more challenging if you haven't spent time with them

#

Same with evolutionary algorithms too, had a bunch of students try those and fail too ๐Ÿ™‚

#

Not that failing is bad, you can learn a lot from it

magic jasper
#

As I've not been paying attention - anybody know whether UE5 fleshed out the alternative behaviour systems a little more?

#

IIRC there was a very barebones hierarchical BT/FSM implementation with no tooling

#

And more on that - any blackboard improvements, like dynamic variables, arrays, structs, a proper "global" blackboard system etc?

ocean wren
#

I've not been paying attention either

magic jasper
#

Kills me that the engine has a fantastic toolset for creating state machines but none of it is provided in an AI-oriented setting.

ocean wren
#

I don't recall seeing anything about heirarchical BT/FSM (BT's are already heirarchical anyway). There's the HTN planner, but I don't remember anything else

magic jasper
#

Ah that was it.. HTN planner

ocean wren
#

Well, there's a marketplace plugin you can use for using the node graph as state machine

#

and honestly, making your own is pretty trivial

magic jasper
#

Oh sure, just don't want to if I don't have to. The Marketplace "seal of quality" isn't all that high either..

ocean wren
#

But yeah, would be great to see more usability focussed AI tools

#

Well, FSM's are so basic, I can't imagine you could do them poorly ๐Ÿ™‚

magic jasper
#

It's more the integration with the rest of the tooling really, the engine already does 99% of it in the form of the anim graph FSM's

#

Just irks me that none of that stuff has an AI-specific implementation

ocean wren
#

Well, yeah, which is why I mentioned the marketplace thing, it basically uses that

#

exposes the anim state machine setup for general purpose state machine use

magic jasper
#

Ideally I want HFSM at the top level, with it's own blackboard, and those individual FSM states despatching tasks/BT's with their own blackboards.

ocean wren
#

state machines aren't only for AI

magic jasper
#

Using HSFM for top-level decision making and BT's for the small bite-size tasks

#

Working rather well for me so far without creating that horrific bloat BT's tend to accumulate

ocean wren
#

Ideally, we should have a variety of different tools. Part of the problem with the current BT implementation is that its just not very user friendly

#

BT's are very capable of doing what everyone needs for the most part. But they're poorly documented and quite quirky as implemented for some weird reason

#

like for instance, the blackboard SHOULD be able to have shared values accessible across agents, and should have arrays and the like

#

but it was implemented by a junior programmer before the blueprint system was fully evolved.. so has this weird setup and bunch of restrictions that makes it less useful

magic jasper
#

Yeah, bit odd that it still doesn't. They were originally looking at that as far back as 4.8. Also no reason they can't support structs really.

#

Guess it's a legacy support thing.. UE5 would have been the perfect time to dump all that ๐Ÿ˜ข

ocean wren
#

Equally, the BT implementation has usability issues because the langage is kind of wonky in places and hasn't been used by enough people at Epic to cause them enough pain to want to change it ๐Ÿ™‚

#

I suspect that more AI stuff will be coming. Mikko Mononen (guy who did the recast and detour libs) is working at Epic now. Just did the crowd LOD stuff for that matrix demo, so I guess he's at least active doing tooling for AI.

magic jasper
#

yeah, fingers crossed

#

They've been rather thinly spread for a few years

ocean wren
#

I mean, I don't mind because it means I've got a bit more commercial value in that I can do those things myself ๐Ÿ™‚

#

I don't wait for others to make tools for me anymore. I learnt that lesson back when Torque3D was a thing ๐Ÿ™‚

magic jasper
#

preaching to the choir ๐Ÿ˜„

#

UE5's release would just perfectly tie up with some things I'm working on, was hoping for more goodies

ocean wren
#

Guess its coming early-mid next year

celest python
magic jasper
#

Well well well ๐Ÿ˜„

celest python
#

If you haven't see, we also have a MassGameplay plugin now

#

ECS & crowd control

magic jasper
#

I've seen the Mass stuff, not hugely applicable to me but it's good that they're doing it.

misty wharf
#

That tweet is all the documentation you're going to get

#

:P

celest python
#

Haha ๐Ÿ˜„

ocean wren
#

Is that an Epic thing? or an external thing?

autumn hollow
ocean wren
#

Ah well. I mean it doesn't look the most user friendly.. but at least its something

lyric flint
#

AI in games such as football must be a nightmare

ocean wren
#

Why?

lyric flint
#

I'm thinking on the bizarre behaviours seen in FIFA

#

animation in itself for games such as FIFA must be a nightmare

ocean wren
#

Animation for sure is a challenge.. have a look at motion warping which is a thing they do a lot

celest python
#

Of course, it's not easy

#

It requires some technical profession, but most of the engines today can provide required tools (Behavior Trees, Finite State Machines, Utility AI systems) that helps developers a lot

#

Almost fancy as your level design blog ^^ ๐Ÿ˜›

lyric flint
#

when one think about human behavior, a lot of it includes emotions, cognition, percetion, etc. A computer on the other hand doesn't have sensory input nor feels anything.

ocean wren
#

you can simulate them though

#

not that we have a good model for them yet ๐Ÿ™‚

celest python
#

Many labs developing NN/ML systems also research about human behaviors and neurons, zoombapup should know better than me of course

ocean wren
#

yeah, plenty of work in those directions.. geoff hinton has been going at that for a while. And there's a whole field of neuroaesthetics too

celest python
ocean wren
#

I've used some of the more common emotion models in my own work.. but never felt like they were that good

#

my favourite research pychologist is Klaus Scherer, his description of the complexity of emotion feels more convincing to me.

celest python
#

Hmm, I'm deeply interested in psychology actually, even more than UE4. Thanks for letting me know about him

#

I'll take a look

ocean wren
#

If you're interested, check out Beatrice de Gelders work too.. she's done a lot of neuroimaging studies. That stuff is fascinating.

celest python
#

Interesting, you're full of gems haha ๐Ÿ˜„

ocean wren
#

And I recommend looking at the classic works of hieder and simmel (on the ability to see geometric motion as behaviour) and Gunnar Johhanssons work on perception of biological motion, both of those are pretty old.. good videos on youtube

#

Those two works, along with some reading I did about acting process, convinces me that we don't need to actually feel emotion to express it in digital actors

#

We just need "the illusion of life" as the disney book says ๐Ÿ™‚

#

Book by Frank Thomas and Ollie Johnson on the history of disney animation studios is an interesting read (although a bit big)

celest python
ocean wren
#

The classic psychology stuff for games, is work by Paul Eckman and his co-author Wallace Friesen (sp?)

#

About expressing emotions through facial movements

celest python
#

I think I heard about Eckman before

ocean wren
#

everyone quotes (or rather misquotes) Eckmans FACS facial model and universal expression of emotion

lyric flint
#

for instance. Players can rage, cheat, laugth, etc.

celest python
#

From what I can see, your general psychology research is based your development on artifical intelligence, especially the ones related with motion

#

I guess it's because of you're specially working on AI's that has vision?

ocean wren
#

Well, yeah, I'm trying to create that illusion of life thing

lyric flint
#

how does a BOT aim? the cpu isn't processing frmaes of image and detecting where to aim, is it?

ocean wren
#

This is in part, because I reviewed the literature on acting and it seems that actors use techniques most of the time and not emotions to drive thier performance.. so we can basically learn techniques

celest python
ocean wren
#

And given I get all teary eyed watching animations, that clearly is a technique that can be learnt and if it can be learnt, we can teach a model to do it

celest python
#

At a high-level thought, I'm a believer that human brain is a "model" in the universe that can teach itself to learn, and possibly what humans can procude is the almost same by AI

lyric flint
#

placing path nodes one by one is so boring

celest python
lyric flint
#

nad having to manually setup lifts, jump spots with tags as in ue1 is very boring. I wish certain things could be automatic, such as bot just knowing where to jump and how to use a lift

celest python
ocean wren
#

Yeah, I care less about that and more about the aesthetic perception of experience

#

Not for a while.. I'm just about to publish a load of new work though this year

#

I took some time away when I changed to my new University and reset my thinking a bit

#

There should be some videos of my talks at GDC online somewhere I suppose, both those are older now

celest python
#

Really? Still would like to watch actually, if you remember the titles/topic

ocean wren
#

mostly stuff about emotion and social simulation, believability etc

#

can't remember the exact talk names.. they were usually part of the AI Summit

celest python
#

Alright, will give it a look

ocean wren
#

going to be doing some collab work on alien embodiment, love and some fun stuff like that with colleagues

#

and doing my own work in vision based demonstration learning for acting behaviour and cinematography

#

i.e. teaching an AI to "act" by having it watch films (not physically watch, but use the films as training data)

celest python
#

I just imagined of some AI learning Friends' Joey's acting when you say like that ๐Ÿ˜„

ocean wren
#

why not? ๐Ÿ™‚

#

how YOU doin?

celest python
#

๐Ÿ˜‚

#

Great

ocean wren
#

Dr Drake Ramore ๐Ÿ™‚

lyric flint
#

I wonder how much cost can be cut down from development if you apply AI to solve repetitive processes, such as scaling of images, placing certain objects in the game world, producing multiple variations of characters, so on

celest python
#

What would be the 'input' to make AI act btw?

#

'Why' AI will start to act? On which scenario

ocean wren
#

usually it'll be a co-creative tool, so a human will setup a scenario by choosing some actors or an outline scene description.. the AI will then fill it in as if recommending scenes

#

so imagine it gets a text scene description from a scriptwriter, it'll use that (by extracting entity descriptions etc) and generate the cinematic from it

#

My aim right now, is to automatically generate cutscene type content, including the level layout and the cinematography and the actors positions and overall motions

#

based on some work on cinematic description language called PROSE by Inria labs

#

Rene Ronfard

celest python
ocean wren
#

using work by University of Toronto (Sanja Fiedlers lab) as a basis in some ways.. learning a graph probability

celest python
#

This looks like a serious project rather than a hobby/learning project

#

Or you're just working so professional, not sure ๐Ÿ˜…

tired lagoon
#

I need help!!!!!

ocean wren
#

AI for content creation is a massive issue right now, which is why I'm doing it

#

Well, I teach this stuff for a living, so its kind of my job ๐Ÿ™‚

#

and its my research interest, so why not ๐Ÿ™‚

#

WE ALL NEED HELP

celest python
#

But the idea itself is very promising and well developed

#

It looks like a project that OpenAI will work on soon, at least how it sounds like

tired lagoon
#

I'm trying to do the ai blueprint exmaple from the docs in c++. The move to node doesn't work and I cant find it in the c++ api documentation.

lyric flint
#

content for games like UT was all low res, low detail. But now it's fine grained with a lot of sub steps, little details and the more realism you add in, the easier it becomes for a tiny thing to catch your attention

ocean wren
#

Have a look for Embark Studio's presentation at Nexon's conference a few months back.. Embark are a very interesting studio in the PCG/ML field

#

they definitely get it

celest python
#

I was thinking of a level-designer AI lately since I suck at it ๐Ÿ˜„

ocean wren
#

and they just announced their UE5 game, Ark Raiders yesterday? so worth a look

ocean wren
#

yeah, one of my use cases this year is automated level design

#

as recommendation system.. I'll show a video after xmas

celest python
#

This years last quarter was full of researches about game and level design for me, and it's really an open area for an AI.. And it can be actually really helpful to the developers in any means

ocean wren
#

but basically, its kind of leveraging advances in computer vision and scene understanding and just me wrapping that in Unreal Engine pcg interfaces ๐Ÿ™‚

celest python
ocean wren
#

yeah, my version basically gets the level designer to drag an image into a window in unreal engine and then it generates the scene in the image

celest python
#

Wait.. you literally made it already?

ocean wren
#

adds it to sequencer etc..

#

working on finishing parts of it up over the xmas break, but yeah

celest python
#

o_O

ocean wren
#

its part of the automated cinematography thing, I wanted to automate the whole scene

#

there's a load of work in the computer vision literature on scene understanding and generating scene graphs automatically.. I didn't really do anything other than apply some of the latest work in that area and wrap it in Unreal-ness

tired lagoon
ocean wren
#

did you use the visual debugger to see if the path is generated?

celest python
celest python
#

For example, DOOM has a unique and consistent level design

#

AI could learn it, and generate blockout levels

tired lagoon
#

Will do! Also this Ai talk is pretty cool.

ocean wren
#

Yeah, that's a thing too.. I'm just generating the blockout params really.. I figured for non-expert LD's its easier to say "like this" and show it a picture of what you want and it to find the layout, textures, lighting params itself

#

I've learnt a lot from reading the literature on robotics for things like demonstration learning

#

because if you're training a robot, you don't want to have to repeat a motion like a million times to train it, you want to demo it a few times and have it work it out

#

I'm just training mine from films rather than moving a physical robot arm

celest python
#

I guess thats a general rule of AI development

ocean wren
#

Well, theirs is using more reinforcement learning, so they have it play millions of times

#

and learn a fitness function (quite complex one)

#

demonstration learning is more about learning from a few examples and being able to generalize them to new contexts

#

imagine a robot having to pick something up.. you don't want to teach it to pick up every new type of thing, you want to teach it to pick things up generally

celest python
#

And will it be able to figure pick up 'specific' things over the time or will you have to modify the way how it's learning?

ocean wren
#

Well, it learns to pick things up in general, but might struggle with objects that fall outside of its general bounds.. so say a long thin thing might be difficult if you teach it to pick up cups or something

#

the point is to learn an "invariant" picking up action, i.e. something that doesn't care what pose or what type of object, its just how we pick stuff up

tired lagoon
#

Update! Thank you to zoom and const, I checked it. Turns out my ai was 1 ue4 unit out of the Navmesh volume. Lmao

ocean wren
#

yeah, I'm sure we've all been there ๐Ÿ™‚

#

I know I have ๐Ÿ™‚

tired lagoon
#

I didn't know you could press P to see the path

celest python
ocean wren
#

also, make sure you check the logs.. failures usually are described there

celest python
#

It's like, it's really made for actor AI idea ๐Ÿ˜„

tired lagoon
celest python
#

Thanks for the talk @ocean wren , it was really educative for me

#

Need to leave right now, have a good evening

ocean wren
#

yeah, have a good one

#

talk to you later

celest python
#

Also cant wait to see your level designer AI lol, I'm really hyped to it ๐Ÿ˜„

ocean wren
#

sometime early next year god willing (and marking time allowing)

past cedar
#

Iโ€™m making Boids (a sheep flock) that essentially calculate separation, cohesion, and alignment to move like a flock. I spawn them in with a manager class I made that spawns them randomly within about 600 squared units. All in C++. Every time I start the game their behavior is randomly either Boids algorithm, or running off the map in a big group. I have wasted like 20 hours of my life trying to figure this out, someone please save me

ocean wren
#

Add some debug visualization, always draw the steering forces you calculate so you can see if the maths are wrong somewhere

ocean wren
#

And its likely your maths are wrong somewhere ๐Ÿ™‚

past cedar
#

Thanks Iโ€™ll definitely do that later when Iโ€™m working on it! I wondered if there might be something with Unrealโ€™s ACharacter class and AddMovementInput function that leads to unreliable behavior? Iโ€™m using delta time correctly I think

mossy nexus
celest python
ocean wren
#

Also, don't use ACharacter for boids ๐Ÿ™‚ not a good idea. Use APawn maybe, but not ACharacter. Personally I'd use niagara particles for boids style stuff.

fair zealotBOT
#

:no_entry_sign: Pythagore#6049 was banned.

ocean wren
#

Lots of spammers recently

#

not a good sign

mossy nexus
#

it's a sign of the end times

misty gale
#

countered by AI powered deep learning bots

mossy nexus
#

it's a bot eat bot world

fair zealotBOT
#

:no_entry_sign: Draxis๐Ÿ”‹#6652 was banned.

mossy nexus
#

maybe the bots willfully seek out the #gameplay-ai channel to meet fellow bots ๐Ÿค”

simple crest
#

Extra nitro generosity for Christmas

delicate gazelle
#

Hey there, can anybody help me making a structure in a character blueprint using pawnsensing? I'm at the moment making the see pawn function to chase the player if seen and after a few seconds of loosing sight, it will search a couple of loops, then go back the the patrol points. I haven't managed to figure out how to stop the AI from chasing after looking sight of the player so I ask does anybody have a way for that?

#

I'm uncertain if pawnsensing is the best solution for AI cause I already can see that the hearing sense is not able to move very much cause I plan that the AI won't hear you very well if your straight behind though if you anywhere besides it even the back, it will sense you.

#

I'm aware of Blackboard and Behavior Tree but I'm just not very good with it so I'm relying on event graphs and AI controllers instead.

mossy nexus
#

I use a custom perception system. I don't know if sensing is the old system or the new one. I'd handle most of this behavior in a behavior tree personally

delicate gazelle
# mossy nexus I use a custom perception system. I don't know if sensing is the old system or t...

Well, I've been trying to use Behavior Tree but I'm just not good with it. To be honest, I've been doing my project for over a year and now I'm starting to think I'm not getting good at anything. Sorry, I'm always getting lost in this stuff. I did look into AI Perceptions but even that, I get confused with. Do you have any solutions or is there any way I can get clear answers without steep prices?

mossy nexus
#

if you're a single person trying to get a project working you can't reasonably expect to know all sides of development

#

at least not without many years of experience

#

behavior trees are a bit difficult to understand at first

#

but once you get them, it's really easy to work with

#

it's basically a priority system

delicate gazelle
#

Anyway, I'll just leave it to that, thanks anyway.

mossy nexus
delicate gazelle
mossy nexus
delicate gazelle
mossy nexus
delicate gazelle
# mossy nexus no reason to cry over this IMO. the best thing you can do for yourself if you're...

I am feeling down at your last text though I'm not crying. Let me quickly tell you my plan. I'm fully aware that I can't do this myself, I once watched a video called "Within A Minute". This video showed the amount of people and resources they needed for a single scene of a movie. My plan was to first create the main bases of the gameplay. I do later on plan to replace with newly made models but start with just base assets. Once all the main gameplay bases are setup in good enough results, I plan to post a video of the results and hope to get some convinced help cause if your going to make a project, you need to show others you mean it and that's all. I'll leave it to their we are getting off topic in this Discord Channel. Thank you for at least listening.

mossy nexus
#

the plan is good. just don't let small failures get the better of you.

delicate gazelle
celest python
#

By the way, putting the conversation above to a side, Ryan Laley's tutorials are really not something people should watch. I have too many blueprinter friends asking me question about his tutorials and from what I can see he always follow the worst practices

ocean wren
#

Are those the ones where everything is basically a state machine built into a behaviour tree? if so, fully agree, those are VERY BAD ๐Ÿ™‚

#

Or at least not very helpful for understanding the behaviour tree concept

celest python
#

Though it's not the first time you mention you dislike this idea ๐Ÿ˜…

ocean wren
#

I remember watching some of those tutorials and despairing ๐Ÿ™‚

#

Why not just use a HFSM if you're going to do that ๐Ÿ™‚

celest python
#

It's actually a HFSM implemented into a BTTask that signals back to BT when it should be cancelled

ocean wren
#

ugh ๐Ÿ™‚

celest python
#

I wanted to implement this for complex melee attack behaviors for AIs

#

It was my veeery very early days

#

What do you mean by "end at attacking"?

#

Stopped the BT Execution*?

#

Hmm yeah, a smarter me would do the same

#

But I took a lot of time for that in the beginning and it works fine for now

ocean wren
#

Yeah, I do a similar seperation, I usually have BT make the decision and another layer handle the execution/monitoring/resource locking etc

celest python
#

I like to sequence actions in a single BTTask

#

Like having a generic "Attack player" BTTask and it covers "getting into cover" and "shooting" part etc. instead of having "take cover" "shoot" type of BTTasks

#

Shooting part might be in Character class directly though, yeah - same BTTask would only signal to Character

ocean wren
#

I was on a panel at one of the Nucl.ai confs and we had a panel of like 5 different guys who had worked on BT's and EVERYONE had a different approach in terms of task granularity etc ๐Ÿ™‚

#

some had BT's with like hundreds of nodes, others had like 10 high level nodes

celest python
#

My BT adventure started with analyzing Alien Isolation's source code and I took most of time approaches from that

#

Though it's kinda actually doing what you're opposed to ๐Ÿ˜… Stating the BTs

ocean wren
#

Whats that Ubisoft Massive shooter mmo based in NY? fook, my memory is shit

celest python
#

Division 2

#

They had gigantic amount of nodes afaik, right?

ocean wren
#

yeah, look at the divisions BT's and they're weird.. huge numbers of nodes with a right to left reading order and flow ๐Ÿ™‚

#

The guy literally rolled his eyes as he mentioned the right to left ordering ๐Ÿ™‚

#

I felt his pain ๐Ÿ™‚

celest python
#

Haha ๐Ÿ˜„ But isn't right to left is industry standart?

ocean wren
#

If you're arab maybe?

#

and maybe japanese? but thats top-bottom right left isnt it?

#

Imagine like a reverse blueprints where it flows from right to left, but that's the BT ๐Ÿ™‚

celest python
#

ohhh

#

๐Ÿคฆ

#

I confused

#

Left-right was industry standart

ocean wren
#

It was basically some early decision they made and nobody could later defend it ๐Ÿ™‚

celest python
#

Who could defend this ๐Ÿ˜…

ocean wren
#

So everyone was at this conf saying WTF??? and they were all "yeah, we know <shrug>" ๐Ÿ™‚

#

THAT IS NOT DEBUGGABLE ๐Ÿ™‚

#

To be fair, they don't have the tree fully expanded like that all the time, thats with every subtree node expanded

celest python
#

I understand why they have a "debugger history" now though

#

They mentioned this in GDC

#

I was very jealous of it

#

Their BTs can store timestamps of executions and visualise it back when you record it, similar to Visual logger but it's on BT directly

#

With this amount of nodes, it's a must

ocean wren
#

Yeah, you could retrofit it into UE, but honestly I'd rewrite the whole goddam thing

lyric flint
#

hi

#

i have a quick question wondering if anyone could help me with it

celest python
#

Sure, ask away

lyric flint
#

so im have 2 problems with a game im trying to makle still really new to unreal

#

1 is a win conditoon after a player picks up items and stands in a certain spot

#

the other is allowing the player to grow everytime they press the letter e on the keyboard

ocean wren
#

That's not really AI is it? you probably want #blueprint or #cpp depending on your language of choice

lyric flint
#

oh my bad still new

celest python
ocean wren
#

No problem.. this channel is for AI discussion

mossy nexus
#

though to be fair, I call my composite nodes "states"

#

some, not all

celest python
ocean wren
#

CE: they'd literally add "state" subtrees, so each subtree would basically be equivalent of a state

lyric flint
#

Also whats cpp ?

ocean wren
#

But then they'd sort of munge around the idea of enter-exit for the states and transitions etc.. all totally silly stuff

celest python
lyric flint
#

how do i go to that ?

mossy nexus
ocean wren
#

its in the left hand menu under programming #cpp

celest python
#

They also had a "SetState" node

#

Which routes back BT execution to that state*

#

ChasePlayer
RunAway
SearchRoom

they had states like this, Each one was generic and branched

mossy nexus
#

well I mean what are decorator observers if not state transitions?

ocean wren
#

preconditions

#

they're preconditions to control the flow of priority, the point of BT's was to get away from explicit transitions, because those are a pain in the arse for any large scale behaviour

mossy nexus
#

yeah okay if you mean in the sense of states aren't as rigid as in a FSM

rustic lark
#

I try to make a aiattacking but the animation dont work and it is the good skeleton

ocean wren
#

The point was, that as we all got pissed off with handling state transitions, we figured that BT's would help, then everyone went and made exactly the same problems in BT ๐Ÿ™‚

mossy nexus
#

I think a lot of it has got to do with ease of use. I kind of get what you're saying about the granularity of states, and in that sense yeah BTs focus on behaviors that can be individual modules that can create a composite state, but it's still going by the same concept as a FSM

#

just that a state can be created dynamically by a composite set of modular behaviors

ocean wren
#

But it isn't really.. what you're missing is that BT's are about priority and preconditions gating that priority, not about "state" and "transition" but about flow of execution

#

I get that people like to think in states.. but that's a bad idea

#

I think part of the issue is that the BT in UE is kind of a weird one.. it doesn't do parallel's properly for instance

#

and its event based nature doesn't help

mossy nexus
#

sure, but in the end a state transition and an observer triggering might as well be the same concept. whatever you want to call it I think matters less

ocean wren
#

conceptually, you'd normally traverse the tree anew every update

celest python
mossy nexus
#

decorators are branches

celest python
#

In Alien Isolation it's kinda different though, it's just allowing two outputs

ocean wren
#

they're conditionals that exclude higher priority execution, so yes they're branches

#

in a classical BT, you can have multiple tasks running at once, just run them under a parallel and then all child tasks run

#

not that weird ass half-parallel thing in the UE implementation

mossy nexus
#

that's fair, perhaps that's where the true strength of BTs lie

ocean wren
#

The main reason for BT usage, is to have an easier way to just define priority and preconditions on flow of execution

#

none of that really has to suggest state at all

mossy nexus
#

depends on how you define a state

#

is a behavior a state?

ocean wren
#

do you enter a "I'm making a cup of tea" state? or do you just decide your priority right now is to have a cup of tea?

#

I need to be in the state of teafulness? ๐Ÿ™‚

mossy nexus
#

I don't enter any states, I'm not an Indian god. but the outcome of the decision to make tea, if preconditions are fulfilled, would be to make a cup of a tea

ocean wren
#

or just "I'm currently idle and I have the need for a cuppa, so my priority for making a cuppa exceeds my priority for sitting on the sofa"

mossy nexus
#

I think it's just semantics

#

sure but you could have that set in states as well is my point

ocean wren
#

I think its IMPORTANT semantics

#

because states drive you to think statefully

#

and priorities and conditions lead you to think differently

#

at least, that's what I've observed from lots of people having issues with BT's

mossy nexus
#

I think the issue is that there is no alternative to thinking statefully

ocean wren
#

Hence my dismay at some of the BT tutorials having basically state machines in

mossy nexus
#

and that's what drives people towards states

#

because it's hard to define otherwise

ocean wren
#

of course there is, you can think of priority and condition and not about state as some discreet thing

mossy nexus
#

but the point is people need that discrete thing to understand how their system works

ocean wren
#

for instance, I can think of priority and conditions where none of the decisions are discreet at all..

mossy nexus
#

we don't think in states because it's fun, we think in states because it's easy

ocean wren
#

But its also what holds a lot of people back from thinking about it differently

mossy nexus
#

that's what I am saying

ocean wren
#

I guess maybe if everyone had tried utility or ML approaches, they'd be a bit more malleable

mossy nexus
#

you want people to think about things in the correct way make it easy for them

ocean wren
#

I can't ๐Ÿ™‚ its not easy ๐Ÿ™‚

mossy nexus
#

states it is then

#

๐Ÿ˜‰

ocean wren
#

bad AI it is then ๐Ÿ™‚

mossy nexus
#

well yeah

#

I do think if you could summarize priority and preconditions into a singularly defined word you'd probably be halfway there

#

it's the structure that is missing

ocean wren
#

I guess you just have to battle through the state machine hell to get there ๐Ÿ™‚

mossy nexus
#

I was trying to think of other types of "formless" structures

#

and remember the time I was learning functional languages for the first time

#

or even to some extent HLSL

#

perhaps that is really more of an entry point for people to learn about BTs

ocean wren
#

I dunno, maybe you need to reach the hell point to really get it ๐Ÿ˜‰

#

Or at least try other architectures.. utility/rule based/ML etc

#

And honestly, most of what people want are so dumb that state machines (i.e. proper simple FSM) would do most of the job anyway

rustic lark
#

I try to make a ai attack but it dont work

ocean wren
#

fix it?

rustic lark
#

i dont no how

mossy nexus
#

neither do we

simple crest
#

just erase n and t and now it do work

mossy nexus
#

advice so good it could be wrapped in a present and put under a tree

cold trout
#

Utility based decision making within a state, seems to work best for me

#

Be in attack mode, score an attack method etc

#

I think behaviour states are very popular for game ai also because it reflects well the players own 'state' of gameplay

mossy nexus
#

what if something takes you away from attack mode though

cold trout
#

I think players play like state machines

#

Then they do something else

#

How do I transition?

simple crest
#

I'm kind of swaying towards "utility AI with overarching state" myself but only really to categorize utility decisions into something like high/med/low priority ... which is basically attack/aware/idle mode in a common kill things game

mossy nexus
#

I got that but instead of attack I got alert which then breaks down into aggressive mode and neutral alert mode

#

not everyone who finds you is going to have beef

#

... at least not immediately

#

#NoBeefAI #VeganAI

rustic lark
mossy nexus
#

so that it can be solved

celest python
rustic lark
dark briar
pine steeple
#

@dark briar this can happen if the key is not set initially

#

and changes

#

i find i have to set clear set

#

just once

#

its very odd

dark briar
#

oh dang, thanks. i'll give it a try

grizzled bolt
sage flint
#

Hi! Is there a way to prevent navmesh from being created on top of some meshes? Or eliminate patches that are below certain area?
The problem I have is that I have a bunch of flat rocks, that are a bit above the ground, and they create a small patch, unreachable from other locations, and my spawning code relies on navmesh and sometimes spawns stuff on these patches, which I want to avoid without manually setting modifiers volumes everywhere

ocean wren
#

I'm not sure about that, you're going to be battling against a hundred other "tutorials" using them as state machines at this point

#

NavArea_Null should do it

sage flint
#

Yeah, it's just too much small stuff to fix with volumes, trying to find a less manual way to do that

ocean wren
#

Add the navarea to your blueprint classes?

#

Set the objects to be obstacles?

#

there's a checkbox on the actor to ignore it for navmesh if I recall

#

or treat it as an obstacle

#

I just added a few large navmodifier volumes and set them to null on things like rooftops that weren't connected by ladders etc.

#

By the looks of it, there's a new navigation system coming in UE5

sage flint
#

It's just static meshes on the map, can try to convert all of them to actors and add volumes, but don't think it's a good way
Is there a way to set them to be an obstacle without volumes? That would solve the problem
Unfortunately, disabling Can Ever Affect Navigation won't help here because then navmesh will be generated under the mesh, which is not good
Yeah, can't really do that because it's a lot of small stuff, can't just place few large volumes to cover them all
Is it? I'm actually working with UE5 rn, looks the same so far but I could've missed it

ocean wren
#

They didn't release it yet, just saw some shots from the latest Matrix experience thingy

sage flint
#

Ooooh, I see, I see

ocean wren
#

There's a checkbox for navigation to make actors obstacles isn't there? haven't got the editor up and running right now

#

have a look on your mesh actors and just see if there's a navobstacle checkbox?

sage flint
#

That's all I can see, none of these helps

#

Or you mean recast actor?

ocean wren
#

no, I mean a checkbox on the actor itself

#

might not start with nav though.. might be proxy or some such, I can't remember until I'm in the editor

sage flint
#

Can't find anything like this, sorry

ocean wren
#

I'll take a look later

sage flint
#

Thank you!

smoky summit
#

Has anyone done static navmesh sometimes and dynamic others? I would like to turn on dynamic navmesh at runtime

#

And I don't really even need all of dynamic navmesh's functionality. I just need to update the navmesh once after spawning a bunch of meshes at runtime and then never again

pine steeple
#

@smoky summit this is likely a question for UDN tbh, not sure many people here would have done that

smoky summit
#

yeah I was thinking the same

#

Reading up on navigation invokers right now too

crimson galleon
ocean wren
#

thats what they did on the large scale terrain boy with his kite example

#

the navmesh invokers used with the deer etc.

smoky summit
#

right, yeah I see that. I don't have a large open world type environment

ocean wren
#

I'm sure there's a method on the navgenerator you could use to invoke rebuilding

smoky summit
#

yeah, digging into it now shouldn't be too hard. Looking at UNavigationSystemV1::Build and then just need to modify some engine code to allow dynamic rebuilding even when I use static everywhere else

polar crown
#

can anyone shed light on why my enemy AI has stopped working. I had them all set up and following and attacking my character, i built more of my level. popped them back in and they just stand there.... I have rebuilt and navmesh and also all the areas around the AI are green. Any ideas?

crimson galleon
polar crown
#

what is the recast? is that the navmeshboundsvolume thing? sorry im still new to all the terminology

#

ah i found it, let me try

crimson galleon
#

yep

polar crown
#

it worked thankyou @crimson galleon been scratching my head for a while on that one

teal gull
#

UE4 is performing this magic trick and I need it too stop

#

Any ideas? ๐Ÿ˜…

#

(Offset navigation when I play)

#

Nvm

#

For anyone else having the problem:

"It's a bug in Unreal. Delete the RecastNavMesh in your level and rebuild the navigation."

crimson galleon
teal gull
#

Ah thats good to know

#

Only started using it today

crimson galleon
#

yeah recast is like a cache of the nav gen, it sort of updates but yeah, not always!

delicate gazelle
#

Hey there, I'd like to ask a question on how to change third person camera to another camera? The function is were an AI character moves to the player and if successful, it first does a strike animation I got my hands on the then the camera focuses on the AI. A transition does happen in it but my question is how to change cameras. I've added a camera to the AI but I can't seem to get it to react. I've structured it a couple of times but no success so can I ask anybody who'd have a solution?

#

Sorry, I wasn't sure if it was an AI question. I've used SetViewTargetWithBlend. I actually just got a reaction out of it but I was not the one I wanted. Instead, it just moved in the center of the player instead of the AI.

#

I'm not sure if that really explains what possible structure I can use. But, I'll try to see if the Event Dispatchers can sort out a trigger though that's just a guess.

#

Sorry, didn't mean to put it in a private text. I found something out just now. Sorry for the troubles.

uneven tulip
#

I'm pretty new to AI related stuff but how would I make an AI that goes to a specific actor

ocean wren
#

What have you tried?

#

Have you looked at any tutorials? there are a lot for this very issue

#

Check out the Unreal Engine youtube channel

keen crow
#

is there a way to set BB's key lifetime? Like some remembered location becomes invalid over time?

ocean wren
#

No

#

You could store a time when the BB key is set into another key and have a service that counts the second key down and expires the first key when the second reaches 0

#

Although it'd probably be easier doing it in the blueprint

keen crow
#

yeah I'm handling it in code now I was just hoping to utilize BBs and BTs as much as possible

digital steeple
#

I would like to have random scoring for all items of an EQS test passing a line trace. Appearently if I set the scoring factor to a random number this will only get called once and the value gets used for all items. Any idea how I could achieve that?

#

I know how I can do this with a float test, but I would like to have a bool test scoring random numbers instead of 0 and 1

misty wharf
#

I guess you could create a custom test that scores things at random, although this could easily be achieved by getting a random value from the results list after the query has executed

ocean wren
#

Yeah, custom test, use random float from stream

digital steeple
misty wharf
#

isn't bool for filtering and float for scoring

#

a filter either passes or doesn't

ocean wren
#

You'd filter with one test, then score with another

digital steeple
misty wharf
#

yeah this is the thanks I get for trying to help

#

don't be a jackass

digital steeple
digital steeple
misty wharf
#

oh yeah fuck you too

digital steeple
digital steeple
misty wharf
#

if you disagree with what I'm saying it doesn't mean you have to be a dick about it

digital steeple
misty wharf
#

not being a dick still stands regardless

ocean wren
#

What he said wasn't wrong btw

misty wharf
#

thank you.

ocean wren
#

filters are meant to exclude options, scoring is meant for weighting choices. You can do both, or either one at a time

digital steeple
#

it's only half right, you have a scoring factor which will weight the score, but your test still does scoring like distance etc.

ocean wren
#

I don't think performance wise it makes much difference in your use case, because you'd be doing the raycast check to filter first.. so only viable options would then get passed onto scoring

digital steeple
#

still the question was if I can score random values for bool matching test if I have a custom test. Appearently I can't

ocean wren
#

Well, have a look at the code for them. You can do whatever you like as long as you return either a single item, or an array of items

#

Hmm, not sure this is correct "oil painting, half dog, half crocodile"

digital steeple
#

Well I tested it, if I wanted to score a float for a bool matching test it was still either 1 or 0

ocean wren
#

that was for a custom scoring function?

#

not an EQS query, I mean a scoring function

digital steeple
misty wharf
exotic chasm
#

I made a civilian AI, it worked earlier but later it started giving me errors

#

So I deleted every other function and the root cause lies in move to function.

#

Suggest me some solution because I don't why it's getting wrong and I have also checked up the whole internet. Nothing helped me so far.

misty wharf
#

Have you checked if your navmesh is valid?

exotic chasm
#

Yes, my other AI is working fine

#

I have made two different AI, both are in the same navmesh

misty wharf
#

at least the second screenshot shows the position is invalid, maybe that's the problem?

#

tbh it's pretty hard to say, if you loooked at the navmesh visualization and it shows the mesh then the problem is somewhere else such as determining the location where the actor needs to move, it could be picking an unreachable location or something is otherwise going wrong

exotic chasm
#

I gave him the wrong blackboard key.

#

It works now

#

Thanks

ocean wren
misty wharf
#

ohh interesting

#

ah yeah now that I looked at it more closely it definitely looks generated :D

ocean wren
#

Their version looks better, but they released a reduced version for some reason

#

Just threw it into a google colab notebook and tried it.. more out of curiosity than anything

keen crow
#

How do I make my BTTasks and others to display set properties and values like MoveTo task does?

misty wharf
#

I think you have to do this in C++ where you can override the function which generates that description text for it

keen crow
#

I am writing my tasks in C++. What do I have to override again?

#

nvm I found

#

this guy

ocean wren
#

Hmm, I wonder what would be the most impactful demo to show off UE5 and cloud-based ML together. I guess something metaverse-y would be wise.

sullen current
#

Any resources on Mass AI out yet?

ocean wren
#

apparently the code is in the UE5 source already?

#

But likely not a lot of use until they've got the Matrix scene out next year

ocean wren
#

Hmm, I guess having properly interactive metahumans might be a nice demo

celest python
#

I'm wondering if L4D's AI director would fit as a fine use case of Behavior Trees. I made a prototype on C++ with subsystems but we decided to make something that can be accessible from editor. Also maybe that can increase the modding support a little bit. I'm thinking about implementing a single BTService at the root selector and tons of states to the below, but this reminds me of zoombapup's conversation yesterday. I guess what I need exactly is a Utility System but currently none of us in the team have the energy to build it up from scratch ๐Ÿ˜„ Maybe we can consider marketplace plugins if it's the only best solution for us.
What do you guys think?

ocean wren
#

The AI director is perfect for a simple utility system, did you check Tom Looman's posts on his?

#

To be fair, I think there's way more you can add to the "director" concept, like the chat dialogue thing from L4D (that's another GDC video). Neither of those systems seem like a good fit for BT's, but more either utility or in the dialogue case, its more of a rule based system

#

I'd classify a lot of things as AI directors to be honest. Some of it is more multi-agent systems stuff like coordinating a group of individual agents for a task, I suppose more as a sort of short lived AI director

#

and then at the grand concept level, you could think of things like Quests and the like as AI directors ๐Ÿ™‚

#

There's a nice presentation about the Sims AI where they discussed using essentially time-driven behaviour blocking to enable utility based action selection which makes a lot of sense

#

It'd be really nice to sit down and design a UI for this kind of thing, in terms of making a really user friendly system for it

modern vale
#

i want to fire a bullet from a paragon weapon character, so the weaon is integrated with the mesh character skeleton. I was trying to get the weapon muzzle position in the skeletal mesh to fire the bullet from there, is it clean todo this in the characterยดs event graph?

celest python
#

I made it with TMap<FGameplayTag, FDialogueData>

#

GameplayTag represents the happened event and value is the dialogue info

ocean wren
#

It came out of one of the valve experiment weeks, lemmie find the video

#

This is a clip from the "Two Bots, One Wrench" design experiment created before the start of Portal 2's development in 2008 as part of the Directed Design Experiments, set in Half-Life 2's Nova Prospekt and featured in The Final Hours of Portal 2. The bots react in real time to the player's actions. The video title is not official. http://combin...

โ–ถ Play video
celest python
#

LMAO

ocean wren
celest python
#

Context is funny ๐Ÿ˜„

ocean wren
#

So the basic idea, is that they wanted to have dynamic dialogue, which was driven by writers rather than programmers

#

so they have this text-based DSL which the writers use to have the sort of one-liners

#

and those are driven by gameplay events and interactions. So the player looking at something

#

They ended up using that experimental system for dialogue in the L4D series and a few other things

#

And honestly, it makes a lot of sense

#

its basically the ping-pong of dialogue, but with conditional branching and some really neat interval arithmetic representations

celest python
#

Amazing

#

Thanks for sharing, watching the latest video now

ocean wren
#

I mean those dumb videos they did using stock assets and some dumb but fun dialogue are easily some of the most expressive AI characters I've ever seen in a game ๐Ÿ™‚

#

feels totally natural, works in live context, doesn't get too wonky in practice, easy to code.

#

2012 and we still don't have anything better in 2021 ๐Ÿ™‚

celest python
#

Explains why Valve was the most beautiful game dev company once upon a time

#

Also there is too much low-level info there

#

I need to study this on my free time with some focus

ocean wren
#

There was a website that had some slides somewhere too

ocean wren
#

Yes

#

although, if you're animating the weapon your aim will go all over the place

#

unless that's what you want?

#

usually, you'd make it so the weapon is seperated with attach points for where the hands should connect, then IK the hand to the weapon, so the weapon doesn't get all wonky with animations

#

And generally, most games want to be able to switch weapons, so having it be part of the character ain't a good option

#

But yes, always setup in the character blueprint anyway

modern vale
# ocean wren unless that's what you want?

i want to read the skeleton weapon muzzle position from the character's event graph, but 1) im not sure if this is a clean solution 2) from the ahcracters's event graph i dont find a way to get that bone position unless i use some index

ocean wren
#

Well, the weapon itself would be a component on the character right, so just get that component, look up the bone position and you're good

modern vale
modern vale
cobalt palm
#

Hello, I have a AI BT that goes into a loop delay until a blackboard key is true.

In a separate class I have an event that is called that checks to see if a reference to the ai and its blackboard are valid, and if so it sets the boolean value to true which should end the loop and continute on with the rest of the BT sequence.

However the rest of the BT is never executed. I have added print strings to see if the event is fired and to also make sure the references are valid and they are all good. What can I do?

ocean wren
#

Why are you using a loop?

cobalt palm
#

I want the AI to wait in a line until the player is at the register.

ocean wren
#

so just have a branch that waits, you don't need to loop it, it'll loop by virtual of nothing else being higher priority

cobalt palm
#

This is what I have. Once the Can Purchase is set to true, the wait loop should break and do the PurchaseItems task.

ocean wren
#

What is the parent node type?

cobalt palm
#

sequence

ocean wren
#

hmm, so does the condition return true?

cobalt palm
#

The one that is supposed to set the blackboard value? Yes.

ocean wren
#

personally, I'd refactor it.. I'd have another node as parent of the wait and the purchase items, I'd make the wait the lowest priority and the purchaseitems higher priority with a condition "can puchase items" being true that would abort the wait

#

I'd also only call enterqueue if the queue is available and I'm not in a queue, not in a sequence

#

but not sure where your conditional wouldn't complete and then continue the sequence

cobalt palm
#

So Ive done this now. EnterQueue calls a function that checks for any queues that are avaible and if not, it will just join a random one so I know the return on it will be valid. How would I make this loop though until the can purchase is true?

ocean wren
#

your wait and the purchaseitems are the wrong way round.. purchase items should be to the left (highest priority left to right)

#

then if it runs that sequence, it'll wait UNTIL can purchase becomes true, in which case it'd run the purchase items node

#

and it shouldn't be a sequence, it should be a selector

cobalt palm
#

Ok so for this, do I even need the wait then if its already going to wait to run the PruchaseItems task once the can purchase variable is true?

ocean wren
#

well, your wait task might do something like play an animation right?

#

in general, I have a sort of default "idle" node that just continues a looping animation

cobalt palm
ocean wren
#

plus its good to see that its entering the correct nodes in the tree

simple crest
ocean wren
#

Unity version of earlier dialogue discussion: https://www.youtube.com/watch?v=wj-2vbiyHnI

GDC

In this 2017 GDC session, Unity's William Armstrong and Campo Santo's Patrick Ewing discuss the logic, tools, and workflow behind the dialog system used on Firewatch.

Register for GDC: https://ubm.io/2yWXW38

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

Follow GDC on Twitter: https://twitter.com/Official_GDC

GDC talks cover a r...

โ–ถ Play video
celest python
#

My mind blew

#

Those guys are geniuses

#

Gonna watch Unity version after this

ocean wren
#

which one?

#

oh the valve one?

celest python
#

Yes

#

Their rule matching implementation is awesome

ocean wren
#

yeah, its kinda neat isn't it

#

I'd read about the interval arithmatic trick before, in Ian Horswill's stuff on constraint satisfaction solvers.. but this was a really neat way to do rule matching and so simple!

torpid pier
#

Anyone have any suggestions for how to make an AI not move in a straight line towards a location? It'd be nice if there was some system that allowed AI to apply some sort of wave so it appears AI is moving more naturally instead of a straight line towards the location which is boring. I don't know if this is something we can do in AI Code or do we have to have an animation blendspace for this?

ocean wren
#

wave? what you want them to conga?

torpid pier
#

anything different then a simple line lol

ocean wren
#

well define "not a simple line" then? what do you think they should do?

torpid pier
#

I literally just explained and you seemed to get the point, but essentially just sway left-right-center randomly

ocean wren
#

I'm just not sure how its meant to look.. I mean people don't just sway. You mean like local avoidance or what?

#

swaying suggests they're drunk

torpid pier
#

if you walk to a door in a building, you dont walk in a straight line, you sometimes end up drifting towards the left a little or to the right

#

I just want to know best way to modify their movement behavior to the location, to alter it slightly, for example, just move the AI a little to the left over time instead of completely straight

ocean wren
#

well, you avoid obstacles yes. But you don't sway. But either way, if you want to do that, you'd have to probably change something like the DetourCrowdFollowingComponent to add something to its avoidance offset

#

nothing in UE by default that'd do that

torpid pier
#

well I could probably do something in anim blendspace I'm thinking

#

was hoping to see other thoughts tho

ocean wren
#

Maybe find a game that does what you want so we can all visualize it?

crimson galleon
#

im kinda thinking of gta 4 where there is some natural sway

#

but i think thats character anim + camera, not the collider necessarily

ocean wren
#

You mean the morpheme stuff?

crimson galleon
ocean wren
#

got a video clip? I mean I've seen the morpheme balance controller stuff, but no "sway" ๐Ÿ™‚

ocean wren
#

I mean you can add weight to the animations sure

torpid pier
#

Maybe something like this lol

ocean wren
#

So you want everyone to walk like a zombie? oooohkaaay ๐Ÿ™‚

torpid pier
#

not exactly, but you can clearly see they are moving slightly left/right, dont go to extreme of them stuttering, you get the point ๐Ÿ™‚

#

If you don't like the idea, I get it, you don't need to be passive aggressive

ocean wren
#

Well, you could use animations with root motion I guess

#

I'm not being passive agressive, I'm trying to understand what you're after

torpid pier
crimson galleon
#

sounded like zoom realized what you are finally after

#

could you not add some "sway" as it moves or is this more reactionary?

ocean wren
#

I don't think you'll find any examples of that in a normal game though, unless you can find an example where we can figure out what is doing it

torpid pier
crimson galleon
torpid pier
#

i was hoping in some sort of MoveTo function in ue4 we could do something slightly different

crimson galleon
#

like affect its forward velocity by taking a small amount to influence left or right or something

torpid pier
#

it'd be cool if the AI wasn't absolutely perfect moving to a location

ocean wren
#

Well, you could enable physics a little bit on the body.. that will give you some.. weird motion

crimson galleon
#

lol they dont

torpid pier
#

what game do you play that doesnt perfectly move to a location?

crimson galleon
ocean wren
#

There's an example of that in the content examples

torpid pier
crimson galleon
#

i get what you mean though, if its an open area with no obstacles and they move in a straightline you want some kind of sway - so for what characteristic? zombie? drunk?

ocean wren
#

its a UE level pack with content examples for different UE features, its in the learn tab of the launcher for some weird reason

#

there's an animation example where you can enable physics based animation as a blend between driven anim and physics

torpid pier
crimson galleon
torpid pier
#

Does it not make sense to simple describe the problem as moving the location of the character along the x or Y axis as it moves to a target location? I can't describe it better then that

ocean wren
#

You can definitely do the drunk thing with Morpheme in GTA

crimson galleon
torpid pier
#
  1. AI MOVE to (100, 100, 0). so the optimal steps would be like (0, 0, 0), (25, 25,0) (50,50,0) (75,75,0) (100, 100, 0)
#

but in my suggestion it would look like (0, 0, 0), (20, 20,0) (55,55,0) (80,70,0) (100, 100, 0)

ocean wren
#

Well, try it and let us know how it works out ๐Ÿ™‚

crimson galleon
#

honestly the best i can offer

torpid pier
#

that's an interesting idea

crimson galleon
#

at this point i need diagrams or pictures and more detail about the idea

torpid pier
#

how would you generate waypoints?

crimson galleon
#

game genre, size of character, speed, animation assets

crimson galleon
torpid pier
#

simple drawing, does that make sense?

#

unreal engine today just draws a line straight from starting point to end point

crimson galleon
torpid pier
#

same idea

crimson galleon
#

i get what you want, but its not going to look good without considering navigation cases

torpid pier
#

it just moves in a wave like this, very slightly, it would look good if you do it slightly, obviously if you do it in big deviations it would look weird

crimson galleon
#

as i mentioned earlier, affect the velocity by adding some to left/right or else waypoints

torpid pier
#

i am thinking of just doing it in animation bp lol

crimson galleon
#

if you want me to do the work for you, then we can talk about my consultation fees first

torpid pier
#

huh lol, nah i never suggested for you to do anything like that, anyway appreciate the listening

crimson galleon
#

i think i did more than listen

torpid pier
#

yeah idk what you wanna call it but you did help

crimson galleon
#

I and zoom provided you with advice and essentially consulted your design problem by providing several solutions

torpid pier
#

I don't know if you have a problem, but I literally thanked you guys, if you're looking for a job you can check out #freelance-jobs #salary-jobs

crimson galleon
#

would rather have the last half hour of my life back

celest python
#

You need to mess with path following component

#

Or just add anim montages ๐Ÿคทโ€โ™‚๏ธ

simple crest
#

just arbitrarily apply some small force that wavers over time to the character while they're moving noobthonk and make getting randomly caught up on level features a core part of your gameplay somehow

crimson galleon
celest python
#

If something extremely detailed needed you can also limit the distance from followed path so if force made ur pawn far away from path u can add force to the path back

#

Or if you dont have gigantic amount of AIs make them follow splines

#

just deal with spline generation math instead

#

Orrr... just have montages with fancy movement animations and play them to make it look realistically? ๐Ÿคทโ€โ™‚๏ธ

torpid pier
#

Ulntax appreciate it, I think the simplest thing for me to do is do in an animbp and move the location of the AI character slightly every time theyre moving so apply ranges from (-5,-5,0) to (5,5,0)

simple crest
#

one does not simply navigate with splines etc. etc.

torpid pier
#

also Hojo thanks for the suggestion as well

simple crest
#

anyway yada yada it's likely going to be a terrible idea and you're likely going to hate it, but hey no harm in trying

torpid pier
#

yeah lol it's fun discussing ideas anyway, always trying to learn

celest python
#

I'm about to swamp into utility AI idea soon

simple crest
#

it can be really really hard or just kinda hard. it depends on your stretch goals. for example it's really hard to come up with a good system that gives you a lot of flexibility. not sure how to describe it yet. like, most internet sources I found use a godclass for entity info, and then the entire utility system just uses whatever is in that godclass. so if your game has humans, and dropped weapons, an AI would judge actions for either of those targets using the same knowledge struct... "position, health, facing direction", stuff like that. It was tough coming up with systems that let me break out of that nasty hardcoding and assign arbitrary knowledge sets to specific things. but if your game is relatively less complex and you can accept some sacrifices on stuff like that, the basic idea isn't extremely complicated

#

the other major major major hurdle is just tooling

#

it's easy to underappreciate just how much tooling you have if you just use epic's BT system

celest python
#

So generally if it's a generic system that made to serve every situation its gets harder but if it can be scoped it could be easier

simple crest
#

yeah. it was fun seeing it come to life and start actually moving guys around and eventually shooting and stuff, i'll say that much. it was not really a wise financial decision ๐Ÿ˜„

#

but i'm hoping to rewrite it and either sell it or opensource it eventually (probably late 2022) and hopefully use it for several projects, long game junk

celest python
#

Oh I see.. From your past messages on this discord I knew it's kinda complex and unfinished so I can imagine

#

Thanks for sharing your journey ๐Ÿ˜„

#

Now it's my turn to suffer

ocean wren
#

Why not try Tom loomans utility system?

celest python
#

I will, though I didn't see he shared any links about it?

#

It was just demonstrating a concept

ocean wren
#

I thought he posted the code on github didn't he?

celest python
#

Hmm, let me double check, I might be wrong

simple crest
#

i don't think there's any really full-fat utility ai releases for UE anywhere really, though i haven't looked around in well over a year

ocean wren
#

I've seen one recently.. can't remember where though ๐Ÿ™‚

simple crest
#

i might put mine up on github sometime soon as-is, it's far from what i would call full production ready and written with some things that vet coders would call nasty... but might help inspire anyway shrug

ocean wren
#

and it didn't look pretty, so I moved on ๐Ÿ™‚

cobalt palm
#

Hello, quick question. In my game there will be multiple registers where AI customers can go to and purchase their items. Now I need some sort of way for the register to constantly check if an employee is present so the customer first in line can purchase.

My idea is a function that loops every second on begin play set by a timer that checks if an employee is present, and if so, set a blackboard value to true of the customer that is first in line. Would this be too much?

cobalt palm
#

So this is how the branch works right now. I only want the PurchaseItems task to run if Can Purchase is true. However, if its not true I would like it to wait until it is true to continue to the next selector. I looked at the services however, there is no way to make it wait until the value is true, just check a value and set it per say every x seconds.

crimson galleon
#

Okay and what is this idea for this tree?

#

So there is a first stage of this boss and then after some condition it goes into second stage?

#

Looks okay to me

#

They run at a modified tick

#

They execute after the conditions of its node

#

You could have a service to check distance to player which decorators can check within those branches of the tree

#

They fit in for checking the state of something often

#

Or to perform something that needs repetition within a branch

#

A service i have for example, checks distance to player. Its on a selector and below it are decorators that can fire if that distance is within a certain value. While the service runs, it updates that distance. If the player is too far the bt chooses to move. If the player is close enough the bt instead attacks.

cobalt palm
crimson galleon
#

I would (and do) have it run when they know to seek thr player, ie, not while they are wandering around mindlessly

#

I do use ai perception though and this is what determines player detection

#

They are tricky, theres plenty of nuances

#

Ive watched a lot of the ai tuts over the years and think this one explained the workflow and tools very well without being as overwhelming as some others but also enough to get past an ai that just moves in a straight line https://youtu.be/iY1jnFvHgbE

In this presentation, Epic's Paulo Souza uses Unreal Engine's built-in AI features to build smart enemy behaviors for a game with stealth-like mechanics.

By relying on the Gameplay Framework in Unreal, we're able to quickly create convincing AI using Behavior Trees. Behavior Trees are great for creating complex AI that can be presented in a way...

โ–ถ Play video
keen crow
#

What happens with an execution of a branch when a decorator on a higher priority node aborts a lower priority branch? Is the whole lower priority branch aborted? What if it is the last branch of the the last selector - does it mean whole tree execution (or Run Behavior Dynamic) executed with fail result? Or is the control immediately swapped to higher priority branch with the decorator?

crimson galleon
keen crow
# crimson galleon the higher priority will abort whatever task is currently active in the lower br...

but if the condition of the higher priority happens, which aborts the lower, and it cannot execute itself, nothing in the tree will fire.
so if the higher priority branch can execute itself right after aborting lower priority, the whole tree won't be re-executed from the root down to the newly active high priority branch? The tree will just immediately shift its execution to another branch without reevaluating every task and decorator above it?

ocean wren
#

I think you got some of your selectors and sequences mixed up. Shouldn't charging an attack and performing the attack be a sequence not a selector?

#

Also, your root node should be a selector not a sequence

#

and the probe should be to the right as its lower priority

#

you should always have the "do something default" part on the right as lower priority

#

then as events change the BB, higher priority branches can take over if available

#

the main thing to grasp, is that concept of selectors selecting based on priority in left-to-right order and then conditions making the different branches fail to be selected to run or allowing them to run as BB values change

#

so sorting out your priority order first is a good idea, then thinking about how behaviour splits based on conditionality

#

for instance, you cant ever fire a gun if you don't have one, so you might have a "has weapon" condition that completely disables a subtree that allows you to shoot and whatnot

#

so I usually start by mapping out what my lowest priority is going to be.. and work up from there, adding subtrees for higher priority tasks as I go

#

but the thing is to consider where the tree splits, usually it has some condition that splits behaviour into branches, for instance, you might have that "has weapon" condition split into two branches, one for if the has weapon condition is true, another where it falls back to hand-to-hand as lower priority if the has weapon isn't true

#

I can see that this whole concept of BT's is kind of tricky for people to grasp, and there's a bunch of nuanced issues with the UE implementation of them for sure. Will have to think about that

ocean wren
#

We're likely going to be running an AI focussed games programming degree, so some of this stuff I'll have to map out and write tutorials for (and probably reimplement so its not quite so tricky to use)

crimson galleon
# keen crow > but if the condition of the higher priority happens, which aborts the lower, a...

im not too sure... the blue framed nodes will be aborted, it steps up the branch to switch to the higher priority but as for the entire tree being re-evaluated i cant say. Based on prioritization, it shouldnt matter since the conditions climb back up the tree (towards the higher priority branches) so if the tree does re-evaluated from the root, it should end up at the same place even if it doesnt. The tree and the debugger happen faster than i can see it changing.

ocean wren
#

Typically in other BT implementations we usually start evaluating the tree from the root, but I believe Mieszko for whatever reason didn't do that, so it might start part-way into the tree and evaluate from there.

#

One of those quirks of UE implementation

crimson galleon
#

odd, but by design, it shouldnt matter, or at least that doesn't sound like something to utilize

ocean wren
#

I guess it depends on how the cleanup of a running branch works, I've not looked at that code for a while, but there were some oddities in there if I recall.. something about how they unwound the stack of tasks

#

he was trying to make it this super efficient event driven thing, but ended up causing more pain than it was worth IMHO ๐Ÿ™‚

crimson galleon
vocal lichen
#

can i use 2 BT's to one AI

misty gale
#

Not at the same time to my knowledge

#

You can swap bt tho

ocean wren
#

technically they're called teleoreactive systems

keen crow
#

Is MoveTo task with vector BB key dependent on navmesh? Could it be possible that MoveTo Vector task fails because a physics-enabled actor is located at the specified position and it cuts a hole in the navmesh? I want my AI to remember a place where some physics actor was and at some time later go to remembered position instead of just remembering the actor and MoveTo'ing it even though at that time the physics actor might have been moved somewhere far away and the AI couldn't have known about it

misty wharf
#

It depends. MoveTo uses navmesh, yes. Another actor which modifies or blocks the navigation somehow can cause it to fail. If you have a sufficiently high accept radius, it should help though, as then it will accept a position that's not exactly the destination point

#

You can maybe also use project to navigation to project the destination point to the closest point that's on the navmesh

misty wharf
#

Yeah

keen crow
#

ok thx I'll try

#

also is there a way to make navmesh ignore some actors? like I'd like to navmesh to ignore some cardboard boxes laying all over my level because they have physics enabled and a character will flip them over anyway if he walks through them

misty wharf
#

Yeah there's a flag called cannot affect navigation or something along those lines

#

this is on primitive components, if you turn it off it will not affect navmesh generation

keen crow
#

cool, thanks

ocean wren
#

I wonder if anyone is interested in genetic algorithms for UE, might be a fun project

#

I guess the UE community isn't really into AI so much ๐Ÿ™‚ apart from a few here

errant phoenix
#

What could be the cause of the capsule changing size and the skeletal mesh moving?
Its not supposed to be like this

#

but this

ocean wren
#

looks like its gone to some default height

#

Are you using a character?

errant phoenix
#

I figured it @ocean wren
It was because i was using crouch, and havent changed the default capsule half height for crouch in the character movement

ocean wren
#

crouch? with a pidgeon?

errant phoenix
#

Haha ikr, just used as a function for something else since crouch is convenient

ocean wren
#

I shudder to think ๐Ÿ™‚

keen crow
#

How do I make a latent BT Task in C++ like MoveTo? Do I just return EBTNodeResult::InProgress on ExecuteTask override and then at some moment (timer/delegate callback) just call FinishLatentTask?

#

yeah I guess that's it

crimson galleon
crimson galleon
ocean wren
#

Sorry, was thinking aloud if people generally would be interested in AI stuff for UE

#

it seems a bit too niche you know? loads of people are doing things like materials or blueprints, but like a few dozen maybe do AI ๐Ÿ™‚

crimson galleon
#

yeah, hence my interest ๐Ÿ˜›

#

you're miles ahead of me though on this stuff, i just got into it this year

ocean wren
#

I'll probably put together a few different AI systems, seems like we're going to be running a game AI programme next year

crimson galleon
#

also 0% cpp knowledge

#

slackers has a curriculum?

ocean wren
#

right, yeah, I tend to teach my students C++ and doing game AI as a specialism would be kind of easy (I've taught it for years)

crimson galleon
#

i did C# in Unity for AI, though basic

#

and Unreal has spoiled me with bp

ocean wren
#

yeah, we'd do some in Unity too

#

I'm trying to wean them off relying on Unity for everything, but its a struggle ๐Ÿ™‚

crimson galleon
#

when students have a low end laptop, Unreal aint to friendly on it

#

for those with towers, no prob

ocean wren
#

yeah, true. But then if you're doing Comp-Sci or Games Comp, you should at least invest in a decent PC

#

Right now that's a bit of a thorny issue to be honest ๐Ÿ™‚

crimson galleon
#

i teach 3d art and animation, but i still agree, wish my college would spec for better than bare minimum

#

they always hit the barrier at rendering

ocean wren
#

We just got our labs refurbished with 3060 and 3070's but that was a miracle

crimson galleon
#

damn yeah, i was just seeing the prices for them last night

#

they're abnormally priced

ocean wren
#

We had to buy like 450 of them? something like that.. it was pricy ๐Ÿ™‚

crimson galleon
#

where do you teach?

#

university?

ocean wren
#

University of Lincoln, in the UK

crimson galleon
#

dope

ocean wren
#

Things are definitely weird right now

crimson galleon
#

too many cryptominers

ocean wren
#

yeppers

#

damn them all to hell

crimson galleon
#

never would have expected a gpu to be used for something... not gpu related

ocean wren
#

The world went mad and hasn't recovered yet

#

Capitalism baby.. it aint for us

misty gale
#

What if... the next ai can do cryptomining in-game !

#

Id be interested in diving deeper into ai aswell, but time constraints are real

#

Letting ai in-game evolve/get smarter/self optimize would be pretty cool. I've wanted to do that for a while , with some neural net adoption

#

Was inspired by a game from the 90s

ocean wren
#

Yeah, I worked on a port of that game for a bit

#

It was unique I guess

misty gale
#

You did?

#

Indeed

#

Not the most fun game i've tried by any mesure

#

But i was facinated by the ai

ocean wren
#

Yeah, back when I was subbing for a small company we were doing ports for them and that was one of them

#

Toby Simpson I think wrote it?

#

or Toby Gard? certainly a Toby

#

Millenium! that's the company.. wow, my memory is shot

misty gale
#

๐Ÿ˜…

ocean wren
#

I remember him demoing the game when we went down.. on an amiga CD32, one of the preproduction units, it had a rubber leg missing, so it wobbled.. had to add something on the CD tray to keep the lid closed ๐Ÿ™‚

misty gale
#

Prett coom that you've been involved with it and remember this

#

Pretty random game imo

ocean wren
#

Yeah it was kinda random to me at the time, we were doing the megadrive and snes ports

#

through a guy who used to work at Gremlin that my mate Martin knew

misty gale
#

The hw avaliable at the time is also part of what made me want to chase down this road, due to how mich more power we have avaliable even in our phones these days

#

It's not obvious to me that a game with self learning ai would be very fun tho

ocean wren
#

Yeah, but those games were all written in assembler, not the massive bloatware we're using now ๐Ÿ™‚

misty gale
#

Fair enough :p

ocean wren
#

self learning? maybe not.. but then maybe there IS some value there

misty gale
#

Well... player-learned? ๐Ÿ˜…

#

As it were in that game

#

Players are also the worst losers, and a relatively smart ai could easily make a game a very bad experience for the player :p

#

Good ai != fun ai and so on

#

As Soren Johnson says so well :p

ocean wren
#

I dunno, how else do we make progress other than trying?

#

We can maybe learn to lose occasionally?

misty gale
#

Possibly..

#

But its so burnt-in for players to be better than the ai, i think its expected

ocean wren
#

Yeah, but we can do something unique right, in the AI space and it can be different than everything else because of it?

misty gale
#

It's definetly possible

ocean wren
#

I keep thinking about mount and blade, its so unique and was just that innovation that made it for me

misty gale
#

We could simply redefine what difficult is ment to be :p ai ment to be very challenging even for relatively good players

#

Most games ive seen trying this is more about boosting stats to wild amounts tho.. instead of clever ai .. not saying the latter is easy to do but the first is sort of too easy

#

"You play on hard mode, so any hit kills you" is just .. idk

#

Sounds like i should try mount and blade

ocean wren
#

I'm kind of interested in trying new things with game AI outside of the usual systems stuff

#

mount and blade was unique, try it and you'll see

#

Probably going to focus on making interactive metahumans (voice interactions, reactive animations etc)

misty gale
#

There was also this silly idea of d&d

#

An ai driven speech recognizer with some clever spawning

#

Dungeonmaster basically just explains the scenery, and it automagically gets added in-game, close to real-time

ocean wren
#

speech recognition is pretty trivial now, its the speech synthesis I need to work out ๐Ÿ™‚

#

right gotcha.. yeah, I'm doing something similar, but from images

#

NLP wise, you can extract entities and attributes, so it would be possible to spawn in stuff you described, I just prefer doing it with images and videos ๐Ÿ™‚

misty gale
#

I imagine parsing of such text would be relatively slow tho, granting a pretty bad experience ?

#

Sounds cool tho

ocean wren
#

its not immediate, but you wouldn't notice the lag

#

its generating the vocal response that takes the processing time

misty gale
#

Maybe its worth checking out again then^^ tried it a while ago with a plugin but it struggled to even parse simple letters or numbers

#

Then again it was a pretty random plugin

ocean wren
#

The key is to use google's system ๐Ÿ™‚

#

its really damn good

misty gale
#

They got silly powerfull stuff for sure

ocean wren
#

yeah, including their magenta synthetic voices

#

I've built similar stuff using Microsoft Azure cognitive services stuff in one of my cloud development classes

#

so building this kind of thing isn't that hard

misty gale
#

Add a VR headset to it and we have a full blown game already

#

Sounds like a classs i should attend in thr future really

ocean wren
#

believe it or not, we're doing it for VR too ๐Ÿ™‚

misty gale
#

Cover some interesting topics :)

ocean wren
#

we're becoming more meta ๐Ÿ™‚

misty gale
#

Well damn. Guess i shouldnt be surprised really

ocean wren
#

Thing is, nobody is really trying that much.. they're all to busy doing shitty crypto stuff

#

and fucking NFT's

misty gale
#

Damn NFTs

#

Is that were we wanna be heading really...

#

To some fictional item that is anchored in bits in some cloud?

#

Crypto ruined the gpu market :-/ along with scalpers here atleast

ocean wren
#

its because all the speculator worms are crawling out of the woodwork as they've got nothing better to do

#

I hope the skuttle back into the shadows soon, but probably wont

misty gale
#

+1

ocean wren
#

That and the goddam crypto miners destroying the GPU market.. they can all fry in hell ๐Ÿ™‚