Designing Games with Xconq - Backdrop

Go to the first, previous, next, last section, table of contents.

## Backdrop

This section describes the parameters affecting backdrop computations.

- Years and Days
- Temperature Variation
- Temperature Effects
- Wind Variation
- Unit Production and Consumption
- Terrain Production and Consumption
- Supply Lines
- Side Research
- Unit Research
- Terrain Attrition
- Terrain Accident
- Unit Revolt
- Unit Surrender

### Years and Days

Cyclic changes in the environment are governed by a yearly cycle or a daily cycle whose length must be defined.

WorldProperty: `year-length` n

This property is the number of turns in an annual cycle. If less than `2`, then no seasonal effects will be calculated.

WorldProperty: `day-length` n

This property is the number of turns in a single day. If less than `2`, then day and night will not be calculated.

Note that `year-length` and `day-length` are completely independent of each other, and it is possible to have days that are longer than years.

AreaProperty: `initial-year-part` n

This property is the season of the first turn in the game.

AreaProperty: `initial-day-part` n

This property is the hour of the first turn in the game, in 100ths of a day part.

GlobalVariable: `season-names` list

This global is a list of which turns in a year should be called which seasons. It has the form `(... (n1 n2 name) ...)`. Defaults to `()`.

A twelve-turn year with four seasons would be

    ((0 2 "winter") (3 5 "spring") (6 8 "summer") (9 11 "autumn"))

If any number ranges overlap, then the first match will be used, while if a particular turn has no named season, then it will go unnamed in the display.

UnitTypeProperty: `acp-season-effect` interpolation-list

This property is the effect of the seasons on acp. The input value is the year part, and the result value is added to the basic `acp-per-turn`. Defaults to `()`.

WorldProperty: `daylight-fraction` n%

This property is the percentage of the world's circumference that has daylight. Defaults to `50`.

WorldProperty: `twilight-fraction` n%

This property is the percentage of the world's circumference that has daylight and twilight. Defaults to `60`.

AreaProperty: `sun` x y

This property is the initial position of the sun over the area. Defaults to the exact middle of the area.

### Temperature Variation

TerrainTypeProperty: `temperature-average` n

This property is the average temperature for each type of terrain.

TerrainTypeProperty: `temperature-variability` n

This property is the amount of totally random variation in the temperature in each cell.

GlobalVariable: `temperature-year-cycle` ((x y) interpolation-list)...

This global is a list of interpolation lists used to set basic temperatures at given points in the area. The input value for each list is the current year part, while the result is the temperature at x,y. Then for each point in the area, its temperature is the interpolation of the temperature at the two nearest given points. Defaults to `()`.

TerrainTypeProperty: `temperature-moderation-range` distance

This property is the radius of the area whose raw temperatures will be averaged to get the actual temperature. This can be very time-consuming to calculate, so only values of 0 (no averaging) and 1 (average with adjacent cells) are recommended.

### Temperature Effects

UnitTypeProperty: `acp-temperature-effect` interpolation-list

This property is the effect of temperature on acp. The input value is temperature, and the result value is multiplied with acp, after it has been modified for night effect, but before modification for season. The result is divided by 100, so an effect < 100 reduces acp, an effect of 100 has no effect, and an effect > 100 increases acp. Defaults to `()`.

UnitTypeProperty: `consumption-temperature-effect` interpolation-list

This property is the effect of temperature on material consumption. Defaults to `()`.

UnitTypeProperty: `temperature-attrition` interpolation-list

This property is the effect of temperature on a unit's hp. The input value is temperature, and the result value is the number of hp that the unit will lose each turn at that temperature. Defaults to `()`.

Transports can protect their occupants from temperature extremes.

TableUU: `temperature-protection` u1 u2 -> t/f

This is true if transports of type u1 protect occupants of type u2 from the effects of the cell's temperature.

### Wind Variation

The following parameters control random variation of the prevailing winds in each cell.

