Skill Trees ~ Integration of a Leveling System - uchicago-cs/chiventure GitHub Wiki
What would the leveling system look like?
- Upon successful completion of a quest, player receives a certain amount of points, having a minimum number of which would allow them to proceed to the next level
- A formula for the growth of points is required (does it grow exponentially? linearly? what formula would make the game more challenging?)
- Each level would then contain a different set of skills, that the player would 'unlock' once they reach the level by earning the desired number of points
- One limitation of adding a leveling system is that the player loses the psychological motivation when they get no real advantage for leveling up (if their reward for earning 5 points and 5000 points (let's say, leveling up by one) is the same, then they won't be motivated enough to continue playing the game).
- This can be fixed through scaling, making it harder to unlock new levels (for ex, an exponential points system would be more effective than a linear one)
Integrating Skill Leveling into Chi-Venture (mainly focused on the interface)
-
Integration with Player Classes, skill leveling is dependent on the skill tree that the player class possesses.
-
Skill Prerequisites - Need to be able to restrict the ability for certain skills to be leveled until character reaches a certain level, in which the skill is able to be unlocked.
-
Adding a struct within the skill tree functions, that takes in the player current level, this int structure will allow for the skill to be either leveled or not. If the prerequisite is not at the restricted value, the player will receive a message that they do not have the ability to level up the skill until they reach that level.
-
Leveling opportunities for each skill: skills to be leveled up multiple times in a linear progression, as each leveling increases the strength of the skill or the amount of attributes provided. Max_level currently allows for the number of times a skill can be upgraded, but we were thinking of adding functionality of linear progression.
Current skill level struct: skill_t* skill_new(sid_t sid, skill_type_t type, char* name, char* desc, unsigned int max_level, unsigned int min_xp,skill_effect_t effect).
CHANGE TO skill_t* skill_new(sid_t sid, skill_type_t type, char* name, char* desc, unsigned int max_level, unsigned int min_xp,skill_effect_t effect, unsigned int prereq_level).