I’ve been brought back to thinking about skills thanks to some responses to Abalieno’s thread on f13. I’ve written about skills versus levels before and also recently read a cogent, albeit minimal, comparison of level-based and skill-based games in Thor Alexander’s Massively Multiplayer Online Games (volume 2). Below are some of the formulae I’ve considered for skill improvement chances–there are a few not present as well because I don’t have my USB flash drive available to me at the time of this writing.
Skill improvement based on rating (simple, ala EverQuest)
rating ∈ [ 1, 2, 3, ... 250 ]
floor = 0.02 (the minimum chance a skill will improve)
chance = (rating / 280) + floor

Skill improvement based on inverted rating (simple)
rating ∈ [ 0, 1, 2, ... 250 ]
floor = 0.02
chance = (250 – rating) / 250 + floor

Scaled skill improvement based on inverted rating
rating ∈ [ 0, 1, 2, ... 1000 ]
chance = ( rating2 ) / MAX(rating)2 * -1 + 1

Hyperbolic chance to advance a skill
rating ∈ [ 0, 1, 2, ... 99 ]
chance = (TANH((rating – 50) / 100) – (TANH(0.481))) * -1
Note: I don’t think the S-curve is nearly strong enough, although it is present if you look at the generated table. The formula requires additional tweaking.

Skill use trends to determine when a skill advances (modified)
Skill influences have to remain small (hundreths of a point) to avoid large jumps in skill points.
- Perform the action
- Add the action to the most recent actions list
- If the most recent actions list is full
- Sum each each use of skill
- Append the sums to the skill influences list
- Recompute character’s current skill points in each skill line
- Average the sum the previous influence and the current influence.
- Set that average to the new current influence.
- Add the current influence to the current skill points, and set this as the current skill points.
- Clear the recent actions list
- If the trend influences list is larger than its limit, delete the head from the trend influences list
Note: I should reimplement this in Python for a skill-based game rather than a role-based game.
Pips (nod to Greg Costikyan’s Star Wars RPG)
- On successful skill use, store one “pip” on the skill
- If the character has six pips on a skill, the skill will increase by one point and clear the pips
Adversity Pips
On any skill use, ff the modified skill roll was within a range of {-5 . . . 5}, indicating near-success or near-failure:
- Store one pip
- Roll a random number in the range {1 . . . 6}
- If the random number is equal to or less than the number of pips stored on the skill
- Increment the skill rating by one point
- Clear the pips on the skill
Adversity Improvement
On any skill use, if the modified skill roll was within a range of {-5 . . . 5}, indicating a near-success or near-failure:
- Roll a random number in the range {0 . . . 100}
- If the random number is equal to or less than 25 increment the skill rating by one point
Adversity Variants: Near-failure {1 . . . 5}, Near-success {-5 . . . 0}, Superlative success/trivial tasks {75 . . . 100}

February 27th, 2006 at 4:19 pm
[...] Friday, I recorded some of the skill advancement systems I’d looked at, played with, or thought about. Sunday, HRose/Abalieno had comments about how math systems distance the player from the creative impulse that should be the heart of the game. [...]