<!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 on perceptions</title>
    <corpauthor>&author;</corpauthor>
     <revhistory>
      <revision>
        <revnumber>M1</revnumber>
        <date>July, 15th 2001</date>
        <revremark>Conversion to Docbook. Definitions for Medium, PerceptionState, Stimulus, Stimuli, Sense, StimuliDispatcher and LowLevelDescription. Description paragraph from Entity-RFC. Explannation on where Stimuli are modified.</revremark>
      </revision>
      <revision>
        <revnumber>0.6.2</revnumber>
        <date>January, 7th 2001</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>Minor changes in 'How To', 'Implementation' comes back with
        descriptions (LLDs)</revremark>
      </revision>
      <revision>
        <revnumber>0.5</revnumber>
        <date>April, 16th 2000</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>Changes in 'dazzle section'</revremark>
      </revision>
      <revision>
        <revnumber>0.4</revnumber>
        <date>April, 9th 2000</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>Adds in 'senses' section, new 'relay/converter' section, adds
in 'focus' section</revremark>
      </revision>
      <revision>
        <revnumber>0.3</revnumber>
        <date>March, 20 2000</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>Adds in 'descriptions' section. Creation of 'How to' section.
Conversion into metacosm-DTD</revremark>
      </revision>
      <revision>
        <revnumber>0.2</revnumber>
        <date>February, 23 2000</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>'Implementation' section removed and replaced by 'StimuliDispatcher'
section. Addition of a paragraph on sensitive memory in 'Sense' section.  Addition
in 'Reflection' section</revremark>
      </revision>
      <revision>
        <revnumber>0.1</revnumber>
        <date>January, 4th 2000</date>
        <authorinitials>Janselmeer</authorinitials>
        <revremark>First version gathering ideas from utopie mailing list and
the first document drafts</revremark>
      </revision>
    </revhistory>
    <abstract>
      <simpara>This document specifies the perceptions system.</simpara>
    </abstract>
  </articleinfo>

&license;
&project;

<!-- TODO LIST
  - introduce units for stimuli and senses values
  - glasses = stimuli relay
  - improve How-to section
-->

<sect1>
<title>Notations</title>
  <para>Some terms are defined in the glossary, available on the official site.</para>
</sect1>

<sect1>
<title>Stimuli</title>
  <para>The perceptions system is entirely based on Stimuli emission by Entities and on
  receiving of these Stimuli by other Entities.</para>

  <para>There are two kinds of Stimuli. We can distinguish:
    <itemizedlist>
      <listitem>
         <para>Description (or state) Stimuli which describe the state of the associated
         Entity. These Stimuli can last an infinite time.</para>
    
         <example>
           <title>Description Stimuli duration</title>
           <para>The torch is giving out light: 6 hours duration.</para>
           <para>The flag is red: infinite duration.</para>
         </example>

      <listitem>
        <para>Action Stimuli describe actions of associated Entities.
        Their duration is instantaneous.</para>
    
        <example>
          <title>Action Stimuli</title>
          <para>Janselmeer lights the torch.</para>
          <para>The torch goes out.</para>
          <para>The dragon utters a deafening growl.</para>
        </example>
    </itemizedlist>
  </para>

  <glosslist>
    <glossentry id="medium"><glossterm>Medium</glossterm>
      <glossdef>
        <para>a means of effecting or conveying something (Merriam-Webster's Collegiate
        Dictionary)</para>
        <para>channel for the transmission of some Stimuli: only Stimuli corresponding
        to the medium can be transmitted by this medium.</para>
      </glossdef>
    </glossentry>
  </glosslist>

  <para>Stimuli can also have multiple shapes and intensities. A Stimulus can thus
  go down the following Media:
    <itemizedlist>
      <listitem><para>Visible light</para></listitem>
      <listitem><para>Infrared</para></listitem>
      <listitem><para>Ultraviolet</para></listitem>
      <listitem><para>Sound</para></listitem>
      <listitem><para>Infra-sound</para></listitem>
      <listitem><para>Ultrasound</para></listitem>
      <listitem><para>Mechanic (touch)</para></listitem>
      <listitem><para>Flavour (taste)</para></listitem>
      <listitem><para>Smell</para></listitem>
      <listitem><para>Magnetic field</para></listitem>
      <listitem><para>Electric field</para></listitem>
      <listitem><para>Life</para></listitem>
      <listitem><para>Magic</para></listitem>
      <listitem><para>Invisible</para></listitem>
      <listitem><para>Telepathy</para></listitem>
      <listitem><para>Feeling (to feel real feelings of somebody)</para></listitem>
      <listitem><para>...</para></listitem><!-- we can not think of every possible thing -->
    </itemizedlist>
  </para>

  <para>Its intensity is given by a positive real number. A value of 1 means a normal
  (or medium) intensity.  Below 1, intensity is low.  Above 1, intensity is high.</para>

  <para>A scale can be built by applying a decimal logarithm:</para>
  <blockquote><para><screen>
    <0.001 -> <-3: exceptionally weak intensity.
    0.001  -> -3: very weak intensity.
    0.01   -> -2: weak intensity.
    0.1    -> -1: low intensity.
    1      -> 0: medium intensity.
    10     -> 1: high intensity.
    100    -> 2: strong intensity.
    1000   -> 3: very strong intensity.
    >1000  -> >3: exceptionally strong intensity.
  </screen></para></blockquote>
