|
Post by tharindu on Apr 19, 2017 12:35:47 GMT
New progress update. Please see top of thread. Sorry for bringing in smaller updates, but I am planning to implement smaller sets of features in shorter time periods which makes things easy for me since this is not my full time job. It helps keep things in perspective too. I am thinking of implementing a few more quest types. Currently planned for 1. Discover (Discover an area) quest 2. Escort quest 3. Multiple Assassination quest If you have more ideas for quests to implement, I'd be glad to put them on depending on its feasibility. There are only 5 types of quests in general. Kill Quests (Kill single enemy, kill X number of Y or even more rare, kill X with way / object Y) Rescue / Escort Quests (go to X to save Y, Bring X to Y) Fetch Quest (Bring object (key, weapon, item) to someone or somewhere) Discovery Quest (Find a person, place or thing) Escape Quest (Leave Area) Escape is pretty much handled like a discovery quest. I think the dialog system sounds awesome. I've no experience using it, no idea how powerful it is, but i think a dialog system of some sort needs to be in almost any quest system in some fashion. Great work here! this thing looks wonderful. @ shadex Hey man thanks for the positive feedback! I really appreciate it. I took a look at your suggestions too. See below. 1. Kill Quests (Kill single enemy, kill X number of Y or even more rare, kill X with way / object Y) Kill quests in particular I took a different approach. I wanted to be very specific about my targets. Say a couple of clan leaders being killed would be a quest. I kinda assumed that I wouldn't have the need to kill a number of enemies unless my intention was to pick up something they own. For which I implemented the gather quest. Killing X with way / object is something I didn't think about and frankly they make for great secondary/bonus objectives. I'll look into how I can implement this. My immediate idea was to introduce a quest type called 'Generic Quest'. It wouldn't have any properties on it, other than a description. So these quests can be updated easily through a different script that triggers the quest complete event. It could be triggered from a target dying, or an ability being invoked or anything. Which gives you room to expand into a larger amount of possibilities. Also I want to keep the quest system as far away from the combat system as possible since I don't want to modify more invector code than I've already done. 2. Rescue / Escort Quests (go to X to save Y, Bring X to Y) I have this on the roadmap. 3. Fetch Quest (Bring object (key, weapon, item) to someone or somewhere) I have kind of partially implemented this. I've created a new enum for the Item Manager named QuestItem . I can collect any amount of Quest Items for Gather quests and bring them back to the Quest Provider. But I have not implemented a delivery sort of quest. I will implement this. Shouldn't be too difficult 4. Discovery Quest (Find a person, place or thing) On the roadmap 5. Escape Quest (Leave Area) Escape is pretty much handled like a discovery quest. I didn't put this on the roadmap because I wanted to implement this with stealth elements too. Let's say I want to escape from a set of guards. I can only say I've truly escaped only if I am not being chased or on anyone's radar. As for the dialog system, it's not my own, but using VIDE. I might however come to making my own dialog system (with a proper UI and all with nodes and stuff ;) ) if I cannot keep up with VIDE updates. I am loaded at work though so the progress this week on the quest system has been practically nothing :( I am trying to take it slow as well in order to give a good product out without half baked loose ends. I will talk to invector and see if I can come to an agreement about how I can release this as an addon. Ideally I wanted to release this package if I could get an invector-confirmed invoice from those who want it. That way I don't need to worry too much too.
|
|
|
Post by shadex on Apr 20, 2017 6:12:57 GMT
There are only 5 types of quests in general. Kill Quests (Kill single enemy, kill X number of Y or even more rare, kill X with way / object Y) Rescue / Escort Quests (go to X to save Y, Bring X to Y) Fetch Quest (Bring object (key, weapon, item) to someone or somewhere) Discovery Quest (Find a person, place or thing) Escape Quest (Leave Area) Escape is pretty much handled like a discovery quest. I think the dialog system sounds awesome. I've no experience using it, no idea how powerful it is, but i think a dialog system of some sort needs to be in almost any quest system in some fashion. Great work here! this thing looks wonderful. @ shadex Hey man thanks for the positive feedback! I really appreciate it. I took a look at your suggestions too. See below. 1. Kill Quests (Kill single enemy, kill X number of Y or even more rare, kill X with way / object Y) Kill quests in particular I took a different approach. I wanted to be very specific about my targets. Say a couple of clan leaders being killed would be a quest. I kinda assumed that I wouldn't have the need to kill a number of enemies unless my intention was to pick up something they own. For which I implemented the gather quest. Killing X with way / object is something I didn't think about and frankly they make for great secondary/bonus objectives. I'll look into how I can implement this. My immediate idea was to introduce a quest type called 'Generic Quest'. It wouldn't have any properties on it, other than a description. So these quests can be updated easily through a different script that triggers the quest complete event. It could be triggered from a target dying, or an ability being invoked or anything. Which gives you room to expand into a larger amount of possibilities. Also I want to keep the quest system as far away from the combat system as possible since I don't want to modify more invector code than I've already done. 2. Rescue / Escort Quests (go to X to save Y, Bring X to Y) I have this on the roadmap. 3. Fetch Quest (Bring object (key, weapon, item) to someone or somewhere) I have kind of partially implemented this. I've created a new enum for the Item Manager named QuestItem . I can collect any amount of Quest Items for Gather quests and bring them back to the Quest Provider. But I have not implemented a delivery sort of quest. I will implement this. Shouldn't be too difficult 4. Discovery Quest (Find a person, place or thing) On the roadmap 5. Escape Quest (Leave Area) Escape is pretty much handled like a discovery quest. I didn't put this on the roadmap because I wanted to implement this with stealth elements too. Let's say I want to escape from a set of guards. I can only say I've truly escaped only if I am not being chased or on anyone's radar. As for the dialog system, it's not my own, but using VIDE. I might however come to making my own dialog system (with a proper UI and all with nodes and stuff ;) ) if I cannot keep up with VIDE updates. I am loaded at work though so the progress this week on the quest system has been practically nothing :( I am trying to take it slow as well in order to give a good product out without half baked loose ends. I will talk to invector and see if I can come to an agreement about how I can release this as an addon. Ideally I wanted to release this package if I could get an invector-confirmed invoice from those who want it. That way I don't need to worry too much too. Note sure i understand how your making it. You have a generic script to start the quest, then some sort of trigger that would complete the quest? What is it attached to? If you created a script that had 2 states, quest failed, quest complete, then a slot for a game object with collision, and a script on the enemy's (or a way to add the enemy's to a list which removes then when they die) it would cover nearly all scenerio's. Throw in a "require item" slot on the quest script, and your good. For stealth assassinations, or if an escort dies, simply use the functions on the enemy AI "ondeadtrigger" or the detect trigger. Infact i think there is an ondead script you can easily modify. Otherwise fetch/discover/escape/escourt simply relies on either an area trigger, or if you wanna get really cheap and easy, just use the same trigger script to open the treasure chest and have it flip the bool for quest complete. You have to manually press E but it's already pretty much done. I use it in my resource system (collecting herbs). Just throwing out my 2 Cents. Feel free to ignore it
|
|
|
Post by tharindu on Apr 20, 2017 11:52:41 GMT
shadex I don't know if you saw the video yet so I'll share it here. This gives a quick look at how the scripts are thrown around to set things up and running :D
|
|
|
Post by tharindu on Apr 23, 2017 10:11:07 GMT
shadex Got the kill target with X item working.
|
|
|
Post by uberwiggett on Apr 23, 2017 10:23:34 GMT
Awesome! Neat feature, but make sure quests can be failed and deleted in case someone uses the wrong item looking forward to this.
|
|
|
Post by tharindu on Apr 23, 2017 10:28:12 GMT
Awesome! Neat feature, but make sure quests can be failed and deleted in case someone uses the wrong item looking forward to this. Already done :D I've also added two attributes in general named "HasImpactOnParent" and "HasImpactOnChildren" that can determine if the failure of a quest can have an impact on the parent and/or its children. It can be pretty powerful and gives you a lot of room for quest design.
|
|
|
Post by tharindu on Apr 23, 2017 15:51:59 GMT
While trying to implement some of the stuff shadex gave as pointers, I was contemplating why not expand and provide a vendor system too. First screenshot of a work in progress. This is nothing new to invector folks, just a copy of the ItemWindow window and using the window popup modes that are already implemented for drop items as buy and sell functions. Heck you can make your own vendor system if you give it a try :D
|
|
|
Post by shadex on Apr 25, 2017 5:59:02 GMT
While trying to implement some of the stuff shadex gave as pointers, I was contemplating why not expand and provide a vendor system too. First screenshot of a work in progress. This is nothing new to invector folks, just a copy of the ItemWindow window and using the window popup modes that are already implemented for drop items as buy and sell functions. Heck you can make your own vendor system if you give it a try :D ohhh its looking real nice as well!
|
|
|
Post by Invector on Apr 25, 2017 14:45:27 GMT
Looking good! Keep up the good work
|
|
|
Post by tharindu on Apr 25, 2017 17:18:18 GMT
Looking good! Keep up the good work Thank you guys! :D I am trying to make it a lot independent but right now it's integrated into the Item Manager a lot more than I hoped. I just didn't want to separate the UI elements, so had to use the vInventory class. Unfortunately using vInventory meant I had to use vItemManager quite a bit. I will do my best to separate the two after I've got my functionality setup straight
|
|
|
Post by tharindu on Apr 27, 2017 18:51:53 GMT
Implemented a new feature for the Gather quest type. The option allows you to specify a target to deliver the item to once it's picked up. This provides a great way to create delivery missions or fetch missions as shadex suggested. This features requires you to have AutoComplete off on your mission/quest. Since the gather quest type works on the player inventory, you could collect them item for delivery in anyway you want. Either through a kill, or something you bought from an NPC. Something you randomly picked up, anything of the sort. If you don't specify a delivery target, you will need to bring the item back to the quest provider, that is the NPC who gave you the quest. If you have AutoComplete ON in any case, once the item is picked up the quest will be flagged as complete. Screenshot below shows the feature implementation on UI
|
|
|
Post by shadex on Apr 27, 2017 19:34:49 GMT
Implemented a new feature for the Gather quest type. The option allows you to specify a target to deliver the item to once it's picked up. This provides a great way to create delivery missions or fetch missions as shadex suggested. This features requires you to have AutoComplete off on your mission/quest. Since the gather quest type works on the player inventory, you could collect them item for delivery in anyway you want. Either through a kill, or something you bought from an NPC. Something you randomly picked up, anything of the sort. If you don't specify a delivery target, you will need to bring the item back to the quest provider, that is the NPC who gave you the quest. If you have AutoComplete ON in any case, once the item is picked up the quest will be flagged as complete. Screenshot below shows the feature implementation on UI Does it support multiple items? Like 20 ivory horns? and does the quest system allow for multiple subquests? If it does, that right there makes up pretty much every quest from every MMORPG ever. I love how flexable your making the system. Oh and by subquests i mean a quest that has 4 fetch quests each with a reward, but are allowed to be a part of a bigger quest that is finished when you have completed each of the 4 fetch quests? Seems extremely flexible. It could do "bring item from A to B", "Find items, bring it to B", "Kill and loot item and give to b" "Buy item and bring it to B".
|
|
|
Post by tharindu on Apr 28, 2017 2:50:24 GMT
Implemented a new feature for the Gather quest type. The option allows you to specify a target to deliver the item to once it's picked up. This provides a great way to create delivery missions or fetch missions as shadex suggested. This features requires you to have AutoComplete off on your mission/quest. Since the gather quest type works on the player inventory, you could collect them item for delivery in anyway you want. Either through a kill, or something you bought from an NPC. Something you randomly picked up, anything of the sort. If you don't specify a delivery target, you will need to bring the item back to the quest provider, that is the NPC who gave you the quest. If you have AutoComplete ON in any case, once the item is picked up the quest will be flagged as complete. Screenshot below shows the feature implementation on UI Does it support multiple items? Like 20 ivory horns? and does the quest system allow for multiple subquests? If it does, that right there makes up pretty much every quest from every MMORPG ever. I love how flexable your making the system. Oh and by subquests i mean a quest that has 4 fetch quests each with a reward, but are allowed to be a part of a bigger quest that is finished when you have completed each of the 4 fetch quests? Seems extremely flexible. It could do "bring item from A to B", "Find items, bring it to B", "Kill and loot item and give to b" "Buy item and bring it to B". TL but please read haha: Quick answer is you can do all of the above Simply set the Gather Amount to whatever value you want to gather multiple items. It is extremely flexible like you said when the gather quests completion is decided, at the delivery target, by only looking at the inventory. How you collect the item is up to you. You can use invector's item drop capability for looting absolutely perfect. As for sub quests. Absolutely supported. It's the essence of our games. You can nest any amount of quests and you can nest more quests within those sub quests and it'll still do fine . I went one step ahead and implemented a boolean flag "Has Impact on parent", if failing a sub quest will affect the over all objective of the main quest its part of. This way you can make secondary objectives that give bonus rewards, but you don't need to necessarily complete them to finish the major quest. I also implemented a "Has Impact on children". There was something in mind when I implemented it that I really can't remember now lol . Also, you can also choose to finish all quest types either in sequence or in parallel. I implore you to watch the little video on top of the page if possible. It's a simple one I made about how you can setup a quest with 4 subquests, where 3 must be finished sequentially while the last one ( a gather quest ) is carried out in parallel . I apologize for the crappy quality (480p) on the video though. My target is to make this the go to quest system for Invector. I hope to expand it to include a vendor system and a character level up system. No need to make an achievement system because you can setup a quest without a provider for gathering or maintaining a kill count that can be used as an achievement system. I am thinking about a character level up system too. Basically all of your RPG requirements in one addon
|
|
|
Post by tharindu on Apr 28, 2017 3:12:04 GMT
shadex To top things off, you don't have to necessarily begin a quest to have finished an objective. This I noticed so much particularly in Witcher 3 The Wild Hunt. You can go kill that old hag living in the swamp to discover the npc in the next town actually has a quest to kill the hag and bring them its head. So if you still have the head in your inventory, boom! your quest will be instantly completed Similarly if you already killed that bandit leader you accidentally came across and find someone has a quest for that, the moment you accept it, it'll be completed and you'll receive the reward. Witcher 3 was my inspiration for trying to create a very immersive experience and in its heart lies a great quest system, vendor system and level up mechanics. I will try my best to deliver something close, being the newbie I am to unity
|
|
|
Post by uberwiggett on Apr 28, 2017 6:11:06 GMT
I'm going to have to divorce my wife to marry you tharindu! But I might wait until you release the add on...
|
|