I find that an interesting thread although this topic was discussed already in other threads.
I see skill decay related with aging.
I was in favor of a continous aging for a long while, but the two major problems coming with it are not satisfyingly solvable:
What time is aging linked to? RL time or ingame time?
People only "live" a little window of their characters lives. One cannot play from birth to death with all details. It is also impossible to fix a reasonable "deadline" satisfying everyone.
Skill decay over time has the same problems. But the initial post indeed has some points on that.
My thoughts on that (also on how to implement it):
The main idea is to forget skills that aren't as trained as much as other skills so you can max out one or two things, but not everything.
The idea I came up with is to sort all level-up events in a last-in-last-out (LILO) queue. Once an item (a lvl-up event for a certain skill) comes out of the queue, it removes a point from that skill, as long as there are no other items of the same skill in the loop (meaning that the skill was trained further in the meantime).
[possible implementation: all level-ups get a counter and are being sorted on one side in a LILO queue Q1 and on the other in a open hashing table HT, linked to each other]
With that you could train a certain number of different skills without penalty, but no more. Once you try to expand further, the skill that was trained the longest ago ceases.
It also would provide a stable skill niveau, once reached, without the must to keep training.
Because it is unrealistic that a mage who wants to learn how to craft after mastering crystal way forgets everything about crystal way, I like to make it possible to keep basic knowledge once reached.
This can be done by introducing border levels. As long as the level is under the border, the training event isn't sorted in the loop. Once the border is overstepped, the sorting into the loop starts and with that the possibility that the skill decreases again.
The problem in that system lies in the condition that the training event gets out of the queue and only has effect as long as there are no other events of the same sort (skill training in that case) are in the loop. If the item just falls out of the queue and if the condition doesn't apply, the item just gets lost, one could max out a skill and only get one point minus in the end (and the penalty for not training doesn't apply anymore).
I think one could solve this by putting the items coming out of the queue into another LILO Q2 and when a item comes out of the Q1 , check the first inserted item in Q2 whether there is an item of the same sort in HT. If there isn't, remove the item from the Q2 and with that lower the skill. If there is another item of the same sort in the HT, check the next item in Q2 and so forth.
The advantage of this system is that it is independant of time, it makes it possible to max a few skills but not by far as many as it is possible today. If you concentrate on one side, you forget the other.
With the border lvls it's very easy to tweak the balance while it is possible to modify the treatment of skills depending on the level you have in by adding a condition like "if the skill is over 100, ignore 10 entries in the HT for this skill" so the skill gets more sensitive on forgetting if you didn't level for a shorter time.
Sorry for the lengthy post. Hope I made myself clear enough without a lot of pseudocode despite the late hour
