Generalize the emit rule beyond combat
Reword the state-emit rule to be scenario-agnostic: record any tracked change — health/resources, time, relationships/mood, status, progress, items/info — not just fight outcomes. Soften the demo's AI instructions to cover relationships and objectives alongside combat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
8c18541d4e
commit
b153bc6efe
@@ -4,7 +4,7 @@
|
||||
"prompt": "Dawn breaks grey over the treeline as you and Gwen crouch at the edge of the bandit camp. Smoke curls from a dying fire; three bedrolls lie empty. Somewhere ahead, the stolen caravan strongbox waits.\n\nGwen checks her bowstring and looks to you. \"Quiet, or loud?\"",
|
||||
"memory": "The player and Gwen, a loyal ranger ally, are raiding a bandit camp to recover a stolen strongbox. The player is a capable adventurer. This is a dangerous but winnable encounter.",
|
||||
"authors_note": "Keep it tense and consequential. Reckless moves should cost health; clever ones should pay off. Gwen reacts to how the player treats her.",
|
||||
"ai_instructions": "Write in second person, present tense. End each reply where the player can act. Let the world state guide the fiction — if the player is badly hurt, show it. In any fight, reflect the outcome in the numbers every turn: reduce the health of whoever is struck, raise the bandit leader's aggression as he is pressed, and adjust Gwen's trust based on how the player treats her.",
|
||||
"ai_instructions": "Write in second person, present tense. End each reply where the player can act. Let the world state guide the fiction — if the player is badly hurt, show it. Reflect what happens in the numbers each turn: change health when someone is hurt or healed, shift Gwen's trust based on how the player treats her, move the leader's aggression as the situation escalates or calms, and mark milestones as they are reached.",
|
||||
"tags": "demo, rpg, world-state, combat, short",
|
||||
"stat_schema": {
|
||||
"world": {
|
||||
|
||||
@@ -20,17 +20,18 @@ STAT_SECTIONS = ("world", "player")
|
||||
# Appended once to the system prompt so the model knows how to report changes.
|
||||
EMIT_RULE = (
|
||||
"You maintain a numeric world state. Treat your own narration as authoritative: "
|
||||
"whenever what you write implies a change — someone takes damage or heals, time "
|
||||
"passes, an emotion or relationship shifts, a fight intensifies, an item is gained "
|
||||
"or lost, or an objective is completed — you MUST record it, including the numbers, "
|
||||
"not just on/off flags. After your narration, append a fenced code block labelled "
|
||||
"`state` with a JSON object of the CHANGES ONLY, as deltas (not new totals). Update "
|
||||
"every stat the scene affected this turn, not only the easy ones. Use the paths "
|
||||
'exactly as shown in the world state: "player.hp", "world.day", "npc.<id>.<stat>" '
|
||||
'(e.g. npc.gwen.trust — use the id in parentheses, not the display name); '
|
||||
'"flags.<name>": true or false to toggle an on/off state; and "milestones.<id>": '
|
||||
"true when an objective is completed. Send only things that actually changed and "
|
||||
"never restate unchanged values; if truly nothing changed, omit the block. Example:\n"
|
||||
"whenever what you write implies a change to any tracked value — health or resources "
|
||||
"going up or down, time passing, a relationship or mood shifting, a status turning on "
|
||||
"or off, progress toward a goal, an item or piece of information gained or lost — you "
|
||||
"MUST record it, including the numbers, not just on/off flags. After your narration, "
|
||||
"append a fenced code block labelled `state` with a JSON object of the CHANGES ONLY, "
|
||||
"as deltas (not new totals). Update every value the scene affected this turn, not only "
|
||||
'the obvious ones. Use the paths exactly as shown in the world state: "player.<stat>", '
|
||||
'"world.<stat>", "npc.<id>.<stat>" (use the id in parentheses, e.g. npc.gwen.trust, '
|
||||
'not the display name); "flags.<name>": true or false to toggle an on/off state; and '
|
||||
'"milestones.<id>": true when an objective is completed. Send only things that actually '
|
||||
"changed and never restate unchanged values; if truly nothing changed, omit the block. "
|
||||
"Example:\n"
|
||||
'```state\n{"player.hp": -15, "npc.gwen.trust": 5, "milestones.escaped": true}\n```'
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user