<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
 <!ENTITY copyrightDates '2000,2001'>
 <!ENTITY % METACOSM SYSTEM "../en.metacosm.ent">
 %METACOSM;
]>

<article lang="EN">
  <articleinfo>
    <title>RFC - Character</title>
    <corpauthor>&author;</corpauthor>
     <revhistory>
      <revision>
        <revnumber>0.2</revnumber>
        <date>May, 11 2000</date>
        <authorinitials>Entropizer</authorinitials>
        <revremark>"The late release" now based on Metacosm-DTD,
        added section on Character creation</revremark>
      </revision>
      <revision>
        <revnumber>0.1</revnumber>
        <date>February, 21th 2000</date>
        <authorinitials>Entropizer</authorinitials>
        <revremark>"Presidents' Day release" First version based
        on Entity-RFC (Entropizer)</revremark>
      </revision>
     </revhistory>
    <abstract>
      <simpara>This document is meant to define what a Character is and describe more
      precisely concepts that only make sense for Characters such as Skills,
      memory or roles...</simpara>
    </abstract>
  </articleinfo>

&license;
&project;

<sect1>
<title>Foreword</title>
  <para>This document relies heavily on the notion of Entity. To be able to
  understand all of it, the reader should be familiar with
  Entity-RFC. Several references are made to that document in the
  present one. It can therefore be useful to keep a copy of it at hand.
  Moreover, the reader should keep in mind that this is more an analysis
  level document and doesn't therefore go deep into the details of
  implementation. Enjoy!</para>
</sect1>

<sect1>
<title>What is a Character?</title>
  <glosslist>
    <glossentry id="character">
      <glossterm>Character</glossterm>
      <glossdef>
        <para>A Character is a particular kind of Entity. We
        consider as Character any Entity that Players can control. This
        implies that a Character is an Entity which is *permanently*
        controlled by a Controller (whether the Controller is a Player or an
        Artificial Intelligence). The permanent aspect of the control is
        important because it excludes all entities that can be *temporarily*
        controlled because they are under the influence of a spell. However,
        this is not enough to define a Character since we can imagine that
        some entities can be permanently controlled by a Controller without
        being eligible to be a Character (think of machines as an example, we
        can imagine that their behavior can be controlled by a Controller).</para>

        <para>The major quality that an Entity needs to be considered as a Character
        is (relative) indeterminism. What does this mean is that Players can
        only play entities which behavior they are able to control at least a
        minimum. The Player add the indeterminism to the Entity. If a Player
        doesn't have the possibility of influencing the behavior of an Entity
        then this Entity is not suited to be controlled by a player and cannot
        therefore be considered as a Character.</para> 
      </glossdef>
    </glossentry>
  </glosslist>

  <para>More precisely, it is an Entity which Type (see Entity-RFC) is
  Character. Characters are also likely to belong to more specific
  sub-types. Once again, as mentioned in Entity-RFC, on the
  implementation side, Types are likely to be implemented as
  classes. However, in the case of Character, it is more likely that
  this Type will be implemented as an interface so that Entities from
  different sub-types could become eligible to be Characters. This
  document will not however go into the details of sub-types since we
  consider they are part of a particular instance of the Metacosm game
  engine. However, we will try to keep in mind the fact that it should
  be possible to define sub-types without having to actually code new
  ones. Therefore, we will try to define Characters so as to comply to
  this requirement.</para>
</sect1>

<sect1>
<title>Roles</title>

  <warning><para>Highly experimental section... The Role concept is not
  entirely clear.</para></warning>

  <glosslist>
    <glossentry id="role">
      <glossterm>Role</glossterm>
      <glossdef>
        <para>Roles are a new concept (?) that could bring an
        interesting dimension to the game. As their name implies, Roles are
        roles that a Character can play. A Character can play multiple roles
        at the same time. It can also change roles or "learn" new roles.</para>

        <para>Roles are closely linked to Actions. Actions can define a list of
        Roles that are needed for its completion with fluency levels. In this
        case, Roles gather all the needed information that allows a Character
        to execute a given action such as needed Skills and requirements on
        attributes. Similarly, Roles can define a list of Actions that they
        enable Characters to do.</para>

        <para>A Character has a 'fluency' level for each roles that it
        plays. These levels determine how easy it is for this Character to
        accomplish the related Action.</para>
      </glossdef>
    </glossentry>
  </glosslist>

  <para>Roles can be instantaneous or semi-permanent. They can be as
  large-grained and semi-permanent as a Character's Orientations (see
  <link linkend="orientation">below</link>) or small-grained and
  instantaneous as "instant roles" that are played for a very small
  lapse of time by Characters and that act mainly as a facilitator for
  interactions. Instantaneous Roles will be developed in greater details
  with Actions in the Interactions-RFC.</para>
</sect1>

