Okay, excellent discussion. Learning a lot already.
Maybe a small insight into my goal might be in order:
As I mentioned already, its a skill based leveling system. Skills are implemented differently to require players to âdiscoverâ them to use them. Some skills will have a chance to be accidentally used, thus flagging it as discovered. Skills will be separated into various groups, eg: Combat Skills, Defense Skills, Profession Skills, etc. Skills are anything that can generally be learned, where as Stats are what make up the character physically, so to speak.
To use a skill once discovered, the character equips it, and just uses it, which will add experience to that particular skill, which will eventually cause it to level up, thus increase the base stats for the skill. Characters level up if the total COMBINED experience of all skills reaches a certain amount. So character progression is entirely dependent on the level of the various skills. AI will utilize this concept as well, but will be automated where players get choice.
Now, the big thing about this is that the end result will make use of server-side rendering, as opposed to the local client rendering. Just think of a broadband connection between your PC box and you monitor. Thus, patching wonât be necessary. When the idea is eventually rolled out, and the game needs updating, I can just update the files on the server and clients will see the update the next time they log in (at least thatâs what iâve got in mind). No downloading, no patching, and of course, Iâm not sure if modding is possible with this idea. But everything is done server side. However, this is beyond the scope of my experience and this topic, but its to give a better idea of what iâm wanting to eventually achieve with this.
At the moment iâm just prototyping the individual concepts, and have begun with creating the Base character, which the Player character and NPCs will inherit to gain the basic âskeletonâ of their character. The rest will obviously be done per object (AI will be done in the AI branch, and Player will be done on the Player branch) to give them the code necessary to do what needs done.
Anyway, the idea is to have a central database of skills. One place to update the skill catalog, that the game automatically picks up, etc etc. What I struggle with is the logical progression of the whole concept, and thus the implementation of it. Perhaps its still too advance for me? Regardless, the coding itself is easy, i just need the logic behind it worked out, which is why Iâve come here: To better understand that logic behind a game, and character creation.
Now below is the XML I started to try out the most recent method, and it will give you a better idea of what Iâm after in terms of the skills database:
<Skills_Collection>
<Offensive>
<Punch>
<Description>Punch the foe's very hard</Description>
<Required_Stamina>15</Required_Stamina>
<Base_Effectiveness>100</Base_Effectiveness>
<Exp_Modifier>1.75</Exp_Modifier>
</Punch>
<Spit>
<Description>Spit at your foes</Description>
<Required_Stamina>5</Required_Stamina>
<Base_Effectiveness>10</Base_Effectiveness>
<Exp_Modifier>1.5</Exp_Modifier>
</Spit>
<Kick>
<Description>Kick them</Description>
<Required_Stamina>50</Required_Stamina>
<Base_Effectiveness>9000</Base_Effectiveness>
<Exp_Modifier>1.25</Exp_Modifier>
</Kick>
<Insult>
<Description>Hurt you foe's feelings</Description>
<Required_Stamina>7</Required_Stamina>
<Base_Effectiveness>23</Base_Effectiveness>
<Exp_Modifier>2.3</Exp_Modifier>
</Insult>
</Offensive>
<Defensive>
<Block>
<Description>Block an Attack</Description>
<Required_Stamina>2</Required_Stamina>
<Base_Effectiveness>12</Base_Effectiveness>
<Exp_Modifier>1.33</Exp_Modifier>
</Block>
</Defensive>
</Skills_Collection>
So a few more questions have sprung to mind, and some are based on what is mentioned in the discussion:
@TonyLi Using scriptable objects, doesnât that mean lots of files if each skill has its own asset? Or doesnât that really matter?
And iâve watched tons of tutorials on Scriptable Objects, but Iâm still struggling to grasp it. I understand it can be used to make custom inspectors and editor elements, but how does the logic behind using it as a database work?
@AndrewGrayGames Iâm liking the concept of Layers. Could you help me visualize the logic behind that?
What Iâm doing to build my Base Character Script is:
AttributesScript + StatsScript + VitalsScript + SkillsScript = Base CharacterScript where everything is put together.
Would that be some sort of layering concept? Please explain more if you can. Until I can visualize the concept, I will struggle with understanding how it works.
Which of the two options given, and possibly XML, would be better suited to this sort of programming? In fact, which of them would you use if you designed such a project?
And most important of all, and maybe slightly off topic: I started with creating the character, but is there any unwritten or written rule about where to actually start when creating a game?