From The Mana World
Revision as of 18:31, 8 January 2008 by Blash (talk | contribs) (On the random unlearning of skills, and a skill-performance curve)

Eeiya, I think this is a good proposal, however I offer some minor suggestions. As others have stated, we should NOT just give the EXP/items to the first person to hit it, because that would encourage players attacking every monster on a map. Instead, it should either be time, or distance based, possibly a mixture of both. For instance, move 15 tiles away from the monster and it returns to "everybody mode." Or, after you have not attacked for a certain amount of time, it will once again return to "everybody mode." We should NOT have it party based (meaning the ENTIRE party has to move away from the monster). Why? Because then there would be large parties dedicated to attacking monsters, and as long as at least one person in the party is close enough to the monster(s), everybody gets EXP. No, that won't work at all. Instead, if even ONE person in the party leaves the area, I think the monster should go back to being a free kill. BUT! Let's say that one player in the party left to go buy an item, but the rest of the party (let's say 4 people) stayed behind. The instant the player leaves, the monster goes back into free mode. However, since the rest of the party is still around, and still attacking it, the monster only stays in free mode for less than a second. Thus, the balance is maintained. I also think that only those within a certain radius of the monster should get EXP (in other words, if you go AFK and don't move, you shouldn't be able to leech off your party which is three maps away.) So yeah, just some minor suggestions, but I approve of it overall.

Pauan 04:03, 1 January 2007 (CET)

@Direct Combat Skills - 1

Why not base the exp gained on the work done directly? For fighters this would mean exp is calculated based on the hp loss of the enemy after each of the fighter's hits. Healers would gain exp which based on the amount of hp gained by the wounded. Combined with the challenge rating, this could balance out group attacks quite nicely. Healers would be able to heal more if a group is damaged more and so profit from attacking stronger mobs as much as the rest of the team. In this way the game server doesn't need to store a play-by-play of the fight to calculate exp. It could just be stored in a buffer, ready for use when the fight ends (allthough I would not be opposed to levelling during a fight). This would work in the following manner:

  • Player attacks with short sword equiped
  • Damage to mob is calculated
  • Exp for that player is calculated based on the damage done
  • Exp is added to Player's sword-skill-exp-buffer (or something like that)
  • Rinse, repeat
  • Mob dies, exp is added OR Player dies, bye bye exp (if a buffer is used)

Avaniel 12:09, 16 February 2007 (CET)

This concept was in fact my first idea. But there were a lot of problems I found when I thought about it thoroughly.
1st: When you calculate exp based on enemies hp loss, what happens when the mob is healed? Players could heal mobs intentionally again and again to harvest tons of exp.
Actually, I would consider this a good tactic. We just have to calculate the numbers so that a player couldn't do it by himself after a certain level. Frankly, I would encourage this form of cooperation. Avaniel 15:51, 16 February 2007 (CET)
I just see here a lot of potential for abuse. It would also encourage irrational behavior. Monsters are for getting defeated. Players should be encouraged to fight them as efficient as possible. --Crush 00:49, 26 February 2007 (CET)
Think of it as a cat playing with a mouse, or a lioness bringing small live prey to her cubs, to teach them hunting. As I said, it should only be a viable option for weak players.--Avaniel 01:31, 26 February 2007 (CET)
2nd: i) To calculate the exp of healers based on the challenge rating of the mob is also very complicate. ii) What challenge rating should apply when a fighter is attacked by multiple enemies with different challenge ratings? iii) And what is when the combat is over and the healer heals? Which attackers challenge rating does apply then? iv) And what about support spells? How should these be awarded?
i,iii) I wouldn't apply a challenge rating to healing spells. Just the hp gained should be efficient. If you are the healer in a group of tanks, you won't get very far if they insist on fighting bunnies.
ii) If a fighter hits three enemies with one slash of his sword, he'll recieve exp based on the individual enemies he hits, and their respective challenge ratings.
iv) For support spells we'll find a solution eventually (maybe based on magic defense of the mob). Avaniel 15:51, 16 February 2007 (CET)
3rd: Exp based on damage done is favoring offensive characters (damage dealers) while defensive characters (tanks) are very unprivileged and receive almost no exp although they are doing a very important job, too. Of course it would be possible to give exp for received damage. But this would encourage people to get hurt as much as possible and not avoiding damage as you would expect them. This would result in very unrealistic behavior.
We could base this on natural (sans magic) healing. I'll just add a quote: What doesn't kill me, makes me stronger But at this point I don't see much difference between tanks and fighters. Avaniel 15:51, 16 February 2007 (CET)
There is a reason why I don't want any exp gain for losing hit points. People will stand around and let mobs attack them without striking back to build up hp. Maybe even while being afk. I want to reward the players for fighting efficient and not for letting the mobs beat them up. --Crush 00:49, 26 February 2007 (CET)
Or we could let 'defense' be an actual skill, which gaines exp if the character blocks an attack (exp based on mob lvl). We would then need to implement a 'block' action, which may only be used with certain weapons. For example you could block a sword attack with another sword but it would be much more effective with a shield. Vitality could then be based on the total exp gained on (allmost) all skills.--Avaniel 01:31, 26 February 2007 (CET)
4th: The reason why I decided to distribute exp evenly between the skills is that it allows the player to train new skills while still doing the most work with the main skill. This doesn't force the player to use weak skills over and over again while they have much stronger skills. Instead it allows them to still be effective and advance in the game while the training of a new skill is a secondary task.
If you'd rather be an archer after 4 weeks of being a warrior, you'd beter do the work like the rest of the n00bs :) On a more serious note, I think it will promote character diversity, and multiple characters per player. Avaniel 15:51, 16 February 2007 (CET)
I hope you see now why i decided to do things like i did. --Crush 14:04, 16 February 2007 (CET)
Yes and no :) Avaniel 15:51, 16 February 2007 (CET)

