Page 1 of 2
Emerald AI Integration
Posted: Wed May 11, 2022 6:06 pm
by parnell
I have Quest Machine, Dialogue System, and Love/Hate.
Quest machine so far has been working great. Got working fetch quests, etc. All working solid.
I installed the integrated package for Emerald AI but once I setup a Quest Giver and then applied EmeraldAI setup the triggers to enter a quest no longer work. Is there a tutorial for how to setup Quest Machine to work with Emerald AI?
I'm mostly looking to make an NPC that wanders around and head tracks the player. Once you enter into the trigger they stop what they are doing and turn to face the player and if the player is in the trigger initialize the quest prompt. Upon completing the quest they could fire off an Emote animation from the Emerald AI Emotes too.
UPDATE:
Ok i dug in a bit more, and can see that most of these scripts need to happen on Quest Action. However, is there a way to have the AI stop moving on trigger enter event?
ie:
On trigger enter I was hoping to set him to stationary (currently set to dynamic) and have him rotate towards the player.
On trigger exit have the NPC then switch back to dynamic.
I did get emotes to play on quest action success so I am understanding that portion of the integration.
Any ideas?
Thanks
Brian
Re: Emerald AI Integration
Posted: Wed May 11, 2022 8:44 pm
by Tony Li
Hi,
As you've seen, Quest Machine's Emerald AI integration provides actions to work with Emerald AI inside quests.
Turning to face the player is kind of out of scope for the integration. You could use a Dialogue System Trigger to rotate the NPC to face the player, start a conversation, and deactivate its AI during the conversation. Assuming you want to control Quest Machine through Dialogue System conversations like
this integration tutorial series, you could set up the NPC something like:
- emeraldAILookTalk.png (50.4 KiB) Viewed 2061 times
Re: Emerald AI Integration
Posted: Wed May 11, 2022 8:54 pm
by parnell
Ahh kk. I'm happy I get figured out the Quest Action setup.
Hopefully, this won't be too tricky to set up the setting to stationary/dynamic stuff on our end then.
Thanks for the info and thanks for the awesome products!
Brian
Re: Emerald AI Integration
Posted: Wed May 11, 2022 8:58 pm
by Tony Li
Glad to help!
Re: Emerald AI Integration
Posted: Mon May 23, 2022 7:56 am
by vectorfrog
Hello,
I'm trying to accomplish something similar to this. I haven't followed any process yet for integrating E-AI and DS or Quest Machine as I'm still gathering requirements.
Basically, I have an NPC character set up as a Quest Giver. This NPC character also is an Emerald AI agent. I have this agent following a path. I want to be able to stop the agent while the player is engaged in getting the quest from them. I am not giving the quest through dialog, as of yet, Just a simple quest dialog, accept, yes/no type thing. Pretty basic.
I'd like the AI to stop following the path while engaged, and then resume when finished. I've tried a Dialog System Trigger, but I don't think I had it set up right, as it didn't work, but I think that might be because I didn't have an actual trigger on the the NPC.
Is this possible and if so, am I on the right track?
Thanks!
Re: Emerald AI Integration
Posted: Mon May 23, 2022 8:43 am
by Tony Li
To make an Emerald AI character stop, call its EmeraldAISystem component's Deactivate() method. To make it resume its pathfinding, call Activate().
The screenshot above shows how to do that with a Dialogue System conversation, which uses the Dialogue System's OnConversationStart and OnConversationEnd events.
Quest Machine, on the other hand, sends messages using the Pixel Crushers message system. When Quest Machine dialogue starts and ends, it sends the message "Pause Player" and "Unpause Player". You could configure your AIs to listen for these messages, such as:
- pauseEmeraldAI.png (71.42 KiB) Viewed 2007 times
Note: Since "Pause Player" and "Unpause Player" are sent globally, all AIs with this component setup will stop during dialogue -- which may actually be exactly what you want. If not, let me know and I'll describe how to manage a single AI.
Re: Emerald AI Integration
Posted: Mon May 23, 2022 10:31 am
by vectorfrog
Hmm. I tried this and doesn't seem to be working. The quest dialog opens like it supposed to but the AI agent still follows the path and moves away from the player.
I'd like it to only affect the AI that I have configured and not the other AI agents when the player triggers the quest dialog.
Re: Emerald AI Integration
Posted: Mon May 23, 2022 11:02 am
by Tony Li
Hi,
Looks like you'll also need to set NavMeshAgent.isStopped since Emerald AI doesn't stop its NavMeshAgent when deactivated.
Since you only want to affect the NPC that the player is speaking with, you can listen for the "Greeted" message. Continue to listen for the "Unpause Player" message to know when to resume the NPC's AI. You can wrap this into a subclass of QuestGiver. Here's an EmeraldAIQuestGiver script that I'll include in the next release of the Emerald AI Support package:
QM_EmeraldAIQuestGiver_2022-05-23a.unitypackage
If you replace your QuestGiver component with EmeraldAIQuestGiver, the NPC should stop while the player is talking to it.
Re: Emerald AI Integration
Posted: Mon May 23, 2022 11:36 am
by vectorfrog
I replaced the normal Quest Giver component with this one, and it didn't stop, and also quit following the path. Looks like it lost all NavMesh abilities because it's not navigating around obstacles either.
Re: Emerald AI Integration
Posted: Mon May 23, 2022 11:43 am
by Tony Li
You're getting there; at least it's stopping navigation during dialogue. Can you send a
reproduction project to tony (at) pixelcrushers.com?