</sect1>

<sect1>
<title>Senses</title>
  <para>In order to be able to receive Stimuli, Entities possess Senses.
  Each Sense is specialised for Stimuli reception in a determined Medium.
  For example, a normal human has 5 Senses:
  <itemizedlist>
    <listitem><para>Sight -&gt; light</para></listitem>
    <listitem><para>Hearing -&gt; sound</para></listitem>
    <listitem><para>Touch -&gt; mechanical stimulus</para></listitem>
    <listitem><para>Taste -&gt; food</para></listitem>
    <listitem><para>Smell -&gt; smell</para></listitem>
  </itemizedlist>

  <para>Each Sense has also an intrinsic power. The more powerful a Sense, the more
  it will be able to receive weak Stimuli.</para>

  <para>As a Stimulus intensity, a Sense capacity is given by positive real values.
  A logarithmic scale identical to the previous one for Stimuli can be built:</para>
  <blockquote><para><screen>
    <0.001 -> <-3: exceptionally weak power.
    0.001  -> -3: very weak power.
    0.01   -> -2: weak power.
    0.1    -> -1: low power.
    1      -> 0: medium power.
    10     -> 1: high power.
    100    -> 2: strong power.
    1000   -> 3: very strong power.
    >1000  -> >3: exceptionally strong power.
  </screen></para></blockquote>

  <para>In order to know if a Stimulus has been received by a Sense, we have to multiply
  the two powers (or add the two values on the logarithmic scale).
  With a value of 1, the Stimulus is received normally.
  Below 1, the Stimulus is badly received.
  Above 1, the Stimulus is very well received.</para>

  <blockquote><para><screen>
  Stimulus | Sense | reception
  ----------------------------
     1        1        1       -> received
     1       0.1      0.1      -> not well received
     1       10       10       -> well received
    0.1       1       0.1      -> not well received
    0.1      0.1      0.01     -> not well received
    0.1      10       1        -> received
    10        1       10       -> well received
    10       0.1      1        -> received
    10       10       100      -> very well received
  </screen></para></blockquote>

  <para>According to the reception level, the Stimulus description can vary.</para>

  <para>As soon as it is received, the Stimulus is temporarily kept in a sensitive
  memory. So the Entity can consult received Stimuli at any time without
  having to ask their reemission to the source for all that.
  This memory is completely independent of the Entity memory and is managed
  in a totally autonomous way.</para>

  <blockquote><para><screen>
   ----------- explicit obs.  ------------        ----------
   |  New    |--------------->| Sensitive|<------>| Entity |
   | Stimuli |--------------->|  memory  |        |        |
   ----------- high intensity ------------        ----------
                Stimuli (*)

  (*) level = fct(concentration) ;
  </screen></para></blockquote>

  <para>It works in fact in the same way as a cache memory, by keeping the last
  received Stimuli or the most consulted ones whereas the other ones will be
  erased (or forgotten) when it will be needed to free space.</para>

  <para>Anyway, Stimuli will stay a limited time in this memory. It is indeed rather
  natural to not feel a Stimulus anymore after some time when it does not evolve.
  For instance, when one encounters an unusual smell, one notices it at once
  and one ends up not paying attention anymore some minutes later...</para>

  <para>Stimuli are filtered by Senses and transformed into descriptions
  (see <link linkend="descriptions">Descriptions</link>). Controllers can access only
  to these descriptions. They get them directly through Senses and not from the Entity's
  Memory (there is already the PerceptionState as a sensitive memory).</para>
