Characters

Characters are the core of every story. That’s why Story focuses on making them feel as alive and dynamic as possible.

Overview

Story manages two types of characters: Player Characters and Non-Player Characters (NPCs). Both share core systems for memory, relationships, and world interaction, though they function differently in practice.

Note: Future updates will unify both under a single Character abstraction.

Character Types

Player Characters

  • Directly controlled by players

  • Memory and relationship data is stored but not actively used

  • Legacy preservation: if a player leaves, their character can become an NPC

  • Full integration with Minecraft player systems

Non-Player Characters (NPCs)

  • AI-controlled characters with dynamic personalities

  • Active use of memory and relationship systems

  • Context-aware conversations and decision making

  • Integration with Citizens plugin for in-game presence

Core Character Attributes

Basic Information

  • name: Character's display name used in dialogues and references

  • role: Character's profession or social position (currently informational)

  • storyLocation: Current or last known location in the world

  • context: Natural-language summary of personality, motivations, and current state

Visual and Audio

  • appearance: Prose description of physical appearance and clothing

  • avatar: The avatar displayed if ItemsAdder is present and included as a content.

  • customVoice: Custom voice ID for ElevenLabs voice generation

Behavior and Generation

  • randomPathing: Whether the NPC moves around randomly (default: true)

  • generic: Generic NPCs have no memories and generate temporary personalities

  • knowledgeCategories: List of knowledge areas the character is familiar with

Name Aliasing System

For dynamic NPC generation and management:

  • nameBank: Name bank for alias generation (e.g., "alboran.guard")

  • npcId: Unique identifier (Citizens ID, MythicMob UUID, etc.)

  • anchorKey: Deterministic generation key (spawner_id, region_cell, etc.)

  • canonicalName: Full name for dialogue (e.g., "Arik Mossveil")

  • displayHandle: Short name for Minecraft display (e.g., "A. Mossveil")

  • callsign: Optional differentiator (e.g., "Spearhand")

Memory System

All characters have a memory system that tracks:

Memory Structure

  • content: What happened or was learned

  • power: Emotional or narrative weight (0.0 to 1.0)

  • significance: Relevance to the character (higher = more important)

  • realCreatedAt: Real-world timestamp

  • gameCreatedAt: In-game time reference

  • lastAccessed: Most recent time the memory was referenced

Memory Types

  • Experiences: Personal events and interactions

  • Knowledge: Facts learned about the world

  • Relationships: Information about other characters

  • Events: Significant happenings in the world

Relationship System

Characters maintain relationships with other characters through:

Relationship Data

  • Description: What they label the relationship as

  • Score: Level of the relationship (-100 to 100)

Knowledge Categories

Characters have access to lore entries based on their knowledgeCategories field. These categories match the categories defined in lore files.

How Knowledge Works

  • NPCs with matching categories can access and reference that lore

  • Knowledge categories are defined in lore files (e.g., "brotherhood", "academic", "magical-theory")

  • Characters can only discuss topics they have knowledge of

  • Knowledge affects conversation topics and AI responses

Example

A lore file with categories ["brotherhood", "academic", "magical-theory"] would only be accessible to NPCs who have any of those categories in their knowledgeCategories field.

Character Context Examples

NPC Context

"Ezekiel is optimistic and speaks in a melancholic tone. He is motivated by protecting his home and struggles with obsessive tendencies. He has been hired by Cristofus to steal a shipment of military enhancement drugs from the Maverick's Revenge."

Character Creation

Manual Creation

Characters can be created manually by editing YAML files or using in-game commands.

AI Generation

The /locinitnpcs command can generate multiple NPCs with:

  • Contextually appropriate names and roles

  • Detailed backgrounds and personalities

  • Established relationships with other generated NPCs

  • Relevant memories and knowledge

Generic NPCs

Generic NPCs are temporary characters that:

  • Have no persistent memories

  • Generate temporary personalities for single interactions

  • Are useful for background characters or one-time encounters

Character Management

Memory Management

  • Memories are automatically created during conversations

  • Old memories can fade or be consolidated

  • Important memories are preserved longer

  • Characters can forget irrelevant information

Relationship Tracking

  • Relationships are updated based on interactions

  • Positive and negative actions affect relationship scores

  • NPCs remember how players have treated them

  • Long-term relationship consequences

Location Tracking

  • Characters remember where they've been

  • Location context affects character behavior

  • NPCs can reference their current or past locations

  • Movement and travel are tracked

Integration with Game Systems

Citizens Plugin

  • NPCs are spawned as Citizens entities

  • Physical presence in the Minecraft world

  • Player interaction through right-click or commands

  • Voice generation and audio playback

MythicMobs Integration

  • Special creatures can also be characters

  • Monster dialogue and interaction

  • Quest integration with hostile NPCs

  • Dynamic behavior based on character data

Quest System

  • Characters can give and receive quests

  • Quest progress affects relationships

  • Character knowledge influences quest availability

  • Memory of quest interactions

Best Practices

Character Design

  • Create distinct personalities and motivations

  • Give characters clear roles and purposes

  • Establish meaningful relationships between characters

  • Include relevant knowledge categories

Context Writing

  • Be specific about personality traits

  • Include current motivations and goals

  • Reference relevant relationships and events

  • Keep context updated as characters develop

Future Development

Unified Character System

  • Single abstraction for both players and NPCs

  • Consistent memory and relationship systems

  • Seamless transition between player and NPC control

  • Enhanced character persistence and development

Advanced AI Features

  • More sophisticated personality modeling

  • Dynamic character development over time

  • Complex relationship networks

  • Emergent character behaviors

Last updated