x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Office Holiday

Epic Games' offices will be on holiday from June 22nd to July 7th. During this period support will be limited. Our offices will reopen on Monday, July 8th. 

Using EQS in Behavior Trees

I'm looking for a way to incorporate my EQS tests into my Behavior trees but am having a bit of a problem grabbing some of the data related to the character performing the test. I have made my variable in the EQS test able to be set via a named value, Specifically Team.

 UPROPERTY(EditDefaultsOnly, Category = Team)
 FEnvIntParam Team;

But when I go to actually use the test in a behavior tree, It expects a literal value. Is it possible to set this to a blackboard value or call the eqs test from within another task or service? Assuming this is even possible, Would I have to create a custom generator to pass a blackboard value to the ActorsOfClass generator? Specifically Radius so I can set it to the AI's vision radius?

As an addition to this is it possible to call this EQS call as a service rather than a task? My task is specifically looking for enemies within range and choosing the closest one so having it as a "background process" would be best as it would allow targets to be updated every 0.5 seconds or so as well as allowing path-finding weights to be adjusted at the same time in case an ally is blocking the path (assuming the PathLength from querier test includes avoidance).

Product Version: Not Selected
Tags:
more ▼

asked Dec 10 '14 at 08:59 PM in C++ Programming

avatar image

Justin.Dooley
2.1k 104 72 163

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

If you need team information while performing test why not grab it directly from the querier during the actual RunTest call? Or am I missing something?

Reading AI senses properties, blackboard values and what not will be possible with EQS' upcoming change.

Regarding running EQS queries in a Service rather than a task, sure you can do that, but you'll need to implement that service yourself. Or wait for us to do it (should be really easy, I might be able to squeeze it in soon).

Cheers,

--mieszko

more ▼

answered Dec 10 '14 at 09:06 PM

avatar image

MieszkoZ STAFF
7.3k 223 57 412

avatar image Justin.Dooley Dec 10 '14 at 09:23 PM

I got the Targets team but didn't think to get the querier's team. I guess that would solve the issue. We are only working on release builds so I'll look into creating the service EQS call for now.

What's changing in EQS that would make it impossible to read blackboad and AI senses? Something like sight radius ties in so nicely. I guess we could always hard-code checks in to the c++ but it seems a bit more limiting.

avatar image MieszkoZ STAFF Dec 10 '14 at 09:29 PM

Reading AI senses properties, blackboard values and what not will be possible with EQS' upcoming change.

I meant whatnot :) That will totally be possible. And easy!

avatar image Justin.Dooley Dec 10 '14 at 09:50 PM

Just as a quick follow up, the context helpers confuse me a bit. What are they for? My first thought was to call QueryInstance.Owner.Get() and cast it. But I see you using a UEnvQueryContext_Querier.

avatar image MieszkoZ STAFF Dec 16 '14 at 12:03 PM

Query instance's owner doesn't have to be a pawn, or even an actor. It's someone or something (like an AI subsystem) that asked EQS to process the query, and is probably interested in the results, but it doesn't have to be the "querier" which in EQS terms means it's the actor that's the logical "center" of the query, as if it was that actor that asked the question.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question