Error only Lists entire database

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
angelmcc
Posts: 10
Joined: Thu Dec 29, 2016 7:08 pm

Error only Lists entire database

Post 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...
User avatar
Tony Li
Posts: 21962
Joined: Thu Jul 18, 2013 1:27 pm

Re: Error only Lists entire database

Post 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?
angelmcc
Posts: 10
Joined: Thu Dec 29, 2016 7:08 pm

Re: Error only Lists entire database

Post 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?
User avatar
Tony Li
Posts: 21962
Joined: Thu Jul 18, 2013 1:27 pm

Re: Error only Lists entire database

Post 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?
User avatar
KrymsonVerse
Posts: 6
Joined: Sat Jul 25, 2020 3:49 am

Re: Error only Lists entire database

Post 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?).
User avatar
Tony Li
Posts: 21962
Joined: Thu Jul 18, 2013 1:27 pm

Re: Error only Lists entire database

Post 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.
User avatar
KrymsonVerse
Posts: 6
Joined: Sat Jul 25, 2020 3:49 am

Re: Error only Lists entire database

Post 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?
User avatar
Tony Li
Posts: 21962
Joined: Thu Jul 18, 2013 1:27 pm

Re: Error only Lists entire database

Post 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.
User avatar
KrymsonVerse
Posts: 6
Joined: Sat Jul 25, 2020 3:49 am

Re: Error only Lists entire database

Post 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.
User avatar
Tony Li
Posts: 21962
Joined: Thu Jul 18, 2013 1:27 pm

Re: Error only Lists entire database

Post 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.
Post Reply