Search Unity

Quest System Pro - Create quests, achievements and dialogues!

Discussion in 'Assets and Asset Store' started by jorisshh, May 3, 2016.

  1. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I've imported the latest QSP and I have problems with the demo scenes.

    In the MainDemo there is a MissingPrefab, which is the object between Canvas and EventSystem in the hierarchy. If I run the scene I can't move around or do anything. Also, it spits out endless warnings that there are 3 audio listeners in the scene.

    In the SALSA demo, the PlayerEthan object has several scripts that complain they cannot be loaded and to fix compile errors. But there aren't any compile errors. The scripts that it claims can't be loaded are DialoguePlayerAutoFocus, Player, QuestSystemPlayer, and QuestSystemPlayerSalsaBridge.

    In ClaimableAchievement there aren't any errors, but it doesn't appear to do anything. I just get a screen with a Woman icon labeled as Some name, an Achievement area and an X icon. I can't move around, no text tells me what to do, and nothing I click has any effect.

    In InventoryPro_8.AllDone demo, I see unloadable scripts on MultipurposeCameraRig for ProtectCameraFromWallClip and AutoCam. It complains about compile errors, but there aren't any reported. ThirdPersonController also has unloadable scripts for ThirdPersonUserControl, Player, InventoryPlayer, DialoguePlayerAutoFocus, and QuestSystemPlayer.

    I have a lot of the same issues with Inventory Pro as well for those demo scenes. I have the latest devdog libraries and I've restarted Unity as well.
     
  2. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    OK, so I decided to start a fresh project and bring in Inventory Pro first and then QSP. You can see the initial result in the Inventory Pro thread. Now, after importing QSP, it tells me I need to update the devdog library, which is interesting because Inventory Pro didn't tell me that so maybe IP already had the latest library and QSP overwrites it? Anyway, I run the update then I get the following error:

    Assets/Devdog/InventoryPro/Demos/Scripts/MyCustomCollectionTrigger.cs(11,18): error CS0738: `Devdog.InventoryPro.Demo.MyCustomCollectionTrigger' does not implement interface member `Devdog.General.ITriggerCallbacks.OnTriggerUsed(Devdog.General.Player)' and the best implementing candidate `Devdog.InventoryPro.Demo.MyCustomCollectionTrigger.OnTriggerUsed(Devdog.General.Player)' return type `bool' does not match interface member return type `void'

    So, I close Unity and restart to see if it'll go away. The error doesn't show up on restarting Unity so that's good. Then I open the MainDemo scene for QSP and I have the MissingPrefab issue as reported before. The scene looks better when I run it, but I can't move around and do anything. Seems like the MisingPrefab is probably the player controller.

    I then tried the ClaimAchievement demo and it looks better than before, but I can't move around here either. I look on some of the scene objects and it's complaining that there are unloadable scripts like DialogueOwner on Cube(2) and DialogueCamera on Main Camera. _Managers can't load QuestManager or DialogueManager either.

    All in all, it seems very broken all around. Once again I'm using Unity 5.3.5p4 for Wii U.
     
  3. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    The new (pending) version of quest system pro will fix these issues. The reason Inventory Pro didn't request you to update is that I started adding the latest versions to the packages to avoid an upgrade after you import the asset.

    There was a breaking change in V2.5.2, hence the issue with Quest System Pro's interface not implementing certain features.

    I know things are quite a pain at the moment, I'm sorry about this, but as soon as the General library is solid and doesn't require API changes all assets will work together as expected.

    As for all broken scenes, it sounds like Unity may have corrupted your serialized data? It can happen from time to time, and the easiest way to fix this is to delete your "Library" folder and do a re-import.
     
  4. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    I see there is currently a problem with QuestSystemInventoryProBridgeManager, in the Quest Pro + Inv Pro demo scene, where it warns: "The associated script cannot be loaded. Please fix any compile errors and assign a valid script."

    Is this one of the errors noted and fixed in the pending Quest Pro update? (Just checking in case it still needs to be addressed.)
     
  5. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hm.. no there shouldn't be. At least I'm not aware of any issues. Are there any compiler errors in your project? Sometimes serialized data gets messed up in Unity and deleting the /Library folder (this causes a re-import) can fix the issue.
     
  6. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    Deleting the Library folder doesn't fix the error.

    There is now in the Quest/Inventory demo scene a missing prefab I don't recall being there previously.

    No errors in the console, just a warning about the lightmap being from an older version of Unity, and a warning about a missing prefab.

    ------------

    As I kill the second monster in the scene, I get the following error:

    IndexOutOfRangeException: Array index is out of range.
    Devdog.InventoryPro.ItemCollectionBaseAddCounter.SetItem (Devdog.InventoryPro.CollectionPriority lookup, UInt32 i, Devdog.InventoryPro.Tuple t) (at Assets/Devdog/InventoryPro/Scripts/Collections/ItemCollectionBaseAddCounter.cs:149)
    Devdog.InventoryPro.ItemCollectionBaseAddCounter.CanAddItemCount (Devdog.InventoryPro.CollectionPriority lookup, Devdog.InventoryPro.InventoryItemBase itemToAdd, UInt32 earlyBailAmount) (at Assets/Devdog/InventoryPro/Scripts/Collections/ItemCollectionBaseAddCounter.cs:273)
    Devdog.InventoryPro.ItemCollectionBaseAddCounter.CanAddItem (Devdog.InventoryPro.CollectionPriority lookup, Devdog.InventoryPro.InventoryItemBase item) (at Assets/Devdog/InventoryPro/Scripts/Collections/ItemCollectionBaseAddCounter.cs:216)
    Devdog.InventoryPro.ItemCollectionBaseAddCounter.GetBestCollectionForItem (Devdog.InventoryPro.InventoryItemBase item) (at Assets/Devdog/InventoryPro/Scripts/Collections/ItemCollectionBaseAddCounter.cs:192)
    Devdog.InventoryPro.ItemCollectionBaseAddCounter.TryAdd (IList`1 itemsToAdd) (at Assets/Devdog/InventoryPro/Scripts/Collections/ItemCollectionBaseAddCounter.cs:417)
    Devdog.InventoryPro.InventoryManager.CanAddItems (Devdog.InventoryPro.ItemAmountRow[] items, Boolean rebuildCounter) (at Assets/Devdog/InventoryPro/Scripts/Managers/InventoryManager.cs:482)
    Devdog.InventoryPro.InventoryManager.CanAddItem (ItemAmountRow row) (at Assets/Devdog/InventoryPro/Scripts/Managers/InventoryManager.cs:472)
    Devdog.InventoryPro.InventoryManager.CanAddItem (Devdog.InventoryPro.InventoryItemBase item) (at Assets/Devdog/InventoryPro/Scripts/Managers/InventoryManager.cs:467)
    Devdog.InventoryPro.ItemTrigger.CanUse (Devdog.General.Player player) (at Assets/Devdog/InventoryPro/Scripts/Modules/Triggers/ItemTrigger.cs:53)
    Devdog.InventoryPro.ItemTrigger.Use (Devdog.General.Player player) (at Assets/Devdog/InventoryPro/Scripts/Modules/Triggers/ItemTrigger.cs:64)
    Devdog.InventoryPro.InventoryPlayer.TryPickup (UnityEngine.GameObject obj) (at Assets/Devdog/InventoryPro/Scripts/Modules/Player/InventoryPlayer.cs:233)
    Devdog.InventoryPro.InventoryPlayer.OnTriggerEnter (UnityEngine.Collider col) (at Assets/Devdog/InventoryPro/Scripts/Modules/Player/InventoryPlayer.cs:207)

    After I kill the 3rd monster and return to the quest giver, the quest completes, saying I killed 3/2 monsters.

    Probably some things will get fixed when the update of Quest System hits the store. I'll try again when that comes through.
     
    Last edited: Sep 8, 2016
  7. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    On impulse, I commented out the if-endif lines at the top and bottom of the QuestSystemInventoryProBridgeManager script, and that pointed me to a similar situation with the IInventoryProTask script. After I commented out the if-endifs there as well, the script would compile and show up fine in the scene hierarchy.

    Upon running the scene, this time there was no error when killing a monster, but the quest completion still said 3/2 monsters killed.
     
  8. Gojira96

    Gojira96

    Joined:
    Jun 18, 2015
    Posts:
    32
    Hi,I am trying to implement the system into my project.
    I want to make that when I enter the trigger zone I can press a key code and the Quest UI activates.
    Trigger Key code does not seem to work.
    I don't want to click the NPC in order for the UI to activate.
    I only want the cursor to be active when Quest UI is,but I can do that myself.

    What exactly I need to do in order to activate the quest when in trigger zone by pressing a button?
     
  9. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    The error is thrown because the item that is being set doesn't exist in the current database. I've added a warning for this in case they get mixed.

    I'll look into the missing component.
     
  10. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    The key code is only activated based on the 'selected' object. You can use a (custom) selector to choose which trigger should be used when the key code is pressed. This can be useful when there are many triggers in a certain area; In this case, you obviously wouldn't want to use all of them at the same time, but rather 1 specific one, such as a NPC.

    You can find more about it here: http://devdog.io/unity-assets/inventory-pro/documentation/2.5p/components/selectors

    To visualize which trigger is the currently selected one you can use the TriggerUI component.
     
  11. Gojira96

    Gojira96

    Joined:
    Jun 18, 2015
    Posts:
    32
    Why can't I just use the Range Selector?
    That is all I need.
    Is it not there by default?

    There is nothing about this in Quest System Pro Documentation.
    I don't even understand what Trigger Selector Base is or how to attach it.
     
  12. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    You can indeed use the range selector, it's build in. When clicking the object picker on the Player component you can click assets at the top and choose the range selector (or first person, if you're building a first person game). This will select the right trigger and allow you to use it. To visualize it you'll also have to add the TriggerUI element.
     
  13. Gojira96

    Gojira96

    Joined:
    Jun 18, 2015
    Posts:
    32
    That's the thing.
    It's not here. I've just tried deleting and re importing the asset and still can't see it.
    If the file is indeed missing, could you send it to me after I provide you the invoice number so I can continue implementing the system?
    Clicking on NPCs really doesn't work for my game.

    Thanks :)
     

    Attached Files:

  14. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Well I feel pretty clever right now :) - I mixed up Inventory pro and the quest system. Of course you can create a new scriptable object of range handler through Assets > Create > Devdog/Range trigger selector. I'll add this to the docs to prevent any further cofusion. Sorry about that :)
     
  15. Gojira96

    Gojira96

    Joined:
    Jun 18, 2015
    Posts:
    32
    That was it, thanks, everything works now :)
    No worries :)
     
  16. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    If you decide to integrate with ICE and Love/Hate, we will get this...it is the last thing from you that I do not own. lol

    Looks fabulous!
     
    julianr and wood333 like this.
  17. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    What sort of integration with LH would you be looking for?
     
  18. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    @hopeful @Teila

    I was thinking about quest givers that only give out quests based on their Love/Hate relation. So for example, if you're on good grounds with a certain NPC he/she may give you a quest you normally wouldn't get. Maybe also quest givers that can use the Love/Hate data, so you can get more rewards if you're on good terms with the NPC, and less when you're not.

    This could make it a whole lot more dynamic :)

    I've also discussed the idea of a spawner based on quest status. For example:


    When a quest is activated you may want to show some objects the player has to use to finish the quest. For example, talk to an NPC; However, the NPC is only visible when and if the quest is active and the right task has become active.

    Concept Allow the user to set a quest in the component and a state to listen to. For example, OnComplete will only spawn the objects when the quest is completed, OnActivate when the quest is activated, etc. By allowing different states for activation the user can spawn objects at any point in the game. When spawned at OnComplete the user will have to manually clean up the object, as the quest handler stops at that point.

    Placement: The user can create an object with a component that allows placing the object (store translation, rotation and scale), and instantiate the object when the task becomes active, and destroy if the quest is cancelled or completed.

    Allow the user to place multiple objects (prefabs) at some location (all in the same component to avoid MANY event listeners).

    Random distribution: Allow objects to be randomly distributed within a certain area + the option to raycast to the ground + offsets for the objects. This way objects could be placed in the area that may have to be collected or interacted with by the player.

    Allow the user to place multiple objects (prefabs) at some location (all in the same component to avoid MANY event listeners).

    Demo Concept Create a quest that spawns an Inventory Pro lootable chest that contains the quest's rewards when the quest is completed.

    Additional concept: Mob wave The spawner will spawn the monster prefabs and the movement controller on the mob will take over and attack the player.

    This would also give a whole lot of freedom, which I think would make a great addition to the quest system :)
     
    TeagansDad and hopeful like this.
  19. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    also love Hate : display a dialogue node only if condition is met would be good
     
  20. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Yeah good thinking :) I can add an edge condition to prevent / allow node to node traversal :)
     
  21. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Absolutely! All of that. :)

    Exactly what I was thinking too. Sounds fabulous.
     
  22. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    Not sure how this would work, but I was just reading through the documentation on DunGen where it can use a key + lock mechanism, and I was wondering if this sort of thing is a possible candidate for an integration with QSP.
     
    jorisshh likes this.
  23. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Yeah it could certainly be, but an Inventory Pro integration would make more sense (I think). Presume DunGen can spawn objects in a room such as a NPC, so setting up quests should also be possible.

    With an Inventory Pro integration we could:

    - Create an inventory pro item that is the 'key' for a door in DunGen
    - Open the door with DunGen
    - Activate quest with Quest System Pro
    - Finish quest -> Get inventory pro items.

    Which could make for some interesting scenarios :). Also, Quest system pro supports dynamic (generated) quests / quest conditions, rewards etc.
     
    Tinjaw likes this.
  24. reocwolf

    reocwolf

    Joined:
    Aug 1, 2013
    Posts:
    182
    Hi, is there a place where I can see a roadmap for this asset? I'd like to know if there are plans for integration with Lipsync, cinema director or Usequencer. And what other integrations are planned.

    Also will we have a quest system dialogue UI set up in the Sci-Fi UI Design asset? That would be helpful.
     
    Last edited: Sep 18, 2016
  25. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    I think most of the time I wouldn't want an actual key in the inventory because then you can run into "inventory full" issues, or the player accidentally drops the key somewhere and can't complete the quest. Instead, just flip a bool upon a task completion (find a key, collect key from defeated enemy, hack network computer) that enables opening of a specific door. What integration with DunGen would ensure is placement of the key encounter on the map before the locked door encounter.
     
  26. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    The closest to a roadmap would be https://bitbucket.org/jjahuijbregts/questsystempro/issues?status=new&status=open
    I'm currently working on the spawner, which should give a lot more freedom when setting up quests (for gathering, etc) + looking into Love/Hate, as I think that would be a great addition to this and I already got a dev copy for it.

    I'm also simplifying the 'triggers' that can be used to change quest progress; For example, when an object is destroyed progress is added (useful for monsters / enemies / gather objects perhaps). As well as discoverable areas.

    After that I will look into other third party integrations; I haven't decided on anything yet.
     
    Last edited: Sep 21, 2016
    Teila likes this.
  27. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Good point, setting a task would be more fail safe :) - I've never used DunGen before, so I can't say with certainty, but most generators have 'zones' which can be controlled through code. Having a quick look at the documentation it looks like there are special tiles, these could probably be used to spawn the key in the right location.

    For this you could use a Quest progress trigger, which can be used to set a quest's progress when you enter a trigger / zone (a special tile in this case).

    How to handle the order I wouldn't know, you may want to contact the creator of DunGen, I'm sure he will know best :)
     
  28. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    DunGen does handle the key-before-door issue, and yep, the "tiles" are basically "zones," in the sense that the dev can select what type of rooms he wants to have show up in - say - the first half or second half of a randomly generated level. So you could have some sort of building layout in the first set of tiles, and then transition underground to a cavern layout in the next set of tiles, with the boss in the last room of the final tile set.

    A key task could be set by trigger, but it might be preferable, however, to have it set in the quest as a task that doesn't reveal itself till it is started. In this manner, it would work a lot like an Achievement. An Achievement is a quest that the player doesn't know is started until the player makes the first step to fulfill it, and the key could be the same, in that the player doesn't know they need a key until they either find it, or they find the door (which could happen, if the door is on the main path and the player hasn't fully explored the branch path that contains the key).
     
  29. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Well, in that case it should be possible out of the box. DunGen uses prefabs to generate blocks, right? If you just creat ea new block with a Quest system pro trigger that sets a quest's task progress (there's a built-in component for this named the quest progress trigger).

    It'd be a fun project to try and use, but first Love/Hate :)


    Also, Aww yeah, the weighted distributor works for images (including generated images).
    It was kind of a pain to use the image as the weighted distribution system, but it's super easy to use and gives a lot of freedom :)
     
  30. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    @TonyLi @hopeful @Teila @Damien-Delmarle Well everyone, the Love/Hate integration is coming along nicely :)

    For the quests:


    For dialogue conversations (you can see the the edge restrictions in realtime, so they'll update as soon as you gain some affinity).


    Affinity and deed nodes (if you select the nodes you get extra options, for example, for the deed node you'll be able to set the range, 2D or 3D options, etc).



    I'll also look more into the emotional model and some other nifty features of Love/Hate :)
     
  31. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Looks great, Jorish! Wonderful job! Can't wait to try it. :)
     
  32. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Added a quick selection box for the dialogue editor, you can trigger it by right-clicking, or by hitting the space bar, you can immediately type and suggestions are given based on the closest match. The entire element can of course be controlled with the keyboard.

    It works a lot nicer and faster than the previous list of nodes :)
     
    recon0303, wood333 and Teila like this.
  33. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Just a heads up, quest system pro is going out of beta in the next update. And because of this we decided to do a small sale - So, if you're interested in buying quest system pro, you may want to wait until the next update goes live :)

    Changelog V1.0:
    • Love/Hate integration
    • Spawner: Texture based distribution + Volumes + Perlin noise + Relevancy + Waves + Randomization
    • Improved dialogue editor workflow
      • Spawner data cell generation (breaks texture data down into a spatial tree for faster lookups)
    • Updated usings and removed un-used using statements
    • Cleanup overall code
    • RT Voice updated to latest
    • Added pre-generated AOT converters for Devdog.General and QuestSYstemPro
    • SetQuestProgress action trigger moved from demo to core
    • Quest status object enabler improved, now more configurable + added to Add component menu
    • Added QuestStatus to OnQuestStatusChanged and OnAchievementStatusChanged, which is more in line with the other events
    • Dialogue owner's animator and audio source are now protected and added method GetComponents which is virtual
    • Changed using System.Linq to using Devdog.General.ThirdParty.UniLinq;
    • Added pre-calculated AOT converters for Devdog.General LocalizedAudioClipInfo and MotionInfo
    • Disabled mono behaviour script name warning, it caused a lot of confusion...
    • Transform extenion methods to reset transform, rotation and scale on an object in a single call
    • Minmax value helpers for int, float and vector3
    • Added IObjectRelevancy, which can be used to determine if an object is relevant at a given momvent, when not it can be disabled to save performance (also useful for network gameplay)
    • Removed scriptable object creation in EditorReflectionUtility.DeepClone(), it's now used as a reference instead
    Fixes
    • Salsa demo scene - audio clips relinked: works as expected now
    • Updated demo scenes (missing references, RT-Voice added some prefab to the scenes)
    • Updated the ShowQuestWIndowNode, now works expected
    • Fixed save in dialogue editor + fixed issue with itemAmountRow not setting value when object changed
     
  34. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    Hi how long does this tool plan to stay in beta??? I normally do not buy UI tools of any kind, since I'm a UI programmer. but thinking I may buy this.. TO save time and I like that I can extend on it .. Which is what I'm looking for. But I was wondering how long it may stay in beta.. Like to buy it before the price goes up. if possible.
     
    jorisshh likes this.
  35. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,682
    It sounds like the update may be ready to send in to Unity, and when Unity publishes it, there will also be a brief sale to celebrate it coming out of beta. ;)
     
    jorisshh likes this.
  36. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    As @hopeful said, the next update Quest System Pro will go out of beta and there will be a discount :) so you may want to wait until it goes live (probably early next week).
     
  37. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    ya sorry don't read every single post so must of not seen it.. I skim through, so many assets to keep up on an software not enough time in the day to read every forum every post and two business;s and a family to run, so hard to see everything...

    ... So thanks for the info again...


    Edit: Sigh, it was right above my post.... I just check this forum a few days ago too, so must of been why I missed it. ...

    Thanks read the entire post now ..Thanks for the info.. Sorry i missed it, hard to keep up sometimes with so much . stuff. ..
     
    Last edited: Sep 24, 2016
  38. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    No worries :p If you like to get the highlights you can sign up for the newsletter we generally mail 1-2 times a month about big asset updates, new assets, giveaways, etc :)

    Newsletter signup: http://eepurl.com/b3gSVH
     
  39. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    even better, I check my email daily . Thanks ! I have one of your other assets LOS I believe is the name. I would of bought Inventory Pro as it looks good if I didn't already make my own a long time ago. Your assets look really good. Keep up the great work.


    I love NGUI so I plan to use it with this when I buy, I been using it for many years.
    I'm sure out of the box it may not work , but that's fine, I can get it to. Shouldn't be to big of a deal..

    PS: i'M old school I love 2d TOOL Kit and NGUI over Unity's stuff still. Not saying its bad or anything but I prefer them both..I do use Unity UI for some stuff though or when I get contract work.
     
    Last edited: Sep 26, 2016
    jorisshh likes this.
  40. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Ladies and gents, Quest System Pro version 1.0 is now live in the asset store and temporarily only $25 :)
     
    hopeful likes this.
  41. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    I see this but is it the latest version? I don't see Love/Hate on the list.

    Edit: Nevermind, on the changelog. You should put that on the asset store description too. :)
     
    jorisshh and recon0303 like this.
  42. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    Got the email, thanks, bought it looking forward to using it. Mainly bought it for the Dialog Tree. and looks like i'm able to add mine own and extend on it, which was important.

    Thanks
     
    jorisshh likes this.
  43. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Thanks :) I've added it to the list and re-submitted it
     
  44. ogtracy

    ogtracy

    Joined:
    Sep 27, 2016
    Posts:
    24
    I don't know if I'm going to get Quest System Pro. I'm currently letting you guys be guinea pigs while I decide. Right now I'm using the Dialogue System, but I'm not so far along that I can't move over to a different asset. I just need to know if Quest System Pro has some of the same things that make Dialogue System annoying.

    1. The lua thing. I don't get it. It doesn't have objects. The quests are in a table accessed by the quest name which means that I have to remember exactly how I capitalized the text in the quest name. That's easy when I have 10 quests. Not so easy afterwards. Quest System Pro should use a nice object oriented language. I'm not picky about which.

    2. The biggest thing: No compile time error handling. If I write a quest, and later change its name (even slightly), or delete the quest, I have to find every dialogue tree in which I've ever referenced that quest and update it. If I miss one (which happens often) I'll never find out until I try to run that conversation Once again, this isn't so bad for smaller games with 10 or so quests, but as the number of quests increase, it makes deleting or changing quests a monumentally bad idea.

    This can probably be made easier by creating tests for all the conversation and automatically running after every change, (That's a great idea now that I think about it) but my conversation testing is currently manual.

    There's my second suggestion: Quest System Pro should have some way of automatically running conversations to see if they're broken. That'll definitely be an improvement over Dialogue System.
     
    jorisshh likes this.
  45. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I own Dialogue System, Quest System Pro and Inventory Pro. My time is limited, so like you, I try to pick the right asset before working with it. I am presently working with Inventory Pro, and I am very pleased with the way it is organized. Of course, the same developer created Quest System Pro, so I am expecting it to be similarly organized, and the two assets to be dependably integrated throughout all future updates, a big plus.
    .
    I was so put off by having to work with LUA, that I have not used Dialogue System beyond reading its documentation, despite its popularity and acceptance in the Unity community. I don't want nor need to learn Lua. Quest System Pro was in the works, I liked what I read and saw on the forum, I probably bought it on sale, and I chose to patiently wait for it coming out of beta and integrating with Inventory Pro.

    Others will have to be more specific on Quest System Pro. My final comment to assist you is that Jorisshh has been excellent in responding to my questions and even adding a demo scene to the next update to Inventory Pro.to help me understand how Inventory Pro handles sinned mesh bone transfer. Jorisshh is clearly a Jedi programmer and listens to his customers.
     
    jorisshh likes this.
  46. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    1. No LUA here, not a fan either :) - By using a proper serializer Quest System pro can serialize all sorts of fancy things like Polymorphic types, Generics and more. Because of this LUA has no use anymore (at least not in my opinion). For example, reward givers can be made to allow quests to give rewards based on your needs. Maybe you want to give some XP, an item or do something completely unrelated that I never thought about. To implement these, all you have to do is create a new class and implement the interface like so:

    As simple as that :) - And now you can just set it using the quest editor (more info: http://devdog.io/unity-assets/quest-system-pro/documentation/quests/custom-reward-giver )

    Code (CSharp):
    1. [System.Serializable]
    2.     public class MyRewardGiver : IRewardGiver
    3.     {
    4.         // Fields added here are serialized and can be assigned in the quest editor.
    5.  
    6.         public virtual RewardRowUI rewardUIPrefab
    7.         {
    8.             get { return QuestManager.instance.settingsDatabase.defaultRewardRowUI; } // Specify which UI prefab you'd like to use to show the reward. Note: The SettingsDatabase is a partial class, so you can add your own fields to it without overriding it - See: https://msdn.microsoft.com/en-us/library/wa80x488.aspx
    9.         }
    10.  
    11.         public ConditionInfo CanGiveRewards(Quest quest)
    12.         {
    13.             return true;
    14.         }
    15.  
    16.         public void GiveRewards(Quest quest)
    17.         {
    18.             // Give the player his/her reward.
    19.          
    20.         }
    21.     }


    2. Got you covered, all quest nodes have a Validate method, which checks the validity of the node. If some dynamic link is misconfigured you get a warning (these show in the dialog and in the setup wizard; In case you don't know, All devdog assets have a setup wizard, which checks required fields, missing links, etc).

    Also, quests aren't linked dynamically, but are instead saved as scriptable objects. This allows you to link them in the editor just as a regular Unity object. Because Unity uses GUIDs to link the objects and not its name or path you can freely rename and move them around :) - Op top of that the setup wizard checks required fields to make sure a quest is set.

    Auto. running the conversation trees is probably not possible, as some nodes require user input; However I could add in some warnings about nodes that aren't in any execution path (unconnected nodes), that might make a nice addition :)
     
    Last edited: Sep 27, 2016
    wood333 likes this.
  47. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Funny you say that, because it actually went out of beta Today, and it's on sale (25$, will be 40$ after the sale) :D - https://www.assetstore.unity3d.com/en/#!/content/63460

    And the inventory pro integration fully works, you can create quest based items (when used it can start a quest, like a quest scroll), item rewards are synced ( see: http://devdog.io/unity-assets/quest...n/inventory-pro/inventory-pro-getting-started ), so you can make quests where the user has to gather some items.

    If you have more ideas for the integration be sure to let me know :)
     
    wood333 likes this.
  48. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    jorisshh likes this.
  49. ogtracy

    ogtracy

    Joined:
    Sep 27, 2016
    Posts:
    24
    Auto running the conversation trees seems possible to me, even if they require user input. You should simply be able to generate random input and make sure that the conversation runs fine with that input. I like to use "Dummy user input" when there's no restrictions on the input.

    If the user input is such that there is a right and a wrong answer, I would simply add fields that allows the developer to specify valid and invalid and invalid / right and wrong answers, and use those in testing.

    Conversation validation is important. If you don't include it in the asset, the user has to write code to do it himself, or validate conversations manually (and manual testing is very inefficient).
     
    jorisshh likes this.
  50. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hm.. good point, I agree with you about testability, just got to find an elegant solution :) - The 'issue' with test data would be that if the graph changed the test data could easily go out of sync, so the most logical place would be to add it to the node itself (and stripping it from the final game of course). To make boundary testing feasible we'd, of course, need some range indicators (for example, test all values from 0...5).

    Unity 5.3+ has the unit tester built-in. I've already written a bunch of tests for the Quest and dialogue API, but maybe this could be used to auto. run all tests on the dialogues as well. I'll look into this a bit more :)

    Right now there's already a fair bit of validation for missing task names (each quest consists of tasks, and these are loosely coupled with a string). The task name is validated in the nodes to make sure they're not misspelled. Quests can also be dynamically generated, hence the string identifier for task names.

    Also, as I previously mentioned, required fields are validated, including a few more things. In addition to that you add your own 'GameRules' to the built-in setup wizard in case you want to check some specific data:

    For example, the node rule validates all nodes and warns you when one is misconfigured.
    Code (CSharp):
    1. public class DialogueNodesRule : GameRuleBase
    2.     {
    3.         public override void UpdateIssue()
    4.         {
    5.             var dialogues = UnityEngine.Resources.FindObjectsOfTypeAll<Dialogue>();
    6.             foreach (var dialogue in dialogues)
    7.             {
    8.                 foreach (var node in dialogue.nodes)
    9.                 {
    10.                     var v = node.Validate();
    11.                     if (v.validationType != ValidationType.Valid)
    12.                     {
    13.                         var d = dialogue;
    14.                         var n = node;
    15.                         issues.Add(new GameRuleIssue(v.message, v.validationType == ValidationType.Warning ? MessageType.Warning : MessageType.Error, new GameRuleAction("Select node",
    16.                             () =>
    17.                             {
    18.                                 DialogueEditorWindow.Edit(d);
    19.                                 DialogueEditorWindow.FocusOnNode(n);
    20.                                 DialogueEditorWindow.PingNode(n);
    21.                             })));
    22.                     }
    23.                 }
    24.             }
    25.  
    26.  
    27.         }
    28.     }
     
    hopeful likes this.