Advanced Lemmings

Mar 25, 2010 13:11

The lush world of my simulation will exist to support a population of human-like agents. Each agent is nothing more than a collection of numbers, some descriptive information, and a collection of objects they carry. These agents differ from agents in a typical video/computer game in two particular ways:
  1. Agents do not have "hit points" or any similar attribute. The health of an agent is represented by a collection of "stress" values. Agents have a chance of randomly dying on any time step, but agents with higher stress are more likely to die. Stresses of different sorts accumulate at different rates over time, and can be reduced by certain actions by the agents themselves (such as eating). Some stresses, such as injury, do not accumulate over time, but may be increased through certain actions and events in the world. One stress cannot be reduced: long term stress grows (very slowly) at a rate proportional to the total amount of other stresses.
  2. Agents can alter much of their description. One level of description cannot be altered: it includes stress levels, sex and some arbitrary inherited traits. The next level of description (clothing and visible objects) can be altered through the use of technology. The final level of description (spoken message) can be altered at no-cost on every time step.

Each agent is aware of its immediate environment. If it is outside, it is aware of many of the properties of cell it is in, plus properties of directly adjacent cells. If it is inside an object, it is aware of the contents of the object unless it is interfaced with the object, in which case the agent is aware of the environment of the object instead. The agent is aware of all actions performed on it over the previous time step. It is aware of all un-carried objects and all agents in its immediate environment. Each other agent seen has an id that remains consistent over time, but that is not seen by any other agent. Shared identifiers are not provided to agents, to prevent them from taking short-cuts in communicating facts about other agents to each-other. Each agent can identify its mother, but no other relations are marked by the simulation infrastructure.

The simulation prompts an agent to choose an action on each time-step. An agent can either choose to continue its current action (some actions require more than one time step to complete) or can choose a new action. The agent selects an action by naming it and by providing a list of properties. Many of these properties will identify other agents or objects in the agent's view of its environment. Some properties will be description strings. With any action, an agent may specify a spoken message to display to others. If the simulation framework recognizes the action specified, and finds the required properties, then the action will occur. Otherwise the agent is informed of its failure, possibly including a reason for the failure. Actions exist to determine the names and properties of other actions, along with some hint of what the action accomplishes.

Many actions will only be possible for agents with a matching "trade". Any agent can learn any trade, but learning a trade does require a small investment of time. In complex simulations, it will be impractical for any single agent to learn more than a fraction of the available trades.

Agents have one of two sexes: male or female. The sexes are indistinguishable except as relating to reproduction. A male over a certain age can impregnate a female over a certain age, and the female will suffer increased stress for a period of time before giving birth. Each child can identify its mother for the rest of its life. Oh the arbitrary and questionable decisions...
Previous post Next post
Up