The Agents

The Agents are the focus of the simulation. There would be no simulation without them. They have tons of features and ability to access those features in an attempt to survive.

Agents have Inputs which feed into the Brain, and they are summarized here, in the order they currently are arranged in:

  • 18 RGB Eye Sensors: 6 "Eyes", 3 inputs each. They have a FOV and angular position, and take the sum of all "light" seen, that is, any agent in the fov gives its Red, Green, and Blue values, out to a distance DIST, and added to a natural light (day and night occur on the world). FOV is restricted to a max of a half-circle, but the random values are typically lower.

  • 1 Random, a value that gets randomly adjusted every few ticks.

  • 1 Health: current readout of the decimal percentage of full health the agent has. (0hp give value of 0, 2hp gives 1)

  • 1 Reproduction: current percentage of the reproduction counter until giving birth.

  • 3 Sine Clocks: all are based on an abs(sin(t)) function, the first two have fixed frequencies, and the last one has a variable frequency determined by an output.

  • 4 Ears: sound sensors, have angular position and are located on agent's outer shell for all distance calculation purposes. They add up all sounds other agents are making out to DIST, if those sounds are within the ear's tone range. Agents also make sounds just for moving, and these can also be heard.

  • 1 Agent Smell: counts the number of agents inside a circle of radius DIST.

  • 1 Blood Sensor: based on the inverse of any agent's health that is in front of the agent, out to a short distance. Dead agents trigger this fully.

  • 1 Temperature: y-axis position that increases the further away the agent is from the equator, where the value inputted is 0.

  • 1 User Input: that triggers as long as the agent is selected and the spacebar is held.

  • 4 Cell Smell: 1 for Fruit, 1 for Meat, 1 for Hazard, and 1 for Terrain. Counts the ratio of fruit/meat/hazard/water cells to empty cells within a square centered on the cell the agent is over, with sides of length sqrt(2)*DIST.


Finally, Agents Brains send reactionary values to the Outputs. Due to the nature of how the simulation is built, they are actually in the brain backwards compared to their listing here and in the visuals in program:

  • 4 Wheel Target Speeds: 1 for backwards and 1 for forwards for left and right sides. These values are only the target values, and there is a dampening applied via a bot physical trait, Strength.

  • 1 Boost Actuator: if >0.5, activates the Boost ability, which doubles the agent's speed at the cost of health lost from age and wheels (not usually terribly large) multiplied by a factor of 4.

  • 1 Jump Trigger: a change-sensitive output, triggers if its brain box changes rapidly from low to high. To activate the agent must be on the ground and not already in midair and the change amount must be >0.5.

  • 3 Agent RGB Values: the color the agent displays both to us and other agent's eyes. Is dampened.

  • 1 Volume and 1 Tone: "Sound Other agents need to have ears with hearing ranges that include the vocalizing agent's tone in order to "hear" their volume at 100% (minus distance decay).

  • 1 Give Actuator: at 0 give the agent is completely selfish and shares no health, not even when touching. Up to value 0.5 the agent is autocentric, meaning it's not generous but not selfish either. Beyond 0.5 the agent is generous and will give health away to bots that are further away, faster for higher values up to 1.0.

  • 1 Spike: the intended spike length. If the agent recently stabbed another agent, the spike temporarily retracts and takes time to raise again.

  • 1 Jaw Trigger: another change-sensitive output, triggers a "biting" action that injures other agents directly in front of the agent.

  • 1 Grab Actuator and 1 Grab Angle: if actuator is >0.5, agent is considered Seeking, and will "latch" on to the first agent it sees in front of its grabber, which may be at an angle relative to the front of the agent. Once found, the two become pulled together with a certain restoring force, which can be broken free from by using high wheel speeds. An agent can grab only one other agent.

  • 1 Sexual Projection: required for sexual reproduction. At least one agent nearby has to be ready to reproduce and also have a >0.5 value for this output. If above 0.9 the agent no longer can reproduce.

  • 1 Waste Deposit Rate: controls the rate of waste deposition. 0=> agent is prudent, and will drop a lot of waste occasionally, 1=> agent is incontinent, and constantly drops a little bit of waste.

  • 1 Stimulant: a strange output that takes box connection weights and adjusts them when the box's value and the connected box are the same. I think...

  • 1 Clock 3 Frequency: 0 gives frequency of 100, 1 give frequency of 5, continuous function.


There are a few additional notes of features I would like to make, but don't deserve their own page, and that's Stats. Every agent keeps track of a few stats which, except for some rare exceptions, don't impact the simulation much at all.

  • Age: This counter shows how old the agent is, in days. Note that it keeps track of this in a 10ths-limited value that increments every 1/10th of a day.

  • Species: This value actually is simulation-important, at least for sexually reproducing agents, for if the value of two agents's Species are too far apart, they cannot reproduce. This value is mutable and there are two visualization modes to help users see relations and species on the world.

  • Gen(eration): this number is simply the number of ancestors the agent has. Newly spawned agents always have a value of 0, and it gets incremented for agents which are born. Agents with sexual parents will get the highest gen count of either parent.

  • Indicator and its R,G,B values: The indicator is a circular splash centered on the agent that is meant to draw attention to the agent for some un-seen reason (or seen, as in the case of reproduction, but some clarification of who's the parent(s) and who's the children may be needed). There are several color codes:

    • Green: Agent asexually reproduced

    • Blue: Agent sexual reproduced

    • Purple: Agent was mutated while live

    • Cyan: Agent collided with another and took damage

    • Yellow: Agent bit another

    • Orange: Agent stabbed another

    • Red: Agent killed another with either stabbing or biting

    • Grey: Agent was just born