What is a Character?

Character

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).

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.

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.