Portfolio · Cartographer World

The Actors

Under the hood of the actors. Random starting state compounded with random building contents, emergent job picking, biorhythms, competing concerns in high-dimensional space, and the architectural independence that lets new content be added without destabilising the rest.

The Actors

This page goes under the hood of the actors. What they are made of, what makes each one different from every other, how they pick their work, and why they seem to have moods of their own.

Random at the root

Every actor spawns with a random starting inventory, random clothes, and a random amount of cash. The buildings in the village also spawn with random contents inside them — the forge might have a good stock of iron or almost none; the bakery might have flour and yeast, or nothing but salt.

This is compound randomness. An actor's starting state is not just the state of their own body and pockets; it is the state of their body and pockets relative to the state of the village they find themselves in. A baker with no flour in a bakery with a full flour bin is a different actor than a baker with no flour in a bakery with no flour. The village and the actor are seeded together, and what emerges is the product of both.

How actors pick their work

Actors pick their buildings emergently. There is no job assignment. An actor, nudged by their starting conditions and their concerns, gravitates toward a building that fits — a kitchen for the one who needs to cook, a forge for the one drawn to heat and metal, a library for the one who has nothing urgent to do.

In the current beta, there is one building per actor, which means the order in which actors claim buildings determines who ends up where. The actor whose concerns drive them into work first gets the pick of the crop. The actor who is the last to arrive gets whatever building is left — including the ones nobody else wanted. This produces honest first-mover dynamics, and it already generates interesting behaviour: actors with urgent concerns claim early and often end up in roles suited to them; actors with lighter openings may find themselves in roles they would not have chosen under looser conditions.

In the full-scale version, this constraint relaxes. Buildings will support multiple workers. Actors will be able to pick the work they actually want, and other actors will fill in around them. The beta's job system is a simplification of a system that, in time, will come to resemble a real labour market, with all the texture that implies.

Biorhythm

Each actor carries their own biorhythm. The algorithm that generates it is the same for every actor; each actor's biorhythm just starts at a different point in the cycle, so no two actors are in phase.

This is why one actor is wide awake while another is yawning, why one is hungry while another is not, why one is restless and wanting a change while another is content with the day they are having. The biorhythm does not dictate behaviour — it is one input among many — but it gives every actor their own tempo, and it means the village is never full of agents all in the same state at once. Somebody is always up earliest. Somebody is always last to bed.

Competing concerns in high-dimensional space

An actor's current behaviour is the outcome of many concerns overlapping at once — hunger, warmth, sleep-debt, work-pressure, social connection, the state of their garden, the state of their cupboard, whether they have a bed, what their biorhythm is doing, what they have inherited from the morning, what they have already committed to.

All of these sit in a high-dimensional space, and the actor's next action is whatever falls out of the resolution of that space.

If you were to picture it, the picture would look not unlike the high-dimensional activation space of a neural network. Many dimensions. Rich interaction. Behaviour emerging from the geometry. But there is a decisive architectural difference between the two, and it is worth being clear about.

The independence of concerns

In a large neural network, the parameters are tangled. A small change to one weight can propagate and affect how the whole network responds to all inputs. This is why training is fragile, and why any adjustment requires retraining across the whole system.

In a VINE actor, the concerns are not tangled in this way. You can check a single concern. You can adjust it. You can add a new one. The other concerns will not destabilise. Each concern is its own shape, contributing to the high-dimensional space without being fused with the other shapes.

This is the same property that lets the Cartographer's actors accommodate new content without retraining. A new food item, a new weather condition, a new building type — these add new dimensions to the concern-space without requiring the existing dimensions to be touched.

It is also why the actors can be debugged in a way neural-network NPCs cannot. If an actor is behaving oddly, you can look at the individual concern that is driving the oddness, adjust it, and return the actor to the village without breaking the rest in the process. This is not a feature that can be added to a conventional AI NPC. It is a property of the architecture.

← Return to the Cartographer overview.