|
Post by tharindu on May 22, 2017 4:44:30 GMT
A question in general uberwiggett jrackley shadex @invector . For discovery quests, I thought a bit long and hard and I am thinking of going with large static trigger colliders in its own layer, and in the collision matrix I set the player layer to only work with this collider's layer. after the discovery quest is complete. This collider will be deleted. Is this acceptable ? I am particularly touchy about having a lot of colliders and not controlling the collision matrix properly because of performance. Sorry, had a busy weekend, let me try to catch up to this thread, cause i think it is really interesting, so forgive me if i respond to individual posts instead of one big one. So I personally stay away from layers at all costs. So you know when you download an asset and it says something like "load the complete project", while most of the time it's importing layers. This means it's potential conflict with other assets, like having the same class. I'm not entirely sure how everything is written, but if it was me, i would have a script that would activate and spawn a collider whenever a quest was started. When you reached that collider and preformed the action (talk, kill, take, etc) it would trigger the quest as complete. This way it would be easy to dynamicly attach one of those scripts to an enemy (kill quests) or assign it to a specific person (Fred the townsfolk). Now as for the layer based collision... I know it saves on the coding, but isn't it rather limiting? First thing that comes into mind is that your going to want Enemies to interact with the collider's, just differntly from the player (escort quests). I would probly use tags, and allow the quest to accept tags, because there are more tags then layers lol. Also i wouldn't worry about colliders. You need what? 3 on average per quest? 1 to start the quest, 1 goal, and maybie 1 failure condition. If the quest has multiple steps, just activate the colliders as you go. How many quests do you plan on being active at one time? 10 or 20? that is 30-60 coliders on at worst, a single, non steaming map. But those are my just thoughts. i could be missing the point Actually that's a great point about using layers. So to summarize the requirement, Discover Quests can vary from discovering a small city to discovering a small building, a character, or an item of sorts. I am thinking of using a mix of box and sphere trigger colliders to designate everything from large areas to items for discover quests. The reason I specifically decided to go with layers is to save some performance by being able to setup these colliders on their own layer ( ExploreObjectivesLayer ) and setting them up to only collide with the player or the escorted character. I can have the player and the escorted character on one layer, and the colliders on its own layer ( colliders will be static ). For discovery quests, the player hits the collider and the discovery quest is complete. For escorts, the target hits the collider and the quest will be complete. The only reason I wanted to restrict colliders to layers was to only have the player and the escort targets interact with these colliders. If there are a large number of objects around the player at the time, didn't want all of those collission messages to go up the hierarchy. Hence the reason to not use tags as well. But at the end of the day, I leave the flexibility of having to worry about how collission should work, to the developer. Because I intend to 1. Let you create the discovery quest in the quest database. The quest will have a bool on it which lets you decide if the discovery will occur only if the quest is in progress. (If you want this area to be discovered early before accepting the quest, you can have that option). 2. Attach my vQuestTarget script to the colliders and set which quest will be updated on collission or trigger enter. I've been looking at this article to actually come to the conclusion on layers unity3d.com/learn/tutorials/topics/physics/physics-best-practices
|
|
|
Post by tharindu on May 26, 2017 3:43:57 GMT
Discover, Escort quest types complete Discover Quest ------------------ Let's you discover an area designated by a sphere/box collider. How it works ---------------- Simply add a box/sphere trigger collider, setup the collission matrix if you will, it must always collide with player. Add a vQuestTarget script to the collider container and call update quest on trigger enter. The quest will be complete. You can make this quest a part of a nested set of quests, or one without a parent. Escort Quest ---------------- Properties 1. Escort Target (optional) : Allows escorting a single target to a specific location 2. Escort Tag (optional) : Allows escorting targets belonging to a Tag. This allows to do escorts like bring the horses back to the stable. 1. Escort Count (optional) : Default 1. Allows escorting a number of certain objects belonging to the Escort Tag. Allows you to do quests like bring at least 3 horses back to the stable. 2. TargetCannotLeaveArea (optional) : Default "No".If marked as "Yes", and a target leaves the area, you need to bring the fellow back to make sure the Escort Count is maintained, if it's a single target, the quest status will depend on this. Create the quest in the quest list, add a sphere/box trigger collider to mark the escort destination and simply add a vQuestTarget script to update the quest. The rest will be handled by the quest manager. The collider must always collide with the escort target / tagged objects' layer.
|
|
|
Post by tharindu on May 26, 2017 3:54:25 GMT
I am assuming the implementation of all of this kinda completes the basic quest types that can get the ball rolling. I will now focus on the following
1. Try to improve code quality and create a bridge between item manager and a quest manager instead of writing most quest manager code inside the item manager which sucks. 2. Melee Controller v2.2 and Shooter Controller v1.1 Integration 3. Reward System 4. Achievement System 5. Trying to get a UI out there. (this will take time :( I am not extremely good with UGUI) 5. Node based Dialogue System (no debugging sorry) 6. Cinemachine Integration for Dialogue System
Future : After a stable Unity 2017 release
I will also look at TimeLine integration somewhere down the line, and expose events from the dialogue system for Timelines to enable cut scenes in quests.
|
|
|
Post by tharindu on May 29, 2017 12:46:56 GMT
Got a small update for you guys.
Vendor System : A Vendor system is currently in the works to enable buying and selling items to vendors in game. This will come as part of the quest system which slowly seems to be evolving into my own RPG pack that might probably serve as an alternative to chronic's RPG pack at some point.
The intention is to not make chronic's tool invalid, but without him coming back to support his addon anytime soon, I'd rather extend the functionality of my tool to help out some interested folks. As of now there's no currency system in place so you'll basically be buying and selling stuff for free. I intend to make a currency system with proper exchange rates, banks etc so it'll be a bit more engaging. Till things are ready, please enjoy the small demo of the Vendor System.
|
|
|
Post by Legion on May 29, 2017 21:37:05 GMT
Got a small update for you guys. Vendor System : A Vendor system is currently in the works to enable buying and selling items to vendors in game. This will come as part of the quest system which slowly seems to be evolving into my own RPG pack that might probably serve as an alternative to chronic's RPG pack at some point. The intention is to not make chronic's tool invalid, but without him coming back to support his addon anytime soon, I'd rather extend the functionality of my tool to help out some interested folks. As of now there's no currency system in place so you'll basically be buying and selling stuff for free. I intend to make a currency system with proper exchange rates, banks etc so it'll be a bit more engaging. Till things are ready, please enjoy the small demo of the Vendor System. That looks freakin' good.
|
|
|
Post by shadex on May 30, 2017 8:42:58 GMT
Got a small update for you guys. Vendor System : A Vendor system is currently in the works to enable buying and selling items to vendors in game. This will come as part of the quest system which slowly seems to be evolving into my own RPG pack that might probably serve as an alternative to chronic's RPG pack at some point. The intention is to not make chronic's tool invalid, but without him coming back to support his addon anytime soon, I'd rather extend the functionality of my tool to help out some interested folks. As of now there's no currency system in place so you'll basically be buying and selling stuff for free. I intend to make a currency system with proper exchange rates, banks etc so it'll be a bit more engaging. Till things are ready, please enjoy the small demo of the Vendor System. This! ... This is so needed. Since chronic's departure, there is no shop system out there, and since there are no intigrations with inventory systems, there really is no options other then making your own.
|
|
|
Post by tharindu on May 30, 2017 9:43:58 GMT
Got a small update for you guys. Vendor System : A Vendor system is currently in the works to enable buying and selling items to vendors in game. This will come as part of the quest system which slowly seems to be evolving into my own RPG pack that might probably serve as an alternative to chronic's RPG pack at some point. The intention is to not make chronic's tool invalid, but without him coming back to support his addon anytime soon, I'd rather extend the functionality of my tool to help out some interested folks. As of now there's no currency system in place so you'll basically be buying and selling stuff for free. I intend to make a currency system with proper exchange rates, banks etc so it'll be a bit more engaging. Till things are ready, please enjoy the small demo of the Vendor System. This! ... This is so needed. Since chronic's departure, there is no shop system out there, and since there are no intigrations with inventory systems, there really is no options other then making your own. Well if enough people are interested I will try and make the Vendor and currency system a separate addon and release it. But I don't see why it would be useful without an existing quest system. I am also thinking of building a crafting system, but UGUI is always getting in the way of writing some quality code.
|
|
|
Post by shadex on Jun 2, 2017 4:35:13 GMT
This! ... This is so needed. Since chronic's departure, there is no shop system out there, and since there are no intigrations with inventory systems, there really is no options other then making your own. Well if enough people are interested I will try and make the Vendor and currency system a separate addon and release it. But I don't see why it would be useful without an existing quest system. I am also thinking of building a crafting system, but UGUI is always getting in the way of writing some quality code. I am interested 100%. A vendor system in and of itself is awesome. Being able to kill a monster, add the item to your inventory, go to a shop, sell 10 of them to get the gold to buy a new sword... that is the corner stone to every JRPG since the dawn of creation!
|
|
|
Post by jrackley on Jun 2, 2017 4:50:39 GMT
Well if enough people are interested I will try and make the Vendor and currency system a separate addon and release it. But I don't see why it would be useful without an existing quest system. I am also thinking of building a crafting system, but UGUI is always getting in the way of writing some quality code. I am interested 100%. A vendor system in and of itself is awesome. Being able to kill a monster, add the item to your inventory, go to a shop, sell 10 of them to get the gold to buy a new sword... that is the corner stone to every JRPG since the dawn of creation! I second that notion!
|
|
|
Post by tharindu on Jun 2, 2017 9:59:44 GMT
Well I managed to finish something really great on the quest system.
That is to move the code out of the item manager finally. Now there's no dependency what so ever with the item manager except for getting the list of items currently on the user, to make gather quests work.
What's immediately next on the table is to build the rewards system.
|
|
|
Post by uberwiggett on Jun 2, 2017 10:16:21 GMT
sounds good now SELL THE DAMN ADDON TO US! so just to check, the separation of the inventory means it will be free of any major issues when the template updates?
|
|
|
Post by tharindu on Jun 2, 2017 11:16:11 GMT
sounds good now SELL THE DAMN ADDON TO US! so just to check, the separation of the inventory means it will be free of any major issues when the template updates? lol . I think I started the thread too early haha xD I will definitely release this as soon as it's you know, polished and ready. So yeah, that's the idea. To make sure it'll not break when Invector updates the template. Most importantly I highly recommend moving to the 2.2 version because it'll help me keep things even neater. There's a concern I have and I am trying to address it as neatly as possible. It's the inventory prefab. I have made certain changes to the vInventory logic because I've tried my best to stick to the Invector UI, so that the quest system feels more like part of Invector. If vInventory gets updated by Invector it's going to create some issues. So I am trying to figure out a workaround to this that'll not require anyone to update their code.
|
|
|
Post by tharindu on Jun 5, 2017 1:53:26 GMT
An update on the progress of the quest system. So as of late I've realized that relying on scriptable objects is not exactly great for state management. Therefore as part of a major overhaul to the code I've been going about doing the following things 1. Completely remove quest system from item manager (done) 2. Create a quest system state manager that handles all things quest (wip) 3. Build a spawner that takes care of all of your spawning needs (wip) Needless to say step 2 is going to take a fair bit of time. I'm happy with the progress I've made so far on it, it looks great. I'm still fixing some bugs that broke the system's quest state update functions. Once it's done the manager module should be fine. I've also been working on a fairly easy but scalable spawner. Here's a first look ibb.co/nix8na
|
|
|
Post by tharindu on Jun 9, 2017 17:01:07 GMT
An update on the progress. Well while I've been super busy with work I at least tried to put an hour a day into writing the addon and I gotta say I am very pleased with what I have accomplished. The major overhaul is complete. 01. Completely remove quest system from item manager Now the quest system is completely isolated from the item manager. 02. Create a quest state manager that handles all things quest The quest system manager comes in two parts. One is a simple monobehavior just like the item manager that you will attach to your player and also your vendors and quest providers. You will never dabble or see the state handling code. It's all in a proper singleton class that is able to manage states wonderfully on its own. 03. Build a spawner that takes care of all your spawning needs The quest spawner is the best part of what I've implemented in the past couple of days. You can spawn ANY thing. I've spawned Lairs, Quest Objectives, Colliders, Meshes any damn thing. Here's a screenshot to give perspective. Every object, the characters and the collider were from the spawners on the left Take a look at the options I haven't tried but if you want to go haywire I think you can spawn spawners within spawners :D You can also use this to spawn waves of enemies The next step is to build the Rewards system, the currency system for the vendors, a simple level up system and probably try to implement a simple save system ( which I cannot guarantee I can provide since it's a lot of work unto itself ) . Looks like it's not that far off now. The major thing was to build a stable back end It's done.
|
|
|
Post by tharindu on Jun 10, 2017 13:42:09 GMT
Reward System Complete. Next up, achievement/experience/level up whatever system. Add as many items you want into the reward list and at the end of a quest it'll be yours.
|
|