TerrainTypeProperty: `wind-force-average` n

This property is the average wind force in a type of terrain.

TerrainTypeProperty: `wind-force-variability` n%

This property is the chance that the wind in a cell will increase or decrease in force each turn.

TerrainTypeProperty: `wind-variability` n%

This property is the chance that the wind in a cell will change direction each turn.

GlobalVariable: `wind-mix-range` n

This variable is the radius out to which winds interact. If 0, then winds in adjacent cells can vary independently of each other, and do not interact in any way.

### Unit Production and Consumption

Units can be set to always produce some amount of material without taking explicit action.

TableUM: `base-production` u m -> n

This table is the basic amount of each material m produced by a unit of type u in each turn.

TableUM: `occupant-base-production` u m -> n

This table is the base production of each material m when a unit of type u is an occupant.

TableUT: `productivity` u t -> n%

This table is the percentage productivity of a unit of type u when on terrain of type t. This is multiplied with the basic production rate to get actual material production, so productivity of `0` completely disables production on that terrain type, and productivity of `100` yields the rate specified by `base-production`. Defaults to `100`.

TableUT: `productivity-adjacent` u t -> n%

This table is the percentage productivity of a unit of type u when adjacent to terrain of type t. The actual productivity of a unit is a max of its productivity on its own cell and the adjacent cells.

TableUM: `productivity-min` u m -> n

TableUM: `productivity-max` u m -> n

These tables are the lower and upper bounds on actual production after multiplying by productivity. Default to `0` and `9999`, respectively.

TableUM: `base-consumption` u m -> n

This table sets the amount of materials consumed by the unit in a turn, even if it doesn't move or do anything else.

TableUM: `hp-per-starve` u m -> .01hp

If the unit runs out of a material that it must consume, this table specifies how many 1/100 hp it will lose each turn that it is starving. If starving for several reasons, loss is max of starvation losses, not the sum. This value is stochastic.

TableUM: `consumption-as-occupant` u m -> n%

This table is the consumption by a unit of type u1 when it is an occupant, expressed as a percentage of its `base-consumption`. This is useful for units such as planes which always consume fuel in the air but not on the ground. Defaults to `100`.

TableUM: `gives-to-treasury` u m -> t/f

This table is true if units of type u always immediately transfer any accumulated material of type m to the side's treasury.

### Terrain Production and Consumption

Materials may be produced by cells, redistributed, and also taken up by units. Some amount of material may need to stay in the cell's storage, or the type of terrain might change. Exhaustion is tested after all consumption has been accounted for.

TableTM: `terrain-production` t m -> n

This table is the amount of each material m produced by a cell of the given type t in each turn.

TableTM: `terrain-consumption` t m -> n

This table is the amount of material m consumed by a cell of type t each turn. If insufficient material is available, then the terrain may change type.

TableTM: `change-on-exhaustion-chance` t m -> n%

This table is the chance that a cell of type t, with no supply of material of type m, will become exhausted and change to its exhausted type.

TableTM: `terrain-exhaustion-type` t1 m -> t2

If t2 is not `non-terrain`, then this table says that any cell with terrain t1 that is exhausted will change to t2. If several materials are exhausted in the same turn, then the lowest-numbered material type will determine the new terrain type. Defaults to `non-terrain`.

TableMM: `people-consumption` m1 m2 -> n

This table is the base consumption per turn by people of type m1 of each other material type m2.

TableMM: `people-production` m1 m2 -> n

This table is the people of type m1 base production per turn of each other material type m2.

### Supply Lines

In real life, material production and consumption rarely occur in the same place at the same time. For some games, the player must transfer materials manually, by loading and unloading from units. However, this can be time-consuming and difficult, and is best reserved for scarce and/or valuable materials. For more common materials, Xconq provides supply lines.

TableUM: `in-length` u1 m -> dist

TableUM: `out-length` u2 m -> dist