</sect1>

<sect1>
<title>Focus</title>
  <para>In normal times, an Entity receives all Stimuli equally. However, it
  is able by concentrating to focus on particular Stimuli. Their perception
  by the Entity is then increased, whereas the perception of other Stimuli
  is decreased. The focus capability depends on the 
  concentration of the Entity. Some skills can improve it too. For example, 
  musician can focus better on sounds because of training.</para>

  <para>It is also possible to focus:
    <itemizedlist>
      <listitem><para>Either on all Stimuli coming from a particular Entity,</para></listitem>
      <listitem><para>Either on all Stimuli of a given Medium.</para></listitem>
    </itemizedlist>
  </para>

  <para>A Medium (or Sense) focus is improved when the number of active Senses is 
  reduced. For example, it is easier to hear something when closing eyes.</para>

  <para>The 'focus' command allows to realize this by the following means:
    <itemizedlist>
      <listitem><para>focus &lt;sense&gt; -&gt; the Entity focuses on Stimuli associated
      to &lt;sense&gt;</para></listitem>
      <listitem><para>focus &lt;entity&gt; -&gt; the Entity focuses on Stimuli coming from
      &lt;entity&gt;</para></listitem>
      <listitem><para>focus -&gt; the Entity switches back to a normal perception.</para></listitem>
    </itemizedlist>
  </para>
</sect1>

<sect1>
<title>Dazzle phenomenon</title>
  <para>Dazzle phenomenon occurs when a very strong Stimulus hides weaker Stimuli. For
  example, the sun hides the stars. The system proposed in this section should
  allow to simulate this phenomenon. To avoid all misunderstandings, we insist on
  the fact that it is no matter here of Sense adaptation (for instance, you are in
  the dark, somebody light on, you are dazzled and you cannot see anything, then
  your eyes adapt to the light and you can see again). As a simplification, any
  possible adaptation will be considered as instantaneous.</para>

  <para>Our model is a question of punctually decreasing a Sense power according to the
  power of the most powerful received Stimulus. This Stimulus must have a positive
  duration, that is it is not instantaneous.</para>

  <para>The rule is the following:</para>

  <para>Effective Sense power = intrinsic Sense power / (intensity of strongest received
  Stimulus ** Sense control)</para>

  <para>or</para>

  <para>Effective Sense power = intrinsic Sense power - (intensity of strongest received
  Stimulus * Sense control) when getting values on logarithmic scale.</para>

  <para>In all events the most intense received Stimulus should have an intensity above
  average (1 or 0 on logarithmic scale). Otherwise the power of other Senses would
  be increased and not decreased.  The 'sense control' parameter is an attribute
  of the Sense. It represents the ability of the Sense to resist to dazzle. It is
  a positive float with a default value of 1.0. A Sense with a control lesser than
  1.0 resists well to dazzle. A sense with a control greater than 1.0 resists
  badly to dazzle.</para>

  <para>It is worth noting that the most powerful Senses are less easily dazzled than
  weaker Senses if their control are equal.</para>

  <example>
  <title>Reception with dazzle phenomenon</title>
    <blockquote><para><screen>
    Dazzling | Received |       |         |
    Stimulus | Stimulus | Sense | control | reception
    ----------------------------------------------
       10         1         1       1        0.1  -> not well received
       10         1        10       1        1    -> received
       10         1       100       1        10   -> well received
       10         1       100       2        1    -> received
       100        1       100       2        0.01 -> not well received
       100        1         1       1/2      1    -> received
    </screen></para></blockquote>
  </example>
