Best way to update a conversation?

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
Haddicus
Posts: 6
Joined: Sun Feb 19, 2017 1:16 pm

Best way to update a conversation?

Post by Haddicus »

What is the best way to update an existing conversation? I inherited this system, so I'm not really sure what the previous workflow a former programmer used to do these things (he left no documentation), and put all the conversations into a centralized dialog database. A guy who does the writing with ChatMapper, said he wanted to update some specific conversations, but I have no idea how to go about bringing in new versions of these conversations/updating the old ones, through the chat mapper converter (within a large database, that has a lot more than one conversation contained)... Any tips/things I can read about this?

Thanks!

-Haddicus
User avatar
Tony Li
Posts: 22062
Joined: Thu Jul 18, 2013 1:27 pm

Re: Best way to update a conversation?

Post by Tony Li »

Hi Haddicus,

The usual workflow is that the writer's Chat Mapper project contains all of the project's conversations. Then the writer exports it to XML, and you (or he) uses the Dialogue System's Chat Mapper Converter to convert it to a dialogue database. If you tick Overwrite in the Chat Mapper Converter, it will overwrite the dialogue database while still keeping the same GUID so you won't lose any references. (If you use Chat Mapper Commercial, you can import the Chat Mapper project file directly without having to export to XML.)

A more complex workflow is to use multiple dialogue databases.

If you've made edits to the dialogue database that you don't want overwritten by the writer's Chat Mapper project, here are a few approaches:
  • Export the dialogue database to Chat Mapper, and ask the writer to import it before making changes.
  • Or import the writer's new XML file into a new database, in the Dialogue Editor delete everything you don't need, and then merge it into your main database.
  • Or switch to multiple databases using the tips in the links above. In most cases this is more hassle than it's worth, but it depends on the project. The link explains the pro's and con's.
If you want more details on any of these, please let me know.
Haddicus
Posts: 6
Joined: Sun Feb 19, 2017 1:16 pm

Re: Best way to update a conversation?

Post by Haddicus »

Tony,

Thank you for your response. I envisioned going the second route, notably: "Or import the writer's new XML file into a new database, in the Dialogue Editor delete everything you don't need, and then merge it into your main database."

*edit: nevermind - I found the merge feature. Will play around with it. Thanks*

Thanks again,

-Haddicus
Haddicus
Posts: 6
Joined: Sun Feb 19, 2017 1:16 pm

Re: Best way to update a conversation?

Post by Haddicus »

I tried this:

- Created a new database file, utilizing the xml provided to me
- Opened the current dialog build database
- Selected Merge Database
- Dropped new dialog database into the merge segment
- Click merge
- Seems to update (the file itself changes), but I am told that the dialogs were not actually updated

Is there something I'm doing wrong?
Haddicus
Posts: 6
Joined: Sun Feb 19, 2017 1:16 pm

Re: Best way to update a conversation?

Post by Haddicus »

So the issue that I'm having is, the conversations are being imported, but NOT updating the original conversations:
wes.PNG
wes.PNG (17.92 KiB) Viewed 951 times
Is there a way I can reorganize these conversations/replace the originals with the new?
User avatar
Tony Li
Posts: 22062
Joined: Thu Jul 18, 2013 1:27 pm

Re: Best way to update a conversation?

Post by Tony Li »

Hi,

You're welcome to send a copy of your original dialogue database and the new Chat Mapper XML file to tony (at) pixelcrushers.com. I'd be happy to take a look and provide more specific recommendations than what I'm going to provide below. (All customer files are handled confidentially.)


If the Chat Mapper file contains the latest version of all content (all conversations, etc.), then just tick the Overwrite checkbox to overwrite your existing dialogue database. This is by far the easiest way to update content. But it requires the content coming from Chat Mapper to be complete and up-to-date.


If that's not the case, it'll help to explain IDs. The Dialogue System started as a Unity front-end for Chat Mapper. The internal data structure is the same. In Chat Mapper, conversations, actors, items/quests, locations, and variables are all called 'assets'. In each category (conversations, actors, etc.), each Chat Mapper asset has a unique ID number. (In almost all cases, you should never manually change internal ID numbers, as this will break links that point to the old ID number.) This is analogous to the way Unity assigns a unique GUID to every Unity asset.

Like Chat Mapper, under the hood the Dialogue System works with ID numbers except:
  • Conversation Triggers and DialogueManager.StartConversation() reference conversations by their titles, not by IDs.
  • The quest system references quests by their names, not IDs.
If you rename a conversation, you will have to re-select it in the Conversation Trigger's dropdown.

However, I think the first hurdle is to avoid those duplicate conversations when importing updated content from Chat Mapper. Let's look at the conversations "Meeting Wes" and "Wes / Meeting Wes", which I'm guessing are two generations of the same conversation. For example's sake, let's say "Meeting Wes" is the original conversation, and "Wes / Meeting Wes" is the new conversation.

The Dialogue Editor's Merge Database feature works by ID. It has an If IDs Conflict dropdown. Make sure this dropdown is set to Replace Conflicting IDs. If "Meeting Wes" and "Wes / Meeting Wes" have the same IDs, the merge will replace "Meeting Wes" with "Wes / Meeting Wes".

However, if they have different IDs, the new conversation will not replace the original one. This can happen if the writer created an entirely new conversation instead of editing the original one. This is analogous to someone dropping a new texture into a Unity project; it will have a new GUID, so it won't overwrite any existing Unity assets.

If this is the case, it's probably easiest in the long run to manually delete the obsolete conversations. To delete a conversation in the Dialogue Editor, select it from the dropdown. Then right-click anywhere on blank canvas space to open the context menu, and select Delete Conversation. Then ask the writer to maintain the authoritative copy of content in the Chat Mapper project so you can just overwrite the dialogue database with updated versions of the XML file without having to worry about this headache. :-)
Post Reply