These two tables together determine the length of supply lines between units. The given type of material can only be transferred from unit type u1 to unit type u2 if the distance is less than the minimum of the `in-length` of u1 and the `out-length` of u2.

For instance, the `in-length` for a fighter's fuel might be 3 cells, while the `out-length` of fuel from a city is 4 cells. Then the fighter will be constantly supplied with fuel when within 3 cells of a city. If the fighter's out-length is -1, it will never transfer any fuel to the city.

An in- or out-length of `0` means that the two units must be in the same cell, while a negative length disables the automatic transfer completely. Long `out-length` lines should be used sparingly, since the algorithm uses the `out-length` to define a radius of search for units to be resupplied. Both default to `0`.

The following tables control an advanced supply line algorithm that is implemented, but does not seem to work correctly. They are listed here for completeness.

Table: `supply-capacity-deterioration`

Table: `supply-capacity-threshold`

Table: `supply-deterioration`

Table: `supply-enemy-interdiction`

Table: `supply-importance`

Table: `supply-in-max`

Table: `supply-interdiction-adjacent`

Table: `supply-interdiction-adjacent-for-material`

Table: `supply-interdiction-at`

Table: `supply-interdiction-at-for-material`

Table: `supply-in-threshold`

Table: `supply-in-weight`

Table: `supply-neutral-interdiction`

Table: `supply-out-max`

Table: `supply-out-threshold`

Table: `supply-potential`

Table: `supply-potential-terrain-effect`

Table: `supply-starve-weight`

Table: `occupant-supply-potential`

### Side Research

Sides may achieve advances automatically.

GlobalVariable: `side-can-research` t/f

This variable is true if the side can do research.

GlobalVariable: `indepside-can-research` t/f

This variable is true if the independent side can do research.

TableAA: `advance-needed-to-research` a1 a2 -> t/f

This table indicates whether advance a1 needs a2 to have been achieved first.

TableAA: `advance-consumption-per-rp` a m -> n

This table is the amount of material type m consumed to add one research point for a.

### Unit Research

Units may work on advances as a backdrop activity, without expending action points.

UnitTypeProperty: `can-research` t/f

This property is true if the unit can work on advances in the background.

### Terrain Attrition

Attrition is the automatic loss of hit points due to being in certain types of terrain. This runs once for each unit at the beginning of each turn.

TableUT: `attrition` u t -> .01hp

This table is the rate of loss of hp per turn. The terrain used is cell or connection terrain as appropriate for the unit's position.

### Terrain Accident

Accidents result in the damage or disappearance of a unit in the open in some kinds of terrain. This runs once at the beginning of each turn, on each unit not in a transport.

TableUT: `accident-hit-chance` u t -> .01n%

This table is the chance of the unit being hit while in the given terrain.

TableUT: `accident-damage` u t -> hp

This table is the hp that will be lost in an accident. The value is a dice spec.

TableUT: `accident-vanish-chance` u t -> .01n%

This table is the chance of the unit simply vanishing while in the given terrain.

### Unit Revolt

Revolt is a spontaneous change of side, occurring in place of a side-given unit action. The new side may be none (independence) or another side.

UnitTypeProperty: `revolt-chance` .01n%

This property is the chance for the unit to revolt spontaneously.

UnitTypeProperty: `revolt-at-opinion-min` .01n%

This property is the chance for the unit to revolt when its opinion of its current side is at its lowest possible level. The chance is interpolated for opinions between zero and the minimum.

### Unit Surrender

TableUU: `surrender-chance` u1 u2 -> .01n%

This table is the chance that a unit of type u1 will change its side to match the side of a unit u2 that is within the `surrender-range` for the two types.

TableUU: `surrender-range` u1 u2 -> dist

This table is the distance out to which a unit of type u1 will surrender to a unit of type u2. Defaults to `1`.

Go to the first, previous, next, last section, table of contents.