Search Unity

  1. We are migrating the Unity Forums to Unity Discussions by the end of July. Read our announcement for more information and let us know if you have any questions.
    Dismiss Notice
  2. Dismiss Notice

[RELEASED] Dialogue System for Unity - easy conversations, quests, and more!

Discussion in 'Assets and Asset Store' started by TonyLi, Oct 12, 2013.

  1. ronaldomoon

    ronaldomoon

    Joined:
    Jan 24, 2014
    Posts:
    87
    I've read over the comments regarding saving and loading in a particular scene a few times, watched the latest video, and I've read the save/load section of the documentation. I'm still having trouble grasping exactly what I need to do to make this all come together.

    I have two scenes: exterior001 and interior001. The player object is persistent and I want to keep it this way rather than having a different player object in each scene as in the multiple database tutorial. I made a door prefab with a sequence trigger that fades out, changes scenes and then fades back in. I also customized the LoadLevel sequencer command (from the aforementioned tutorial) and added public variables as parameters to define the position at which to spawn at in the next scene so I can easily set up multiple points of entry/exit in different scenes.

    All of that works just fine.

    What I can't quite figure out is what else I need to do from here to make it so that when I load a save game, I'm not only in the same position but also in the same scene.

    I copied the menu and quest log from the Feature Demo and customized it to my liking and that's working fine too. But of course, when I click save game in the menu and then load, it loads at the right position, but not in the correct scene.

    Could you possibly make it so that Persistent Position Data also saves/loads the scene and not just the transform? Perhaps make it optional for those that don't really need it? Or am I just a few steps away from getting this to work and if so can you get me going in the right direction? It seems like this could be pretty useful for keeping track of other things as well, such as NPCs.

    Edit: I realized I needed a custom Persistent Data component on my player to save the scene name so I added one with this under OnRecordPersistentData() :

    savedLevel = Application.loadedLevelName;
    DialogueLua.SetVariable("SavedLevelName", savedLevel);

    I then added the line Application.LoadLevel(DialogueLua.GetVariable("SavedLevelName"); right after applying save data under LoadGame() in the Feature Demo menu script.

    I get a compile error on the Feature Demo script when adding this line. It says "Unexpected symbol ';', expecting ')' or ','.

    I feel like I'm getting close and I'm just overlooking something really obvious.

    Edit 2: Not sure why that space is there in "SavedLevelName" it doesn't show up when editing the post and it's not in my script. Just thought I'd mention that so no one would think that was causing the problem.
     
    Last edited: Mar 23, 2014
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi ronaldomoon, Loading and saving the current level has been on my internal to-do list for a while, but I haven't formally put it on the roadmap because it's so project-dependent. It has to work differently depending on whether you're loading each scene separately like independent zones, or constructing levels additively, or streaming pieces in and out in a continuous world. That said, here's code to load scenes as individual zones. I'll include a more detailed version in the next release.

    If you're modifying FeatureDemo.cs::
    Code (csharp):
    1.  
    2. private void LoadGame() {
    3.     if (PlayerPrefs.HasKey("SavedGame")) {
    4.         string saveData = PlayerPrefs.GetString("SavedGame");
    5.         GetComponent<LevelManager>().LoadGame(saveData);
    6.     } else {
    7.         DialogueManager.ShowAlert("Save a game first");
    8.     }
    9. }
    10.  
    This depends on a new script named LevelManager.cs, shown below. Add it to your Dialogue Manager object, and also move FeatureDemo.cs onto the Dialogue Manager object so it sticks around when you change levels. Also define the variable SavedLevelName in your dialogue database. If you use multiple dialogue databases, it should be in the Dialogue Manager's initial database.
    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System.Collections;
    4. using PixelCrushers.DialogueSystem;
    5.  
    6. public class LevelManager : MonoBehaviour {
    7.  
    8.     public string defaultStartingLevel; // Load this level as a fallback.
    9.  
    10.     public void LoadGame(string saveData) {
    11.         StartCoroutine(LoadLevel(saveData));
    12.     }
    13.  
    14.     private IEnumerator LoadLevel(string saveData) {
    15.         // Put saveData in Lua so we can get Variable["SavedLevelName"]:
    16.         Lua.Run(saveData, true);
    17.         string savedLevelName = DialogueLua.GetVariable("SavedLevelName").AsString;
    18.         if (string.IsNullOrEmpty(savedLevelName)) savedLevelName = defaultStartingLevel;
    19.  
    20.         // Load the level:
    21.         Application.LoadLevel(savedLevelName);
    22.  
    23.         // Wait two frames for objects in the level to finish their Start() methods:
    24.         yield return null;
    25.         yield return null;
    26.  
    27.         // Then apply saveData to the objects:
    28.         PersistentDataManager.ApplySaveData(saveData);
    29.     }
    30.  
    31.     public void OnRecordPersistentData() {
    32.         DialogueLua.SetVariable("SavedLevelName", Application.loadedLevelName);
    33.     }
    34. }
    35.  

    Looks like it's just missing the second close-parenthesis. Try:
    Code (csharp):
    1. Application.LoadLevel(DialogueLua.GetVariable("SavedLevelName"));

    EDIT: If you'd like access to the customer download page, where you can download new releases of the Dialogue System before they're available on the Asset Store, please PM me your invoice number.
     
    Last edited: Mar 23, 2014
  3. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Hi TonyLi,

    Since you are spending some time on this could you setup the save demo to have a persistent character as well? I suppose that will mean that there should be some way to setup the character location (for where they will appear in the next scene) in the loadlevel sequence.

    PS: I had to add the LevelManager.cs to the FeatureDemo object which I then moved under Dialog Manager object to get rid of an error relating to GetComponent<LevelManager>().LoadGame(saveData); when saving. This seems to have solved my issue and I can now save in one Scene, go to other scenes (or start in other scenes) and then load my saved game :) Thanks!

    I understand that there are many different needs for saving but the ones you listed seem to cover most any situation I would need anytime soon. Especially the one you made an example for - Character needs to be able to go from scene to scene and have a way to save the spot and get back to it. Perfect!

    Thanks,

    Lee
     
  4. ronaldomoon

    ronaldomoon

    Joined:
    Jan 24, 2014
    Posts:
    87
    Thanks so much, Tony! This does exactly what I need it to do and it works like a charm! I did have an error at first but following Lee's advice remedied that.

    I tried this and several other things last night before posting. Adding a second close-parenthesis caused two more errors to pop up. I seem to remember something about a problem with arguments for Application.LoadLevel. But that doesn't matter now because this little system you've devised works really well. Thanks again!

    And thanks for your input as well, Lee!
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    I'm glad it's working for both of you, and thanks for mentioning the fix, Lee! The release version will use the same interface -- LevelManager.LoadGame(saveData) -- so you won't have to update any of your own code. But it will be more robust, provide optional hooks for Unity Pro users to use LoadLevelAsync, and handle persistent characters, too.
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Patch 1.1.9.1b is now available on the customer download page. The primary reason for this patch is to update the support package for changes in uSequencer 1.3.5. You only need to apply this patch if you have upgraded uSequencer to 1.3.5+, are using the Aurora (NWN) Toolset Converter, or are affected by the two bug fixes,

    Version 1.1.9.1b:
    • Fixed: DialogueLua.SetXXXField() and SetVariable() now allow setting null values.
    • Fixed: Actor/Item/Quest text fields with line breaks weren't being handled properly by Lua.
    • (uSequencer) Updated support for uSequencer 1.3.5's new namespace.
    • (Aurora NWN Converter) New: Clear buttons to Dlg and Jrl sections.
    • (Aurora NWN Converter) New: "Entry # End" Boolean field to reflect journal entries' "End" tag.
    • (Aurora NWN Converter) Fixed: Conditions on replies weren't being added.
    • (1.1.9.1a) New: BarkDialogueUI and Bark Conversation example scene.
    • (1.1.9.1a) Improved: Bark lines can now also come from PC dialogue entries.
    • (1.1.9.1a) New: Export to Chat Mapper XML (alpha feature)
    • (1.1.9.1a) Changed: Added Trackable field. Set to allow/disallow tracking. Continue to use Track to enable/disable tracking.
    If you need access to the download page, please PM me your invoice number.

    The upcoming full 1.2.0. release will include the changes above, plus level loading/saving, the ability to run code whenever a quest state changes, and of course updated documentation for everything mentioned.
     
  7. EDarkness

    EDarkness

    Joined:
    Feb 1, 2013
    Posts:
    506
    Tony, just a little update on my bark problem, it seems that I got it working. Your suggestion of making bark conversations is a good one. Though, it still is a little "kludgy", but it works. Perhaps you should think about a different solution that is easier to implement something that works easily out of the box.

    Still, thanks for the help. Looks like my game trailer is now finished. Woot!
     
  8. ronaldomoon

    ronaldomoon

    Joined:
    Jan 24, 2014
    Posts:
    87
    Edit: I found the problem. Explanation at the end of the post for those who may run into the same issue...

    I've got another question for you, Tony, when you've got the time.

    My quest window (copied from the Feature Demo) is not working correctly with my character/camera setup. In my project I have a first person character object from the Unity Sample Assets (beta) from the asset store, not the one that comes with the built-in standard assets. I'm using the Enabled on Dialogue Event component on the various components for controlling the character, camera, and the selector component and that is all working fine. The Feature Demo menu works just fine too.

    The Quest Log works, but when I load it, it seems the mouse-lock is turning on as the cursor disappears and I have to hit escape again to get it back. I can then click on buttons in the Quest Log and they behave as they should but the cursor disappears again with every click and I have to hit escape again to get it back.

    I have tried making a clean scene, copying the Dialogue Manager Feature Demo object into it, and adding the first person character with no other modifications to any of those objects and I still had the same result. If you want to replicate the problem you should be able to do so by doing what I just described. The first person character object I'm using can be found in this asset: https://www.assetstore.unity3d.com/#/content/14474

    Any advice you can provide will be greatly appreciated.

    Edit: I just tried adding the First Person Character prefab into the Feature Demo scene, disabled the other player object and ran it. I still had the cursor issue. Just thought I'd mention that.

    Edit #2: Here's how I fixed it: Uncheck 'Lock Cursor' in the First Person Character (Script) component. (This should have been an obvious first step...) Then change void Update() in FeatureDemo.cs (or whatever your menu/quest log control script is called) to the following and it should work just fine:

     
    Last edited: Mar 24, 2014
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi EDarkness, with your experience working on chained barks, do you have any suggestions to make them easier to implement? Also, please post a link to your trailer!

    Hi ronaldomoon, thanks for sharing this! I'll incorporate your findings into the next release. Please keep in mind that FeatureDemo.cs is just an example script for the demo scene, but if it serves as a starting point for your own work, then that's even better.
     
  10. DieHappyGames

    DieHappyGames

    Joined:
    Feb 24, 2014
    Posts:
    44
    Hey Tony,

    Maybe you're already working on it, maybe you've already rejected the idea, but just wanted to put it out there that support for Adventure Creator would be really great to see. Not sure if you're familiar with the product, but it's a popular and incredibly well-made toolkit for building 2/2.5/3D adventure games and the one thing it doesn't handle particularly well is dialogue creation - their pipeline in that area is much more convoluted and less visual than your own, on top of lacking the expandability of Lua incorporation.
     
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi Dave, it must be fate. I've received three requests in less than a week to support Adventure Creator. It's a bit of a tall order since there's so much overlap to mesh together, but I'm looking into it!
     
  12. DieHappyGames

    DieHappyGames

    Joined:
    Feb 24, 2014
    Posts:
    44
    I'll have my fingers crossed.
     
  13. ACarrozzini

    ACarrozzini

    Joined:
    Mar 24, 2013
    Posts:
    16
    Hi Tony,

    Hope you're doing well...

    I use Chat Mapper and have 3 conversations for the same NPC with 3 conditions :
    - conversation 1 => condition 1
    - conversation 2 => condition 2
    - conversation 3 => condition 3

    Then I put 3 Conversation Triggers Scripts on the NPC, each one pointing to a conversation :
    - conversation trigger 1 => conversation 1
    - conversation trigger 2 => conversation 2
    - conversation trigger 3 => conversation 3

    It seems to work perfectly with conversation 1 but when I try to run conversation 2,3. Nothing happens.

    Should I have 1 conversation per NPC with 3 branches ? And one conversation triggers script per NPC ?

    Hope my explanation is clear :D
     
  14. DieHappyGames

    DieHappyGames

    Joined:
    Feb 24, 2014
    Posts:
    44
    tbgd, If I understand correctly, the issue is that the conversation trigger components fire sequentially and in your instance, the conditions for conversation 1 are always met, so it keeps firing the same conversation over and over. You can use the "Once" flag so that after a conversation has played, it can never replay, which would cause conversation 2 to fire after conversation 1, etc. or you could use a Lua variable if you wanted something more complex, such has having the conversations fire sequentially and then loop at the end.
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    What DieHappyGames said. :)

    When you test conversation 2, are you sure conversation trigger 1's condition is false and conversation trigger 2's condition is true?

    Try setting the Dialogue Manager's Debug Level to Info. You can also email the resulting editor log file to tony (at) pixelcrushers (dot) com and I'll be happy to take a look at it.

    This method also works; it's your choice. I like to put as much as possible in Chat Mapper, so I would personally use this method. But it's up to you.
     
  16. DieHappyGames

    DieHappyGames

    Joined:
    Feb 24, 2014
    Posts:
    44
    Hey Tony, just greasing the wheels a bit... From what I understand, cross-compatibility between DS and Adventure Creator would look very similar to what you did for Playmaker support. AC does most everything through Actions and much like your sequencer, you can add custom Actions. In fact, with AC's third-party support for Playmaker, as well as your own, I believe I can currently use Playmaker and an intermediary between AC and DS - obviously, that's a pretty clunky way of doing it, but should suffice while I wait and hope for native AC support in DS. Just a thought - looking at how AC's Actions work, it reminded me a lot of how you incorporated DS into Playmaker. :)
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Good news, everyone! Adventure Creator support is coming in 1.2.1. The current plan is to use the Dialogue System's dialogue UI, since it's more robust. I'm putting the Lua-script-for-quest-entries suggestion on hold while I prototype to find the best way to handle it. Version 1.2.0 is otherwise done and just needs to go through QA, after which I'll start on Adventure Creator integration.
     
  18. DieHappyGames

    DieHappyGames

    Joined:
    Feb 24, 2014
    Posts:
    44
    I wish there was a "Like" button on the forums :) Very great to hear - thanks, Tony!
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    The Dialogue System for Unity version 1.2.0 is available for immediate download on the Pixel Crushers customer download site, and should be available on the Asset Store in 7-9 days. If you need access to the download site, please PM me your invoice number.

    Version 1.2.0:
    • New: LoadLevel() sequencer command.
    • New: Bark Dialogue UI to run conversations using actors' bark UIs.
    • Improved: Dialogue Editor sort button for quest fields, multi-line text areas for quest entries.
    • Improved: Lines assigned to the Player can now be used for barks.
    • Changed: Dialogue Manager keeps original emphasis settings when adding new databases.
    • Changed: Added Trackable field to Quest/Item table.
    • Changed: (Internal change) bark subtitle objects now use speaker instead of listener; no effect to end user.
    • Fixed: When configured as a singleton, Dialogue Manager now won't create a ghost copy when referenced while application is quitting.
    • Fixed: DialogueLua.SetXXXField SetVariable now allow setting to null.
    • Fixed: Actor/Item/Quest text fields with line breaks weren't being handled properly by Lua.
    • (Chat Mapper) New: Export to Chat Mapper XML feature.
    • (uSequencer) Updated support package for uSequencer 1.3.5's new namespace.
    • Save/Load System improvements:
      New: Level Manager Component to load player's saved level when loading saved games.
      Improved: PersistentPositionData added option to track current level in PersistentPositionData.
      Improved: PersistentDataManager added includeSimStatus property. Now also records quest entry states.
    • Aurora Toolset (Neverwinter Nights) Converter improvements:
      New: Clear buttons to Dlg and Jrl sections.
      Improved: Can convert Jrl files by themselves now.
      Improved: Journal entries now include the "End" tag from Jrl files.
      Fixed: Conditions on replies weren't being added.
    The Examples folder contains new examples for quests (based on the quests tutorial) and the save/load system.

    (Next up: Adventure Creator support!)
     
  20. ChunkoGames

    ChunkoGames

    Joined:
    Jul 15, 2013
    Posts:
    20
    Hey, how do I find the license key? the writer on my project wants to add the dialogue to the game, but he said he needs the license key. I don't know where to get this.

    Also we need an answer soon.
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi, the Dialogue System doesn't have or require a license key. Maybe he's talking about a Chat Mapper or articy:draft license key? Or a Unity license key? The Dialogue System can also import from the Neverwinter Nights Aurora toolset, so he could mean a Neverwinter Nights 1 or 2 key.
     
    Last edited: Mar 29, 2014
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Adventure Creator v1.28 now has a node-based dialogue editor. Is there still interest in using the Dialogue System to run conversations in Adventure Creator projects?
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Thank you for your feedback in email and PMs! Development on Adventure Creator support will still be added to the next release, to provide these requests:
    • articy:draft import
    • Chat Mapper import
    • Ability to use more sophisticated conversation UIs in any GUI system (NGUI, DF-GUI, etc.)
     
  24. RayWolf

    RayWolf

    Joined:
    Mar 24, 2012
    Posts:
    87
    Hi ToniLi,

    just wanted to say. its a great asset! :) I switched to DF-GUI en tirely for my project and Im still using an older release, planning to upgrade soon tho.

    Im very happy with typing my dialogues within chat mapper and putting it directly into unity wiht all the branches and things in it. This is real and superb workflow.

    Thx for the great support you gave me at the first release versions of the Dialogue System. And great you are making it compatible to other assets like Adventure Creator or tools like Articy:Draft. This helps experimenting alot for us Indie-Developers.

    many greetings from germany! :)
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi RayWolf, thank you for the feedback! I sent you a PM with access information for the customer download site in case you need it. Recent versions of the Dialogue System include a lot of enhancements for articy:draft and Chat Mapper, such as XML export, so you'll definitely want to check the latest version!
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Version 1.2.0 is now available on the Asset Store!

    Please see the Release Notes (also in a post above) for full details.

    Some reminders:
    • Quests: When you update, and if you use the quest system, please keep in mind that there's a new Trackable field that specifies whether the player can choose to track the quest or not. This is in addition to the existing Track field, which specifies whether tracking is currently active or not.
    • Barks:You can now use BarkDialogueUI to run a non-interactive (but still dynamic) conversation using the participants' bark UIs. You can also now use lines assigned to the PC in barks.
    • uSequencer:If you've upgraded to uSequencer 1.3.5+, import the new support package, which uses uSequencer's new namespace.
    • XML Export:You can now export dialogue databases to Chat Mapper XML format. If you have Chat Mapper, you can import this XML into it. Even if you don't have Chat Mapper, this feature lets you create text-based copies of your dialogue databases if you want them.
    If you have any questions about the Dialogue System or suggestions for enhancement, please post here or email me any time at tony (at) pixelcrushers (dot) com!
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Patch 1.2.0a is available on the customer download site. If you need access, please PM me your invoice number. Import patch 1.2.0a on top of your existing version 1.2.0 installation. It includes these changes:
    • Unity GUI updates:
      - Auto-Size grows in the direction specified by Alignment instead of growing equally in all directions.
      - Fixed: Panels are now positioned correctly when Clip Children is unticked.
      - Fixed: Rich text codes use lowercase hex characters, since Unity GUI doesn't handle uppercase characters well.
    • Changed: At the end of conversations, Lua observers are updated before the Alert variable is checked and cleared. (Important if you're observing Variable["Alert"] at EndOfConversation.)
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
  29. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Gratz. Your app is worth it.
     
  30. ChunkoGames

    ChunkoGames

    Joined:
    Jul 15, 2013
    Posts:
    20
    I'm having a lot of trouble with the way in which text is printed to the dialogue box right now. At the moment the text appears to the user character by character when someone is talking.

    1: How do I get the text to all appear instantly
    2: How would I go about adding a continue button to make the current line of text appear instantly.

    I checked the documentation, and I think it was outdated. The menu they referred me to did not exist.
     
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi ChunkoGames, on your dialogue UI, disable or remove the Typewriter Effect component. If you're using a prefab UI provided with the Dialogue System:
    1. Add the prefab to your scene.
    2. Select the menu item GameObject > Break Prefab Instance to prevent changes from affecting the original prefab.
    3. Expand the object so you can see the child named "NPC Subtitle Line".
    4. On "NPC Subtitle Line", disable or remove Typewriter Effect.
    5. Save this UI as a new prefab and assign it to the Dialogue Manager, or just assign the object directly to the Dialogue Manager. The Dialogue Manager works with prefabs or scene objects.

    If you follow the steps above, text will appear instantly, and you don't need to add a continue button. However, if you want to add one anyway, please follow the instructions on Creating Unity Dialogue UI Layouts. The next-to-last bullet describes how to add a continue button.

    Could you please tell me what menu it refers to? I'll update the documentation if it's outdated.
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Patch 1.2.0b is available on the customer download page. If you need access, please PM me your invoice number.

    This patch was released to address a few bugs. However, it also includes a beta release of the new visual node-based conversation editor:
    $NodeEditor_Preview.jpg
    The Dragon Age-style outline editor is still available, too. The node-based editor is in beta. If you notice any issues, please let me know.

    Patch 1.2.0b:
    • New: Visual node-based conversation editor. (beta)
    • Improved: Tooltip help added to Dialogue Editor.
    • Improved: Double-clicking a dialogue database opens the Dialogue Editor.
    • Unity GUI updates:
      Improved: Auto-Size grows in the direction specified by Alignment instead of growing equally in all directions.
      Fixed: Panels are now positioned correctly when Clip Children is unticked.
      Fixed: Rich text codes use lowercase hex characters, since Unity GUI doesn't handle uppercase characters well.
    • Changed: At end of conversations, Lua observers update before Alert variable is checked and cleared. (Important if you're observing Variable["Alert"].)
    • Fixed: Bug that prevented adding fields to the dialogue database template.
    • Fixed: Bug converting some Chat Mapper projects with text containing pipes (|).
     
  33. thoraxe112

    thoraxe112

    Joined:
    Jan 26, 2014
    Posts:
    3
    Hi, I'm having trouble figuring out how to save and load different scenes that have different databases. Say, I'm in Scene A with database 1 and I save the game. Then I go to Scene B with database 2 and load the game. I have the level manager component attached to my Dialogue Manager and it loads fine as long as Scene A and B both use the same database, 1 or 2. Then I looked at your example on multiple databases but I couldn't see how it would help. The dialogue manager is trying to load Scene A with database 1 but while still having database 2 on it so the lua just explodes. Any advice or is this just not a thing yet?
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi thoraxe112, have you watched the Using Multiple Databases tutorial yet? The assets for the tutorial are on the main Tutorials page and are also downloadable here. The tutorial assets were created before SequencerCommandLoadLevel.cs was added to the main release package. When you import the tutorial assets, it will include a duplicate copy of this file; just delete it.

    I'm pointing you to the tutorial because it should clear up all your questions, and the unitypackage includes a working example that you can play with. But if you have any questions, please don't hesitate to post here or email me directly at tony (at) pixelcrushers (dot) com. Also feel free to PM or email me to get access to the customer download site if you want to download the 1.2.0b patch.
     
  35. thoraxe112

    thoraxe112

    Joined:
    Jan 26, 2014
    Posts:
    3
    Thank you for the quick response. I've watched the video and tried playing around with the scene but I'm still not getting it. In the feature demo you have an in game menu when you hit escape and you can save/load from player prefs. That's what I want but its absent in the multiple databases tutorial.

    In my game I have a separate beginning scene that serves as the main menu. The Dialogue manager is created here and has no dialogue database as there are no conversations. Then when the player starts the game and transitions between levels I use that SceneDatabase.cs script to get the right database for that scene.

    However, I want the player to be able to save the game in any scene, Scene A with database 1, Scene B database 2 and so on to player prefs using that in game menu. Then when they exit the game/return to the main menu, and hit load game it reloads that scene with the appropriate database. Does the database that is currently on the Dialogue manager get stored into player prefs?

    I just feel like the multiple database tutorial has a lot, if not all, of the ground work I need to pull this off but I'm having trouble piecing it together. Maybe I just need to spend a little bit more time with it is all.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi thoraxe112 -- No, the Level Manager component only records the name of level that the player is currently in. You can use or modify the SceneDatabase.cs script included in the Using Multiple Databases tutorial to load the right database when a level is loaded. I'll put together step-by-step instructions and post them here as soon as I can (later today).
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Dialogue System user EDarkness's team just launched the Kickstarter campaign for Skullforge: The Hunt. If you want to support a fantasy RPG where story and interaction are just as important as combat, please check it out!

    Kickstarter Link -- Skullforge: The Hunt

    [video=youtube_share;dAkdahQHnBY]http://youtu.be/dAkdahQHnBY
     
    Last edited: Apr 17, 2014
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Over the next few weeks, Pixel Crushers will be establishing a gallery of the many projects that have used the Dialogue System. If you'd like your project included, please PM or email me a link!

    Teams large and small have used the Dialogue System for a varied array of applications, such as:

    Robot University, at Queensland University of Technology's The Cube

    Robot University is a game-like environment where people of all ages engage with robots. People can command robot weapons and discover the consequences, send messages to a robot on Mars, and choose domestic items for a household robot.

    [hr][/hr]

    Tortured Hearts, or How I Saved the Universe. Again.
    [video=youtube_share;Vr3MMZnDyCA]http://youtu.be/Vr3MMZnDyCA
    Epic in length, epic in scope, epic in detail and immersive possibilities, featuring cartoony, full 3D motion and models, using the Unity 3D game engine.
    Support them on Steam: Greenlight!

    [hr][/hr]

    Criminal Procedure, Michigan State University GEL Lab
    $cp_small.JPG
    Strike to the heart of the largest criminal organization in the city. Start the Journey with your good old partner Bill to reveal the mystery of high intelligence criminal mastermind's plan and the un-resolved cases to find justice for the victims.

    [HR][/HR]

    A Day in the Life, by Game Changer Chicago Design Lab
    $tumblr_inline_mwocn8IoiH1s44a0w.jpg
    A Day in the Life is a single player narrative-driven game where the player experiences a reoccurring day of high school. The player has a limited time during each playthrough and once time runs out, the game starts back at the beginning. This feature helps us stress one of our main learning objectives: to convey the importance of decision-making and how those decisions affect the player’s self as well as other characters and world itself.

    [HR][/HR]

    Red Winter, by PixelComrades
    [video=youtube_share;hJm-9Sbmjg0]http://youtu.be/hJm-9Sbmjg0
    In development.

    [hr][/hr]

    Plus several games under NDA that you should see on virtual shelves soon!

    And of course Skullforge: The Hunt, which you can support above!
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Scope Creep - Merl McPenrite Episode 1
    [video=youtube_share;Z7MB-Lerc4I]http://youtu.be/Z7MB-Lerc4I
    Merl McPenrite has disappeared. According to the news reports this is a fate he shares with countless others– unfortunately for you, this time it is personal. Merl has been your best friend since childhood and you know he would not just leave without saying goodbye. Something strange is in the works… You will need to trace Merl’s steps and find out what happened to him. Surely he is okay…

    Help Scope Creep get onto Steam!
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Hi thoraxe112, here's a unitypackage that demonstrates:
    • A main menu scene.
    • Multiple scenes that you can move between.
    • Multiple databases, one per scene.
    • Saving and loading back into the scene where you saved.
    View attachment $MainMenu_MultipleScenes_MultipleDatabases_2014-04-11.unitypackage

    Add the Start, Airlock, and Server Room scenes to your build settings before playing Start. In the package, I assigned a database named Shared to the Start scene. It's not required; you could leave it unassigned. But you should consider what data you need to remember between levels -- for example, maybe the player's current XP, or the states of quests that span multiple scenes -- and put them in an initial database.

    To set this up in your own project:
    1. Add the Dialogue Manager to your main menu scene, as you did. Make sure Don't Destroy On Load and Allow Only One Instance are ticked.
    2. On the Dialogue Manager object, add the Level Manager, Quest Tracker, and ExampleMainMenu.cs scripts. You probably won't want to use ExampleMainMenu.cs itself but instead your own main menu that uses similar code to save and load. It's just an example script that shows what methods to call to save, load, and start new games.
    3. On Level Manager, set the name of the Default Starting Level. This is only used if there's a problem and the Level Manager can't determine what the saved level was.
    4. On Example Main Menu, set First Gameplay Level. This level is loaded when the player chooses New Game.
    5. In the other scenes, add SceneDatabase.cs to an object and specify which databases to add and remove. Again, you probably won't won't want to use SceneDatabase.cs itself; it's just an example script that shows what method to call. I added SceneDatabase.cs to the main scenery object, named Room.
     
  41. thoraxe112

    thoraxe112

    Joined:
    Jan 26, 2014
    Posts:
    3
    Thank you so much!! This is exactly what I was looking for!
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Happy to help! If you run into any other issues, don't hesitate to post here or email me directly. Saving and loading can be tricky because it depends on the design of each game, which I'm sure is one of the reasons why Unity doesn't have a built-in save system.
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Luria Online, by Zerano's Workshop
    [video=youtube_share;qie5zpOCepc]http://youtu.be/qie5zpOCepc
    The game is an open world multi-player RPG played across many different, varying environments. The player takes the place of an adventurer that has to learn a variety of different skills in conjunction with other players in order to defeat the primary antagonists. Luria-Online uses a skill gain system instead of a class based experience system.
    Greenlit on Steam!

    [hr][/hr]

    Bionic Marine Command Online, by Space Dwarves
    [video=youtube_share;BQeGTMq9xXI]http://youtu.be/BQeGTMq9xXI
    Single Player (Online/Offline) and 20 player Co-op multiplayer RPG games (Online only).
    Each player can take on the role of a combat bionic marine who can choose between four branches of the military. Players will be able to engage in themed missions based upon the type of gameplay selected, which will be fought across various environments (military/industrial installations, open battlefields, open space asteroid fields). The choices include combat ranger, space pilot, mech pilot, or a crafter for the engineering corps.
    Rate it on Steam Greenlight!
     
    Last edited: Apr 13, 2014
  44. ChunkoGames

    ChunkoGames

    Joined:
    Jul 15, 2013
    Posts:
    20
    I tried your method for removing the typewriting effect but was met with another error. After getting rid of the typewriter now the dialogue responses aren't showing up at all.
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    1. I sent you a PM with access information for the private customer download site. On the site, you can download a patch that addresses some atypical timescale issues. (The fix will also be in the upcoming v1.2.1 release.) The Unity GUI prefab UIs use a variety of time-based effects such as fading and sliding. To eliminate this as an issue, please install the patch or temporarily disable any Fade or Slide effects on the Response Panel. If it then works, please let me know.

    2. What dialogue UI are you using? One of the provided prefabs, or your own? What GUI system (e.g., Unity, NGUI, DFGUI, etc.)?

    3. After the NPC subtitle, does the conversation immediately end, or does it appear to stall without showing the response menu?

    4. You mentioned earlier that you thought a documentation page might be outdated. May I ask which page so I can check it?
     
  46. ChunkoGames

    ChunkoGames

    Joined:
    Jul 15, 2013
    Posts:
    20
    I've tried it with both the default prefabs as well as one of my own. I am using Unity's gui system. After the NPC subtitle the conversation stalls without hte response menu. As for the documentation, I don't think it was actually outdated, it basically said the same thing you did.
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Please set the Dialogue Manager's Debug Level to Info, reproduce the issue, and email the editor log file to tony (at) pixelcrushers (dot) com. I'll take a look at it and see if we can get this resolved quickly. Thanks!
     
  48. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    TonyLi,

    Do you have a roadmap to what functions you made to work with the RPG 2 Kit?
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,758
    Just an internal dev list. The initial release will include triggering conversations and barks (of course) and synchronizing variables, quests, and inventory.
     
  50. dreamlarp

    dreamlarp

    Joined:
    Apr 22, 2011
    Posts:
    854
    Thank you so much. This puts us much further ahead.