Game Development Community

An rpg experience system...

by Isaac Barbosa · in Torque Game Builder · 07/16/2007 (11:57 am) · 4 replies

Hello,

I have been searching for this in the forums but I didn't found anything.

I want to ask if somebody has a clear idea on how to implement an experience system for an RPG character.

So player starts game with 0 experience and as soon him does certain things he got experience point and when those points reach certain level he is able to level up its magic power, for example.

for now I have this code working for this effect, but I'm sure it is not the best approach:

if($Elevel1 $= true && $Elevel2 $= false && PlayerOneProfile.CurrentExperience >= $NextExperienceLevel)
   {
   $upgradeAvailable--;
   $CurrentMagicLevel++;
   $NextExperienceLevel = 200;
   $Elevel1 = false;
   $Elevel2 = true;
   NextExperienceLevel.text = "Level Up at:" SPC $NextExperienceLevel;
   CurrentMagicLevel.text = "Magic Level:" SPC $CurrentMagicLevel;
   }
   else if($Elevel2 $= true && $Elevel3 $= false && PlayerOneProfile.CurrentExperience >= $NextExperienceLevel)
   {
   $upgradeAvailable--;
   $CurrentMagicLevel++;
   $Elevel2 = false;
   $Elevel3 = true;
   $NextExperienceLevel = 300;
   NextExperienceLevel.text = "Level Up at:" SPC $NextExperienceLevel;
   CurrentMagicLevel.text = "Magic Level:" SPC $CurrentMagicLevel;
   }
   else if($Elevel3 $= true && $Elevel4 $= false && PlayerOneProfile.CurrentExperience >= $NextExperienceLevel)
   {
   $upgradeAvailable--;
   $CurrentMagicLevel++;
   $Elevel3 = false;
   $Elevel4 = true;
   $NextExperienceLevel = 400;
   NextExperienceLevel.text = "Level Up at:" SPC $NextExperienceLevel;
   CurrentMagicLevel.text = "Magic Level:" SPC $CurrentMagicLevel;
   }

where $Elevel(n) is the actual experience level; Thanks for the help

#1
07/16/2007 (4:56 pm)
This code with a little adjustment works as i wish. The problem was the instance; in the right button, this is fine.
Thanks!
#2
07/17/2007 (2:45 pm)
Since the effects of gaining a level seem to be consistent (magic level up, upgrade available down), you could generalize this to a single statement, with just the $NextExperienceLevel amount stored separately. First you'd need a definition for levels, something like:

$ExpNeeded[2] = 200;
$ExpNeeded[3] = 300;
$ExpNeeded[4] = 400;
$MaxLevel = 4;

Then you can replace the $Elevel1 / $Elevel2 / etc flags with a single $Elevel variable, which holds your current level. And the if statement becomes:

if($Elevel < $MaxLevel)
{
  %xpNeeded = $ExpNeeded[$Elevel + 1];
  if(PlayerOneProfile.CurrentExperience >= %xpNeeded)
  {
    $upgradeAvailable --;
    $CurrentMagicLevel++;
    $Elevel++;
    CurrentMagicLevel.text = "Magic Level:" SPC $CurrentMagicLevel;
    if($Elevel < $MaxLevel)
    {
      %nextLevel = $ExpNeeded[$Elevel + 1];
      NextExperienceLevel.text = "Level Up at:" SPC %nextLevel;
    }
    else
    {
      NextExperienceLevel.text = "Max Level Reached";
    }
  }
}
#3
07/18/2007 (9:27 am)
Thanks Kalle, I will try that approach :)

Seems more consistent than mine.
#4
08/15/2007 (1:35 pm)
If you are going to make the level a factor in the caculation of experience such as

Level
2 = 200
3 = 300
4 = 400
etc.

You could also just calculate it based on (Lvl+1)*100 == experience needed for next level.