@"Forgetting" of unused skills

As a side note, I wouldn't decrease a random skill, I would much prefer it if a set of incompatible skills are defined. For instance if a player learns a new spell or gains a level in a magic related skill, weapon skills decrease. This would work in the following scenario: lets define that weapon skills and magic skills are incompatible; A player could be training his sword skill, gain a level in that, after which his magic skill decreases. Eventually his magic skill will decrease past the minimum level required to use that healing spell he favors. He would then need to make a decision if he really wants to train magic to regain the healing spell. Only to loose the spell once more after the next increase of his weapon skill.

The (gained exp / lost exp) quotient would have to be calculated to allow only for low level multi-purpose-characters. I would combine this with some exponential exp requirements, which depend on total exp instead of current skill level. This would mean that you could actually ruin a character completely. When the characters exp requirements for a next level of skill are very high and the skill level itself is very low.

In this way a set of compatible skills could also be defined, which will not decrease. An example which comes to mind is smithing and sword fighting.

Avaniel 12:09, 16 February 2007 (CET)

i like the idea of the counterbalancing of lost skills, as magic increases then weapon skills decrease ... i think there should be other ones though to, like if you chose to start using an axe as opposed to a sword, your sword skills decrease as your axe skills increase.
zick 12:09, 16 February 2007 (CET)

Another interesting approach to counter omni characters has been made on the forum a while ago. It was to give the players the posibility to give their characters a "trait" every 10 levels or so. A trait gives the character some advantage at one area while giving it an equal disadvantage at another. To become a very powerful fighter, spellcaster or healer the character would have to combine a lot of traits that boost one aspect of his character but weaken it on a lot of other areas. --Crush 04:20, 2 March 2007 (CET)04:19, 2 March 2007 (CET)

@New enemy spawning/exp generating proposal

i think this proposal would work best with a SoM/Zelda-ish battle engine, as opposed to the one that is currently implemented ...

everytime an enemy is respawned, the server determines its HP by the following equation (subject to change, shown in psuedocode):

((enemyBaseHP +/- randomNumZeroToFive) * randLVL) +/- randNumZeroToEleven)