<sect1>
<title>Characters and Characterization Levels (CLs)</title>

  <para>In this section, we examine more precisely what CLs mean for
  Characters and introduce new CLs when appropriate. More precisely, we
  discuss the impact of a Character's Choice of Life on its diverse
  Characteristics.</para>

  <sect2>
  <title>Character creation</title>

    <para>Creating a Character that appeals to the Player is an important step
    towards having a good time while playing a Metacosm-based game. It is
    really important that a Player feels comfortable with his Character
    since it will be his or her avatar in the realm of the game. Being
    able to play a Character for which you chose its qualities and
    weaknesses, its attitude towards what happens to it, is really
    rewarding and is an important element that can bring Players to
    role-play. Metacosm offers therefore a large choice of customization
    options.</para>

    <glosslist>
      <glossentry id="choiceoflife">
        <glossterm>Choice of life</glossterm>
        <glossdef>
          <para>When a new Character is created,
          orientations are chosen that provide a frame for the Character's
          acts. It is what we call the Choice of Life. The Character's acts are
          evaluated considering its Choice of Life. The Metacosm game engine
          bases its calculation on the Choice of Life to determine a Character's
          Karma.</para>
        </glossdef>
      </glossentry>
    </glosslist>

    <para>A Character's Choice of Life contains several aspects of a
    Character's personality. When a Player creates a new Character, she
    is asked to provide information on the Character she wants to play.</para>

    <para>Metacosm will provide templates that will be available for
    modifications by Players to speed up the creation process.</para>

    <para>Proposed templates (among others...):</para>

    <itemizedlist>
      <listitem><para>warrior</para></listitem>
      <listitem><para>merchant</para></listitem>
      <listitem><para>scientist</para></listitem>
      <listitem><para>magician</para></listitem>
    </itemizedlist>

    <sect3>
    <title>Orientations</title>

      <glosslist>
        <glossentry id="orientation">
          <glossterm>Orientation</glossterm>
          <glossdef>
            <para>Orientations define the Character's
            interests. They try to define the global behavior of the Character
            and influence the way it will probably evolve.</para>
          </glossdef>
        </glossentry>
      </glosslist>

      <para>There are several different Orientations that a Player can choose for
      its Character. They all act at different level and can be combined to
      add depth to a Character.</para>

      <sect4>
      <title>Attribute Orientation</title>

        <para>Attribute Orientation allows the Character to give a subjective
        importance to Attributes. This system will try to model the way a
        Character uses its Attributes to influence the way it will handle
        situations (for computer-controlled Characters) and determine how a
        Character's Attributes are going to evolve.</para>

        <para>It should be possible to change Attribute Orientation during the
        game. However, such changes should be rare and subject to a relaxation
        time i.e. the change will take a certain amount of time depending on
        how important the change is. For example, a warrior who decided to
        give the greatest importance to Power at first since his combat
        philosophy was oriented towards pure brutality will surely have
        difficulty to embrace a more subtle approach to martial arts by
        choosing to give a greater importance to Coordination.</para>

        <para>The system will work by attributing a given importance to each
        Attribute. We can imagine that the system could take two different
        approaches. First, a point-based system in which each Attribute will
        receive a given number of points, the total of available points being
        constant so that giving points to an Attribute will mean having less
        points available for the others. The other alternative is more simple
        and doesn't allow for several Attributes to have the same importance
        as it is the case in the point-based approach. This other system
        consists in giving a strict order to Attributes that are then ranked
        from the most important to the less important.</para>

        <para>It is worth noting that the Attribute Orientation system should
        influence the Character generation process in the sense that an
        Attribute with greater importance will be more likely to have a higher
        level at creation than an Attribute with a smaller
        importance. However, this is not a necessity and the Attribute
        Orientation is not required to be an image of a Character's Attribute
        levels, i.e. a Character with a great subjective importance on Power
        doesn't necessarily have its Power Attribute greater than the others.</para>
      </sect4>

      <sect4>
      <title>Behavorial Orientation</title>
        <para>Behavorial Orientations try to capture the way that a Character is
        likely to behave like. We will try to identify here only orientations
        that can be computer-assessed and are susceptible to be implemented as
        part of a computer-controlled Character's Artificial Intelligence.</para>

        <para>Ideas for Behavorial Orientations:</para>

        <itemizedlist>
          <listitem><para>violent / peaceful  will use violence or try to argue?</para></listitem>
          <listitem><para>curious / </para></listitem>
          <listitem><para>generous / greedy</para></listitem>
          <listitem><para>talkative / reserved</para></listitem>
          <listitem><para>...</para></listitem>
        </itemizedlist>
      </sect4>
    </sect3>

    <sect3>
    <title>Edges and Flaws</title>

      <para>Metacosm's Edges and Flaws system allows Characters to be even more
      characterized by adding little, polishing touches to the overall
      description of a Character.</para>

      <sect4>
      <title>Definitions</title>

        <glosslist>
          <glossentry id="edge">
            <glossterm>Edge</glossterm>
            <glossdef>
              <para>An Edge is a particular kind of Characterization
              Level that gives an advantage to a Character. This kind of advantage
              can be of several different types such as bonuses to Characteristics,
              to Skills or Actions...</para>
            </glossdef>
          </glossentry>
        </glosslist>

        <glosslist>
          <glossentry id="flaw">
            <glossterm>Flaw</glossterm>
            <glossdef>
              <para>A Flaw is a particular kind of Characterization
              Level that gives a disadvantage to a Character.This kind of disadvantage
              can be of several different types such as maluses to Characteristics,
              to Skills or Actions...</para>
            </glossdef>
          </glossentry>
        </glosslist>
      </sect4>

      <sect4>
      <title>Formal Description</title>

        <para>Can affect attributes, Skills, actions... =&gt; explain</para>

      </sect4>
    </sect3>
  </sect2>

  <sect2>
  <title>Choice of Life and Roles</title>

    <para>The role that an Entity assumes affects the way that it reacts to
    its environment. As an example, working hard physically would probably
    improve a creature's stamina. Moreover, a creature's Role leads it to
    practice certain Skills and therefore improve them but can also leads
    it to forget about others. A particular Role is the Entity's Orientation.</para>

  </sect2>

  <sect2>
  <title>Modifiers</title>

    <para>Done by CPs... =&gt; explain</para>

  </sect2>
