Designing Games with Xconq - Dates and Time

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

## Dates and Time

GlobalVariable: `turn` n

This variable is the number of the current turn.

Note that the first turn of a game is actually turn 1. Pre-game activities happen during "turn 0".

- Game Length
- Calendar
- Real Time

### Game Length

GlobalVariable: `last-turn` n

This variable is the number of the last turn. Defaults to `-1`, which means that there is no limit on the number of turns.

GlobalVariable: `extra-turn-chance` n%

This variable is the chance that the game will go one more turn after the `last-turn`.

Xconq is currently limited to games of 32,767 turns.

### Calendar

You can make Xconq display game time as a calendar date, rather than as a simple turn number.

GlobalVariable: `calendar` type data...

This variable is the description of the calendar type that will be used. If the variable is `()` or the type is `number`, then turns will be reported numerically starting from `1`. If `usual`, then the standard Gregorian calendar will be used. Defaults to `()`.

If the numeric or `number` calendar is in use, then a data of `"cycle"` will yield `"cycle 1"`, `"cycle 2"`, etc.

For the `usual` calendar, the data defines how long a turn is, in terms of the calendar. For instance, a time measure of `day` (and a base date of `"1 Jan 1900"`) will result in turns `"1 Jan 1900"`, `"2 Jan 1900"`, etc, while a date unit of `year` will yield just `"1900"`, `"1901"`, and so forth.

The full form of the data is

    (date-step-range1 date-step-range2 ...)

where each date-step-range has the form

    ( [ start end ] type [ multiple ] )

where type has the values second, minute, hour, day, week, month, season, or year, where multiple is the number of that type in eah turn, and where start and end define the ranges of turns to use for the given type and multiple of the date. (The ranges are useful for telescoping time periods, such as in civilization-building games where early turns might advance by 50 years each, and later turns by only a year.)

Symbol: `number`

Symbol: `usual`

GlobalVariable: `initial-date` str

This variable is the date, in the specified calendar system, of the first turn. Defaults to `""`, which has the effect of setting the initial date to be whatever the calendar does with turn number 1.

### Real Time

A game may also be limited in real time.

GlobalVariable: `real-time-for-game` seconds

GlobalVariable: `real-time-per-turn` seconds

GlobalVariable: `real-time-per-side` seconds

GlobalVariable: `elapsed-real-time` seconds

This is the difference in real time between the start of the game and its current state.

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