Who does an NPC believe? When do they stay quiet? What changes when they help someone? Three tests toward characters with lives of their own.

A life that carries on when you leave

I want a character to remember that you helped them, news to reach another neighbourhood with details missing, and a family’s food supplies to actually increase when someone delivers food. Small things like these could give each playthrough its own history.

I’m testing how characters receive information, decide to share it and exchange resources. These mechanisms already work in a simulation separate from the graphics engine. Building them into a playable experience comes later. Here are three of the tests.

A rumour repeated a hundred times still has one source

Back to the bridge. Imagine Ana sees that it is closed and tells Bruno. Bruno tells Carmen. Ask all three and you receive three reports, but they all trace back to Ana. Now imagine each of them has checked the bridge independently. That small difference changes how much those confirmations are worth. This is an illustration of the idea, not a scene from the experiment.

The simulator keeps track of where information comes from. When I compared the two conditions, the character’s confidence score for a report was 19.8% higher with independent sources. That lets me check that several voices repeating one story do not automatically count as several independent checks.

It also records how much backing the available evidence provides. Think of two questions: “How much do I believe this?” and “What evidence do I have?” The first is the character’s confidence; the second is the weight of the evidence. In that second measure, independent evidence provided 27.7% more support than accounts repeating a single source.

Then there is the telephone game: as a message passes from person to person, details can change. In this test, a longer chain retained 9.4% less similarity to the original account than a short one.

Each comparison was repeated 16 times, pairing the same starting conditions with the two alternatives. The change went in the same direction in all 16 pairs. These are internal scores: 19.8% does not mean “NPCs that are 19.8% smarter”. What I’m checking is whether a report’s origin and journey affect how the system treats it.

In a game, this could let you trace a rumour back to its source. You might discover that an entire village is repeating one person’s account. Or find someone who was actually there and knows something different.

Knowing does not mean they will tell you

A character has seen someone take a resource. Do they tell anyone? To test that decision, I changed the witness’s circumstances and repeated each situation twelve times.

In a neutral situation, the witness spoke all twelve times. With scarce resources and a high impact from the event, they spoke five times. Under threat, they stayed quiet all twelve times. The chart counts how often they chose to share what they knew in each situation.

For a player, the possibility is interesting: someone may have information but need trust or safety before sharing it. That is what I want to build toward. These counts check behaviour in the tests; they do not predict how real people would act.

Some results still miss the mark. A hostile audience and the authority of the person taking the resource did not reduce reporting: the witness spoke twelve out of twelve times in both cases. Those responses need work for the context to have the effect I’m aiming for.

Helping has to change something

If one neighbour gives another food, I want to be able to follow it: it leaves one store and arrives in another. For a player, that kind of help could carry a cost and have consequences beyond a conversation.

For this test I let trade run for 540 simulated days. Food was actually delivered within the simulation in all three environments: an average of 93.3 food units in wet, 200 in seasonal temperate and 93.3 in dry. Each dot is one run; each bar summarises the three runs in that environment.

The amounts depend on supplies, price and the money available to buy food. With only three runs per environment, they cannot tell us which climate is better. They do show that exchanges can complete and move resources.

Alongside those nine trade-enabled runs, I tested control conditions. No exchanges happened with trade switched off, without money in the household account, or with supplies balanced as set up in this experiment. There were 36 configurations in total. The no-funds control still had personal money: it tested access to household funds.

What this could change when you play

Imagine looking for food in a village. One family has supplies, another needs to buy some, and a neighbour claims someone is hoarding. With these pieces working together, you could investigate who started the rumour, decide whom to believe and find a way to help. This is an example of the situation I would like to build, not a playable quest yet.

I’m drawn to decisions that leave a trace. Returning somewhere could be interesting because things have kept happening there. To check each step, I have a tool that lets me review events and inspect what each character knew at the time.

And when you can ask them

Later, I want to connect this simulation to AI conversations. To ask “Why didn’t you tell me?” and have the answer relate to what the character experienced, knew or feared.

That language-model connection is still to come. The results above are from the simulation. The goal is for a conversation to reveal that life: memories, doubts and the consequences of actions. There are already working mechanisms to test; the next step is to keep connecting them.

Character in a patterned shirt firing on a street with several other characters.
Real game-engine capture. The social simulation described here still runs separately.

What do you think?

Your feedback helps make it better.

Loading reactions…

Share
WhatsAppXFacebook

Tell me what could be better

Choose a reason before saving your dislike. It will be used as private feedback to improve.

Eloy Moya
←Back to the DevBlog