[MUD-Dev] Info about different skill systems

Nathan F Yospe yospe at hawaii.edu
Sat Jan 2 22:25:12 CET 1999


On Fri, 1 Jan 1999, Emil Eifrem wrote:

:Does anyone have any pointers to info about different skill systems? Most
:notably 'skill trees' and 'skill webs,' and preferably on design/coding
:issues rather than concepts.

:I have checked the archives, but didn't find any real explanations about
:it. I may have missed it though, the lack of boolean search options in the
:search engine tend to make exhaustive searches tedious at best. (Did you
:guys *know* how often you say 'skill tree'?)

As the guy who coined "Skill Web" I ought to answer this one. There will
be more info if you cross ref my name on your search, but, for now... it
would be unfair to just dangle that in front of you and not add anything
new. So... another informational post. *sigh* holiday break, working and
all, has made me soft... I wasn't going to think mud for another five or
six months.

Skill Webs 

A means of addressing multiple related skills without the drawbacks of a
limited single inheritance system or messy multiple inheritance. (I have
only seen skill trees implemented as a single inheritance system, but am
aware of at least one person on the list who uses MI in a sort of teired
layering.)

My implementation uses a layer of skills and a layer of attributes, with
no direct links from skill to skill. This was a computational and design 
issue, and there was no reason beyond worry of insufficient connectivity
_not_ to simply link skills to each other.

The primary approach is as follows: I define a set of attributes, with a
framework on the class definition for an attribute that is open ended to
sufficient degree to allow new attributes to be added without hardcoding
changes... attributes link to other attributes, and are documented quite
extensively. They should almost never be added. The character object the
characters all inherit from has attributes associated with it, as do the
components of its body. (Attributes inherit from several subclasses, the
physical, mental, and reflexive being high among them. Physical and some
reflexive attributes are inherited by parts of the body.) Attributes for
an individual are stored as numbers, for the base object of individuals,
as ranges and a default. (More can be found on my inheritance model from
the archives.) Skills are defined by requirements (environmental, basic,
hosted) and multiple skills may cover a single task (IE, flight is quite
different for a Trae'laec or a *Hzzt* Swarm), with requirements adding a
filter on the basic list. All skills attemptable by a species are listed
for an individual of that species, and attempts to execute a command for
which no listed skill exists will begin checking the primary skills list
for the gameworld. This might be changed in the future. I can't see much
point in allowing a human to attempt to, say, Fazz in a Humanx universe.
Likewise, a single skill may cover multiple tasks. As a skill can have a
series of derivatives with similar requirements (inheritance model) with
other, nonderived skills using the same attributes, skills may be honed,
or at least improved, by related activities. There is one attribute that
should be created for each skill, a uniqueness value to keep related but
not identical skills from perfecting something. Skills link to verbs, or
to exitential verbs. Skill attributes include academic knowledge in some
related field or another... and crosslinking makes this propogate across
skills. I update attributes just after a skill use, and skills just when
that skill has been checked, after the requirements have checked, before
success calculation. The checking time is critical. I use weighted links
from skill to attribute (attributes don't know what skills they affect.)
and from attribute to attribute (monodirectional).
--

Nathan F. Yospe - Born in the year of the tiger, riding it forever after
University of Hawaii at Manoa, Dept of Physics, second year senior (joy)
(On Call) Associate Algorithm Developer, Textron Systems Corp, Maui Ops.
yospe#hawaii.edu http://www2.hawaii.edu/~yospe Non commercial email only






More information about the mud-dev-archive mailing list