The complete state of a trmcity procedural city simulation. The tile grid is encoded as one string per row, one character per tile: '~' water, '.' grass, 't' tree, '#' road, and 'a' through 'l' for buildings, where the letter index encodes (level - 1) * 4 + variant for levels 1-3 and variants 0-3. The simulation is deterministic: the rng field carries the pseudo-random generator state between ticks.
literal:self
Fixed literal value
Properties
foundedAt
string
datetime
Optional
When the city was founded.
height
integer
Required
Height of the tile grid.
minimum: 1maximum: 512rng
array
of
integer
Required
Saved state of the simulation's pseudo-random generator, as produced by Racket's pseudo-random-generator->vector.
maxLength: 6 itemsminLength: 6 itemsrows
array
of
string
Required
The tile grid, one string per row from north to south, one character per tile from west to east.
maxLength: 512 itemstick
integer
Required
How many simulation ticks have elapsed since the city was founded.
minimum: 0updatedAt
string
datetime
Required
When the most recent tick ran.
width
integer
Required
Width of the tile grid.
minimum: 1maximum: 512View raw schema
{
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"tick",
"width",
"height",
"rows",
"rng",
"updatedAt"
],
"properties": {
"rng": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"maxLength": 6,
"minLength": 6,
"description": "Saved state of the simulation's pseudo-random generator, as produced by Racket's pseudo-random-generator->vector."
},
"rows": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512
},
"maxLength": 512,
"description": "The tile grid, one string per row from north to south, one character per tile from west to east."
},
"tick": {
"type": "integer",
"minimum": 0,
"description": "How many simulation ticks have elapsed since the city was founded."
},
"width": {
"type": "integer",
"maximum": 512,
"minimum": 1,
"description": "Width of the tile grid."
},
"height": {
"type": "integer",
"maximum": 512,
"minimum": 1,
"description": "Height of the tile grid."
},
"foundedAt": {
"type": "string",
"format": "datetime",
"description": "When the city was founded."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "When the most recent tick ran."
}
}
},
"description": "The complete state of a trmcity procedural city simulation. The tile grid is encoded as one string per row, one character per tile: '~' water, '.' grass, 't' tree, '#' road, and 'a' through 'l' for buildings, where the letter index encodes (level - 1) * 4 + variant for levels 1-3 and variants 0-3. The simulation is deterministic: the rng field carries the pseudo-random generator state between ticks."
}