MOz
New vMember
Posts: 7
|
Post by MOz on Jun 16, 2020 20:30:51 GMT
is this feature will be add it in future update?
Am trying to build one for my game AI Any one want to help is welcome to share there help here and make it available for every one here ,and for any one that do not know whats the Ticket system is, its when You are been attack by more than 6 to 12 enemies only getting attacked by 3 of them at any given time. or if they AI is attacking something big they will attack at different places/points not all in one place/point make the AI fell more believable.
i manged to figure out the logic so far for the mechanism, any suggestions are welcome
|
|
|
Post by komposite on Jun 16, 2020 21:57:42 GMT
I'm quite interested in this, although my programming skill level is quite low.
I'd like to hear your logic, maybe we can sort this out.
|
|
|
Post by rustychicken on Jun 16, 2020 22:38:46 GMT
Yeah I would definitely be interested in this as well!
|
|
|
Post by komposite on Jun 17, 2020 8:01:15 GMT
|
|
MOz
New vMember
Posts: 7
|
Post by MOz on Jun 17, 2020 13:48:13 GMT
thanks for been interesting in this ,actually the logic is simple it goes like this
first i will but a sphere collider in the player lets call it distance checked zone , then a 4 box colliders around the player those are the attack zone if there is a 2 or 3 AI in it the other AI should go to the next attack box and just search for an empty box or less enemy box, the sphere zone will give tickets to attack while any enemy without a ticket stands outside the fight and waits for a ticket. Once an enemy is dead/incapacitated/out of range they lose their ticket, and it's given to another enemy. tickets have a timeout, and distances checked.
i well test my logic and i will post the result here fell free to try it your self and share your result i saw this post before behavior designer is very different from Fsm it will make it very complicated
|
|
|
Post by komposite on Jun 17, 2020 15:59:58 GMT
Sounds interesting, but performance wise, will it be sustainable ? I was thinking about checking if an (or multiple) enemy is already engaging the player via is FSM state, and so, no new ticket will be redistributed, has having a ticket is a necessary conditions to enter the combat state. And, on death (or leaving the combat state for any reason), a new ticket is available, and therefore, randomly assigned to a new enemy. However, the AI won't attack specific locations with this system
|
|
MOz
New vMember
Posts: 7
|
Post by MOz on Jun 17, 2020 18:52:53 GMT
interesting point about the performance, it will cost, handling the ticket system by the FSM is what we want to do, Excellent idea but as you said it want attack a specific location, this will make the AI'S like zombie all attacking you in the same place , the idea is make the AI's be aware of there other AI's and what they are doing , i have been testing the box and the sphere colliders no good result , so i will have two sphere collider one to attack one to stop attacking here a picture about the general idea
|
|
|
Post by komposite on Jun 17, 2020 20:29:09 GMT
I think, instead of using a sphere collier, you could simply use distance from the target (which, I think, already exist) and the position of the enemy toward the target (which doesn't exist, but can't be hard to do).
Like if you're at least than 3 meter, you'll be in the combat stuff, and if x angle is already took, then move to the next one, unless there is no room left, meaning that you have to wait for the next ticket to be available.
I think it would be more optimized this way.
|
|
MOz
New vMember
Posts: 7
|
Post by MOz on Jun 18, 2020 19:12:55 GMT
Good point ,(isAttackig,canAttack bools) those are what we looking for to make our method , the problem is how to make the AI be aware of other AI's i will dig more to find a way or make a way and implanted but am trying to do it KISS way ,but i dont think this way will work with invector code i will try to figure it out mathematical hard way
|
|
|
Post by komposite on Jun 18, 2020 23:15:56 GMT
I guess you'll need an AI manager of some sort, which will get info of the AIs surrounding the player, and will trigger decision for the AI. Like : - if AI is > x distance, move towards target - if AI is < x distance, try to get ticket :
-> AI as ticket : go fight at available position; -> AI as no ticket : wait around the target (bonus if you can make him strafe around the target while waiting) - if AI had ticket && is dead : Distribute ticket to other AI. So you will need to get the number of AI surrounding the player, the distance of the player to get a ticket, and some decisions in order to know if you wait or fight. Good luck
|
|
|
Post by komposite on Sept 7, 2020 10:39:39 GMT
Hey ! Did you worked your way into this ? I was thinking that it would be nice if the autolock of the player would automaticaly select the enemy currently having the attack ticket. Totally cherry on the top, but worth it
|
|