Search Unity

Quest System Pro - Create quests, achievements and dialogues!

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

  1. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    i have quickly checked the docs and it didnt explain how to save?

    think it something pretty important and got few request if its not already possible:

    • having a very simple way to save in addition to a more accurate one
    Code (CSharp):
    1.  
    2. string save = QuestSystemPro.GetQuestSave();
    3. QuestSystemPro.LoadSave(save);
    • having an option to auto save when we set a quest variable, by just overriding a script and droping it on quest manager
    • having the possibility to add EnvironmentState script for example on crate gameobject, so if we destroy the crate, it call a function on EnvironmentState, which would auto save it like in previous point. so when we leave and come back in the scene, the crate would stay destroyed.
    these are some feature already possible in an other quest system i used and they are very tied to the quest system like for example in a zelda game where you need to save lot of object change to progress in a dungeon
     
  2. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Right now the SaveLoadManager can save and load all quests on awake and application quit (the usual). Adding an auto save option for this would be quite simple (just got to listen for events on the quest tasks).

    I think games like Zelda actually save each quest separately, as it'd be much faster (or at least using a separate thread). When saving 100 completed quests there could be some serious delay due to IO. I'm fairly certain Unity's PlayerPrefs can't be accessed from another thread, so the only option then would be to write a JSON file to disk, which doesn't work on certain platforms (webGL, and requires permissions on mobile)

    The QuestSerializationModel serializes a quest and has 2 methods to load the quest to the serialization model, and to load it into a quest object (deserialize).
     
  3. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Hi, I'm using Unity Pro v5.40f2. I Import Quest System Pro latest asset store version Sept 28, 2016. Just want to let you know, the Devdog.Quest window keeps freezing my Unity. Something is wrong with the Null texture.



     
  4. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Could you give me the full stack trace please? If you select the warning / error in the console there's a lot of text at the bottom called the stack trace. Could you send me this please, they help me track down the issue.
     
  5. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    @Rtyper @FoundwayDigital Quest System Pro now also works with LipSync Pro :)

    All you need is the little lip sync bridge:


    And set the lip sync data on the nodes you wish to use.


    This will be available in V1.01
     
    Rtyper likes this.
  6. Rtyper

    Rtyper

    Joined:
    Aug 7, 2010
    Posts:
    452
    @jorisshh That was fast! Nice work, this looks like a great system!
     
    jorisshh likes this.
  7. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    @Rtyper Got the entire integration done in under an hour, must be because of a well written third party asset :p
     
  8. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hey all, I need a bit of feedback to make the next part of Quest System Pro.

    What I like to add:
    Quests (and dialogues) can change the state of your game. For example, NPC A gives you a quest with multiple tasks. Task 1 is to find a key, Task 2 is to open a door, Task 3 is to defeat a dangerous monster. Currently, if task 2 is completed, and the game is restarted the door will be closed again (as this is it's designed state). In other words, the objects affected by quests (and dialogues) aren't saved at the moment. This forces quests to be rather linear, which is of course not something I want to enforce :)

    Using the spawner you can work around this for a large part, but not completely.

    Possible solutions:
    Create simple components that can save the state of its object. For example, the door could get a component that saves its position, but only if the quest has been activated (otherwise it's safe to assume it wouldn't change).

    Another component would be needed to save an animator state, in case the door would be opened through an animation.
    This would, however, require each of these components to have a unique ID to save and load its state.
    I thought about basing this on it's position, but if a designer moved the door around it could break the entire game, so that won't fly.

    A simple editor utility could scan all components and give them a unique ID.

    Another solution:
    Another solution would be to somehow save the state of all affected objects in the quest progress. This way it would all be saved together. A 'downside' to this is that all objects that the quest could affect still need to have a component + a key for saving & loading, which makes it a bit trivial.


    Any thoughts on this are very welcome, if you have examples of existing games or solutions I'd be happy to hear them :)
     
  9. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I'm working on a few new components that will make the process of manipulating the environment when a quest changes easier; For example, the animator component can animate any object when a quest's status changed, for example becomes accepted or declined.



    Also, to avoid typos, all task references in the components now have a custom editor that checks if the task exists in the set quest :)
     
    Adrad, Tiny-Tree, wood333 and 2 others like this.
  10. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Here's a short sneak peek of the new waypoint system, which will be used for 'transport' and escort quests. It's a very dynamic system so it could also be used to give your NPC's some more life-like behavior.

    Unlike traditional waypoint systems it relies on Unity's navmeshes (it's abstracted, so other navigation systems can easily be integrated / bridged). This way we can use the obstacle avoidance of the Unity navmeshes plus a few more things :)

    Also, each waypoint has its own set of actions and conditions.
    Waypoint action: A (async) action performed at a given waypoint. This could be something simple as wait 5 seconds, or more complex such as, let the npc pick up a key, walk over to a lever, pull it, insert key, move forward. You can use multiple actions and string them together to create an action.

    Waypoint condition:
    Conditions define whether the character can move to the next node or not. When the character can not move forward it stops (and maybe move back in a later update). I've been considering branching (allow multiple diversion points allowing the character to choose based on the conditions or a weight based decision system).

    Edit: Gif http://i.giphy.com/l0HlCn1eX4Xz4skAU.gif
     
  11. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Here's a quick glimpse of the new waypoint system which will be used for escort and transport quests, but can also be used for automatic movement of NPC (for example, an NPC walks to another area to pick up some item and bring it back without the player really noticing. In this case, some LOD work has to be done to keep it running smooth in larger scenes :))

    Each waypoint can have its own list of actions that need to be performed before moving to the next node. The character can decide if it wants to do all actions, I might add in a class system later to allow filtering of actions based on the character's state (for example, a NPC from some village doesn't follow all rules and doesn't perform some of the actions).

    Also, this entire set up was created without writing any code and was simply created by using the new triggers and progress affectors :)
     
    hopeful likes this.
  12. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    Hi, I just bought this a few weeks back, I have yet to dive into it. I use Bolt for Networking, has anyone used it yet with Bolt or any kind of Networking?? Or any sort of Docs for this for that end of it...Maybe I missed this info in the docs.?

    Thanks.
     
  13. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,686
    Quest Pro is written for single player, so anyone will have to adapt it to whatever specific network / multiplayer scheme they have in mind.

    Judging from posts throughout the forum, a significant number of devs are trying to take plugins like this and adapt them for multiplayer, so if anyone has any tips or insights on how to do that - specifically with Quest Pro - I think it would be welcome.
     
  14. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Quest system pro is actually built in a very dynamic way. Although it doesn't support multiplayer out of the box (and I'll explain why in a second), integrating it is actually quite simple.

    The reason Quest System Pro doesn't have networking is, simply put, because it makes things more complicated. To prevent cheating all progress actions have to happen on the server, and the client should be notified. Meaning, that when the player picks up an item, kills a monster, walks through a trigger, all these actions have to be communicated from the server to the client.

    The good news however, is that the client responds to status changes. Meaning, that if you were to send a message from the server to the client, notify the client (see QuestManager.Notify methods) the client would update it's UI and actions as expected. Then, you'd have to handle completing the quests at the server; This is very game and system specific, another reason it's not built into Quest System Pro. To communicate the completion / cancellation of quests you can also send use the Notify() methods.

    Is it easier? Yep. Is it easy? Nope, not really; Network code hardly ever is :)
     
  15. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    ya Networking code never is, but just wanted to be clear before I decide to use this for our multi player game or not. I may just write my own simple quest manager for now for the multi player game,. Just to keep things simple.

    Thanks for this info.
     
    jorisshh likes this.
  16. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    V1.0.1 Is here (currently pending, this is also the update that will rise the price to $40) :D

    New:
    • Waypoint system with actions and conditions per waypoint. Can be used for various different game types including delivery and escrot quests, walking NPCs through the map (ecosystem), etc.
    • LipSync (Pro) integration
    • Added tag option to progress trigger - By default it searches for the player, when tag is set it only allows objects with set tag. Could be used to keep an object in an area for N seconds or let an NPC pass (useful for transport quest)
    • Updated affector and progress editors, looks cleaner now
    • Navigation handler + IAchievementUIRepaintable renamed to IAchievementStatusBlockUI
    • New UI navigation options for Node decision UI elements. By default the first node option will be selected (for controller support) + navigation options to set the navigation of the decisions to automatic, explicit or none, this prevents the focus from being lost on the decisions (See: NavigationHandler and INavigationHandler)
    • Module editor added (modules that belong to a component are now shown inside the component editor, makes it clearer what belongs to what)
    • Added tests for achievements task progress checks
    • SetQuestProgressOnTrigger now only activates if the object and compnent are enabled, actions are ignored otherwise
    • UI Repaint blocks now have events so you can set extra UI elements if needed
    • Updated to latest Devdog.General
    • New action set quest progress on trigger object (Devdog.GEneral.Trigger)
    • Quest status animator, which can animate an object when a quest's status has changed
    • Added QuestProgressDecorator and QuestStatusDecorator, these 2 classes handle quest statuses and quest progress and avoid a lot of boilerplate + custom editors to warn the user if a task with the set name can't be found (updated existing affectors and spawners to use these new classes) Breaking change: Quests and task names will have to be re-assigned to affectors and progress setters (setup wizard warns about this)
    • Sealed quest status object enabler and destructor (they're super small so instead of inheriting just create a new script)
    • (Devdog.General) Added rating tool to request ratings on assets (can be ignored if you don't want to leave a rating / review)
    • (Devdog.General) Rewired window input handler can now enable and disable input maps.
    • (Devdog.General) Minmax value helpers for int, float and vector3
    Fixes
    • My custom monster SetDestination error fixed
    • Quest task progress could be set directly by calling the task's set method instead of the quest's set method. The task set now also validates if progress can be set
    • Fixed issue with dragging an item into the object picker field (cast exception). The component is now grabbed from the gameObject
    • (Devdog.General) Updated UIWindowPage to prevent the curernt page from being overwritten by the default when showing it
    • (Devdog.General) OnTriggerUnUsed fixed, now stops callbacks when a callback receiver consumes it
    • (Devdog.General) Updated reflectionUtility to now only scan the UnityEngine and custom assemblies (much faster)
    • (Devdog.General) Removed scriptable object creation in EditorReflectionUtility.DeepClone(), it's now used as a reference instead
     
    Last edited: Oct 11, 2016
    hopeful likes this.
  17. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    There have been some concerns about paid updates and upgrades, so I decided to clear the air a bit.

    After some consideration, I've decided that Inventory Pro, Quest System Pro, The Sci-Fi UI Design, and Los Pro will get free updates and upgrades for life. So no more paid upgrades :)

    Cheers,
    Joris
     
    inxidious likes this.
  18. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Ho ho ho.


    Sponsored by over 40 of the highest rated Unity Asset Store developers and a whole sleeve of industry
    partners – including Unity themselves!

    Sune and I (Devdog) are launching a huge Christmas Giveaway Calendar for Unity game developers on December 1st.

    You can already now sign up right here.


    So what’s this all about?

    For the past weeks, we’ve been collecting sponsored gifts related to Unity (asset vouchers, product keys, conference tickets etc.), and throughout each day of December leading up to Christmas Day on the 25th , we will be sending out these sponsored gifts as early gamedev Christmas presents via e-mail to hundreds of lucky winners.

    The total prize pool is over $15.000, with over 350 presents in the prize pool. Merry Christmas from Devdog, and every single one of the sponsors.

     
    montyfi and danreid70 like this.
  19. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Version 1.0.2 is here (awaiting approval) :)
    • Navigation handler now has the option to select the first element if none of the elements have been selected yet + an option to force the first selection.
    • HasItemInInventory edge condition threw an error when no item was set (fixes #16)
    • questDetailsWindow on DetailedQuestWindowUI field is now required
    • Quest triggers became inactive when triggered while the quest was not activated yet - Fixed
    • Fixed issue where detailed quest window didn't show quest details when a quest was selected (when a button was clicked).
    • Renamed editor to Quest System Pro editor, makes it easier to find when docked (fixes #17)
    • Added Quest status component enabler to enable / disable components based on quest status. Uses reflection to find 'enabled' on UnityEngine.Component inherited components (for some reason enabled isn't on the UnityEngine.component, but all inherited components).
    • New QuestStatusObjectSpawner; This will spawn an object and destroy it based on quest status. This could be used for (interactive) objects, but also a prefab with a playmaker component to run that.
    • Added Quest completed and quest task progress UI components to display quest progress / status in the UI + fixed issue with buggy progress bar
    • Unregistered events (fixes issues with loading new scenes)
    • Renamed public bool AreTasksProgressedSufficientlyToCompleteQuest() to public bool AreRequiredTasksCompletable()
    • Unregistering UI listeners to avoid issues when loading new scenes
    • Fixed easysave2 error about trying to overwrite save file
    • Waypoint and custom monster Unity 5.5+ ready
     
  20. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
  21. Asset_Store_Deals

    Asset_Store_Deals

    Joined:
    May 2, 2016
    Posts:
    335
    Just to let you know we have added Quest System Pro to AssetStoreDeals.com.

    When you have other sales, you can add them to this website yourself simply by pasting the link to your asset in the designated area.

    Best of luck to you with this sale!
     
    jorisshh likes this.
  22. hernanperez85

    hernanperez85

    Joined:
    Jan 30, 2014
    Posts:
    15
    Hello Jorisshh, how are you? I'm thinking about Quest System Pro for a project where I'm using Playfab to keep achievement of users( Quest completion).
    My question: Are you planning some kind of integration with playfab? In negative case, do you think could be easy to find a workaround (some coding) to integrate playfab with the current version of Quest system pro?
    Thanks in advance!
     
  23. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    By default all data is saved using player prefs (in JSON format). If you want to synchronously load all quest statuses at start this would be quite simple to do, as all you'd have to do is load the data, make sure it's parsed and inject the progress in Quest System Pro.

    If you want to stream the data, however, things get a bit harder. The QuestManager has a dictionary questStates (QuestManager.instance.GetQuestStates();) The questStates contains all active and completed quests, as well as achievements with any form of progress (achievements are like global quests, they're always active, but only saved if some progress is set).

    If you want to stream the data you'd have to update the quest states as data comes in by position or scene.

    I hope that made some sense :p
     
    hernanperez85 likes this.
  24. hernanperez85

    hernanperez85

    Joined:
    Jan 30, 2014
    Posts:
    15
    Thank you for your quick reply, jorisshh.
    Another question, or better said ... a request.
    Before everything, I know you cannot make an integration for every 3rd-party asset in the store and UFPS 2 is probably comming this year.
    But, are you planning an integration with UFPS from Opsive (https://www.assetstore.unity3d.com/en/#!/content/2943)?

     
  25. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    What kind of integration would you like to see with Quest System Pro? Both systems can work next to each other, but not directly communicate. What would you like them to communicate?
     
  26. hernanperez85

    hernanperez85

    Joined:
    Jan 30, 2014
    Posts:
    15
    For example, I come from Dialogue System for Unity (And I'm sure many of your potential users will come from there or from some in-house solution). And the main reason why I stick with it is that, if I want to integrate it with my UFPS Project I have to follow a couple of steps(detailed in the documentation), add some scripts(provided by them) and voilà I have it working with my FPS character. Now I can approach an NPC, press 'E' key and I'm interacting with him. It's a very ease process.

    I know this kind of integration requires time and work, especially when you have to create scripts for every integration, but some guidelines of how to integrate it with the main controllers in the asset store: UFPS or maybe TPC would be really appreciated.

     
  27. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    UFPS doesn't have any NPC's or anything like that, right? So, you'd want the controller to work, eg, you walk up to an NPC, press a button and you can talk to that NPC (these would be quest system pro npcs, but a UFPS player controller?). In that case, you can already do this, have a look at: http://devdog.io/unity-assets/inventory-pro/documentation/2.5p/components/selectors

    A controller integration is quite simple ( http://devdog.io/unity-assets/inventory-pro/documentation/2.5p/api/custom-character-controller ); I can actually reuse the code from Inventory Pro, as they're exactly the same :) - I'll consider adding it to the next build, as I already have the code anyway.
     
  28. hernanperez85

    hernanperez85

    Joined:
    Jan 30, 2014
    Posts:
    15
    UFPS has NPCs? Yes and No.

    Yes, you can create something called remote players (mainly for AI or Network players purposes) using a Wizard provided by UFPS. And use it as an NPC. For example, imagine you have an NPC which after a dialog he/she joins you as AI. That could be a use.

    But no, I wasn't talking about them when I referred to NPCs. I just used the word NPC as a synonim of any gameobject I can interact with. For example a capsule, cube or any gameobject.

    So yeah, basically, as you said in the last paragraph, I was talking about a controller ntegration with UFPS :).

    PS: Sorry if I didn't express well at the beggining, the english is not my native language :)

     
    jorisshh likes this.
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Joris - UFPS has its own interaction system that can interact with any GameObject that has a subclass of vp_Interactable. It's what the Dialogue System uses to trigger conversations in UFPS. I don't recall if Inventory Pro's controller integration uses vp_Interactable, but it's one way you could integrate UFPS.
     
    jorisshh likes this.
  30. Stevepunk

    Stevepunk

    Joined:
    Oct 20, 2013
    Posts:
    205
    You wanted integration suggestions.

    The Steam API seems like an obvious integration for the Achievement system.
    (or more likely the .net wrapper for the steam api as the steam api is in c++)
     
    Last edited: Feb 8, 2017
    jorisshh and Adrad like this.
  31. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Quest system pro V1.0.3 is here :)

    • [ADD] SimpleAchievementEdgeCondition
    • [ADD] RandomEdgeNode component, which chooses an edge to a node at random.
    • [ADD] TaskProgressRowUI has a task description UI element
    • [FIX] Detailed quest windowUI doesn't fail when quest is null
    • [FIX] Fixed issue where task progress UI (quest and achievement) didn't repaint quest / achievement names.
     
  32. lezan_

    lezan_

    Joined:
    Nov 27, 2016
    Posts:
    50
    Hello @jorisshh,
    I am trying Quest System Pro, but I am facing some error when my character try to start a quest from a quest giver.

    Code (csharp):
    1. Destroying assets is not permitted to avoid data loss. If you really want to remove an asset use DestroyImmediate (theObject, true); UnityEngine.Object:Destroy(Object) Devdog.QuestSystemPro.UI.QuestWindowUI:RepaintQuestTasks(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUI.cs:106) Devdog.QuestSystemPro.UI.QuestWindowUI:Repaint(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUI.cs:71) Devdog.QuestSystemPro.QuestGiver:Use() (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:55) Devdog.QuestSystemPro.QuestGiver:OnTriggerUsed(Player) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:32) Devdog.General.TriggerBase:NotifyTriggerUsed(Player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:198) Devdog.General.Trigger:DoUse(Player) (at Assets/Devdog/General/Triggers/Trigger.cs:152) Devdog.General.Trigger:Use(Player) (at Assets/Devdog/General/Triggers/Trigger.cs:137) Devdog.General.TriggerBase:Toggle(Player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:90) Devdog.General.TriggerBase:Toggle() (at Assets/Devdog/General/Triggers/TriggerBase.cs:80) Devdog.General.TriggerInputHandlerBase:Use() (at Assets/Devdog/General/Triggers/TriggerInputHandlerBase.cs:54) Devdog.General.TriggerInputHandler:OnPointerClick(PointerEventData) (at Assets/Devdog/General/Triggers/TriggerInputHandler.cs:84) UnityEngine.EventSystems.EventSystem:Update()
    Code (csharp):
    1. Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption. UnityEngine.Transform:SetParent(Transform) Devdog.QuestSystemPro.UI.QuestWindowUIBase:CreateUIElement(TaskProgressRowUI, RectTransform) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUIBase.cs:83) Devdog.QuestSystemPro.UI.QuestWindowUI:RepaintQuestTasks(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUI.cs:111) Devdog.QuestSystemPro.UI.QuestWindowUI:Repaint(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUI.cs:71) Devdog.QuestSystemPro.QuestGiver:Use() (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:55) Devdog.QuestSystemPro.QuestGiver:OnTriggerUsed(Player) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:32) Devdog.General.TriggerBase:NotifyTriggerUsed(Player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:198) Devdog.General.Trigger:DoUse(Player) (at Assets/Devdog/General/Triggers/Trigger.cs:152) Devdog.General.Trigger:Use(Player) (at Assets/Devdog/General/Triggers/Trigger.cs:137) Devdog.General.TriggerBase:Toggle(Player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:90) Devdog.General.TriggerBase:Toggle() (at Assets/Devdog/General/Triggers/TriggerBase.cs:80) Devdog.General.TriggerInputHandlerBase:Use() (at Assets/Devdog/General/Triggers/TriggerInputHandlerBase.cs:54) Devdog.General.TriggerInputHandler:OnPointerClick(PointerEventData) (at Assets/Devdog/General/Triggers/TriggerInputHandler.cs:84) UnityEngine.EventSystems.EventSystem:Update()
    Code (csharp):
    1. NullReferenceException: Object reference not set to an instance of an object Devdog.QuestSystemPro.UI.QuestWindowUI.Repaint (Devdog.QuestSystemPro.Quest quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/UI/QuestWindowUI.cs:80) Devdog.QuestSystemPro.QuestGiver.Use () (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:55) Devdog.QuestSystemPro.QuestGiver.OnTriggerUsed (Devdog.General.Player player) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/QuestGiver.cs:32) Devdog.General.TriggerBase.NotifyTriggerUsed (Devdog.General.Player player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:198) Devdog.General.Trigger.DoUse (Devdog.General.Player player) (at Assets/Devdog/General/Triggers/Trigger.cs:152) Devdog.General.Trigger.Use (Devdog.General.Player player) (at Assets/Devdog/General/Triggers/Trigger.cs:137) Devdog.General.TriggerBase.Toggle (Devdog.General.Player player) (at Assets/Devdog/General/Triggers/TriggerBase.cs:90) Devdog.General.TriggerBase.Toggle () (at Assets/Devdog/General/Triggers/TriggerBase.cs:80) Devdog.General.TriggerInputHandlerBase.Use () (at Assets/Devdog/General/Triggers/TriggerInputHandlerBase.cs:54) Devdog.General.TriggerInputHandler.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Assets/Devdog/General/Triggers/TriggerInputHandler.cs:84) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:52) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269) UnityEngine.EventSystems.EventSystem:Update()

    I am using a custom character controller.
    In the demo scene I have no problem.
    Can you suggest something?

    Thanks for your support!
     
  33. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    On your QuestWindowUI the reference to "tasksContainer" appears to be a reference to a prefab, which should be a reference to a transform where the tasks can be stored. The regards the 1st and 2nd error.

    As for the third error, do you have a UIWindow component attached to the QuestWindowUI? This should've been added by default though.
     
    lezan_ likes this.
  34. lezan_

    lezan_

    Joined:
    Nov 27, 2016
    Posts:
    50
    Hello @jorisshh,
    to not make error, I take Canvas from Main Scene and store it a prefab. Then I put it in scene after removing something (like Demo).
    As can you see on the image, I think all is set:
    - If I click on TaskContainer it refer to an object on scene;
    - QuestWindow object had UI Window component.

    Thanks for your support!
     

    Attached Files:

  35. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Hm.. in that case I think I'll need some hands on approach. Could you perhaps upload your project and send me a link (PM please)?
     
    lezan_ likes this.
  36. lezan_

    lezan_

    Joined:
    Nov 27, 2016
    Posts:
    50
    Hello @jorisshh,
    It is not easy:
    - project actualy is several GB;
    - I am using third party plugin;
    - I am experience since three weeks connection issues and for me is impossible to download/upload file.

    Anyway, I will try do upload it, but I think it will be a fail.
    If you have other possible solutions, I am here.

    Thanks for your support.
     
  37. rbm123

    rbm123

    Joined:
    May 24, 2015
    Posts:
    130
    No free version?
    I'm from Iran and I dont have access to your payment services!
     
  38. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Nope, for the moment there's only paid versions of our assets; We're also not planning to release any free versions :(
     
  39. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Quest System Pro 1.0.4 is coming :)

    Changelog:
    • HasItemInInventory typo fixed
    • First version editor improvements. Edges can now be connected before, between or after existing edges; This makes re-routing and rewiring a lot easier.
    • Larger connectors
    • Better copy / pasting of nodes and a group of nodes
    • PlayerDecisionNode couldn't be copied, fixed
    • Status message returns an empty string if the statusMessage format is invalid instead of throwing an exception
    • Minimap slightly tweaked and zoom indicator removed for now
    • Copy pasting lines of text doesn't copy the editor along with it

    Drag to empty location to directly add and connect a new node:


    Add new nodes anywhere, before, between or after existing outgoing edges:


    Better copy pasting behaviour (edges stay connected as expected):
     
    Last edited: Apr 21, 2017
    AGregori, hopeful and TonanBora like this.
  40. SuneT

    SuneT

    Joined:
    Feb 29, 2016
    Posts:
    41
    Quick update: You can win our newest asset; Odin Inspector & Serializer for free in a giveaway we just launched to celebrate that Odin is soon ready for release! :)

    Join here: http://vyper.io/c/1059
     
    magique likes this.
  41. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I have a question about Integrations.

    You said Behavior Designer and ICE Creature Control

    Is this ongoing?

    And what about the new update plan?
     
  42. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I'm currently on vacation, so new development is temp. paused until I return (end of July), and updates are only limited to support and serious bugfixes. Once I get back I'll continue development :)
     
  43. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Does anyone know if this works on XBox One?
     
  44. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I'm getting compiler errors in Unity 5.6.1p2. The following ambiguous reference error occurs in several files.

    Assets/Devdog/QuestSystemPro/Scripts/Dialogue/UI/DialogueUI.cs(25,16): error CS0104: `UIWindow' is an ambiguous reference between `Devdog.General.UI.UIWindow' and `UnityEngine.UI.UIWindow'
     
  45. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    I've just received the same message over Skype; It seems Unity 5.6.1p2 has a new class named UIWindow for some reason, that conflicts with the devdog one. A quick workaround is to prefix this with Devdog.General.UI. where Unity compilains about the ambiguous reference.

    Strange it doesn't seem to occur in 5.6.0; I'll look into this as soon as I can.
     
  46. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    OK so it looks like a 3rd party asset I have has made a really bad decision to wrap their own UIWindow class inside a UnityEngine.UI namespace. So although it looks like it's a Unity thing, it's actually not. So it's not your issue after all. Although adding the namespace prefix to yours would still be a good idea.

    However, I have all kinds of errors when I try to run Quest System pro in a completely fresh project. Here are the issues:

    In the MainDemo scene there is a Missing Prefab:

    upload_2017-6-24_11-8-26.png

    And after I generate the databases, I get the following errors in the console window when I run the scene:

    Local identifier is null. Quest (most likely) doesn't exist in current database.
    Assertion failed. Value was Null
    Expected: Value was not Null
    UnityEngine.Assertions.Assert:IsNotNull(ILocalIdentifier, String)
    Devdog.QuestSystemPro.QuestManager:GetQuestStates(ILocalIdentifier) (at Assets/Devdog/QuestSystemPro/Scripts/Managers/QuestManager.cs:149)
    Devdog.QuestSystemPro.Quest:CanActivate() (at Assets/Devdog/QuestSystemPro/Scripts/Quests/Quest.cs:400)
    Devdog.QuestSystemPro.UI.QuestGiverUI:<OnQuestChanged>m__1(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:53)
    Devdog.General.ThirdParty.UniLinq.Enumerable:Any(IEnumerable`1, Func`2) (at Assets/Devdog/General/ThirdParty/UniLinq/Enumerable.cs:128)
    Devdog.QuestSystemPro.UI.QuestGiverUI:OnQuestChanged(Quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:53)
    Devdog.QuestSystemPro.UI.QuestGiverUI:Start() (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:24)

    ArgumentNullException: Argument cannot be null.
    Parameter name: key
    System.Collections.Generic.Dictionary`2[Devdog.General.ILocalIdentifier,Devdog.QuestSystemPro.QuestsContainer].ContainsKey (ILocalIdentifier key) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:458)
    Devdog.QuestSystemPro.QuestManager.GetQuestStates (ILocalIdentifier localIdentifier) (at Assets/Devdog/QuestSystemPro/Scripts/Managers/QuestManager.cs:150)
    Devdog.QuestSystemPro.Quest.CanActivate () (at Assets/Devdog/QuestSystemPro/Scripts/Quests/Quest.cs:400)
    Devdog.QuestSystemPro.UI.QuestGiverUI.<OnQuestChanged>m__1 (Devdog.QuestSystemPro.Quest o) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:53)
    Devdog.General.ThirdParty.UniLinq.Enumerable.Any[Quest] (IEnumerable`1 source, System.Func`2 predicate) (at Assets/Devdog/General/ThirdParty/UniLinq/Enumerable.cs:128)
    Devdog.QuestSystemPro.UI.QuestGiverUI.OnQuestChanged (Devdog.QuestSystemPro.Quest quest) (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:53)
    Devdog.QuestSystemPro.UI.QuestGiverUI.Start () (at Assets/Devdog/QuestSystemPro/Scripts/Quests/QuestGivers/UI/QuestGiverUI.cs:24)

    [EDIT]
    For the second issue I realized that the demo scene needs the demo database files. However, it won't let me assign the demo database files to the _Managers. If I drag and drop it, it refuses to accept them. And if I click the button to select from existing assets, it doesn't show them as existing at all.

    [EDIT 2]
    In looking at the existing database files, if I click the asset I see the following in the Inspector:

    The associated script could not be loaded. Please fix any compile errors and assign a valid script.

    So that may be why it doesn't recognize the assets. But I don't see any compile errors at all.
     
    Last edited: Jun 24, 2017
  47. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Instead of trying to fix the demo scene, I'm just starting from scratch and that seems to be going better so far.
     
  48. jorisshh

    jorisshh

    Joined:
    Oct 6, 2009
    Posts:
    1,522
    Did you manage to resolve the issues? If the script fails to compile you can right click the script and hit re-import. This seems to be a re-occuring issue since Unity 5.4+
     
  49. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I got Inventory Pro up and running, but haven't got back to Quest System Pro. I got side-tracked with beta testing the new Vegetation Studio. I'll let you know how things go when I get back to it.
     
  50. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Ist there a way to import quests and dialogues from articy draft 3 or other programms?
    How can i import things si have not to write all dialogues or quests again or start a copy and paste game?

    Edit:
    Oh and can i use the quest system pro and inventory pro for a multiplayer game wich is using unet? If not, will you add that and in what estimated timeframe?
     
    Last edited: Jul 12, 2017
    jorisshh likes this.