Page 1 of 1

Error only Lists entire database

Posted: Thu Dec 31, 2020 12:04 am
by angelmcc
Hi, Tony, et. al.
I've hit an odd snag. I'm getting a DialogueSystem error that is just listing everything in the database. It doesn't give me any other information. Have you seen this before. I'm checking recent changes to see if I input a string incorrectly, but so far, I haven't found anything.

Here's the beginning of the error (it's quite long, including all actors, events, etc., and then truncates because it's too long):
Dialogue System: Lua code 'Variable={Alert="", ["00ARGSet"]=false, ["00BackYard"]=0, ["00BYHint01"]=0, ["00BYHint02"]=0, ["00BYHOGDone"]=false,...

When I click on the error, it takes me to this:
catch (Exception e)
{
if (Debug.isDebugBuild && !muteExceptions) Debug.LogError(string.Format("{0}: Lua code '{1}' threw exception '{2}'", new System.Object[] { DialogueDebug.Prefix, luaCode, e.Message }));
if (allowExceptions) throw e; else return null;
}

But, the error message is truncated (too long, I suppose), so I can't see what the exception is.

Any ideas?

Thank you so much!
Angel...

Re: Error only Lists entire database

Posted: Thu Dec 31, 2020 8:19 am
by Tony Li
Hi Angel,

The Lua code in that error message is repopulating the Dialogue System's Lua environment with saved data. This means it's happening when changing scenes or loading saved game data. If your scene has a Dialogue System Saver, make sure it has a unique key.

If you click on the error in the Console window, do the details at the bottom show a stack trace? If so, can you post a screenshot?

Re: Error only Lists entire database

Posted: Sat Jan 02, 2021 10:09 am
by angelmcc
Hi, Tony. :)

This is what's at the end of the error. I think it runs out of space?

Conversation[486].SimX="1;u;2;u;3;u;4;u;5;u;6;u;7;u;0;u"; Conversation[487].SimX="1;u;2;u;3;u;4;u;5;u;0;u"; Conversation[488].SimX="1;u;2;u;3;u;4;u;5;u;6;u;0;u"; Conversation[489].SimX="1;u;2;u;3;u;0;u"; Conversation[490].SimX="1;u;2;u;3;u;4;u;0;u"; Conversation[491].SimX="1;u;0;u"; Conversation[492].SimX="1;u;2;u;3;u;4;u;5;u;6;u;0;u"; Conversation[493].SimX="1;u;2;u;3;u;4;u;5;u;6;u;7;u;8;u;0;u"; Conversation[494].SimX="1<message truncated>

Is there a way for me to pull the entire error into Notepad or something?

Re: Error only Lists entire database

Posted: Sat Jan 02, 2021 12:28 pm
by Tony Li
Hi,

As a test, you can try unticking the Dialogue Manager's Other Settings > Use SimStatus. It will make the Console log output shorter. But that's just a debugging step; it's not the solution.

At what point does this error occur? What's going on in the game when it happens?

Re: Error only Lists entire database

Posted: Tue Jan 05, 2021 11:47 pm
by KrymsonVerse
Hi Tony,

I'm one of the programmers working on the project with Angel.

At the end of sessions we store the save string from PersistentDataManager.GetSaveData along with other values from our state manager hash to file. At the start of sessions we load that string from file and pass it to PersistentDataManager.ApplySaveData(string).

The error occurs when loading player data from file if dialogue variables have changed between sessions (added? renamed?).

Re: Error only Lists entire database

Posted: Wed Jan 06, 2021 9:07 am
by Tony Li
Hi,

What version of the Dialogue System are you using in your project? Have you tried updating to the latest version? (If so, back up your project first, same as when importing any package or update from anywhere.)

Also tick the Dialogue Manager's Persistent Data Settings > Initialize New Variables checkbox.

Temporarily untick the Dialogue Manager's Other Settings > Include Sim Status checkbox and set Other Settings > Debug Level to Info. Then play, save the game, and load it. Does the Console log a shorter error message that's not truncated? When you call GetSaveData(), it should also now log a line similar to:

Dialogue System: Saved data: XXX

where XXX is the save data. Please post that here or in a private message if you prefer.

Re: Error only Lists entire database

Posted: Mon Jan 11, 2021 12:19 am
by KrymsonVerse
Hi Tony,

Updating from 2.2.11 to 2.2.14 seems to have resolved the displayed Dialogue System error, but my event catching script attached to the Dialogue System Controller game object no longer seems to be receiving OnConversationEnd events (I am seeing OnConversationStart events) in the latest revision.

Has the criteria for a conversation ending changed in recent revisions?

Re: Error only Lists entire database

Posted: Mon Jan 11, 2021 10:22 am
by Tony Li
Hi,

No, that should be the same.

Please temporarily set the Dialogue Manager's Other Settings > Debug Level to Info.

When the conversation starts, it will log something like:

Dialogue System: Starting conversation 'Title' with actor=XXX and conversant=YYY

Make sure that XXX and YYY are the GameObjects you expect. OnConversationStart/End will be run on the Dialogue Manager, XXX, YYY, and their children. (more info)

When the conversation ends, it will log:

Dialogue System: Ending conversation.

If you don't see this message, then the conversation isn't ending properly.

Re: Error only Lists entire database

Posted: Sun Jan 17, 2021 11:39 pm
by KrymsonVerse
Hi Tony,

I believe I found the issue.

After closing the conversation and debug logging the "Ending conversation" message the Dialogue System attempts to inform the participants and the Dialogue Manager. Informing participants is then exiting early due to a bool "isWarmingUp" on the DialogueSystemController.

This bool is being set to true during WarmUpConversationController and then itself exiting early due to not being able to find an applicable Canvas object (we're using NGUI for our UI solution so it will not find a Canvas). This prevents the warmup from completing and thus the flag from being set to false.

As a work around I have set Warm Up Conversation Controller to Off on the Dialogue System Controller. It seems to have a negligible impact on the first conversation of the game session, but wanted to call out my findings in case this is not behaving as desired.

Re: Error only Lists entire database

Posted: Mon Jan 18, 2021 8:38 am
by Tony Li
Hi,

Sorry about the labyrinthine debug process you had to go through there. I have fixed that bug for version 2.2.15. If it doesn't find a canvas (e.g., using NGUI), it will not set isWarmingUp true in the first place.