worldbox-observer-mod/docs/scoring-model.md
2026-07-21 13:35:07 -05:00

2 KiB

Scoring model

Global formula: IdleSpectator/scoring-model.json

Per-event inventory (strength + prose): IdleSpectator/event-catalog.json

Story commitment (arcs / aftermath / ledger): story-planner.md

  • scoring-model.json - margins, multipliers, rarity caps, soft-Duel / variety valve knobs
  • event-catalog.json - every authored event id (happiness, status, worldLog, plots, decisions, …)
    • Decisions use action (clause after "decides to …")
    • Most other domains use label
    • Happiness uses variantsWithRelated / variantsWithoutRelated
    • Optional species / character bonuses

Visual tracker (open beside chat): scoring-model canvas

Variety policy (0.28.28)

TotalScore = EventStrength + scaleBonus + char*w + visual*w + novelty*w.

Hard sticky combat (margin 50, MaxWatch 60) is only for Skirmish+ or notable-pair Duels.

Anonymous / single-notable Duels are soft sticky: MaxWatch 24, variety valve at 8s, yield to Story peers after 8s.

Founding tips come from new_city / new_kingdom meta outcomes, not decision intent.

Consecutive shows of the same variety arc (e.g. duel → duel) subtract repeatArcPenaltyPer from TotalScore (capped), resetting when a different arc is shown.

A rolling tip window also adjusts score by frequency: over-shown arcs lose up to arcOverSharePenaltyMax, rare/absent arcs gain up to arcUnderShareBoostMax, with an extra combat monopoly penalty above arcCombatShareTarget.

Fruit-bush foraging is fill-band strength so it does not crowd the camera.

Live combat holds the camera until the scrap goes cold (see who wins); variety peers cut after the fight ends.

Edit the weights block in scoring-model.json to change live scoring formula knobs.

Edit event-catalog.json to change what each event is worth and what it says.