|
Post by tharindu on Jul 6, 2017 18:45:55 GMT
Save System completely overhauled. By adding the vCanSaveYou script to any gameobject in the scene you can save it, along with its monobehaviour scripts for whom you have written a custom serialization strategy script. It's code based extension which probably will be the sad part to some of you. But the API is very straight forward and it can be extended very nicely. Here's a sneak peak of the solution folder for Persistence if it means anything. I am focused on writing custom save strategies based on this for vendors at the moment. Once done, I will work on the experience system, for which also I will have to write a custom save strategy. It's looking pretty good. Hopefully things will be ready for you by the end of August.
|
|
|
Post by tharindu on Jul 13, 2017 19:40:03 GMT
Okay so I have been working on a kickass feature lately and I am glad to say I finished it :D 1. Cross-Scene Saving ( uberwiggett here you go ;) ) 2. Save Slots ( save and load from multiple save slots .) 3. Marking save items using vCanSaveYou script and allowing saving of multiple types of objects through custom code EDIT : Sorry if the video quality sucks. It can't be cuz it was a 2k video but I am yet to see the hd version upload yet. All will be available when the quest system goes live yay. So uberwiggett popped this question and I really hadn't thought about it at all. In my defense I intend to make a single scene game with a multi-terrain setup that uses sectr/world streamer. So it works for me, but I honestly overlooked multiple scenes. It's working very well and I am excited to show it to you. I made up a 15-20 minute video on it (lol) and it's being uplaoded as we speak. The video has an update on the quest system status display which is based on invector's latest 2.2/1.1 c item collect display scripts. The UI is a bit buggy and I haven't properly tweaked my spawners so you'll see some glitches here and there. I will share the video as soon as youtube allows me to share it.
|
|
|
Post by tharindu on Jul 15, 2017 21:21:28 GMT
A look at the experience system . I am completely new to the experience subject so from what I understand leveling is pretty much the same across any system but the biggest difference comes from the way experience is calculated per level ( I know you can do level per experience also, but after carefully looking at most single player experience systems, I can agree that most use the experience per level method ). To begin with I provide you two ways to calculate XP based on the level. 1. Power Rule 2. Logarithmic You can expand by adding more to the list. I will detail out how you can add more in documentation. The level manager exposes a public method to update experience directly and also a script for generic trigger actions such as item collections. Yep, you can give experience by interacting with objects Is this enough for an experience system ? What more do you guys expect out of a leveling system in that context ? Please note that I have not worked on a slider for experience yet. That's something I have on the todo list.
|
|
|
Post by uberwiggett on Jul 16, 2017 0:19:21 GMT
Unlocking skills as part of levelling, perhaps by ctivating generic action scripts on the player when a level is reached? I see you have event calls on there, is it possible to do that?
|
|
|
Post by tharindu on Jul 16, 2017 11:13:18 GMT
Unlocking skills as part of levelling, perhaps by ctivating generic action scripts on the player when a level is reached? I see you have event calls on there, is it possible to do that? I currently have this thing called stat components that I have integrated into the leveling strategies, where in whatever stat you add to the player as a component, will be increased by the same factor the xp increased. For example let's say your base xp was 200 and it became 250 when you reached level two. If you've added health as a stat component and the base health was 300; it would become by 300 * 250/200. You can hook it up to any kind of stat you want, be it health, stamina, base damage, maximum jump height. Anything basically. It's pretty good for high risk high reward sort of scenarios. For example you can probably have a few things like dexterity, strength and other attributes also be increased. I will also detail how you can save these things as properties of the player using the save system. It's easy but code based :( This is also hooked up to the generic actions. You can add an experience component or a stat component into a generic action, which will be picked up when the action is triggered. I've also hooked it up to the quest system to be able to provide experience OR directly level up to a certain level when the quest is complete. If by skills, you are talking about things that can be equipped, like unlocking weapons, then it's something to think about for I haven't set something like that. But would be interesting to implement it. Currently though stats are purely independent of experience, but stats are upgraded only when a character levels up, and leveling up is independent of a stat requirement and is purely only experience based. What do you think about what's done so far ? How can I improve more on it ? EDIT: after some thinking I separated stats also outside of leveling up and enabled it to be action based as well. So if you want your stats to increase during level up you can have them in a stats holder and do the job, or only include it in the actions. I am also working on a stat trend feature where you can draw a curve where you can describe the trend of that stat. For example if your maximum stamina keeps on increasing as a result of the leveling by the time you reach a high level your stamina bar will probably be longer than your screen resolution. To avoid that, I introduced a curve where you can an additionally factorize or clamp the stat's growth through level progression. Like so given below. In this case you can see that I've set health growth to be steady through out the character's level progression, so the health will be increased by current max health value * xpIncreaseFactor (reduction factor is virtually ignorant since the graph is steady at 1.0 through out). But for stamina however the trend is reducing as the character levels up. So for stamina it's current max stamina * xpIncreaseFactor * reductionfactor from animation curve. Therefore during early levels you'll see a significant growth in stamina, but in later levels a lesser growth. You can use this if you want to mix things up with your level progression. Having a curve at 1 is equivalent to having no curve and having a curve at 0 is equivalent to returning the same base stat. So be careful with how you intend to use this curve. Results can be crazy if you don't use it correctly ( like using zero for instance, that'll cause the multiplication to return 0 at the end ). What do you think ? shadex , jrackley, invector. Would really value your opinion on this too. This is the last part of the quest system I'll be doing before a release. free ssl image hosting
|
|
|
Post by uberwiggett on Jul 16, 2017 14:48:25 GMT
very interesting!
I was going more for unlocking skill moves. So say for example, having a whirlwind attack when you press the "Q" button, which is controlled by a generic action script, but that script isn't available until you unlock it at level 5 or something. or further to that, a skill tree progression that is done the same way, only you get the choice of 2 or 3 skills to unlock and you pick which one (the other skills just don't activate.) I was thinking doing it via the event handler that can be triggered once you reach a specific level or some such. Perhaps on this same field, allowing the player to allocate stat points each time they get a level, so they can either up their stamina or health (or whatever other stat they have implemented). It's not a must have, but I think leaving the door open for people to tailor the level style they want off of a base would be a good idea.
|
|
|
Post by tharindu on Jul 16, 2017 15:58:18 GMT
very interesting! I was going more for unlocking skill moves. So say for example, having a whirlwind attack when you press the "Q" button, which is controlled by a generic action script, but that script isn't available until you unlock it at level 5 or something. or further to that, a skill tree progression that is done the same way, only you get the choice of 2 or 3 skills to unlock and you pick which one (the other skills just don't activate.) I was thinking doing it via the event handler that can be triggered once you reach a specific level or some such. Perhaps on this same field, allowing the player to allocate stat points each time they get a level, so they can either up their stamina or health (or whatever other stat they have implemented). It's not a must have, but I think leaving the door open for people to tailor the level style they want off of a base would be a good idea. Mmmm building a skill tree right now is a hefty amount of work , so I guess it's best to make due with the events. I expose the following, on level up, you receive the level with the event. on gain xp, you receive the xp with the event. on gain stats, you receive the stats with the event. That's enough I suppose ?
|
|
|
Post by uberwiggett on Jul 16, 2017 22:48:07 GMT
Sounds like a good base to me
|
|
|
Post by tharindu on Jul 17, 2017 4:18:20 GMT
Sounds like a good base to me Excellent. I will do some bug fixing and this quest system shall finally see the light of day lol
|
|
|
Post by shadex on Jul 17, 2017 6:49:39 GMT
If by skills, you are talking about things that can be equipped, like unlocking weapons, then it's something to think about for I haven't set something like that. But would be interesting to implement it. Currently though stats are purely independent of experience, but stats are upgraded only when a character levels up, and leveling up is independent of a stat requirement and is purely only experience based. What do you think about what's done so far ? How can I improve more on it ? EDIT: after some thinking I separated stats also outside of leveling up and enabled it to be action based as well. So if you want your stats to increase during level up you can have them in a stats holder and do the job, or only include it in the actions. shadex , jrackley, invector. Would really value your opinion on this too. This is the last part of the quest system I'll be doing before a release. free ssl image hostingFor weapon unlocks just off the top of my head, you could just add 2 new variables in the OnEquip() from Melee Manager i think. It's basicly the same code to get dual wielding working. Just add a condition that checks character level and your done. If you want to get really fancy, add an extra if character level < ItemLevel then have it set a Text UI element that says your not high enough level to equip. I am a bit confused on the stat system. What working stats do you have and what do they effect? Like stamina and health are cool, but do you have something like strength which boosts damage to each attack? Also do you have the ability for the stats to change on level up? Usually people either go the DND route (Str, Dex, Con, etC) which you do not get via level up, but on a level up, The formula includes the stats, so like a higher con gives you a better roll on hit points per level. The other version tends to be the JRPG version, where you get stats per level, and the stats are more directly tied with player improvement. Typically when you level, all stats get raised. Which one are you doing? Is there the ability to randomize stats or health on level up?
|
|
|
Post by tharindu on Jul 17, 2017 9:29:00 GMT
Sounds about right for the weapon unlocks, but better do it through the exposed event in the level manager.
You can do both JRPG or DND route. Got a simple checkbox to decide if you improve the stats when you level up so that's JRPG.
If you want to improve stats through actions you can add a generic action and a stat component script. the stat component can be set as a percentage so the stat will be increased as a percentage of your current stat value or you can add a flat value to the current stat. That's DND from what I understood.
As of now I've only created two stats for stamina and health because they're very straight forward and easily implemented in the controller.
What I allow through the stat system is to maintain stats as entities and values, so based on any change to stats, you do whatever you need to do the OnStatsGain event or even do in the UpdateStats method where I update the health and stamina, when it comes to modifying weapon properties and what not. This is implemented in the level manager too at somepoint to react to generic actions. For instance dexterity can be increased by doing a lock pick.
Let's take an example for adding a new stat. Warning, post will get longer xD
We want to create the strength stat.
I first go and add a new entry to the StatType enum so that the new stat will appear on dropdowns.
All the stats a player uses are maintained in a separate game object that contains a list of stats and trends. Trends are animation curves used by JRPG models, which specify the reduction applied to the increment factor as you progress through levels. For instance a decreasing trend on stamina makes sure your stamina increases lesser and lesser as you level up so it's a challenge.
So I will add the new Strength stat along with a trend to this game object and set it up as the vLevelManager script's stat holder.
So now I want to decide if I am going to apply JRPG. If I enable the checkbox ' Increase stat with level up ' I will be following JRPG.
Say I want to combine DND elements while following JRPG.
For an action, I can add the StatComponent script to it and specify the value I want to apply to my stat as a percentage or a flat value.
If I want to do it on an enemy kill, I can add the StatComponent script to the enemy, and trigger the UpdateStatsFromComponent method from the OnDeadTrigger script's onDead event.
So all of these literally update stats. How are you going to use these stats ? Through the OnGainStats event in the level manager, which will be triggered for each stat, JRPG or DND.
So you can write a custom method in a script, that accepts the StatComponent object, and using it, you can change your weapon values etc. The hook it up to the OnGainStats event in the level manager.
What do you think ?
|
|
|
Post by tharindu on Jul 17, 2017 11:22:47 GMT
shadex, uberwiggett : Guess I should upload a video A video speaks a ten thousand words haha
|
|
|
Post by uberwiggett on Jul 17, 2017 12:44:13 GMT
was going to send a message but I may as well post here for everyone else, I've just received my new Oculus Rift kit, so I was going to step away for a week or two while I have loads of VR fun and wait for this addon to release, but now work is going to take my PC time away so it looks like I won't be back until mid September! By then there should be a stable release of this quest addon and THEN is the time when I will make a scratch build RPG video tutorial series showing you how to make a full blown RPG with little coding skill using the template and addons. until then I'll only be sporadically checking out the forums and replying to stuff unless I get a nice chunk of free time or vr sickness Good luck with the release tharindu, I can't wait to get stuck into it!
|
|
|
Post by tharindu on Jul 17, 2017 12:58:53 GMT
was going to send a message but I may as well post here for everyone else, I've just received my new Oculus Rift kit, so I was going to step away for a week or two while I have loads of VR fun and wait for this addon to release, but now work is going to take my PC time away so it looks like I won't be back until mid September! By then there should be a stable release of this quest addon and THEN is the time when I will make a scratch build RPG video tutorial series showing you how to make a full blown RPG with little coding skill using the template and addons. until then I'll only be sporadically checking out the forums and replying to stuff unless I get a nice chunk of free time or vr sickness Good luck with the release tharindu, I can't wait to get stuck into it! Haha you're not the only one who ordered the oculus with the 399 deal! So did I xD I'll be getting that in mid september though when my parents return from the US. I'll be leaving to the UK somewhere around late August on business, so I must release the addon before then. Let's do something with VR stuff when you're back. Have fun man! good luck with the work situation
|
|
|
Post by tharindu on Jul 17, 2017 15:46:26 GMT
shadex, uberwiggett : got a video uploaded. what do you guys think ? Just uploaded so might take a few minutes to get high res.
|
|