</sect1>

<sect1>
<title>Reflection</title>
  <para>This section is based on the physical phenomenon called the same.
  Here is a simple example concerning light: let us imagine a white
  coloured object (that is it reflects light on all light spectrum)
  of any shape (a cube for instance). If we plunge this object into darkness,
  we won't see anything: it does not emit light. If we light a red light, it
  takes the red colour. If we light a blue light, it becomes blue and so on. It
  is in fact a matter of reflection: the object sends back a light of the received
  colour.</para>

  <para>Entities in game will be able altogether to reflect received Stimuli
  in the same way. Indeed each received Stimulus can influence the state
  of some entities and modify their Stimuli emission.
  However, we must pay attention to the fact that an Entity which receives
  blue light and yellow light will not send back two Stimuli of the two
  colours but only a green one. In fact each Stimulus has modified the
  Entity state and the Entity emits new Stimuli from this modified state.</para>
</sect1>

<sect1>
<title>Relay/converter</title>
  <para>An Entity receives a Stimulus. Let us guess that it sends back
  a Stimulus of a different type. Let us take the phone example. We
  can consider that it is an Entity which is able to receive or emit
  electromagnetic or acoustic stimuli. Nevertheless, if it is thrust into
  an isolated system, it will not do anything. In fact, it does nothing
  more than turning sound waves into electromagnetic waves and vice versa.
  This is a Stimuli converter.</para>

  <para>We can also imagine an Entity of a special type made of several parts
  split up between different locations. This stays hypothetical, but this
  could give a remote transmitter-receiver able to receive Stimuli in a
  Place and to send them back in another. Perspectives given by such Entities
  are very interesting, as Stimuli relays from a container to another (refer
  to "StimuliDispatcher" section).</para>
</sect1>

