I’ve encountered a problem with EQS that I can’t solve myself and have found no other examples of it on the internet (with one exception but its outdated, I think).
Essentially I want two teams of AI characters to move, attack, flank etc using Blackboard, and EQS seems really good for that. I have set up some basic gameplay tags, for simple things (alive or dead etc) and teams, friendly (to the player) and hostile (to the player). Disclaimer I am still quite new to the AI side of things. To test, when they got within range of the player the would move towards them. Along the way an EQS test would run to see if other AI (of the opposite team) were closer (to attack first).
The crux of the problem is that when using EQS to detect actors in proximity, the gameplay tags simply don’t work for me. Looking at the generator in the debug view it marks the test as SKIP (see below) rather than give it a score or filter it. If gameplay tags are the only test it passes everything, within the class specified. So the test returns is neither true or false, based on purely on the gameplay tags and any actor in the class randomly wins by default.
A change I could make would be to split the AI into two classes based on the teams and search purely for that, but I need to include the player within the test as well, so they can be attacked too. Also I would like to avoid doing that at this point.
Ideal test, Any or All appears to make no difference. Distance test works fine.
With only the gameplay tags test enabled this is a typical result.
Getting each character to print their tags, which are not on by default.
This is both the tags and distance test seen above. Still has the SKIP result. (Have not found any info on this)
Having tried numerous things my questions are this.
- Is there something I’m missing / am I doing it wrong?
- Is this a bug or unintended?
- Does anyone else have an example they can please share with me? (I haven’t been able to find a single one.) Most tutorials cover other test types which haven’t helped yet.
- I have also not been able to get the ‘Get All Actors Of Class Matching Tag Query’ to work as a replacement. Maybe the reasons are connected haha?
Things I have tried already.
- Verified the tags are present on the character being tested. I have now set it up with the default tag container is empty and based on what team is spawns for, it adds ‘friendly’ or ‘hostile’ and ‘alive’ to both. I can print these out from each actor’s gameplay tag container to verify them.
- Tried using the EQS pawn, the test performs the same. Every actor returns a 0.00 score but is not filtered out. This means at runtime it usually defaults to the player ‘winning’.
- Accounted for the fact the query may be looking for exact (any, all, none) or not. I can’t see a way to tell in the test. It doesn’t even look like queries even use exact tests anyway only matches in BPs.
- Tried adding a single tag to query against, single tag to a container, multiple tags in a container. No change in results.
- Adjusted the generator itself to see it that would make a difference, i.e. search for [actors/characters/specficAIclass] within X range. I thought that might mess it up somehow.
- Tried every combination of EQS settings I could think of, in the generator and on the pawn. i.e. single best, all matching, scored, filtered, query matching all, any, none, bool match (t/f) etc. All other types of tests seem to work fine.
- Adjusted the tag hierarchy to make it as simple as possible. (Would redirects be a problem?)
- Created a new project. Setup the EQS, AI, tags etc. again simplified, no luck. (See below)
Trying alternative in BP, this also doesn’t work
What is looking for, setting the team via tags
Simple spawn event to set the team
Tags in question, simplest setup possible
The EQS test that looks for the above tag, set in the above way.
Apologies for the long post but, what in tarnation am I missing???
Any help would be much appreciated!