Page 11 of 14
Re: About Dialogue Actor component
Posted: Mon Mar 22, 2021 6:37 am
by CHOPJZL
Hi,
About the EntryTag. If a conversation between Actor AAA and BBB is running by CCC and DDD, will the EntryTag follow the change?
Re: About Dialogue Actor component
Posted: Mon Mar 22, 2021 10:58 am
by Tony Li
Hi,
No. It uses the entry's actor -- if the entrytag format includes the actor. If the entrytag format is ConversationTitle_EntryID or VoiceOverFile, it doesn't matter since those formats don't reference the actor.
The entrytag is specific to each active conversation, however. If two conversations are active, their entrytags will be unique to each conversation.
Re: About Dialogue Actor component
Posted: Mon Mar 22, 2021 11:13 am
by CHOPJZL
What should I do if I want to have a different EntryTag when the Actor becomes CCC?
Re: About Dialogue Actor component
Posted: Mon Mar 22, 2021 12:18 pm
by Tony Li
Hi,
You can define your own tag and replace it in an OnConversationLine method. The Subtitle object will have all the info you need.
Re: About Dialogue Actor component
Posted: Sat Apr 03, 2021 7:20 am
by CHOPJZL
Hi,
How is the progress of adding record to sequencer?
I almost forgot, Last month when we talked about showing response or random NPC line in according to the CharacterType of the Speaker, I made a small modification in ConversactionModel
In GetCharacterInfo(int id, Transform character) around line 581
Code: Select all
// original is
// CharacterInfo characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), portrait);
CharacterInfo characterInfo;
if (updateCharType)
{
characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(actorID), portrait);
}
else
{
characterInfo = new CharacterInfo(actorID, nameInDatabase, character, m_database.GetCharacterType(id), portrait);
}
In EvaluateLinksAtPriority() around line 383
Code: Select all
// original is
// CharacterType characterType = m_database.GetCharacterType(destinationEntry.ActorID);
CharacterType characterType;
if (updateCharType)
{
var charInfo = GetCharacterInfo(destinationEntry.ActorID);
characterType = m_database.GetCharacterType(charInfo.id);
}
else
{
characterType = m_database.GetCharacterType(destinationEntry.ActorID);
}
In this way, everytime encounter a branch, it will become response selection if the speak's type is Player, it will become a random NPC line if the speak's type is not Player.
I did some simple test and it works as I want. Is there any hidden problem in this modification? If there is no problem, I hope this can be added to DS. If it is not appropriate to add, I'd like to have a way to use custom(subclass) of Conversation Model/View/Control.
The bool "updateCharType" could be added in the display settings.
Re: About Dialogue Actor component
Posted: Sat Apr 03, 2021 8:21 am
by Tony Li
Hi,
In version 2.2.16, sequencer commands will have access to the active conversation record, unless QA testing turns up an issue.
I'll also try to get updateCharType into 2.2.16.
Re: About Dialogue Actor component
Posted: Sat Apr 03, 2021 8:59 am
by CHOPJZL
I found a small issue about my modificatin.
If updateCharType=true at the beginning of the conversation, during conversation I can set it to false to let branch act like before. This is fine.
But if updateCharType=false at the beginning of the conversation, I suppose I can't set it to true to enable this feature. As the CharacterInfo is already in m_characterInfoCache.
This may need some more work when you add it.
------------------
I think over it again and updateCharType=true at beginning won't allow change to false during conversation, either. I suppose a method of refreshing m_characterInfoCache is needed when set updateCharType
Re: About Dialogue Actor component
Posted: Wed Apr 14, 2021 5:36 am
by CHOPJZL
Hi,
How are the progress of
1. sequencer/commands have access to the active conversation record.
Is it pushed to 2.2.17?
2. Per conversation displaysettings.
It's better to be able to set it in StartConversation(). Then I can create a displaysettings and pass it as a variable. It will be Actor free like ForceOverrideSubtitle()
3. updateCharType.
This is actually a edge case so it can wait.
4. more than 2 conversant in conversation.
I know this one is huge. Just asking if there is any chance it can be implemented.
Re: About Dialogue Actor component
Posted: Wed Apr 14, 2021 9:35 am
by Tony Li
Hi,
Yes, these got pushed to 2.2.17. I ran out of development time. I'll try to send you patches as I implement each one.
Would you please remind me what this one means? "4. more than 2 conversant in conversation."
Re: About Dialogue Actor component
Posted: Wed Apr 14, 2021 10:20 am
by CHOPJZL
Would you please remind me what this one means? "4. more than 2 conversant in conversation."
It is almost at the beginning of this thread on Mar 07, when you explain the Character GameObject Assignments feature, I said about making the Conversation Conversants to be a list. In this way we can make the conversation reusable for more than 2 participants.