Search Unity

  1. Unity 2018.3 is now released.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Want more efficiency in your development work? Sign up to receive weekly tech and creative know-how from Unity experts.
    Dismiss Notice
  4. Build games and experiences that can load instantly and without install. Explore the Project Tiny Preview today!
    Dismiss Notice
  5. Nominations have been announced for this years Unity Awards. Celebrate the wonderful projects made by your peers this year and get voting! Vote here!
    Dismiss Notice
  6. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  7. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

[RELEASED] Quest Machine: Hand-Written and Procedurally-Generated Quests

Discussion in 'Assets and Asset Store' started by TonyLi, Sep 20, 2017.

  1. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @AndyNeoman - You can assign the QuestEntity.entityType property at runtime. Here are some things to keep in mind:

    If your QuestGivers use QuestDomains to know what QuestEntities are present, remember that QuestDomains rely on OnTriggerEnter/OnTriggerExit or their 2D counterparts. If you add a QuestEntity component to a GameObject after it has already entered the QuestDomain's trigger collider, the QuestDomain won't know about it. You'll need to call the QuestDomain's AddEntity() method to tell the QuestDomain about the new entity. Or you can make it trigger another OnTriggerEnter, for example by disabling and re-enabling its collider so it re-registers itself with the physics engine.

    An EntityType should always be assigned to QuestEntity.entityType. The upcoming version 1.0.8 allows entityType to be unassigned, in which case the generator will ignore the entity.

    If that info doesn't help, would you please describe your concern and/or provide an example of what you want to accomplish?
     
    AndyNeoman likes this.
  2. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Thanks @TonyLi, I took a closer look at the actions/urgencies and am I right in thinking that the number of entities does not matter if you are not using a entity count multiplayer like threat urgency? MY hunger urgency does not have multiplyer so should the number of food items not affect the calculation? If it does need to be included then as above I cant seem to set the entity type. Could you show me an example?

    What I am having a slight problem is working out the best way to complete a procedural quest. I have a quest that I want completed when the animal picks up food and eats it. The AI system takes care of the animal picking up food and eating it but I then need to tell QM that this has happened and play reward/Completed. (I'm using ICE AI) Could you give an example of how you send a message to QM that the procedural quest is completed?
     
    Last edited: Oct 11, 2018
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @AndyNeoman - The short answers are:
    1. In your case, the quantity of an entity doesn't matter.
    2. Use MessageSystem.SendMessage() to tell QM that the animal ate food, and set up an action on the entity type whose Completion Conditions listen for the message.
    Here's the long-winded answer:
    You're correct. If your custom urgency function doesn't look at the quantity of an entity type, then the quantity doesn't matter as long as it's 1 or more. In the example I PM'ed you earlier (QM_ProceduralExample_2018-09-21.unitypackage), the "Sate Hunger" urgency function returns the value of the observer's Hunger drive. In that example, the GameObjects were set up like this:
    • Gorilla (quest giver): Has a Hunger drive. Let's say this drive's value is +50.
    • Banana (quest entity): Has a Sate Hunger urgency function.
    The scene has a couple more GameObjects to make it interesting, but those are the important ones for this topic.

    When the gorilla generates a quest, it sees that there are some number of bananas in the world. (One of the "facts" in its world model is that there are n bananas.) Then it evaluates the banana entity type's Sate Hunger urgency function, which returns the gorilla's Hunger drive (+50). If no other facts in the world return a value greater than +50, the gorilla will generate a quest about the banana.

    The urgency function doesn't even look at any of the bananas' attributes. If you wanted to make it fancier, you could return a higher value for a banana than a tiny pea. Or maybe adjust the value based on how far away the objects are; a nearby pea might be more enticing than a faraway banana. But, as it stands in that example, it ignores the banana's quantity and attributes.

    The Banana entity type has an Eat action, indicating that one of the actions that can be done to it is to eat it:

    upload_2018-10-11_9-21-13.png

    The Eat action's Completion Conditions state that it should wait for a message "Fed" + "{QUESTGIVERID}":

    upload_2018-10-11_9-18-9.png

    The example I sent you earlier assumes that the player (a zookeeper) feeds the food item to the gorilla, which is why I chose the word "Fed". But it's an arbitrary text string. You can choose whatever's clear to you. In the generated quest, {QUESTGIVERID} is replaced by the ID of our gorilla. Quest Machine will generate a quest that listens for the message "Fed" + "Gorilla".

    In the example, the player picks up the banana and then clicks the gorilla's Feed button. This button is connected to a simple C# method that calls PixelCrushers.MessageSystem.SendMessage():

    Code (csharp):
    1. MessageSystem.SendMessage(this, "Fed", "Gorilla");
    When your ICE AI eats food, use MessageSystem.SendMessage to tell QM.
     
    AndyNeoman likes this.
  4. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Awesome support @TonyLi , Thank you.
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Happy to help! I know designing content for procedural generation can be kind of complex, so if any other questions come up, just let me know.
     
  6. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Thanks @TonyLi , Im not 100% sure what the "Gorilla" represents in the message. I understand when its the questgiverID but changing to "Gorilla" is confusing. I have it setup but the completion of the quest is not happening so I think the Gorilla is not correctly triggering. Is this the enitity type attached to the quest giver?

    EDIT:- I replaced the {Questgiver} in the parameter to the same string as the message "Female Gorilla" and I got a message to return to female gorilla so I think that triggered the completion (Although the expected completion text is Yum you fed the female gorilla).
    EDIT2:- Removed return to complete and now it is working correctly. :) One thing though how does the return work because I did take the player back to the gorilla but it still did not move past to completion.


    It must not recognised the questgiverID in my message. I can just look for this string in any case as it is the only way this quest can complete.
     
    Last edited: Oct 12, 2018
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @AndyNeoman,
    Sounds like you got it perfectly. To recap in case you have a question about it, I'll use the Gorilla/Banana example I posted earlier. In that scene, there are two gorillas. Gorilla #1's Quest Giver component looks like this:

    upload_2018-10-12_8-7-4.png

    When Gorilla #1 generates a quest, the text {QUESTGIVERID}, will be replaced by "Gorilla1".

    For example, going back to the Eat action:



    The generated quest's "feed me" node will listen for the message "Fed" + "Gorilla1". When it receives this message, it will complete the "feed me" node and activate the quest's next node (which in your case will be the Success node, indicating that the quest is done).

    Great! That's the right thing for your quest.

    In many games, it's common to require the player to return to the quest giver to turn in the quest with a final dialogue. The Return To Complete checkbox makes the generator add a node for this. The condition for this node is that the quest giver must receive the message "Discussed Quest" + (quest ID):

    upload_2018-10-12_8-15-0.png

    Quest Machine automatically sends this message when the player starts dialogue with a quest giver and talks about the quest. You don't need to set up anything extra.

    In your case, though, the player doesn't run dialogue with the quest giver, so this final node wouldn't make sense.
     
    AndyNeoman likes this.
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Quest Machine 1.0.8 Released!

    Version 1.0.8 is now available on the Asset Store.

    This release adds support for uSurvival and Inventory Engine.


    Important Note: In Unity 2018+, it's now possible to disable the built-in Physics2D package. For this reason, Quest Machine plays nicely and doesn't assume that Physics2D is enabled, which would cause compiler errors if it's disabled. If you're making a 2D project in Unity 2018+ or want to play the 2D demo scene, select menu item Tools > Pixel Crushers > Common > Misc > Enable Physics2D Support to tell the Dialogue System that you're using 2D. If you're using Unity 2017 or older, you can skip this.


    Version 1.0.8 Release Notes
    • CHANGED: If using 2D in Unity 2018+, you must set scripting define symbol USE_PHYSICS2D (see above)
    • Added: QuestGeneratorEntity.StartDialogue methods that generate quest first if necessary.
    • Added: Can now adjust drive values at runtime.
    • Added: Quest Journal UI options to always expand groups, show details when hovering on quest name.
    • Added: Quest Journal UI quest name can now show quest's icon.
    • Added: EntityType Saver. (Saves runtime changes to drives.)
    • Fixed: Removed null reference error when an urgency function is unassigned.
    • Fixed: Trigger Event and Collision Event components now handle >32 tags.
    • Fixed: Quest Journal > UI Settings > Journal UI incorrectly accepted Dialogue UI type.
    • Improved: Editor windows now gracefully ignore unreadable third party DLLs.
    • Improved: Added Assign Unique Keys menu item for Saver components.
    • Improved: Animator Saver now saves parameter values.
    • articy:draft:
      • Articy condition nodes correctly link to true and false result nodes.
      • Links to the same node now actually link to the same node instead of duplicates of the node.
    • Dialogue System for Unity:
      • Fixed: Now only replaces tags if Process QM Tags is ticked.
      • Fixed: GiveQuest() Lua function finds Quest Journal even if ID is blank.
      • Fixed: Now shows regular Quest Machine UI if content has no Dialogue System Conversation content.
    • ORK Framework: Fixed bug in GetQuestNodeStateStep.
    • Inventory Engine: Added integration.
    • uSurvival: Added integration.
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    hopeful likes this.
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Tutorial 2: Exploration Quest (simple quest using message system)
     
    hopeful likes this.
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Tutorial 3: Collection Quest (counters and spawners)
     
    hopeful likes this.
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Tutorial 4: Branching Quest with Timer
     
    hopeful likes this.
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Tutorial: AI Questers (NPCs completing quests on their own)
     
    hopeful likes this.
  14. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    570
    Great tutorial serie @TonyLi ! Thanks for providing those.
     
    TonyLi likes this.
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Thanks! More will be coming as time allows, including procedural quests, customizing the UIs, language localization, custom conditions & actions, and using articy:draft. I can prioritize these by request if anyone really needs a tutorial on one of those subjects.
     
    cygnusprojects likes this.
  16. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    570
    Would love to see the usage of articy:draft and quest machine ;)
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Sounds good. I just bumped it up to the front of the list. I need to catch up on some other dev work (Love/Hate, etc.), but I'll get this one out as soon as I've caught up on that.
     
    cygnusprojects likes this.
  18. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    525
    Those are useful videos. The more "how to" videos, or written tutorials, the easier it is for us to get our heads around the various moving parts of the questing system. My gut tells me that your system isn't difficult to understand. There are just a lot of parts necessary to accomplish the quest system mission. Well done!
     
    TonyLi likes this.
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Thanks! With tutorials 1-4 alone, you can make just about any quest you can dream up. Future tutorials will cover the extra stuff, like localization and procedural generation.
     
  20. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Hi @TonyLi, is there a setting for a procedural quests to start automatically without needing a player to accept?
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @AndyNeoman - It might require a tiny bit of scripting. You could add a script with a couple methods like these:

    Code (csharp):
    1. // Generate a procedural quest and call OnGeneratedQuestToAccept when done:
    2. public void GenerateQuestAndAccept()
    3. {
    4.     var generator = GetComponent<QuestGeneratorEntity>();
    5.     questGenerator.GenerateQuest(this, generator.questGroup, generator.domainType, generator.BuildWorldModel(), generator.requireReturnToComplete, generator.rewardsUIContents.contentList, generator.rewardSystems, generator.questListContainer.questList, OnGeneratedQuestToAccept);
    6. }
    7.  
    8. // This method receives a newly-generated procedural quest. Give it to the player:
    9. void OnGeneratedQuestToAccept(Quest quest)
    10. {
    11.     var questGiver = GetComponent<QuestGiver>();
    12.     questGiver.AddQuest(quest);
    13.     questGiver.GiveAllQuestsToQuester(GameObject.FindObjectWithTag("Player"));
    14. }
     
    hopeful and AndyNeoman like this.
  22. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782

    Great stuff, thanks.
     
  23. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Hi @TonyLi

    Im having a little trouble automating a quest start and changing counter values on a quest that is not running.

    So the quest is not active but I want it to autostart when one of its counters is 1 (initial value is 0)

    I am sending a message but it appears to not be changing the value (does the quest need to be active to listen to messages?

    MessageSystem.SendMessage(this, "Banana", "eaten");

    and in the quest i have a counter setup which when a message says "Banana" and parameter says "eaten" the value increments by literal 1. Then the quest should autostart when this counter is 1 or greater. If this can not work what is the method for starting a quest that is on the player but not enabled?
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @AndyNeoman - I just PM'ed you a patch file. In 1.0.8 and earlier, counters don't start listening until the quest goes active. In the patch (and upcoming 1.0.9), counters will also start listening if the quest is waiting to start and it has autostart conditions or offer conditions.
     
    AndyNeoman likes this.
  25. AndyNeoman

    AndyNeoman

    Joined:
    Sep 28, 2014
    Posts:
    782
    Thanks @TonyLi, all working perfectly now :).
     
    TonyLi likes this.
  26. digiross

    digiross

    Joined:
    Jun 29, 2012
    Posts:
    158
    @TonyLi how many quests does this asset support and/or any performance impact for a very large rpg project that I'm starting. This looks great but I have the need for several thousand quests.
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @digiross - It scales to MMORPG size, so several thousand quests within a reasonable footprint for a desktop game. If you're making a mobile game with tight memory constraints, you may want to reduce the number of quests, or section them by area, in which case you can have unlimited quests.

    When saving a player's quest journal, hand-written quests are more compact than procedurally-generated quests. This is because procedurally-generated quests need to save their generated quest text, whereas save data for hand-written quests only needs to include quest states, counter values, and a few other small data points, which typically amounts to just a few dozen bytes.

    Quest Machine is primarily an event-based system, which means that it doesn't do any processing until an event occurs, such as the player killing a monster or picking up an item. Then any quests that are listening for that specific event message will update themselves. So it scales up very well performance-wise.
     
    digiross likes this.
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Procedural Quest Generation Video Tutorial



    I tried to keep this video under 15 minutes, which isn't much time for a big subject like procedural content generation. The manual contains much more information about anything that I may have skimmed over. Also please feel free to post here or PM me if you have any questions about Quest Machine.

    The Dialogue System Integration video is coming tomorrow.
     
    hopeful likes this.
  29. GorkaChampion

    GorkaChampion

    Joined:
    Feb 6, 2018
    Posts:
    60
    Great work, related to performance, and talking about a big open world, entity types must be spawned first so the quest giver can give you the right quest?
    Can you please elaborate this a bit more? Thanks

    PS: I've been only working with the manual main quests till now but I think this is great for the side quests, you don't have to create all of them and they are created in auto pilot...
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @GorkaChampion - In general, yes. The quest giver observes domains, which are areas of the game world that may contain entities. Restricting quest givers to observe domains serves two purposes: (1) it's more efficient than observing the entire world, and (2) it simulates the quest giver's limited knowledge of the world. A farmer might know what's in his field, but there's no reason why he should know what's in a faraway sorceror's tower.

    When the quest giver generates a quest, it builds an internal mental world model consisting of entity types and domain types. Initially this model represents the entities in the domains that the quest giver observes. It consists of a list of facts: <entity count, entity type, domain type> such as <4, orcs, field>.

    You can also add your own facts to the world model by assigning a delegate method to QuestGeneratorEntity.updateWorldModel. This way, you can add info that might not be present in domains.


    Note also that entities can also have multiple urgency functions, and they can be as complex as you want. The tutorial uses a simple "orc and quest giver dislike each other" urgency function. But you could define your own urgency functions that are more abstract and interesting, like Sir Lancelot. He might be influenced by an urgency function to woo Queen Guinevere, while at the same time having an urgency to fight alongside King Arthur, and also another urgency to find the Holy Grail. So a single entity in a domain could have a lot of reasons for needing a quest done.

    Motives also give variety to quests. In the Demo scene, the Knight and Pirate both generate quests to get rid of a threat (orcs or wolves, whichever is more populous). Based on their drives, the Knight usually makes a quest to kill the threat, whereas the gentler Pirate usually asks the player to polymorph the threat into a rabbit.


    One thing I didn't mention in the video is that, if you generate a quest in playmode in the editor, you have the option to save it as an asset just like your hand-written quest assets. Then you can edit it if you want to tweak it. I suspect most people don't do this, however, since it locks in the parameters of the quest just like a hand-written one. But it's an option.
     
    Last edited: Nov 19, 2018
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Dialogue System Integration Tutorial



    You can get the Dialogue System for Unity for 55% off now in the Asset Store's Ultimate Characters Bundle. All assets in the bundle are 55% off, and you only pay for the assets you don't already own.

    Quest Machine is set up as an "upgrade" purchase to the Dialogue System. If you already own the Dialogue System, you can get Quest Machine for 50% off. So if you take advantage of the Ultimate Characters Bundle, you can get the Dialogue System for 55% off, and then Quest Machine for another 50% off.
     
    hopeful likes this.
  32. GorkaChampion

    GorkaChampion

    Joined:
    Feb 6, 2018
    Posts:
    60
    Ok, so I understand the entities game object with the component must be on the scene (under the domain trigger) for the quest to be launched. So then I may spawn all the entities at the beginning (without the mesh and IA activated) and I'll active them when the player is close (Some kind of imitating LODs). Do you think that approach could be good? (in order to increase performance, otherwise it's impossible for a big open world)
     
  33. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Sure, that's fine. You can even use Quest Machine's LODManager script if you want. As long as the quest entities register with the domain they're in (i.e., OnTriggerEnter), they'll work fine with procedural generation.
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Quest Machine 1.0.9 Released!

    Version 1.0.9 is now available on the Asset Store!

    Release Notes:
    • CHANGED: Quests now also activate counter listeners if state is WaitingToStart and has autostart or offer conditions.
    • Improved: Added cooldown update frequency to Quest Giver to automatically update quest cooldowns & quest indicators.
    • Improved: UI panel show/hide animations can now use Animation component as well as Animator.
    • Fixed: Float conversion in .NET4 is now culture invariant.
    • Fixed: Can no longer delete Start node.
    • Compass Navigator Pro: Updated support package.
    • Emerald AI: Updated EmeraldAISaver to properly play dead state.
    • Invector character controllers: Added support.
     
    hopeful likes this.
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Black Friday Sale Ends Today

    The Asset Store's Black Friday Sale ends today. During the Black Friday Sale, you can get the Ultimate Characters Bundle, which includes the Dialogue System for Unity, for 55% off each asset in the bundle. You only pay for assets you don't already own.

    Tip: If you own a license for the Dialogue System, you can get a 50% discount "upgrade" price on Quest Machine. So don't buy them in the same purchase. Buy the Dialogue System first, then get the 50% discount on Quest Machine.
     
    hopeful likes this.
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Quest Machine 1.1.0 Released!

    Version 1.1.0 is now available on the Asset Store!

    This update focuses on procedural quest generation, but of course you can use Quest Machine to create human-authored quests as well. Quests are not restricted to a limited set of pre-designed templates. Quest Machine supports whatever kinds of quests you can dream up.

    Release Notes:
    • Added: Drive alignment urgency function.
    • Improved: Generated quest actions can now send messages when active and completed.
    • Fixed: Generated actions with effects that modeled the player's inventory domain weren't being chosen.
    • Fixed: Bug generating actions that manipulate the generator's world model of the player's inventory.
    • Fixed: Added EntityType Images section to quest database assets to specify images used in procedural quests.
    • Fixed: QuestGeneratorEntity now disallows parallel processes for same entity to prevent duplicate quests.
     
    hopeful likes this.
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Quest Machine 50% Off in Cyber Week Mega Sale

    Quest Machine is 50% off in the Asset Store's Cyber Week Mega Sale!

    Andrew at the Asset Store posted a great spreadsheet that lists every single asset in the Cyber Week Sale. See it here. Or go directly to Quest Machine.
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Updated uMMORPG Support Package

    uMMORPG 1.148 (released yesterday) has a breaking API change. You can download the Quest Machine's updated integration package from the Extras page. Note that this package is compatible with 1.148+.


    ---

    Cyber Week Mega Sale Still Going On

    Weeks are a little longer in Asset Store land. :) The Asset Store's sale is still running until December 7, so you still have a chance to pick up Quest Machine at half price.
     
    Tiny-Tree likes this.
  39. GorkaChampion

    GorkaChampion

    Joined:
    Feb 6, 2018
    Posts:
    60
    Highly recommended!! I use it everyday and I'm targeting around 100 quests
     
    hopeful and TonyLi like this.
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Unity Christmas Giveaway 2018 - Free Pixel Crushers Assets December 4

    Sign up for the 2018 Unity Christmas giveaway: http://christmas.devdog.io

    December 4 is Pixel Crushers day, with over 15 Pixel Crushers assets being given away, including Quest Machine. Good luck!
     
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Cyber Mega Sale - Quest Machine 50% Off

    The Unity Asset Store Cyber Mega Sale is still on through December 7. Your chance to get Quest Machine at half price ends on Friday, so remember to pick it up before the sale ends.


    ---

    The Lonely Gorilla on Steam

    Check out The Lonely Gorilla in early access on Steam, using Quest Machine:



    I'm looking forward to seeing how this interesting simulation game develops!
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Updated Support Package for ORK Framework 2.2.0

    The Quest Machine Extras page has updated support packages for ORK Framework 2.2.0 and uMMORPG 1.148, both of which introduced API changes that required updates to support packages.
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Quest Machine 1.1.1 Released

    Version 1.1.1 is now available on the Asset Store. This version contains the updated support package for uMMORPG 1.148 mentioned above. It also improves UI animation to gracefully handle the case when an animator is destroyed while Quest Machine is waiting for the animation to finish (e.g., show or hide panel).
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
  46. ChillyMcChill

    ChillyMcChill

    Joined:
    Nov 17, 2016
    Posts:
    43
    Hello, I am using the usurvival integration on android. In editor the quest status updates just fine (1/2 zombies killed) but on build I notice the status stays at 0 even after killing the zombies. What could be wrong? Thanks :)
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Hi @ChillyMcChill - Here are some things to check:
    • Have you made the code additions on page 4 of the uSurvival_Quest_Machine_Addon.pdf manual?
    • And set up the GameObjects as described on page 5?
    • Did you assign your zombie quest to the quest database, and assign that quest database to the Quest Machine GameObject?
    • Try to make a build for another platform such as Standalone. Does this work correctly, or does it have the same issue?
    • Are there any errors in the output log file?
     
    ChillyMcChill likes this.
  48. ChillyMcChill

    ChillyMcChill

    Joined:
    Nov 17, 2016
    Posts:
    43
    Forgot to add the player objects. Seems to work now thanks ! :D

    I am trying to figure out why I get "talk to NPC" when I attempt to pick up my reward for the quest though , what could be the issue here? (Pic Attached)

    Thanks again :)
     

    Attached Files:

  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    8,637
    Can you please describe the issue in more detail?

    I'm guessing your Task Bot has a Quest Giver Interactable component, correct? Presumably when you talk to it, it should run the remaining part of the quest dialogue that gives the player a reward and sets the quest to successful. If the player has already completed the quest, the dialogue will contain whatever content you've set in the Quest Giver component's Dialogue Content > No Quests UI Contents.
     
  50. attaway

    attaway

    Joined:
    Nov 12, 2014
    Posts:
    14
    What's the status on Rucksack integration?
    Is it currently possible to use it with Quest Machine?