A developer building a first-person RPG in GameMaker wanted a companion that feels like an actual character, not a traditional NPC — and deliberately skipped the LLM route. Instead: persistent memory, emotional states, contextual reactions, and nearly 7,000 lines of hand-authored behavioral data describing what the companion remembers, how she reacts, and how her psychological state shifts through the game.

The practical notes:

  • Responses are generated from the stored behavioral database when the player types messages — no model inference involved.
  • The data grew large enough that it moved out of the GameMaker project into an external .ini file.
  • The trade is explicit: authored systems replace model weights with design labor.

The design labor is the real cost. 7,000 lines of behavioral data is the price of determinism — but you get zero inference cost, no hallucination, no per-message latency, and full control over the character.

A solid counterpoint to the default “slap an LLM on the NPC” pattern, and the author’s closing question — how do others handle memory, emotional states, and large behavioral datasets in non-LLM companions? — is worth reading the thread for.