</sect1>

<sect1>
<title>Skills</title>

  <para>Skills are more complex than attributes or capabilities. Contrary to
  how it is for attributes, not all entities possess Skills. Skills are
  limited to sentient entities (or entities made sentient through
  different means, be it magic or technology...).</para>

  <para>A Character possesses an undefined number of Skills. Those Skills are
  define at the Type level. They represent basic Skills of an Entity of
  a given Type. It is possible for a Character to learn new Skills or
  develop old ones. Characters can however only learn a certain number
  of Skills at full efficiency. This number is given by a function of
  his/her/its memory attribute. Full efficiency of a Skill means that the
  Character is able to potentially use the Skill at its best degree of
  performance. If the Character tries to learn more Skills, more ancient
  ones will become "faded". They won't be in immediate memory anymore
  and the Character won't be able to use them with maximum
  efficiency. However, after a couple of tries and/or practice, the
  Character may regain full efficiency in a Skill. We don't think that
  one can really forget a physical Skill. One might however forget
  unused knowledge.</para>

  <para>Each Skill should be based on an attribute. The Skill will work as a
  modifier to the attribute to enhance the performance of the Entity. We
  can also think that if an Entity doesn't have the necessary Skill to
  perform a given action, it can optionally default to the appropriate
  attribute. However, not all actions can use the default attribute or
  if they do, they should do so with an important penalty as it is the
  case for knowledge Skills.</para>

  <example>
  <title>Mathematics</title>
    <para>Example: if you haven't learn mathematics, it will be very difficult
    for you to solve a given problem. However, a very clever person could
    devise a way of solving the problem without the necessary
    knowledge. This is however highly unlikely and difficult to do. We'll
    explain more precisely in another document how Skills will work,
    especially regarding the use of attributes.</para>
  </example>
</sect1>

<sect1>
<title>Memory</title>

  <para>Memory is an important concept to the game. It will allow more realism
  since each Entity will be allowed to keep track of its deeds and
  history. Moreover, it should simplify interactions by introducing
  concepts such as short-term memory. Characterization levels have a
  great influence on memory. Each CL will introduce its own memory that
  will be shared by all entities affected by a given CL. CLs will act
  like a pool of concepts, modifiers and memories that will be shared by
  all member entities. Sharing memory with a community allows to
  simplify Entity design by factoring out commonality. Moreover, it will
  allow the possibility of making the world evolve by operating on CL
  memories. When a shared memory is changed, all entities sharing it
  benefit from the change. Thus, we can represent knowledge evolution,
  rumors, etc. by several kinds of processing on Characterization Pools.
  A particular short-term memory will be used to store an Entity's
  context to allow it to act depending on its context. The most obvious
  application of this is for basic interactions since this short-term
  memory will allow an Entity to directly act on objects in its context
  without having to have to identify each other Entity before acting on it.</para>

  <para>Examples of CPs memories:</para>

    <example>
    <title>General level</title>
      <para>We can imagine that each Entity will have a
      specific set of actions that will model physical law of the world.
      This set of physical will manage how entities interact (unconsciously)
      with their environment. As an example, if an Entity is pushed by
      another, the action representing the related physical law will be
      used. For more information, see Interactions-RFC.</para>
    </example>

    <example>
    <title>Type level</title>
      <para>"Races" memory could simulate cultural knowledge or specific
      abilities.</para>
    </example>

    <example>
    <title>Geographic level</title>
      <para>Memory of home town history.</para>
    </example>

    <example>
    <title>Community level</title>
      <para>Knowledge of rumors, name of the local baker...</para>
    </example>

    <example>
    <title>Professional level</title>
      <para>Specific Skills given by the Entity's profession if any.</para>
    </example>

    <example>
    <title>Personal level</title>
      <para>Personal Skills, history, discoveries, knowledge, 
      relationships with other entities (friends, enemies...)</para>
    </example>

    <para>It should be possible for a Character to explicitly query its own
    memory. =&gt; explain</para>
</sect1>

<sect1>
<title>Possessions</title>
  <para></para>
</sect1>

<sect1>
<title>Editor</title>
  <para></para>
<!--
role: skills and attributes to be affected (design of a role)
-->
</sect1>

</article>