<sect1 id="descriptions">
<title>Descriptions</title>
  <para>An Entity is a construct with which other Entities and game
  constructs can interact. A successful interaction can only be the
  result of an "informed decision". It is therefore necessary to
  establish a way to obtain easily processable information about an
  Entity.</para>

  <para>At a higher level, even if all interaction is done through game
  constructs, players will need to learn more about the world their
  Character will evolve into. It is therefore necessary to provide a way
  to describe Entities in an intelligible way.</para>
    
  <para>Another issue is the need for more realism compared to older MUDs.
  Typically, descriptions were stored in text files, one (or sometimes
  several) description(s) per Creature type. This had several 
  drawbacks. First, each Creature of a given type had exactly the same
  description as any other of the same type. Second, the description was
  static, i.e. it did not evolve at the same time as the Creature it was
  representing (no monitoring of health condition, growth, change ot
  clothes...).</para>

  <para>An Entity receives the whole information about its environment thanks to
  Stimuli. For instance, on receiving a visual Stimulus from a Creature, the
  Entity could get its identity, its size, its race, its rough age, its rough
  weight... A sound Stimulus could also give the Entity some other information.
  This raw data is sufficient for a bot but for a human player, it must be
  laid out in a textual, graphical, sound or some other way... This is the
  objective of the dynamic description mechanism. We'll now show how it works for
  textual descriptions, but it can be adapt in most cases to other descriptions
  types.</para>

  <example>
    <title>An Entity with some attributes and the descriptions which
  could be generated</title>

    <blockquote><para><screen>
    identity: EntityID
    race: wolf
    size: 2m
    colour: grey
    position: x y z (3D coordinates)
    </screen></para></blockquote>

    <para>The description generated on the fly is:
    "A huge grey wolf is standing a few meters in front of you.".
    If the wolf was already known as "Medor" by the Character (that is
    if the EntityID Entity was in the character memory), the description
    could become: "Medor is standing a few meters in front of you.".</para>
  </example>

  <para>A Stimulus carries therefore a certain amount of information which can
  be used afterwards by the Entities which receive it. However, we have
  seen in previous sections that a Stimulus could be more or less well
  received. So this information will not always be accessible and could
  also be distorted. Some information can require first-rate perception
  too whereas another will be easily obtained.</para>

  <example>
    <title>Example with an action</title>
    <blockquote><para><screen>
    Subject Entity: EntityID (Raoul)
    Action: ActionID (eat)
    Object Entity: EntityID (bread)
    ...
    </screen></para></blockquote>
    <para>The description will be: "Raoul is eating some bread."</para>

    <para>If a Stimulus is badly received, this description can be replaced by one
    of the following:</para>
    <blockquote><para><screen>
    "Somebody is eating some bread."
    "Raoul is doing something with bread."
    "Raoul is eating something."
    "Somebody is doing something with something."
    ...
    </screen></para></blockquote>

    <para>Or the description could even be completely wrong:</para>
    <blockquote><para><screen>
    "Raoul is threatening you with bread."
    "Raoul is eating some wood."
    </screen></para></blockquote>
  </example>

  <para>The problem which appears is how to know which part(s) of descriptions are
  altered. The problem exists not only for players but for bots too, because it
  concerns attributes at the source. We associate a minimal reception index to
  each attribute. The Stimulus reception level should be greater than this index
  value to have an optimal reading of the attribute.</para>

  <para>To better understand, let's continue with the previous example:
    <example>
      <title>Example with an action (2)</title>
      <blockquote><para><screen>
      Subject Entity: EntityID (Raoul): 0.01
      Action: ActionID (eat): 7
      Object Entity: EntityID (bread): 1

      Reception
      10: "Raoul is eating some bread."
      1: "Raoul is eating something."
      0.1: "Raoul is threatening you with a bread".
      0.01: "Raoul is eating some wood."
      </screen></para></blockquote>
    </example>
  </para>

  <para>but, contrary to this example, it won't be as simple to practically give a wrong
  value to attributes, except to numerical values (size, length, weight...). We
  could in theses cases determine the wrong value in an interval centred on the
  real value and with a diameter increasing when reception level decreases.</para>

  <para> Now see an other subject. In these examples information is reduced and
  descriptions are therefore short. Nevertheless, with state Stimuli, descriptions (at
  least textual ones) may well be too long. As a consequence, a detailed (long)
  description and a shorter one have to be generated. The short
  description is the default one but the user can consult the long one
  at leisure. This can apply as well to texts or other description types.
  For example, we can imagine a graphical interface where an Entity
  appear as a picture (short description) and clicking on it displays
  a window showing additional information on the Entity.</para>

  <example>
    <title>Example with an action (3)</title>
    <para>short description: "Raoul is standing behind his counter."</para>
    <para>long description: "Raoul is standing behind his counter.
    He is a stout man of medium height. He is wearing a 'marcel' and white trousers
    held up by a pair of braces."</para> <!-- Not so stereotyped for a baker description! -->
  </example>
</sect1>

