<!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>Entity-RFC</title> <corpauthor>&author;</corpauthor> <revhistory> <revision> <revnumber>M1</revnumber> <date>July 15th, 2001</date> <revremark>Added material on Entity creation and Influences, editor use cases, docbook conversion, misc corrections and synchronization with other RFCs</revremark> </revision> <revision> <revnumber>0.5</revnumber> <date>November, 28th 2000</date> <authorinitials>Entropizer</authorinitials> <revremark>Small corrections and clarifications</revremark> </revision> <revision> <revnumber>0.4</revnumber> <date>November, 6th 2000</date> <authorinitials>Entropizer</authorinitials> <revremark>Rework of the whole document: removed Characterization Levels and Characterization Pools, added Influences and Types, reworked Definitions, several fixes</revremark> </revision> <revision> <revnumber>0.3</revnumber> <date>February, 29th 2000</date> <authorinitials>Entropizer</authorinitials> <revremark>More examples, included elements from discussion on the mailing list, changed Strength into Power</revremark> </revision> <revision> <revnumber>0.2</revnumber> <date>February, 21th 2000</date> <authorinitials>Entropizer</authorinitials> <revremark>"Presidents' Day release" First SGML version, corrections and expansions</revremark> </revision> <revision> <revnumber>0.1</revnumber> <date>January, 2000</date> <authorinitials>Entropizer</authorinitials> <revremark>First version</revremark> </revision> </revhistory> <abstract> <simpara>This document is meant to gather information on what an entity will be. It is based on a former RFC named Population RFC. It casts a new look on this former proposal and expands several aspects of it so as to create a consistent and dedicated RFC that solely deals with what is an Entity.</simpara> </abstract> </articleinfo> &license; &project; <sect1> <title>Definitions</title> <sect2> <title>Entity</title> <para>Entity is the basic concept of Metacosm game engine. It is therefore extremely important to clearly identify what makes an Entity.</para> <glosslist> <glossentry id="entity"> <glossterm>Entity</glossterm> <glossdef> <para>An Entity is an element of the framework that can be manipulated or interacted with during a game session.</para> </glossdef> </glossentry> <glossentry id="entities"><glossterm>Entities</glossterm> <glossdef> <para>Entities = Places + Creatures + Items</para> <glossseealso><glossterm>Place</glossterm><glossterm>Creature</glossterm><glossterm>Item</glossterm></glossseealso> </glossdef> </glossentry> </glosslist> <para>Therefore, since Metacosm goals include a high-playability and interactivity, almost anything in the game (Items, Creatures, Places...) is to be implemented as an Entity.</para> </sect2> <sect2> <title>Properties</title> <para>Cf Property-RFC</para> </sect2> <sect2> <title>Characteristics</title> <glosslist> <glossentry id="characteristic"> <glossterm>Characteristic</glossterm> <glossdef> <para>Characteristics describe an Entity from an objective point of view. They gather parameters that can be manipulated via a set of rules. Characteristics represent the core of the information manipulated by the framework when a world is simulated in Metacosm. Characteristic is a generic term for Description, Identity, Attributes, Capabilities and Skills.</para> </glossdef> </glossentry> </glosslist> <para>For more details, see the <link linkend="characteristics">Characteristics section</link>.</para> </sect2> <sect2> <title>Attributes</title> <glosslist> <glossentry id="attribute"> <glossterm>Attribute</glossterm> <glossdef> <para>Attributes define the inherent qualities of an entity. They describe Entities using Properties thus providing an objective description of an Entity. Attributes are basic descriptive elements of Entities. This description is not targeted at Players but at the simulation engine.</para> </glossdef> </glossentry> </glosslist> <para>For more details, see the <link linkend="attributes">Attributes section</link>.</para> </sect2> <sect2> <title>Capabilities</title> <glosslist> <glossentry id="capability"> <glossterm>Capability</glossterm> <glossdef> <para>Capabilities are derived Attributes. Capabilities are Properties that are calculated instead of being fixed and then modified. They are based on combinations of Attributes. They reflect an Entity's natural ability to perform certain types of actions, regardless of skills.</para> </glossdef> </glossentry> </glosslist> <para>Implementation: a list of couples (coefficient, Property/Capability name)</para> <para>For more details, see the <link linkend="capabilities">Capabilities section</link>.</para> </sect2> <sect2> <title>Community</title> <glosslist> <glossentry id="community"> <glossterm>Community</glossterm> <glossdef> <para>Community is an abstract concept introduced to talk about a group of Entities. The word "community" is to be interpreted in a very general, abstract way since it doesn't imply anything else on member Entities than commonality between them.</para </glossdef> </glossentry> </glosslist> <para>An Entity is part of a given Community if it is influenced by the Influence defining the Community i.e. the Community exists only as long as several Entities are influenced by the same Influence. If an Entity isn't influenced anymore by a given Influence, it leaves the Community. Communities are implicit and only defined by the Influence. An Entity can be part of several different Communities.</para> </sect2> <sect2> <title>Influence</title> <glosslist> <glossentry id="influence"> <glossterm>Influence</glossterm> <glossdef> <para>An Influence defines a Community of similar Entities and how being part this Community "influences" Entities that belongs to it. An Influence gathers Characteristics and other game constructs that are common to the Community of Entities it defines, thus modifying Entities it influences. We use the term "influenced" when referring to game constructs that are modified ("influenced") by Influences and "influenceable" for game constructs that can be "influenced".</para> </glossdef> </glossentry> </glosslist> <para>For more details, see the <link linkend="influences">Influences section</link>.</para> </sect2> <sect2> <title>Type</title> <glosslist> <glossentry id="type"> <glossterm>Type</glossterm> <glossdef> <para>A Type is a special kind of Influence. It is an Influence in the sense that it gathers Characteristics and modify Entities. It differs from simple Influences by its focus. While simple Influences modify already created Entities, the purpose of Type is to create new Entities.</para> </glossdef> </glossentry> </glosslist> </sect2> </sect1> <sect1 id="influences"> <title>Influences</title> <para>Communities share common knowledge and/or common characteristics. As far as Metacosm is concerned, this can be modelled by an Influence that gathers the common knowledge and expresses the common characteristics in terms of game constructs (Characteristics, Actions, descriptions, etc). Characteristics define the essence of the Entity. These can be very different from an Entity to another in their number, type or value. What makes an Entity different from another is the set of Influences that "influence" its Characteristics. The way that Entities are influenced greatly vary from an Entity to another depending on the number or type of Influences that act on it.</para> <para>As defined above, Influences define a Community of Entities that are influenced in a similar way. An Influence gathers everything that makes the Entities that it influences special and distinguish them from members of other influenced Communities. It is worth noting that an Entity can belong to several influenced Communities (for cumulative effect) and that influenced Communities can overlap or coincide.</para> <para>An Influence can modify an Entity in the following ways:</para> <itemizedlist> <listitem> <para>A numerical or text Property may be set to the value of an expression containing constant values, other Properties, standard operators (+, -, *, /, % modulo, statistical functions, string equality, search, replace...). Typical use include absolute modifier (new value does not depends on current value) and relative modifier (new value is a function of the current value).</para> <para>If the expression result is outside the field of acceptable values, the <emphasis>closest</emphasis> acceptable values is used.</para> </listitem> <listitem> <para>The field of numerical Properties may be scaled by a real factor or translated by a real value.</para> </listitem> <listitem> <para>A new Property may be defined. Initial field and value could be provided. Note that they can be derived from existing Properties through the use of expression.</para> </listitem> <listitem> <para>The value of an existing Property can be changed: the description of the change is stored in a structure called a PropertyModifier. If the new value depends on the current one, the modifier is said to be Relative. If the new value is independent of the current one, the modifier is said to be Absolute.</para> <para>At any time, the effective value of a Property is defined by the Absolute Modifier of greatest priority and all Relative Modifier which priority are larger than the Absolute Modifier Priority. Relative modifier are applied ordered be priorities, lower priorities first.</para> </listitem> <listitem> <para>New Actions can be added to the list of ones potentially performed by the entity.</para> </listitem> <listitem> <para>The handling of Actions can be modified. Cf Interactions-RFC.</para> </listitem> <listitem> <para>An Access to a shared 'community' memory can be provided.</para> </listitem> <listitem> <para>The description of the Entity can be changed or completed.</para> </listitem> </itemizedlist> <para>Influence Actions on Entity obeys to a rule of priority: the list of Influences acting on an Entity can be seen as a set, the Influences with greater priority apply.</para> <para>For the sake of understanding, Influence are classified by "theme": for example, Type/Species, Geography, Activity/Job, Individual experience. This classification will become a whole (forest (i.e. several trees) like) hierarchy later when it's needed.</para> <para>At Entity creation time, some parameters will be choosen randomly and stored in the Entity instance. All other data used to compute Properties values will be extracted from Influences instances.</para> <para>An Influence may only be applied on an Entity respecting a set of constraints (set of preexisting Influence or Properties, some Properties values must belong to some defined field...). See Predicate-RFC, to see how these constraints are expressed.</para> <example> <title>Midgaard inhabitants</title> <para>The inhabitants of Midgaard know the city better than the average tourist and can therefore more easily find their way. They might also know that Raoul is the baker that lives in the northern part of Midgaard. They might be particularly resistant to the locally brewed beer making it difficult for wannabe adventurers to get them drunk in order to get information... and so on.</para> </example> <example> <title>King Solomon's palace</title> <para>King Solomon's palace rooms all share a particular architecture and design. They are all influenced by the same Influence, they are all part of the same Community. Moreover, among these rooms, King Solomon has had some of them decorated in yellow using only a particular kind of fabric so as to create a "Yellow Suite" Community inside the King Solomon's palace rooms Community, each of these Communities being influenced differently.</para> </example> <para>We think that this concept brings flexibility in Entity management.</para> <para>We next distinguish between required and optional Influences. Required Influences are Influences without which an Entity cannot exist. They are at the base of all Entities. There are currently two required Influences. Optional Influences are limited by game designers' imagination only.</para> <sect2> <title>Required Influences</title> <sect3> <title>Common Influence</title> <para>The Common Influence defines what is is shared by <emphasis>all</emphasis> Entities. This is the minimum required from a game object to be recognized as an Entity. The Common Influence defines a set of Attributes that are common to all Entities or to put it differently, all Entities are part of the Common Community. At the implementation level, it also defines a standard interface to interact with an Entity regardless of its implementation.</para> <para>There should be exactly one Common Influence per instance. That Common Influence will specify the attributes of all Entities in the world of this instance and will be world- and rule-specific. More precisely, if you want to create a Shadowrun-based world, the Common Influence will describe everything that is common to all players in a Shadowrun game (all the attributes). If you play in DnD-based world, the Common Influence will be totally different. [Shadowrun is a Fasa Corporation trademark and DnD is a TSR trademark]. What this means is that the Common Influence kinda describes a character sheet for a traditional RPG. Each RPG has its specific character sheet (referred to as CS thereafter) which is then filled up according to this RPG's rules. Now, how these CS are filled up is depending on the type of character in traditional RPG. It's also true for Items or Places.</para> <para>How the CS is filled in Metacosm is determined by the Entity Type. The Type is also an Entity. More precisely, the Type IS the typical Entity of this Type, it perfectly describes the average Entity of this Type. (i.e. the Type is an Entity which Type is itself). To create a new Entity of this Type, the Type is cloned and then its attributes and parameters are randomized according to this Type distribution laws (or otherwise: simulation of number of dices, fixed, etc) and influenced by the creation location (Place) of the Entity. This makes for a pretty simple and powerful system.</para> <para>An Entity is affected once and only once by a Common Influence.</para> </sect3> <sect3> <title>Type</title> <para>Types are a special kind of Influence. Entities are created by Types which initialize the Characteristics defined by the Common Influence and add new ones when needed. A Type can reference several different other Influences that are "applied" to an Entity at creation time.</para> <para>An Entity is affected once and only once by a Type Influence.</para> <!-- RUFFY TODO Conflict with Character-RFC I think there is a conflict with Character-RFC, which says Character is an Entity which Type is Character... (you couldn't play an Elf, you just could play a Character...) --> </sect3> </sect2> <sect2> <title>Optional Influences</title> <para>Optional Influences are gathered by levels. Each level of Influence represents a particular kind of Influence. We present a list of possible Influence levels here. This list is not necessarily exhaustive.</para> <para>An Entity can only be affected once by a given Influence. It can be affected by as many as it wants/needs different Influences.</para> <sect3> <title>Geography</title> <para>This level gather Influences that modify all Entities found in a given area. There should be rules to establish how geography can influence Entities. We can identify two different modalities for Geography Influences: static or dynamic.</para> <para>The static modality determines the Entity's parameters at creation time. Static Influence will be handled by Types since Types have the responsibility for creating Entities.</para> <para>Geography can also influence the development of an Entity after its creation. When an Entity able to evolve is put in a given environment, it will slowly adapt itself to the conditions of that environment so as to optimize its probability of survival.</para> <para>Every Entity can potentially be influenced by its location at creation time (static Influence). However, only those Entities that can evolve can be dynamically influenced by their environment.</para> <example> <title>Static influence</title> <para>The composition of the area in which a rock is created, influences the very essence of this rock. Similarly, someone born in a rather cold environment would be more prone to better resist cold...</para> </example> <example> <title>Dynamic influence:</title> <para>Once upon a time, short-haired rabbits were dominant. But now, these days are over since the planet's inclination has changed slightly, hardening the climate and bringing in cold and ice. Rabbits with longer hair are now more able to resist the low temperatures and the rabbit population slowly evolves to grow longer hair...</para> </example> </sect3> <sect3> <title>Individual </title> <para>As for geography, an Entity can be affected both statically and dynamically at the individual level. When an Entity is created (static modality), it is created with "unique" Characteristics. Exactly how unique those Characteristics are is irrelevant here. It could however happen that two distinct Entity (with different identities, see "Characteristics" for a discussion of identity) have the same Characteristics (twins). If these two are unable to evolve, they will forever be exactly similar. However, if they are able to evolve, they will go through their life experiencing different things and will be dynamically influenced by their deeds and/or their environment at the Individual level. Even though most of the way how an Entity will evolve will be defined by its Type or at the Community level, individual variations can occur. This is of crucial importance for Characters.</para> <example> <title>Non exhaustive list</title> <para>Diseases, injures, maledictions, benedictions, spells, drugs, magic items, inventory/possessions (weight, volume of possessions, blindfold, etc)</para> </example> </sect3> </sect2> <sect2> <title>Examples</title> <para>Note that this examples are not necessarily representative of an actual implementation.</para> <example> <title>Elektra's wand</title> <para>Glass is a fragile matter so a wand made out of glass is rather fragile (-3 in endurance, Type level). However, Elektra, Mistress of illusions, had her glass wand created with a specific process and worked on the glass composition to make it more resistant (+2 in endurance, Individual level).</para> <itemizedlist> <listitem><para>Type level: made of glass (endurance -3)</para></listitem> <listitem><para>Individual level: special creation process (endurance +2)</para></listitem> <listitem><para>Result: endurance -1 (-3+2)</para></listitem> </itemizedlist> </example> <example> <title>Earendil the Elf</title> <para>Earendil is an elf so he is less strong than an average human by heredity (-1 in power, Type level). However, he is a member of a rare elf cast who are stronger than average elves (+1 in power, Community level).</para> <itemizedlist> <listitem><para>Type level: elf (power -1)</para></listitem> <listitem><para>Community level: member of a stronger elfin cast (power +1)</para></listitem> <listitem><para>Result: power +0 (-1+1)</para></listitem> </itemizedlist> </example> <example> <title>Adamant</title> <para>Adamant is Hercules' son. He has thus inherited the physical power of his father (power +5, Individual level). However, he has been cursed by Hera and he's bound to live under the sea which reduces his ability to affect other entities (power -3, Geography level). Moreover, he is suffering from a cold decreasing momentarily his power (power -1, Individual level).</para> <itemizedlist> <listitem><para>Individual level: son of Hercules (power +5)</para></listitem> <listitem><para>Geographical level: lives undersea (power -3)</para></listitem> <listitem><para>Individual level: sick (power -1)</para></listitem> <listitem><para>Result: power +1 (+5-3-1)</para></listitem> </itemizedlist> </example> </sect2> </sect1> <sect1 id="characteristics"> <title>Characteristics</title> <sect2> <title>Identity</title> <para>One of the framework goals is improved realism. To ensure world coherence, each creature needs to be identified so that each of its modification could be made permanent. For instance, if a Player gives an Item to a Creature, this one will still be in possession of this Item at their next meeting.</para> <para>Identity cannot be "influenced". We distinguish two different aspects of Identity: internal and external. Internal Identity will be used by game mechanisms to allow world coherence, correct persistence of Entities, efficient identification of an Entity, etc. External identity will be manipulated by Entities themselves. External identity includes name, title, nicknames, etc.</para> </sect2> <sect2> <title>Description</title> <para>Cf Perceptions-RFC</para> <sect2 id="attributes"> <title>Attributes</title> <para>Attributes provide the basic objective description of an Entity. Attributes are the target for Influences actions. We will focus here almost exclusively on what is common to all Entities and let the details of specifying other Attributes to other, more appropriate documents.</para> <sect3> <title>Common Attributes</title> <para>The Common Influence defines the set of Attributes that all Entities, regardless of their Type, share with others. Most of the Interactions between Entities should be resolved at the Common level for implementation purposes. Game designers need to be careful in their identification and description. Attributes should make sense regardless of the Entity Type. However, if an Attribute doesn't make sense for an Entity, then this Attribute will just be null for this particular kind of Entities.</para> <para>Agreeing on the set of Attributes provided by the Common influence is really important and game designers should try to make sure that it will not change since most of interactions will rely on those sole Attributes. Some interactions could call more specific Attributes but they should be careful in that matter and try to rely only on the most common basis. Next, we propose a set of possible Attributes.</para> <!-- RUFFY TODO Endurance, Power and Co should be transfered into a Basic-Instance-RFC --> <sect4> <title>Endurance</title> <glosslist> <glossentry id="endurance"> <glossterm>Endurance</glossterm> <glossdef> <para>Endurance represents an Entity's resistance to outside forces. The greater the endurance, the better an Entity will resist to anything that can affect its physical state. For a living creature, changes in physical state involve injuries, fatigue or illness. For an inert Entity, its endurance represents its solidity (an Item with a high endurance will be harder to break), its resistance to external elements (rain, acid, fire...).</para> <para>From Merriam-Webster dictionary: Ability to withstand hardship or adversity; especially: the ability to sustain a prolonged stressful effort or activity.</para> </glossdef> </glossentry> </glosslist> <example> <title>Raoul the baker</title> <para>Raoul the baker is no athlete but he has to work hard everyday in the bakery, moving flour bags, working on the dough in hot environment so he has a slightly higher endurance an average human's.</para> </example> <example> <title>A cave</title> <para>A cave in a granite cliff has a high endurance since it is very difficult to modify its size (it involves a lot of effort to cave it even more...).</para> </example> <para>An interesting idea could be to define a more complex endurance that will define distinct endurance for different elements (fire, water, earth, air).</para> </sect4> <sect4> <title>Power</title> <glosslist> <glossentry id="power"> <glossterm>Power</glossterm> <glossdef> <para>Power represents an Entity's power to physically interact with other Entities. Basically, power represents what is physically acting in the essence of an Entity. It is against what endurance of an Entity has to resist when two Entities are in opposing physical interaction. For a living creature, power represents its physical power, its strength, just how strong it is. For an inert Entity, power represent how potent it is in modifying other Entities physical structure.</para> <para>From Merriam-Webster dictionary: Ability to act or produce an effect.</para> </glossdef> </glossentry> </glosslist> <example> <title>Behemoth</title> <para>Behemoth is an impressive Minotaur with muscles therefore, Behemoth will have a high power.</para> </example> <example> <title>A sharp sword</title> <para>A sharp sword will have a higher power attribute than a staff since it has a higher ability to damage other Entities. Similarly, an acid can have a power just as can a perfume.</para> </example> </sect4> <sect4> <title>Coordination</title> <glosslist> <glossentry id="coordination"> <glossterm>Coordination</glossterm> <glossdef> <para>Coordination represents an Entity's capacity to act efficiently and harmoniously. For a living creature, coordination represents its agility, its suppleness. It represents just how efficiently it is able to move or perform complex moves. For an inert Entity, coordination represents how well it is built or how well its part fits together. Obviously, a one-part Item will have a null coordination. Only Entities with a specific coordination level would be able to react appropriately to orders given by Controllers. Coordination will be used when Item are animated by spells and affect what the Item can do once animated.</para> <para>From Merriam-Webster dictionary: Harmonious functioning of parts for effective results.</para> </glossdef> </glossentry> </glosslist> <example> <title>Shankra the Yogi</title> <para>Shankra the Yogi has spent years and years to gain perfect control of his body. He is therefore likely to have a high coordination. On the contrary, Bert (a well known couch potato) hasn't exercized much since he bought a TV set, so odds are that he won't have a good coordination attribute.</para> </example> <example> <title>An armor</title> <para>The coordination of an armor will reflect how well it fits Entities that wear it. The coordination of a car is how smooth it will drive and handle the road.</para> </example> </sect4> <sect4> <title>Charisma</title> <glosslist> <glossentry id="charisma"> <glossterm>Charisma</glossterm> <glossdef> <para>Charisma represents how an Entity appears to others. the charisma of an Entity is not merely based on its appearance but reflects the capacity that an Entity has to attract positive reactions. For a living creature, charisma represents all that makes the Entity appealing: its beauty, its charm, its animal magic. The same applies also for inert Entities for which charisma can be considered as the way they can appeal to other Entities even when they aren't good looking. The charisma attribute of an Item can be thought as its potential artistic value and as something that will influence its commercial value. Characters will feel more comfortable with Entities with high charisma whereas they could feel that something is wrong with an Entity that has a low charisma. Spells can influence the charisma of Item (curse, "beautifiers"...).</para> <para>From Merriam-Webster dictionary: A special magnetic charm or appeal.</para> </glossdef> </glossentry> </glosslist> <example> <title>Raoul the baker</title> <para>Raoul the baker is a rather solitary person that is more comfortable dealing with flour and making breads than conversing with people that find him a little strange, he obviously doesn't have a good charisma.</para> </example> <example> <title>A special necklace</title> <para>The necklace in Philip K. Dick's novel The Man in the High Castle has obviously an intrinsic charm that is not only quantified by its appearance: it appeals to people, they feel comfortable when holding it, it has a high charisma. A well decorated room with good selected furniture and lights makes people feel comfortable when they stay in that room that seems to have a good charisma. An Item that has obviously a very high charisma is the Unique Ring created by Sauron in Tolkien's Lord of the Rings.</para> </example> </sect4> <sect4> <title>Intelligence</title> <glosslist> <glossentry id="intelligence"> <glossterm>Intelligence</glossterm> <glossdef> <para>Intelligence represents an Entity's ability to take into account its surroundings and react to it in a sensible way, capacity to solve problems. The intelligence concept is pretty obvious for living creatures. It is a little bit more complex for inert Entities. Obviously, common Items will have a null intelligence. However, technology or magic can make Items more able to handle their surrounding effectively given them a kind of intelligence.</para> <para>From Merriam-Webster dictionary: Ability to learn or understand or to deal with new or trying situations.</para> </glossdef> </glossentry> </glosslist> <example> <title>Merlin the Sorcerer</title> <para>Merlin the great Sorcerer is very smart and that is lucky since he has to handle powerful magic energies. He should have a high intelligence attribute.</para> </example> <example> <title>Java-enhanced appliances</title> <para>Java-enhanced appliances are smarter than ones without any kind of program.</para> </example> </sect4> <sect4> <title>Will</title> <glosslist> <glossentry id="will"> <glossterm>Will</glossterm> <glossdef> <para>Will represents an Entity's self-control and power of sticking to its goal. For a living creature, will represents its strength of mind, the way it resists to adverse circumstances, seduction or mental manipulation. It is, once again, more complex for inert Entities. We can consider that an Item will is its inertia, its resistance to resist manipulation. It seems close to endurance but an Item's will is more oriented toward tricks (spells or playing with a mechanism for appropriate Items). Endurance deals more with resistance to destruction.</para> <para>From Merriam-Webster dictionary: The power of control over one's own actions or emotions.</para> </glossdef> </glossentry> </glosslist> <example> <title>Frodo the Hobbit</title> <para>Frodo, Bilbo's nephew, has a strong will since he was able to go through all the obstacles he encountered on his quest to destroy the Unique Ring. He was also quite strong in resisting the incredible urge to wearing it.</para> </example> <example> <title>A dwarven lock</title> <para>A dwarven lock is really hard to pick. We can therefore consider that it has a strong will. Moreover, it has a strong endurance too so that it can resist less subtle attempts to open the door it is guarding.</para> </example> </sect4> <sect4> <title>Magic</title> <glosslist> <glossentry id="magic"> <glossterm>Magic</glossterm> <glossdef> <para>Magic represents an Entity's "understanding" of magical energies and capacity to control them. Magic is similar for both inert Entities and living creatures. This attribute represents just how good a medium an Entity is for magical energies. It represents the magical intensity that an Entity can put in spells or in resisting magic. An Entity with a null Magic attribute is consider as magically inactive. See the (yet to come) Magic-RFC for more information.</para> <para>From Merriam-Webster dictionary: The use of means (as charms or spells) believed to have supernatural power over natural forces. (Note that this definition is slightly different from the one given here only as a reference.)</para> </glossdef> </glossentry> </glosslist> <example> <title>Merlin the Sorcerer</title> <para>Merlin the great Sorcerer has a high control on magical energies. He should therefore have a pretty high Magic attribute.</para> </example> <example> <title>Orichalchum</title> <para>Orichalchum is well known to have magical properties and is very sought after by mages desiring to put its magical power to work. It is likely that Items made out of Orichalchum will have high magic attributes.</para> </example> </sect4> <sect4> <title>Essence</title> <glosslist> <glossentry id="essence"> <glossterm>Essence</glossterm> <glossdef> <para>Essence represents an Entity's life energy or inherent magical energy. Essence is what separates inert Entities from living creatures. Inert entities have a null essence attribute whereas it is positive for living creatures. When a living creature loses essence to the point of having a null essence attribute, it becomes an inert Entity with different effects depending on what caused the loss of essence. It can mean death, reification (transformation into an Item as an example due to over-cybernetization), destruction of the Entity, transformation into a living-dead, etc. Essence is the most important attribute for living creatures since processes such as aging, diseases, poisoning, etc. can be modelled via the variation of this attribute. The life cycle can can also be simulated via this attribute by ensuring that constantly decreases, thus forcing living creatures to eat to regenerate their essence by getting a sufficient amount of essence back from the food they eat.</para> <para>From Merriam-Webster dictionary: The individual, real, or ultimate nature of a thing especially as opposed to its existence</para> </glossdef> </glossentry> </glosslist> <example> <title>Earendil the Elf</title> <para>Earendil has been injured by Azaroth, his mortal enemy. He is bleeding pretty badly increasing the rate of his natural essence lost. Borg has just gone through surgery to add this last piece of equipment that he needed so bad to make him (it?) a full cyborg. He (it?) is now detached from the need of flesh and his essence attribute is now null.</para> <para>Food provides an essence amount equals to their essence attribute minus possibly essence lost during food processing.</para> </example> </sect4> </sect3> <sect3> <title>Type attributes</title> <para>Each Type defines a law (such as 3D6+2) to initialize each Common Attribute.</para> </sect3> <sect3> <title>Other influenced attributes</title> <para>Optional Influences cannot introduce new Attributes. They may however apply modifiers and/or constraints to them so that they customize an Entity to reflect how its profession or environment affects it. They will also most likely introduce Capabilities.</para> </sect3> </sect2> <sect2 id="capabilities"> <title>Capabilities</title> <para>Capabilities are derived Attributes (probably affine functions of Attributes). Since they are based on Attributes, they evolve as these do. They reflect the inherent capabilities of an Entity at each moment (i.e there are calcuted dynamically). An Entity cannot learn a Capability since it is a natural ability. It should be possible to dynamically add Capabilities to an Entity at runtime. Capabilities can be considered as higher-level statistics for an Entity. As other Characteristics, Capabilities can be influenced.</para> <!-- RUFFY Skills are specific to the instance. We could imagine an instance without Skills This is one of the differences between Capability and Skills (Skills are detailed in Character RFC). However, certain Capabilities can improve by practice or can be combined with Skills to be most efficient. --> <sect3> <title>Common capabilities</title> <para></para> <!-- JANSEL This is an assumption. An instance may need a capability in the common Influence. We cannot be sure about it. Moreover, what is the problem for having capabilities in the Common Influence ? I think there is none. So why make a special case for capabilities ? <para>We don't think that any Capability should be made available by the Common Influence. Capabilities are more Type-specific than Attributes. Capabilities can be introduced by Types but not by the Common Influence.</para> --> </sect3> <sect3> <title>Type capabilities</title> <para>Types are the priviledged place to add new Capabilities to Entities. Possibilities for Capabilities are almost endless so we won't try to define all of them. Moreover, Capabilities are highly Type-dependent. We will rather give a couple of examples to demonstrate what a Capability could look like.</para> <example> <title>Capabilities for Characters</title> <itemizedlist> <listitem><para>combat: (intelligence + will + coordination) / 2</para></listitem> <listitem><para>reaction: (intelligence + coordination) / 2</para></listitem> <listitem><para>spell-casting: (intelligence + will + magic) / 3</para></listitem> <listitem><para>memory: (intelligence + will)</para></listitem> <listitem><para>running: (endurance + coordination)</para></listitem> <listitem><para>...</para></listitem> </itemizedlist> </example> <para>If a Capability is calculated with Properties or Capabilities enclosed in intervals, this Capability is also enclosed in a field (calculated with others intervals). This is just a default field. It's also possible to fix it to other values.</para> </sect3> <sect3> <title>Other influenced capabilities</title> <para>Even if most Capabilities will be introduced by Types, it is possible that other Influences will introduce new Capabilities. It is more likely that other Influences will act as modifiers on already defined Capabilities to increase or decrease inherent Capabilities according to the training an Entity had received via its profession or adaptation to its environment. It should therefore be possible for an Influence to re-define the way Capabilities introduced by other Influences are calculated.</para> </sect3> </sect2> </sect1> <sect1> <title>Making it work</title> <sect2> <title>Creating Entities</title> <para>Entity creation can happen in two circonstances: during game design within the Entity Editor and during the actual gameplay (character, animal, plant birth, Item production, building construction, etc.).</para> <para>For the game engine, the entity creation process will always look the same. Obviously at the design stage all parameters will be free of constraints, unlike during gameplay. We will describe examples for Items, Characters and Places in these two cases.</para> <sect3> <title>Entity creation in the Editor</title> <para>The editor will allow to create an Entity from scratch or according to a template. Note that a Template is an editor concept and Type is a game framework concept. The template concept can contain more information than what defines a Type (think clothing, initial inventory, the way the name of the NPC is computed). Here the interest is on the entity framework, so we will do everything from scratch.</para> <example> <title>Some food</title> <para>We want to create an Item of type "Food". We go to Entity Creation. Select a name "Magic Mushroom". Choose a type in a tree. Select Food in the Item branch. No subtype. Two forms appear: one for the Property defined by "Item", which are exactly the ones of the Common Influence, shared by all Entities. It leaves all of them to default. The second form allows me to choose the value of the energy contained in the Item. It is the single Property defined by the subtype "Food". Type, name and field of the Property are defined by the subtype and I cannot change them at all. I change the default value and give a larger one. I come back to the first form, and choose generate. The form closes and another opens up. The Entity has been created: I see that the entity I just created with the name and the Property value I just created has been given an EntityID.</para> <para>But the Entity still does not belong to the game because it does not exist anywhere. Then I choose the original location of the entity: I choose a place, and a position inside this place.</para> </example> <example> <title>A weapon</title> <para>I want to create a weapon. I am back in the Entity Creation dialog. The name I choose for it is "kitchen knife". The Type will be Item, weapon, blade. Weapon and blade are basic Influences, not subtypes: They do not define any new Properties. I choose the values of the standard Item Attributes so that the kitchen knife will be a bad quality weapon. And then I confirm, The Entity is generated and I read its Entity ID. I want to use this Item as decoration in a vampire's castle. So I change its charisma to a very low level. And I influence it with "Blood". In fact this is a subtype which defines the "bloody" Property. I leave the default value for "bloody". The fact that the knife is bloody and cursed will be automatically added to the blade description.</para> </example> <example> <title>A Character</title> <para>I want to create a Character I would like to create peasants for my middle age area. I will need quite a number of them, so I will start by defining a template in the editor and then derive(clone) identities from it. I open the template creation dialog. I name it "MyPeasants". The type will be Creature, Character, Civilian, Farmer. Civilian and Farmer do not define any Properties, they exist solely to define the community of civilians and farmers. Then I have to define the default inventory of these Characters, which must contains their clothes, tools, and gold. Money is defined by choosing an amount. All other Items in the inventory are created by cloning existing Items or template.</para> </example> </sect3> <sect3> <title>Entity creation inside the game</title> <para>All sorts of events can lead to Entity creation in the game: <itemizedlist> <listitem><para>Character, god, animal reproduction (individual outside Populations) creates new Characters</para></listitem> <listitem><para>Many actions can change an entity into a new one. For example, death has for consequences the creation of a dead body. The baker uses wood, water, salt and flour to bake bread. A craftsman uses wood and metal to create Items.</para></listitem> <listitem><para>Building cities, roads, and houses leads to the creation of new places</para></listitem> </itemizedlist> </para> <!-- HORUS We need to maintain a complete list of cases somewhere. Why not here ? --> <para>These new entities are influenced by the context in which they were created. For example newborns will be influenced by their genetic heritage (depending on their parents' properties at the time), the place they were born, their zodiacal sign... These influence are not essential and will not define any new Properties by themselves. The action responsible for the creation of the entity will have complete control on how these influences are taken into account. It is possible to get rid of all of them.</para> <example> <title>A birth</title> <para>Birth of a child in a sorcerer guild. By default the type of the new character is choosen among the type of the parents. The new entity be influenced by:</para> <itemizedlist> <listitem><para>the Common influence</para></listitem> <listitem><para>the character influence, and all influence in the branch which leads to its individual type</para></listitem> <listitem><para>an influence corresponding to his/her gender</para></listitem> <listitem><para>an influence corresponding to his family (facultative)</para></listitem> <listitem><para>an influence corresponding to his birth place (facultative)</para></listitem> <listitem><para>an influence corresponding to his zodical sign (..)</para></listitem> </itemizedlist> </example> <!-- HORUS TODO Explain the need to define individual influences and not only modify the attribute of the newborn entity--> </sect3> </sect2> <!-- RUFFY CL are obsolete, so this paragraph is not uptodate <sect2> <title>Influencing Entities</title> <para>Required levels are those that modify the Entity more radically. Required levels gather Properties that define the essence of an Entity and are required to be present at the time of the Entity creation even though they are susceptible to evolve as time passes by. Only required levels can add or suppress Properties to an Entity. Required Cls consist principally in defining new Properties. Modifiers of pre-existing Properties are also allowed. Optional levels are, on the other hand, not required to modify the Entity at creation time. Moreover, they consist in modifiers to pre-existing Properties. It is important to note that they can only alter Properties that have been defined by the required levels and can NOT create, add or suppress Properties. They can only alter the field of the pre-existing Properties or modify their value (with or without changing the field accordingly).</para> <para>We mentioned earlier that CLs act in a hierarchic or layered way, each layer adding further characterization to the entity. Each level is assigned a priority. As a rule of thumb, more general levels have a lower priority than more specific levels. What this means is that if two levels modify the same attributes, in case of conflict the more specific level will impose its modification. This rule has no effect on modifiers. Priority only applies to ranges or explicit values. Modifiers are cumulative so that several levels can act on the same entity with different effects.</para> </sect2> </sect1> --> <sect1> <title>Entity-Editor</title> <para></para> <!-- CLs: type: speed of evolution, attributes that are able to evolve. geo: could entity evolve with geography ? what is the environment influence (factor) ? community: which attributes ? special knowledges, modifiers... --> </sect1> <sect1> <title>Implementation Plans</title> <para></para> <!-- Required concepts: Entity Property, Influences Types MetaProperty Range, TextRange, NumRange Value, TextValue, NumValue, RealValue, IntValue Descriptions description influence (bloody, broken, dirty, old, brand new, ...) Description modifier (red paint, color glasses, uv filter) Description complement (ir machine) Alt: Description Modifier: Add description elt Replace/remove description elt Modify description elt (???) -> modify underlying property instead or replace it. Object creation scenarii Entity instance at edition time An xml file describing the change is generated. A serialized instance (Moniker) is created: All needed references are resolved. All random values are generated All global statistics are updated Entity creation during gameplay An "action" (event) handling need to create an entity: Type:getInstance(InfluenceIterator) called returns Entity with all influences The add of all influences is managed by common code in BasicType. The entity creation process is in 3 phases: (common code): creation log, all properties initialised (entityId) (type code): type specific behaviour (common code): creation result control (impossible influences, error handling...) Event generation and management (birth notification, event handling...) ie: a very strong soldier is born -> affect the environment. Entity destruction: Most destruction will be an alteration change (body -> corpse, object -> parts, wood -> object) Type code (burning wood reject smoke, warm) common code: The entity disappear from world -> notification of listener, log. Entity change: Atomic destruction + creation. Common code change Precedent type code common code Common code creation New type code creation common code change logs Each change is atomic Difference between editors/Gameplay mode. Editor mode server works only on stopped game data. Time is frozen and no action takes place in the world. Game mode server works on memory data, regularly saved. Time goes on on a regular basis. Entity creation follows the same code, but there is no transaction problem in editor mode. --> </sect1> </article>