Honestly, the new AI System it’s overComplex, Bizarre, Uncoherent (Towards what ai is suposed to do ) and in comparison with unreal engine 3 AI System you have less freedom in terms of freestyling your AI.
Why not just handle it all from the typical AIController blueprint ? do you know how many hours the developer has to spend to learn such a uncomprehensible System, with those " blackboards ", " behaviour trees ", and all of that ?
While in UDK(UnrealEngine3) you had a simple MoveTo function and you just needed to code where the Ai needed to go.
The animation handling and material editor and all of that it’s good, but honestly i think that the AI System it’s totally the thing epic failed at bringing something better in comparison with other versions.
It’s not really that complicated. Just think of it like a state machine. I control my behaviour trees by using enums. I find quite nice to use as all the ai is all contained in the tree and its easy to debug.
You don’t have to use the tree, you can put all your code in the ai controller if you like.
You obiusly can use it, and get stuff done. I agree with you in that, it’s not that complicated.
But you obiusly shouldn’t ? i have no idea, aren’t the behaviour trees suposed to be what sould be used to control the ai as Default after all, what i see in documentation about the AI category it’s behaviour behaviour there.
And what about the " Automatic navmesh navigation " when the AI is using moveTo they get stuck just like, a fly on a glass of a window !
Do you have to do some sort of thing in order to get them better in pathFinding, just like this citzens around a town.
And before you make fun of citzens with potato Bags, Get to 3:34, they can climb a tower and get to it’s top, I tried something like that in UE4 with simpleMoveTo() Wich automatically uses pathfinding isnt it ? But no they get stuck.
Isn’t there any other method to get better pathFinding ?
About pathfinding I though it didn’t work, but i actually tried it and it stills being as good as in unreal engine 3 sorry, wrong conclusions after trying the LevelEditor SimpleActorMoveTo(). Looks like the behaviour tree MoveTo is actually fine enough…
Well good thing is that now to create AI it’s something wich is a radical change in comparison with Unreal engine 3 one, wich was straigth code, now you have
some runtime visual dynamic description Behaviour tree in order to see what the heck goes on…
It would have been cool that instead of " tasks and such " you just had States on the behaviour tree, and instead of Services, Tasks just a node called conditional… in the Behaviour tree, to switch the State. but so far is cool and good…
I have to agree with OP I find Behavior Tree a bit frustrating.
Now in essence its easy enough to use.
But I found that doing any logic outside TRUE || FALSE feels over complicated.
And it leaves a lot of clutter in your asset browser, having to create all the Tasks and Seervices.
I do not recommend this approach. It will sooner or later bit you back. Hard. If you want to use state machine, you should either just ditch BTs and use FSM, or at most use FSM as single task in BT.
Anyway, my advice to everyone about BTs, you should not treat them as absolute I do this or I do this. That’s no the idea of BTs. It’s better to thin about them as well tree of possibilities. The deeper you go on branches the more information you gather along way, and those information may or may not be used to make decision on which branch to go next. It’s absolute it’s bit fuzzy, as usually there are not hard infos, on what to do next, and choosing single branch point will depend on usualy more information, than it is case with simple FSM.
BTs are perfect for doing living AI, that we do not have really specific actions defined, but we want AI to make decisions in more organic, fluid and non predictable way.
I would use BTs to make high level decision making (what high level means depends on your game scope), and then as you go to specific elements of BTs I would make tasks which may be for exapple GOAP, FSM, actions, which are highly specific and controll behavior of AI in predictable manner.
I’d also recommend reading up a bit on concept of BTs in general. I also had problem understranding what all those nodes means why they do not give me result I want, until I read few articles explaining what they are supposed to do it first place. Then it clicked.
So you don’t recommend this approach but then don’t explain why we just have to trust that your opinion is correct?
Works fine for me as a state machine.
And I don’t agree when you say a bt shouldn’t have any action. For me the last node in the branch is the action. that’s what the documentation says to do.
I quite like the new system and I used to use the old state machine in UE3. I generally have a main service ticking away that is the main brain of the AI, working out how the AI is feeling dependent on all the inputs and stimulus. This updates a bunch of keys which then influence the behavior tree and which parts of it run. I especially like the way you can set it to abort a branch if its decorator changes, this is great for when the AIs brain suddenly changes from feeling brave to feeling scared and needs to flip from attacking to running away I do admit that having a 4k monitor helps. Even in UE3 I’d still end up with a piece of A2 paper plotting out the AI flow. Comments in the blackboard would be a nice addition though as would being able to have a default blackboard setting somewhere so the editor could allow you to select the exact keys and save us having to paste the exact key names, in services etc.
I definitely like the new system, but I’d love much more detailed documentation on things like AI Perception- as someone not very experienced with making AI, it can be trial and error to get things working- would love a concrete simple example- a patrolling AI that moves to the player on seeing the player but can be lost (making use of the “lose sight radius” tab in the AI Perception component). Right now I’m doing it all through the AI controller, but I’d prefer to use the blackboards and behavior trees instead.
I agree, the AI system (BT and Blackboard stuff) doesn’t feel very user friendly. The main issue for me is the many files, and thus the many possibilities to mess something up without a good overview. We wrote our own blueprint based AI system, and it only uses one external file besides the character blueprint contents. The only issue we had the past weeks were based on the perception component, which was or is still buggy.
So after all, all the effort i spent on trying to get AI working for the new Engine version, in comparison with UDK, i felt that finally place it all in AIController class blueprint became a much more stable way to use the AI System.
Hours spent trying to make an AI follow another pawn with player controller Behaviour tree: 12h( of tutorials and documentation and ) and yet i did not get it.
Hours spent trying to make AI follow another with PlayerController: 2 min: And was pretty normal.
This is just feedback wich i feel it’s necessary to add, since im a unreal user and i’d like the developers to know that it’s very hard and time consuming for a user to use the behaviour trees.
I remember, in UDK we only had pre-made UT classes, pathfinder, a very basic linetrace, booleans, delay, move to actor and random movement nodes to managing a very basic AI. And Pylons/Navmesh for crowd animation and more free bot movements, it was pretty efficient
Now we have much more advanced AI, with behavior tree, state machine and advanced coding via blueprint and aningraph.
But as someone very nostalgic, I’d like to see in Unreal 4 editor a dynamic pathfinder like a Kynapse AI created by one guy in early 2007:
Advanced where exacly ?
What i see in comparison with UE3. From the point of view of a user that is a gameplay Programmer.
Good ones, So far.
The navmesh extension/area it’s unlimited, not like UE3.
There’s seems to be more functionality.
Probably the navmesh pathfinding it’s better.
No more waypoint based AI navigation Good because less stuff to study and such… you can make your own very easil.
Bad ones, so far.
You have to create 30 assets in your editor to create a good AI.
The blackboard variables accessing and setting it’s so bizarre, " assign key what " ? is there a way around idk but so far it’s sometimes working sometimes not.
The tutorial it’s over complex.
-The behavour tree it’s hard HARD to understand, like what will execute this and the vocabulary and all, i’d keep it as Experimental.
My suggestion: My design.
Some kind of other tree that would be devided in states, instead of Service task and decorator, States. States would handle all of the moving/waiting, Inside of the states you would switch the states, instead of some blackboard checking. GoToState would switch states, States would use blueprint interface and logics.
We would have a tree of only 2 ROWS, one wich would be the Root and the other the states, it would just function as a purely visual tool just to see the State that you are in.
What i recommend
The behaviour tree with the blackboards and such are very
I mean after all it’s Great no ? more functionalty, after all the AI programmer will have to program a Waypoint System for AI for matches. " WHY " ? to have a more realistic AI.
Back in UE3 when i tried waypoint System i though OMG what a great idea, so you have citzen around walking in diferent paths and such.
Sadly it was broken WHY? my theory is that they tried to make it too complex. Or who knows what they did to manage to break it.
After all atleast you can make anythng happend with just navmesh pathFinding.
But alright straight to the matter.
How will you present it to the User/AiProgrammer/ (Call it whatever ) " For you creators, you have a view, for us users we have a diferent.
If you make that work with the Behaviour tree i won’t use it sorry.
If you make that work with the AIController blueprint Good for me. So then i can use it.
Don’t think of me as an engine engineer if you are trying to visualize who i am, im just a gameplay programmer… so really this is very blurry for me the video is.