All dispatches

People in the world Signal 008

Someone remembers you

Chimera's first live NPCs have authored histories, bounded conversation memory, and reasons to speak before a player asks.

Returning to town should mean more than asking a fresh language model to pretend you have met.

A boatbuilder might remember that you introduced yourself yesterday. She might remember that you said you had seen her missing apprentice. She should not automatically conclude that the apprentice is safe, or greet you again as a complete stranger after every walk around the workshop.

Chimera's first live NPC implementation now gives these conversations somewhere to persist. Characters have authored histories and personalities, current concerns, and a separate, bounded memory of each player's conversations.

The boatbuilder here is an illustration, not a reveal of a location or character from the private game.

History is not the present

Consider the missing apprentice. The disappearance is part of the boatbuilder's history. Whether the apprentice has returned is a current circumstance. Whether the boatbuilder has heard about that return is another question again.

Those are separate pieces of state.

The engine can record that the apprentice has returned while the boatbuilder still believes they are missing. When she is informed, her current concern can change without deleting the earlier event from her backstory. A worried conversation can become a relieved one without rewriting the character's past.

The first implementation supports explicit, trusted updates to circumstances and NPC awareness. Connecting those updates to a complete rescue or quest system remains future work. A player's claim during conversation does not perform the update by itself.

This separation leaves room for rumors, uncertainty and mistaken beliefs. The language model is asked to portray what this person knows, not to borrow everything the engine knows about the world.

A memory of each visitor

Conversation memory belongs to an NPC and a particular player. One visitor's discussion does not become another visitor's shared chat history.

The character receives a compact summary and up to four recent exchanges, alongside the current message. The summary preserves useful earlier context without replaying every word of an indefinitely growing transcript. It is bounded memory, not a promise of perfect recall.

Even identity has a boundary. The engine can distinguish players internally, but that does not mean the boatbuilder knows an account name. A name offered in conversation is an introduced identity, not proof of who someone really is.

The model does not receive the whole story bible. It gets the character's permitted history and personality, known concerns, relationship memory and available circumstances such as activity and local time. Author-only plans stay outside that dialogue context.

Someone can speak first

A character who only exists when addressed is still mostly a menu.

The simulation now notices when a player enters an NPC's speaking range and can offer the character an opportunity to initiate contact. The model receives a reason and authored motivations, rather than a fixed line to repeat. It can generate a brief opening or choose to remain silent.

A worried craftsperson might ask for news. Someone who already knows the apprentice is home should not keep asking the player to find them. A visitor who stays nearby does not cause a fresh greeting on every simulation tick. Cooldowns and conversation state limit those opportunities, and direct player speech takes priority over unsolicited openings.

Speaking range is deliberately simple: the same outdoor cell or the same interior room. This is not yet a simulation of voices carrying through doors or across a crowded market.

Words do not change the rules

NPC dialogue is generated separately from the player's narrator. The returned speech is delivered as the NPC's speech, rather than passed through another model to invent a second version of the exchange.

Before a reply becomes persistent, the engine checks that the participants, their locations and the relevant conversation state still match. Generation happens outside those database transactions, so waiting for words does not require holding the world still.

A promise in the reply is still only a promise. “Bring me timber and I will build you a boat” does not create a crafting job, take payment or award an item. Those consequences need their own implemented mechanics. Conversation cannot bypass them by sounding convincing.

A beginning rather than a whole society

The same background service supports bounded local outdoor patrols and persistent NPC placement, including stationary characters inside rooms. Authors can revise character source and request live loading without resetting existing positions, concerns or memories. Deliberately moving an established character remains a separate operation.

Shops, full quests, pursuit and large populations with complex schedules are not implemented by this first slice. What exists is a smaller foundation: someone can occupy a place, have a reason to care, remember a visitor and speak without waiting for the player to open a menu.

In the authoring canvas, that person and their workshop are editable content. In play, the aim is for them to become something less interchangeable.

Someone who was here before you arrived, and may recognize you when you return.