Character Growth

A discussion area for general design issues that staff would like detailed feedback on.

Moderator: Staff

User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Character Growth

Postby Roots » Thu Jun 28, 2007 5:09 pm

I think we have some important design questions to address with how our characters grow and evolve. Right now we have a very basic, very simple static growth system in place that increases stats by the same amount every level. This scheme probably won't work out too well in the long run. So lets ask ourselves some questions and toss some ideas around.


1. How do we determine the amount of XP a character needs to reach level 2, level 3, etc.?

I think that a good and simple solution might be to just declare the amount of XP required for the player to reach each level. Ie, 100XP, 250XP, 555XP, 1078XP, and so on. I don't know if we should have each character follow the same XP level requirements (downside: static and boring), or have a different set defined for each character (downside: more balancing work).

2. How should the stats for a character change from level to level?

First of all, every character should definitely have their own set of growth stats rather all of them using the same global growth stats. I also think that the growth stats should change every few levels to keep character growth more dynamic. For example, growth for XP levels 1-7 can be focused on improving hit points and physical strength for Claudius. XP levels 8-12 emphasize growth in physical defense. XP levels 13-18 hold a steady rate of growth for all stats. XP levels 19-24 bring a large increase in evade rating. And so on.

3. Should characters grow "at once" when the next XP level is reached, or should they grow more gradually?

This is an idea that has been brought up before. Lets say Claudius is working on going from XP level 4 to level 5. We've already pre-determined that he is going to gain 20 HP, 6 SP, and 4 Strength when he reaches level 5. Instead of doing the typical "instant" growth, we'll slowly raise Claudius' HP, SP, and strength over the course of his growth, but still leave a sizable chunk of stats to be earned once he reaches level 5.

Building on that example, lets say Claudius has 400XP when he reaches level 4 and needs +100XP to reach level 5. If we wanted to reward half the stats gradually and half the stats all at once, we could do something like this:

@420XP: HP +2
@430XP: SP +1
@440XP: HP +2
@450XP: HP +2, Strength +1
@460XP: HP +2, SP +1
@480XP: HP +2
@490XP: SP +1
@500XP: HP +10, SP +3, Strength +1

(The purpose of all this, BTW, is to provide the player rewards on a more regular basis. It is also more realistic, since we don't automatically get that much better/stronger/faster in a single instant).

4. How do characters gain new skills?

I think this is a non-debatable issue since I believe we decided on it already a while back, but I'm bringing it up here anyway for completeness sakes. Characters learn new skills from an unlimited number of sources (leaving us to be creative at how they are learned). This includes (for example):

- Learning a new skill automatically after reaching a new XP level
- Being rewarded with a skill by someone for completing a quest
- Finding an old master of some art living in the mountains and having he/she teach a character a new skill
- Discovering an old book or tome that describes how to execute a skill

5. Do character attack point stats also grow with new XP levels?

I would like to say that no they don't (we have enough stats to worry about already), but if they didn't then the differences between attack points would become insignificant as levels were gained (ie that +10 defense boost on the torso would become much less important when the base defense grows from 30 to 200). So here's a new idea: how about we define attack point stats as a percentage of the base stats? So if the body has a +10% defense bonus, at a base defense of 30 it would have 3 defense points, and at 200 it would have 20 defense points.

I actually really like the idea of being able to define attack point stats as percentages, because it makes it much easier for us as designers to adjust them appropriately, and it also makes it easier for the player to understand the difference between their different points. I hope you all :approve: as well. :)

----------

Well that should be enough to get the discussion started. There are several other questions that we'll need to address (like how to elemental and status weaknesses/resistances factor into growth), but we can debate those points once we finished this first round. ;)
Image
User avatar
Burnsaber
Member
Posts: 85
Joined: Fri Feb 04, 2005 9:29 am
Location: Finland, Kuopio
Contact:

Re: Character Growth

Postby Burnsaber » Thu Jun 28, 2007 5:58 pm

Roots wrote:1. How do we determine the amount of XP a character needs to reach level 2, level 3, etc.?

2. How should the stats for a character change from level to level?

3. Should characters grow "at once" when the next XP level is reached, or should they grow more gradually?

4. How do characters gain new skills?