<sect1>
<title>Implementation</title>

  <sect2>
  <title>StimuliDispatcher</title>

    <para>A StimuliDispatcher is an intermediary between Entities emitting
    Stimuli and Entities receiving them. There is a StimuliDispatcher associated
    to each Place.</para>

    <para>The operation is the following:
    when an Entity come into a new Place, it is registered to the local
    StimuliDispatcher as a new Entity able to send Stimuli (we consider that
    any Entity can potentially emit Stimuli even if it could be not always
    the case), and able to receive them with each of its Senses. The
    StimuliDispatcher asks then to all registered Entities for emitting 
    Stimuli again in order for the new Entity to have a glimpse of its
    environment. Afterwards, when a Stimulus is emitted by any Entity, the
    StimuliDispatcher dispatches it to all registered Senses which can
    receive it. So the StimuliDispatcher role is limited to Stimuli delivery
    only; on no account does it have to modify Stimuli.</para>
  </sect2>

  <sect2>
  <title>PerceptionState</title>

    <glosslist>
      <glossentry id="perceptionstate"><glossterm>PerceptionState</glossterm>
        <glossdef>
          <para>The PerceptionState is a cache containing state Stimuli emitted by an Entity 
          (one Stimulus per Medium). Each Entity should have a PerceptionState.</para>
        </glossdef>
      </glossentry>
    </glosslist>

    <para>The PerceptionState prevents ever recreating the same Stimuli for and 
    Entity before they are sent to any StimuliDispatcher. Assuming the content 
    of the Stimuli will not change quite often, the benefits should be important.</para>
  </sect2>

  <sect2>
  <title>Descriptions</title>

    <para>Before going any further in this section, the Entity-RFC should be well known 
    by you. If you do not know what an Entity, a Property, a Type or an Influence, 
    are please read the Entity-RFC.</para>

    <para>In earlier sections, we have introduced Stimuli. Here we deal with how 
    to fill them. To do that, we define a set of description Properties besides 
    the usual Properties which we may qualify state (or internal) Properties. 
    The description Properties are calculated from the state Properties.</para>

    <example>
      <title>Raoul the baker</title>
      <blockquote><para><screen>
      State Properties:
      -----------------
      identity: EntityID
      race: human
      name: Raoul
      job: baker

      Description Properties:
      ----------------------
      identity: EntityID
      race: human
      perfume: odor of bread.
      </screen></para></blockquote>
    </example>

    <para>In this example, there are 3 descriptions Properties. 'identity' is 
    necessary because it allows Bots to identify other Entities. Then there 
    is 'race' that is equal to the state Property of the same name, and 'perfume'
    which was created from the state Property 'job'.</para>

    <para>Now we must sort the description Properties by Medium because every 
    description property cannot be perceived through all Media. In the same 
    time, we associate an intensity to each of them. The result is a table. 
    We may call it the Low Level Description because it contains any necessary 
    information to build a description (text, sound, ...) of the Entity.</para>

    <example>
      <title>Raoul the baker (2)</title>
      <blockquote><para><screen>
            View                    |           Smell
      -------------------------------------------------------------------
      identity: EntityId     1      |  identity: EntityID             1
      race:     human        2      |  race:     human                1
                                    |  perfume:  odor of bread        5
      </screen></para></blockquote>
    </example>

    <para>Every Entity will have such a table. Entity editors (or zone makers) must 
    of course provide how to build it in the Entity Type and Influences.</para>

    <para>The last step is now to create the Stimuli that will carry data through Media.
    It is quite simple: we just have to put the content of each column in a Stimulus 
    related to the same Medium than the column. The Stimulus will take place in the 
    PerceptionState. The only issue is if we should copy the column by value or by 
    reference? The only flaw that can happen with references is when the description 
    of an Entity is modified after the Stimulus is send. When the Stimulus will be 
    received, it will contain the new value and not the old one. But this is not 
    really a problem. On the other hand references avoid the creation of lots of Java
    objects and this is a rather great advantage. That is why we decided that Stimuli 
    will contain references on a column.</para>
  </sect2>
</sect1>

