Economics of Life is a Village

From EQUIS Lab Wiki

Jump to: navigation, search

This article specifies the underlying mechanics of Life is a Village.

Contents

Number of Villagers

The number of villagers available to the village depends on

  • Housing (how many places are available for people to live)
  • Cheer (how happy a place the village is)
  • Commerce (how much commercial activity is available in the village)

The number of villagers (Villagers) increases as these values increase. Very small villages (up to three people) do not require commercial and entertainment structures.

Villagers = min( Housing, Commerce + 3, Cheer + 3 )

Housing

Housing represens how many housing spaces are available in the village. This value caps the population of the village, since people will not live in the village if there is no space for them.

Housing comes from the village's houses; specifically, Housing is the sum of the housing attribute of all village structures.

Cheer

Cheer represents the cheerfulness of the village. Cheerful people work more effectively and cheerful villages attract more population.

Cheer comes from the more entertainment-oriented structures of the village; specifically, Cheer is the sum of the cheer attribute of all village structures.

Commerce

Commerce represents the commercial activity of the village. People require commercial outlets to be able to buy food and other necessities of life.

Commerce comes from structures such as shops; specifically, Commerce is the sum of the commerce attribute of all village structures.

Villager Productivity

Villagers produce resources which can then be used to build structures. Villagers productivity, expressed as a percentage, specifies how well villagers work. At 0% productivity, a villager sits down and does nothing. At 100% productivity, the villager walks and harvests at their maximum rate. In brief, productivity modifies the rate at which a villager harvests and delivers resources.

Productivity is determined by three factors

  • Villagers' Satiation (is the villager getting enough to eat?)
  • Energy (is the player injecting enough kinetic energy into the system?)
  • Villagers' Cheer (are the players living in a village that makes them cheerful?)

Assuming that Food, Energy and Cheer are all percentages (in the range [0..1]), then:

Productivity =
    min( Energy, 0.5 * Energy + 0.3 * VillagerSatiation + 0.2 * VillagerCheer )

This definition ensures that productivity settles at 0 if the player is not exercising, and that as the player contributes more energy, the effects of satiation and cheer become more important.

Energy

Energy reflects the player's physical effort expended while playing the game. The player's work makes villagers more energetic.

The intention is that Energy be a percentage, where normal effort would achieve an energy of 50%, and increases to Energy require ever-increasing marginal effort on the part of the player.

Assume that PlayerEnergy is a representation of the effort that the player is exerting. For example, with a bicycle, PlayerEnergy is derived from Speed * Resistance, or simply the bike's power setting. So that villagers' activities are not affected by short term variations in the player's activity, the playerEnergy value is computed as a rolling average over the last minute of play.

Then

Energy = 1 - 0.99 ** (EnergyScale * playerEnergy)

where EnergyScale is a constant whose value should be experimentally determined.


Villager Satiation

Consuming food makes villagers more efficient. Food is created by structures such as farms.

Assume FoodConsumptionRate is the amount of food each villager would like to consume per second, ElapsedTime is the amount of time since food consumption was last checked, and Food is the amount of food currently available. Then

FoodWanted = TimeElapsed * FoodConsumptionRate * Villagers
FoodConsumed = min( Food, FoodWanted )

VillagerSatiation = 0,                         if foodConsumed = 0
                    foodWanted / foodConsumed, otherwise

Villager Cheer

Villager Cheer represents the cheerfulness of villagers:

VillagerCheer = max( 1, cheer / Villagers )