5. Do character attack point stats also grow with new XP levels?


1. Well, it doesn't really matter as long as the player is at least near the necessary level to move with the plot. If you want to disencourage level upping by killing weak monsters, expotential is the way to go. Killing that 10xp scorpion doesn't sound so hot when you need 3000 to level up.

2. Sounds nice. I have one question thought. How much can the player influence character growth? Or can he at all? It sounds like the player doesn't have much to say about how Claudius develops his martial skills. I'm just a big fan of customization, that's all.

3. Gradual growth sound very nice. I can't recall a game where this feature had been implemented.

4. Oh, we have skills. Cool.

5. Percentage plan sounds nice. As a side effect, it also makes armor more effective when worn by a more skilled soldier. A small realistic plus.
I'm the 50th person who joined on these forums! I'm special!
User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Re: Character Growth

Postby Roots » Thu Jun 28, 2007 6:14 pm

Burnsaber wrote:I have one question thought. How much can the player influence character growth? Or can he at all? It sounds like the player doesn't have much to say about how Claudius develops his martial skills. I'm just a big fan of customization, that's all.


That was going to be topic #6, but I wanted to get #1-5 out there first. ;) I have a feeling that this particular topic is going to involve a lot of discussion. We'll get to it later though.
Image
User avatar
ChopperDave
Developer
Posts: 543
Joined: Tue Sep 05, 2006 4:07 pm

Postby ChopperDave » Thu Jun 28, 2007 7:11 pm

If we go with gradual growth, then the concept of levels becomes obsolete. The whole reason RPGs do levels is to give a player a big reward for reaching a milestone. If we're going to do smaller, more progressive awards, then we won't need levels at all.

I have one question thought. How much can the player influence character growth? Or can he at all? It sounds like the player doesn't have much to say about how Claudius develops his martial skills. I'm just a big fan of customization, that's all.


I would LOVE to go the route of letting the player customize each of the characters in whatever fashion he wants. They start with base stats gearing them towards a particular profession, but players can go a different route if they want.

The problem with this much freedom though is that each of the characters starts to lose his/her uniqueness in combat. And it also means we will have to reconsider how characters learn skills -- if the player turns Claudius into a wizard, then all those sword techniques will be useless.

1. How do we determine the amount of XP a character needs to reach level 2, level 3, etc.?

2. How should the stats for a character change from level to level?


Guess and check. This is heavily dependent on how we balance fights and enemy stats against player stats.

5. Do character attack point stats also grow with new XP levels?


It would be incredibly bizarre if they didn't.
User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Postby Roots » Thu Jun 28, 2007 7:52 pm

ChopperDave wrote:If we go with gradual growth, then the concept of levels becomes obsolete. The whole reason RPGs do levels is to give a player a big reward for reaching a milestone. If we're going to do smaller, more progressive awards, then we won't need levels at all.


That's an interesting point. First of all, the player still does get a big reward for reaching a milestone. They earn ~50% of their newly added stats by reaching the next level, as well as learning any new skills. That's pretty damn significant.

If we wanted to be really different/crazy, we could do 100% gradual stats growth (instead of ~50% gradual and 50% instant growth) and abolish XP levels from the player altogether (they would still be there in the back-end of the game's mechanics, but we wouldn't tell the player). That would be something pretty original (a RPG without XP levels!? ZOMG!!), but I think the originality wouldn't be worth the downside. The downside is that the player loses their perception of how strong their characters are, since they gradually grow and grow. The XP level is the single number that lets the player know how they stand relative to how they used to stand. I think the majority of our players would be very frustrated with Allacrost if they had no single gauge to their character's progress. Thus, I think a completely gradual system would bring more cons than pros to the game.

ChopperDave wrote:Guess and check. This is heavily dependent on how we balance fights and enemy stats against player stats.


That's a balancing issue, which we aren't really focusing on here. My question was how should we determine when a player gains a level, or how should stats change from level to level, not how do we balance those status with the enemies.

And FWIW, I think that we should balance the enemies around the character stats we define, rather than balancing the character stats around the enemies we define (chicken and the egg problem).

ChopperDave wrote:It would be incredibly bizarre if they didn't.


