Skip to content

Appendix B — Schema Reference

Formal schema definitions for content files.

Top-level game definition containing metadata, ruleset reference, and content references.

FieldTypeRequiredDescription
idstringyesUnique identifier
namestringyesDisplay name
kindenumyesnpc, enemy, item, object
statsRecordnoStat values per ruleset
resourcesRecordnoResource pools
tagsstring[]noClassification tags
aiAIConfignoCognition configuration
inventorystring[]noItem references
FieldTypeRequiredDescription
idstringyesUnique identifier
namestringyesDisplay name
zonesZoneDefinition[]yesSub-areas
FieldTypeRequiredDescription
idstringyesUnique identifier
namestringyesDisplay name
descriptionstringyesNarrative description
exitsExit[]noConnections to other zones
entitiesstring[]noEntity references
interactablesstring[]noInteractable object references
propertiesRecordnoBase zone properties
hazardsHazardDefinition[]noEnvironmental hazards
FieldTypeRequiredDescription
idstringyesUnique identifier
startNodestringyesEntry point node ID
nodesDialogueNode[]yesConversation nodes
FieldTypeRequiredDescription
idstringyesUnique identifier
currencystringyesCurrency used to unlock nodes
nodesTreeNode[]yesUnlock nodes
FieldTypeRequiredDescription
idstringyesUnique identifier
durationnumberyesTicks until expiry
effectEffectDefinitionyesPer-tick effect
stackablebooleannoWhether multiple can coexist
FieldTypeRequiredDescription
idstringyesUnique identifier
verbstringyesAction verb
costResourceCostnoResource cost to use
effectsEffectDefinition[]yesEffects on use
FieldTypeRequiredDescription
statsstring[]yesAvailable stat names
resourcesstring[]yesAvailable resource names
verbsstring[]yesAvailable action verbs
formulasFormulaMapyesNamed formula definitions

CampaignRecord (@ai-rpg-engine/campaign-memory)

Section titled “CampaignRecord (@ai-rpg-engine/campaign-memory)”
FieldTypeRequiredDescription
idstringyesAuto-generated identifier
ticknumberyesWhen the event occurred
categoryRecordCategoryyesaction, combat, kill, betrayal, gift, theft, debt, discovery, alliance, insult, rescue, death
actorIdstringyesWho performed the action
targetIdstringnoWho was affected
zoneIdstringnoWhere it happened
descriptionstringyesWhat happened
significancenumber (0-1)yesHow important this event is
witnessesstring[]yesEntity IDs who observed it
dataRecordyesAdditional event-specific data

RelationshipAxes (@ai-rpg-engine/campaign-memory)

Section titled “RelationshipAxes (@ai-rpg-engine/campaign-memory)”
FieldTypeRangeDescription
trustnumber-1 to 1Distrust → Trust
fearnumber0 to 1Unafraid → Terrified
admirationnumber-1 to 1Contempt → Admiration
familiaritynumber0 to 1Stranger → Intimate

MemoryFragment (@ai-rpg-engine/campaign-memory)

Section titled “MemoryFragment (@ai-rpg-engine/campaign-memory)”
FieldTypeRequiredDescription
recordIdstringyesLinks to CampaignRecord
saliencenumber (0-1)yesHow vivid/important to this NPC
emotionalChargenumber (-1 to 1)yesNegative to positive sentiment
consolidationenumyesvivid, faded, dim
ticknumberyesWhen this memory was formed
FieldTypeRequiredDescription
idstringyesAuto-generated identifier
claimstringyesHuman-readable claim
subjectstringyesEntity/topic the rumor is about
keystringyesBelief key
valueunknownyesCurrent claimed value (may have mutated)
originalValueunknownyesWhat was originally claimed
sourceIdstringyesOriginal witness entity ID
originTicknumberyesWhen the rumor was created
confidencenumber (0-1)yesHow confident spreaders are
emotionalChargenumber (-1 to 1)yesOutrage to admiration
spreadPathstring[]yesEntity IDs it passed through
mutationCountnumberyesHow many times value changed
factionUptakestring[]yesFactions that absorbed this
statusenumyesspreading, established, fading, dead
lastSpreadTicknumberyesLast tick this rumor was spread