worldbox-observer-mod/docs/scoring-model.md
DazedAnon 5cdea1930a Enhance combat handling and introduce frequency-based scoring adjustments.
- Implement new commands for marking combat cold and pushing interest arcs
- Update InterestDirector to manage forced cold combat states for peers
- Introduce frequency adjustments for scoring based on recent arc representation
- Refactor scoring weights to include combat urgency and frequency penalties
- Increment version to 0.28.38 in mod.json and scoring-model.json
2026-07-17 19:27:07 -05:00

1.9 KiB

Scoring model

Global formula: IdleSpectator/scoring-model.json

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

  • 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.