If they are percentages, than technically they will grow as the player levels. The only thing that will remain the same is the relative difference between stats on the different attack points. I think trying to simulate any other type of growth would be too much, since balancing is already a time-intensive process with just base stats, and adding growth stats for all characters and enemies would just be insanity. :axe:
Image
User avatar
Jetryl
Artist
Posts: 1485
Joined: Fri Aug 26, 2005 7:35 am
Location: Southern Minnesota, USA

Re: Character Growth

Postby Jetryl » Thu Jun 28, 2007 9:43 pm

Roots wrote:5. Do character attack point stats also grow with new XP levels?


Using percentages is the way to go - I'm actually rather surprised that you didn't already do so.
Image
User avatar
Drakkoon
Developer
Posts: 173
Joined: Thu Jan 11, 2007 12:54 am
Location: Montréal, Qc

Postby Drakkoon » Fri Jun 29, 2007 12:04 am

I think that if we choose some sort of gradual stats growth ( I like the 50% gradual, 50% on level thing ), we should still keep levels, simply because it could make it less important to have exponential growth.

In many MMORPGs, when your level is too high compared to the monster you are fighting, you don't get any XP at all, or something like 1XP, making "grinding" a much less preferable approach to leveling.

And like Roots said, it makes the player able to gauge how each of the characters are doing.
User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Postby Roots » Fri Jun 29, 2007 9:19 pm

If no one objects, I can go ahead and implement the attack points percentage stats this weekend. I'm doing some work in the global code right now anyway so it would be a good opportunity for me to do so.
Image
User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Re: Character Growth

Postby Roots » Wed Jul 04, 2007 5:32 pm

Over the past two days I've been working in code that is extremely relevant to this thread. Here's the current answer to these questions as I have their implementation on my machine right now.

1. How do we determine the amount of XP a character needs to reach level 2, level 3, etc.?


In the character's definition table, there's something that looks like this:

Code: Select all

   experience_levels = {
      [1] = 0, [2] = 100, [3] = 250, [4] = 475, [5] = 680
   },


The table key (number inside square brackets: [#]) is the experience level, and the value is the number of experience points required to reach that level.

2. How should the stats for a character change from level to level?


Each character's definition table has something that looks like this:

Code: Select all

   growth_stats = {
      [1] = {
         hit_points = 14.0,
         skill_points = 4.0,
         strength = 8.0,
         vigor = 1.0,
         fortitude = 8.0,
         protection = 3.0,
         agility = 5.0,
         evade = 2.0
      },
      [4] = {
         hit_points = 14.0,
         skill_points = 4.0,
         strength = 8.0,
         vigor = 1.0,
         fortitude = 8.0,
         protection = 3.0,
         agility = 5.0,
         evade = 2.0
      }
   }


When the character reaches XP levels 1-3, their stats will grow at the rate listed in sub-table [1]. When the character reaches XP levels 4 and updwards, their stats will grow at the rate listed in sub-table [4]. We can make as few or as many of these growth tables as we want for each of our characters.

3. Should characters grow "at once" when the next XP level is reached, or should they grow more gradually?


I'm currently about 50% done adding the gradual growth feature. Where I am stuck though is figuring out a good algorithm for determining when to award gradual growth. Right now I'm sticking with the 50/50 scheme (50% of growth is gradual, 50% of growth occurs on level up). Main issues to figure out here are:

1) Should the 50% gradual growth be statically "sliced up" into X number of chunks? (ie, always reward gradual HP growth 4 times between level ups).

2) If the answer to (1) is no, how should we figure out how many slices to make for each stat on each level? Should it be a function of the total amount of gradual growth?

3) Should the gradual growth marks give roughly the same amount of growth (ie always reward 2HP gradual growth), or should we try to mix it up and make it a bit more interesting, like rewarding 2HP sometimes and 3HP or 4HP other times?


If anyone wants to share a good idea for an algorithm (or implement one), let me know. I have enough work to do right now that I can't really sit down and think about this too much. :heh:

4. How do characters gain new skills?


Through numerous means, but also through reaching new experience levels. The character's definition file keeps a list of skills and at what level that skill should be learned (and its possible to learn multiple skills in one level).

5. Do character attack point stats also grow with new XP levels?