description of this equation: "enemyBaseHP" is a static value (doesn't change) defined in an enemies config file "randLVL" is a dynamic value generated by using the equation (avgLvlOfPlayersOnMap +/- randNumZeroToFive) and is the level of the enemy, which determines how strong the enemy is, its drop tables, how much experience it will give, etc. "randomNumZeroToFive" and "randNumZeroToEleven" are values generated from a dice-rolling function (6 & 12-sided respectively) the "+/-" operator randomly chooses whether to add or subtract values

in other words, every enemy levels in the same manner as players do, gaining abilities and getting stronger with every level. You may even find level 99 maggots! Also two enemies with the same levels may actually have differing amounts of HP and give out differing amounts of exp. --zick 16:09, 17 February 2007 (CET)

Ok, I like the variation principle, but only within a well defined boundary. I dislike the idea of having monster strength based on average player strength. I think exploration should be promoted and that the starting area's really shouldn't have anything of interest for higher level players.Avaniel 21:40, 17 February 2007 (CET)
as far as exploration there should be some other reasons to explore than just gaining experience, such as quests. maybe even since you want add more races at some point, you always start a new character as a human, but when you make your way from the human towns to say the fish-peoples town, you gain the ability to start a new character as a fish-person (which opens new weapons (shops sell items based on sex and race), skills, and places you can go (humans can't travel everywhere that say a fish-person can and vice versa))

also something interesting that i want to add is that this makes it easier to create enemies ... just create a base species and allow it level on it own, no more trying to come up with different names for red slimes and green slimes (what happens when you run out of colors, hmmm!) ever notice how old school rpgs like ff on snes, would use the same spriteset for all of its imps and just call them imps or imp generals or imp captain, what happens when you run out of ranks. plus then i think it makes the enemies be more like the creatures of this world you've created. if we were to make a rpg of our planet, and cougars were one of the enemies, we wouldn't have blue cougars and red cougars, we'd just have cougars ... but not every cougar looks quite the same, so why not allow the enemy spriteset include variations of an enemy (check out the following image: bunnies and check out all the different bunnies some are white some are spotted some are brown, etc.) --zick 16:09, 17 February 2007 (CET)

I believe that, the green/red/white/yellow slimes are just an easy way to get started, the endgoal will most definetly be a diverse world, with different species of mobs. Basically, this stuff is waiting on well defined view of the game world, after which concept artists can get started developing a whole range of mobs. The system described here just makes it easier to be lazy.Avaniel 21:40, 17 February 2007 (CET)

while talking about enemies, the EXP system should be mentioned and explained. First off every enemy has a base EXP value, stored in its config file. This value has the following equation applied to it:

((enemyBaseEXP +/- randomNumZeroToFive) * enemyLVL) +/- randNumZeroToEleven)

this value is the total amount of distrubitable EXP that the enemy can give. each player that contributed to the death of said enemy (who is still on the current map when death occurs) is awarded a percentage (rounded to the nearest whole number) of these EXP based on the overall percentage damage that they did. also there are two bonuses that can be applied to the EXP you are awarded. the first is called the "kill bonus" and is granted to the person who actually kills the enemy, this encourages kill stealing (part of the friendly-fire free for all system that i would like explain later). this bonus is equivalent to the "baseEXP" value. the second bonus is an "overkill bonus" and is granted when your final killing hit is more than the remaining HP of the enemy (the system knows how much damage you have to do to kill the enemy and usually won't overkill by much, unless you kill with a critical hit, a limit break, or a special move) and is generated by dividing the amount of damage over the remaining HP by the baseEXP (and of course rounding to a whole number) --zick 16:09, 17 February 2007 (CET)

So, basically you agree with the proposal I posted above. I like the overkill idea, though I'm not sure of it's usefulness and I'm unsure if this would work against the effort to steer higher level players to higher level areas.--Avaniel 21:40, 17 February 2007 (CET)
see above on "steering" ... the bonuses are only gonna be a couple of extra exp, nothing drastic. --zick 16:10, 17 February 2007 (CET)

even lowly maggots can be powerful enemies, if someone with a level 99 enters a map with a lot of other noobs and throws off the curve. enemies level with players and each enemy has different attacks at different levels (as well as strength and defense). enemies dont gain level until respawn. enemies generate exp, gold and have different drop tables based on their level also. --zick 16:09, 17 February 2007 (CET)

even lowly maggots can be powerful enemies... No, just no...Avaniel 21:40, 17 February 2007 (CET)
okay i think you need to keep in mind that a maggot will only have a base exp of 1 or 2, so no matter how you calculate it your still not getting a lot of exp as compared to a creature with say a base exp of 10 or 100, that'll be when you'll start getting major exp. and i'm guessing there will be a more grinder approach to how much exp you will need to gain to reach the next level, like in games like "maple story" ... --zick 16:11, 17 February 2007 (CET)
Haha, reminds me of the killer rabbit. Anyway I don't think it's a good idea to scale monster toughness depending on the level of the players on the map. Instead I think we should use a rather flat leveling curve to make sure a good amount of monsters are interesting to fight and if maggots are no longer your taste, it's simply time to move on. --Bjørn 14:21, 25 February 2007 (CET)

Exp based on difference between skill level and difficulty of task

Instead of exponentially increasing the amount of points required for each level, why not attatch a "target skill level" or "effectiveness level" to every performable action (including specifics, like enemy being fought etc.), and have the "current skill level" or "effectiveness level" logarithmically approach the "target skill level" of an action.

Implications:

  • you can only get 100% effective at killing specific creatures, crafting specific items, etc.
  • the amount of skill you develop is proportional to the relative difficulty of the task. In other words, easy things only make you so good:
     for Dexterous and Mental skills,
       SkillIncrease = (ActionTargetSkillLevel-CurrentSkillLevel)*learningRate, where 0% < learningRate < 100%
     for Physical skills,
       SkillIncrease = (ActionTargetSkillLevel-CurrentSkillLevel)*bodyDevRate, where 0% < bodyDevRate < 100%

--Blash 22:37, 19 October 2007 (CET)

Worth thinking about, but what do you mean with "learning rate" or "body development rate"? A character attribute? When that is the case I consider it a bad idea because it would make different characters progress at different speeds. Also note that the formulas you proposed aren't logarithmic. --Crush 18:37, 20 October 2007 (CEST)
Well, learningRate and bodyDevRate I have left open to suggestion. There are a couple of ways one could go about it: a. make them global constants for all characters. b. Let the user adjust a tradeoff between the two at character creation (then the player can have the option to specialize their character more). And as I said earlier, the character's skill level logarithmically approaches the target skill level--this is the numerical behaviour of the character's skill level over time. Picture a graph of the player's skill level over a series of increases and you will see what I mean. The formula here implements the instantaneous skill increase, but only implies the effect of it over time. --Blash 10:35 AM, 23 October 2007 (MST)
I think this was done in Dragon Lance, not sure of the series though, where the one character is a mage and gave up his health and body in order to further and increase his magic power, it'd be somewhat the same. You sacrifice A for B or B for A. It would also be more fair that way to people, because if I want B and the normal system favors A then I'm screwed. Arenlor 21:18, 25 October 2007 (CEST)

Skill learning/losing based on "total max skill capacity"

Also, you could set a skill capacity limit (a quantity) for every character, that determines how much total skill they can have at any one time. Developing skills uses up this skill capacity, until the skill has to either stop progressing or it takes away from other skills. --Blash 22:37, 19 October 2007 (CET)

On the random unlearning of skills, and a skill-performance curve

I think this conflicts with giving the user control over their character, because it's not predictable, therefore, not controllable. Perhaps a skill gain can simply draw an equal amount from all other skills, until the other skills hit their natural minimum (remember some skills can always be genetic, or inherited). Or perhaps even a weighting system can be developed that will pull skill points from skills based on how long those skills have gone unused, and on how difficult those skills are to maintain and perform.

Also, another possibility is to use a curve to represent instantaneous skill-performance level, with the "warm-up" stage--where the character gets back into the mode of performing a skill, and a "peak" level, and then a rolloff function as they switch their focus to other activities.

--Blash 19:31, 8 January 2008 (CET)