<sect1>
<title>How to</title>
  <para>This section intends to show how the perceptions system defined in previous
  sections can be used in unusual cases. It concerns cases which can't appear in
  the real world and which are created particularly be magical effects.</para>

  <itemizedlist>
     <listitem>
       <para>How to do an ambient Stimulus?</para>
       <para>You only have to put the Place as Stimulus source.</para>
     </listitem>

     <listitem>
       <para>How to do an unlocated Stimulus?</para>
       <para>For example, we would emit a Stimulus from the town A when being in the town B.
       The sender Entity only have to register to the StimuliDispatcher linked to B,
       to send its Stimulus and to unregister.</para>
     </listitem>

     <listitem>
       <para>How to ventriloquate?</para>
       <para>You only have to send a sound Stimulus specifying that source is the receiver
       and not the real sender.</para>
     </listitem>

     <listitem>
       <para>How to do a worldwide Stimulus?</para>
       <para>You only have to relay a ambient Stimulus to all StimuliDispatcher.</para>
     </listitem>

     <listitem>
       <para>How to modify by illusion the appearance of an Entity?</para>
       <para>For example, how to give a gold bar appearance to a lead bar or to give a mouse
       appearance to an elephant.</para>
       <para>For it, the target Entity should emit a Stimulus
       which doesn't correspond to its real internal state (the lead bar has still
       the same weight and not the gold bar one). For instance, assume a lead bar emits the
       following visual stimulus:

       <blockquote><para><screen>
       identity Entity: EntityID (Raoul)
       color: grey
       </screen></para></blockquote>
 
       Cast an illusion spell and the lead bar will look like:

       <blockquote><para><screen>
       identity Entity: EntityID (Raoul)
       color: gold
       </screen></para></blockquote>
     </listitem>
   </itemizedlist>
</sect1>

<sect1>
<title>Definitions and summary</title>

  <glosslist>
    <glossentry id="stimulus"><glossterm>Stimulus</glossterm>
      <glossdef>
      <itemizedlist>
        <listitem><para>a source Entity</para></listitem>
        <listitem><para>an intrinsic intensity</para></listitem>
        <listitem><para>a Medium</para></listitem>
        <listitem><para>an action if need be</para></listitem>
        <listitem><para>some attributes to describe the source or the action</para></listitem>
      </itemizedlist>
      </glossdef>
    </glossentry>

    <glossentry id="stimuli"><glossterm>Stimuli</glossterm>
      <glossdef>
      <para>Stimuli = Action Stimuli + Description Stimuli</para>
      </glossdef>
    </glossentry>

    <glossentry id="sense"><glossterm>Sense</glossterm>
      <glossdef>
      <itemizedlist>
        <listitem><para>a medium</para></listitem>
        <listitem><para>a sensibility (power)</para></listitem>
        <listitem><para>a dazzle control</para></listitem>
        <listitem><para>a memory of the last received Stimuli</para></listitem>
      </itemizedlist>
      </glossdef>
    </glossentry>

    <glossentry id="stimulidispatcher"><glossterm>StimuliDispatcher</glossterm>
      <glossdef>
      <para>A StimuliDispatcher is an intermediary between Entities emitting
      Stimuli and Entities receiving them. There is a StimuliDispatcher associated
      to each Place.</para>
      <!-- duplicated def - don't know how to do it properly -->
      <itemizedlist>
        <listitem><para>a set of source Entities.</para></listitem>
        <listitem><para>a set of receiving Senses per different Medium.</para></listitem>
      </itemizedlist>
      </glossdef>
    </glossentry>

    <glossentry id="lowleveldescription"><glossterm>LowLevelDescription</glossterm>
      <glossdef>
       <para>Table containing all the necessary info to build a description of an Entity
       (description properties with intensity, for each Medium)</para>
      </glossdef>
    </glossentry>
  </glosslist>

  <para>New commands:
    <itemizedlist>
      <listitem><para>focus: allows to focus on particular stimuli</para></listitem>
    </itemizedlist>
  </para>
</article>