Kind of. Attack point stats are now static percentages of base stats. So for example, Claudius' head has a -40% defense, but a +20% evade. The percentages do not change as a character levels, but because the character's base stats do change when they level, the effective defense, evade, etc. of the attack points do change.

-------------------

So that's how things are for the time being. If you have a problem with any of this, speak up sooner rather than later. The longer you wait, the more painful it is going to be to change this system if we decide to go another route. Personally though, I like how everything is shaping up so far here. :approve:
Image
User avatar
ChopperDave
Developer
Posts: 543
Joined: Tue Sep 05, 2006 4:07 pm

Postby ChopperDave » Wed Jul 04, 2007 11:30 pm

As far as XP to next level goes, that's gonna be an insanely huge table. Personally, I don't see the advantage in hard-coding those values. If we were to use an extremely simplistic calculation to determine xp to next, we could avoid a lot of data storage. Sure the xp to next won't seem as random, but who cares? It doesn't really detract from the game if it has predictable xp to next values. Look at Baldur's Gate or any of the D&D PC games. The xp to next just keeps going up by powers of two. Easy to calculate, while still making it difficult enough to level up such that the player has to move on to tougher enemies. Just food for thought.

I think growth tables should be pretty consistent, maybe tapering off some at the higher levels. As such, I doubt we'd have more than 3 or 4 growth tables per char.

3. Should characters grow "at once" when the next XP level is reached, or should they grow more gradually?


OK. I had a kinda weird idea for this. Let's say we just stick with stat growth at level up. But, let's reward the characters for reaching particular milestones in-game. For instance, if Claudius destroys an enemy of equal or greater level in a single hit, reward him by upping his max SP by 5, or something like that. I think this would be a better way to do things because it could give the player a lot to strive for when fighting battles apart form winning, and it'll make level ups easier to handle. What do you guys think?
User avatar
Jetryl
Artist
Posts: 1485
Joined: Fri Aug 26, 2005 7:35 am
Location: Southern Minnesota, USA

Postby Jetryl » Thu Jul 05, 2007 7:31 am

ChopperDave wrote:As far as XP to next level goes, that's gonna be an insanely huge table. Personally, I don't see the advantage in hard-coding those values. If we were to use an extremely simplistic calculation to determine xp to next, we could avoid a lot of data storage. Sure the xp to next won't seem as random, but who cares? It doesn't really detract from the game if it has predictable xp to next values. Look at Baldur's Gate or any of the D&D PC games. The xp to next just keeps going up by powers of two. Easy to calculate, while still making it difficult enough to level up such that the player has to move on to tougher enemies. Just food for thought.


I agree completely with chopperdave. A function to determine this, which I've already implemented is the best way to go. I implemented that as a lua function for a reason - so that we could have all the benefits of a table, without actually having to type all that crap out.

Practically every RPG in history - all of the FF games, Chrono Trigger, Diablo, WoW, etc, etc, use a function to determine this, because there's no advantage, even in the "feel" of the game, between defining this internally as a function, or defining this as a table, the only difference is that a table takes much longer to type in, and far, far longer to tweak, since you have to adjust the value of every single record if you have a major change to implement). We're going to want to tweak character's experience to level very, very often - I know this from theory, and I know this from the innumerable tweaks to this very stat in wesnoth.

So, I give a massive disapproval of point #1. :disapprove:

Seriously do not use a table for this - it's a very, very bad idea.


Regarding the other points:
2] Fairly low-key on maintenance, and could provide some cool effects down the road. :approve:
3] Don't really have an opinion, though I'll give a general :approve: - I would not break up the gradual stuff into little quantized packets/slices, I would have it be purely continuous - it's more intuitive for the player, and much easier to code.
4] :approve:
5] :approve:
User avatar
Roots
Dictator
Posts: 8662
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Postby Roots » Thu Jul 05, 2007 7:48 am

Okay, fair enough about your point with not making a level requirements table and instead using some sort of algorithm for determining the XP for the next level (I've been convinced and now agree with your point). However, I don't think "current_experience_level * 50" is going to cut it. We need to use an algorithm with an exponential growth curve that provides reasonable XP increases from level 1 to level 100. However, rather than have a static growth margin I'd like to do something like the following:

A) XP to next is a function of current XP, and since we can define initial XP for each character, thus every character's level up marker can be a little bit different if we'd like it to.

B) One of several algorithms is chosen based on the current XP level. For example, from levels 1-10 a growth factor of 2x is used. Then 1.9x for 11-20, 1.8x for 21-30, etc. The actual growth factors and level ranges is something we can figure out.


The reason I want (B) is because I don't want XP to get out of control. For example, Andy said that game used a constant 2x factor. Going from 50 to 100 XP is no big deal, but going from 10000 to 20000 XP may be an enormous requirement that will take the player several hours to meet. I dunno, I'm just a little worried about relying on a single growth function for the length of the entire game. :|
Image
rujasu
Developer
Posts: 758
Joined: Sun Feb 25, 2007 5:40 am
Location: Maryland, USA

Postby rujasu » Thu Jul 05, 2007 4:28 pm

Regarding the gradual growth stuff, I think it should be random, but variation should be very slight, to the point of being just barely insignificant.

Here's another idea though: leveling should be a very static growth, with no randomness, and there is also a separate (very gradual) growth factor that is dependent on actions: a character's strength will increase a little faster if (s)he uses physical attack skills, and a character can gain slight elemental/status resistance if attacked frequently by a particular brand of magic. It could be very interesting, but it's a tough mechanic to balance.
User avatar
ChopperDave
Developer
Posts: 543
Joined: Tue Sep 05, 2006 4:07 pm

Postby ChopperDave » Thu Jul 05, 2007 4:59 pm

OK. I had a kinda weird idea for this. Let's say we just stick with stat growth at level up. But, let's reward the characters for reaching particular milestones in-game. For instance, if Claudius destroys an enemy of equal or greater level in a single hit, reward him by upping his max SP by 5, or something like that. I think this would be a better way to do things because it could give the player a lot to strive for when fighting battles apart form winning, and it'll make level ups easier to handle. What do you guys think?


Here's another idea though: leveling should be a very static growth, with no randomness, and there is also a separate (very gradual) growth factor that is dependent on actions: a character's strength will increase a little faster if (s)he uses physical attack skills, and a character can gain slight elemental/status resistance if attacked frequently by a particular brand of magic. It could be very interesting, but it's a tough mechanic to balance.


Hmm. People seem to be skipping over parts of my posts rather than reading them in their entirety (not picking on you rujasu, it's just something I noticed).

Guys, please read and respond to the entire post rather than just one part of it, especially if ideas are being thrown around. We need to decide what's good and what's bad.
User avatar
Jetryl
Artist
Posts: 1485
Joined: Fri Aug 26, 2005 7:35 am
Location: Southern Minnesota, USA

Postby Jetryl » Thu Jul 05, 2007 6:29 pm

Roots wrote:Okay, fair enough about your point with not making a level requirements table and instead using some sort of algorithm for determining the XP for the next level (I've been convinced and now agree with your point).


Yey. :angel:

Roots wrote:However, I don't think "current_experience_level * 50" is going to cut it.


Neither did I - the ability to use a function was intended as a permanent, real-game feature, the actual content of that function was just a placeholder for the scope of the demo.

So yes, we need to come up with a new algorithm - I can do some prognostication on that, if you'd rather not.

Roots wrote:A) XP to next is a function of current XP, and since we can define initial XP for each character, thus every character's level up marker can be a little bit different if we'd like it to.


Hey, that's a cool idea... :approve:


Roots wrote:is because I don't want XP to get out of control. For example, Andy said that game used a constant 2x factor. Going from 50 to 100 XP is no big deal, but going from 10000 to 20000 XP may be an enormous requirement that will take the player several hours to meet. I dunno, I'm just a little worried about relying on a single growth function for the length of the entire game. :|


Actually, we can just define a function that doesn't mushroom like an exponential function would. We have no limit on how complicated the function can be, so to solve the problem of mushrooming, we just insert another expression that curtails how quickly it grows.

Also, we could alternatively go with what you suggested in B without breaking the system, since the current level is passed into the "xp for next level" function.
Image

Return to “Design”

Who is online

Users browsing this forum: No registered users and 1 guest