Fandom

Fandom turns audience reception into enduring social bonds. When an elf Loves a composition at a revel, they become a fan of the composer -- and fans shape the composer's creative life long after the revel ends. They boost the composer's social inspiration when nearby, slowly deepen their relationship over time, and occasionally wish aloud that the composer would make more work. Fandom is also the single largest contributor to prestige.

Overview

Every elf carries a Fandom memory tracking up to 5 composers whose work has moved them. The roster is built exclusively from Love reactions at revels -- not friendship, not proximity, not aesthetic alignment. To be someone's fan is to have loved their work, concretely, at a specific performance.

Once a fandom exists, the fandom_system applies its effects every 50 ticks. A fan within 4 tiles of a composer they're a fan of:

  • boosts the composer's social inspiration (+2),
  • strengthens their own relationship with the composer (+1),
  • and, on rare rhythmic intervals, emits a FanRequest cultural event.

These effects are small per tick but compounding. A composer who spends time near their fans accumulates social inspiration for future work and slowly turns fans into friends. A composer who never leaves their workshop gains none of the benefit, even if they have many fans on paper.

How It Works

Becoming a Fan

During a revel, when the audience reacts to a composition, each attendee's reaction is computed from their aesthetic position relative to the piece. If an attendee's reaction is Love and they are not the composer themselves, the system calls record_love on that elf's Fandom component, passing the composer's name and the current tick.

The threshold to form a fandom is one Love reaction. The first Love from a non-self audience member immediately creates a fandom entry and fires a FandomFormed cultural event. Subsequent Love reactions from the same fan increment the entry's love_count but do not emit another event -- the fan is already a fan.

TriggerEffect
First Love from fan X for composer Y (X != Y)Creates FanOf { composer_name: Y, love_count: 1 }, emits FandomFormed { fan: X, composer: Y }
Subsequent Love from X for YIncrements love_count (saturating at u8 max), no event
Love from the composer for their own workIgnored -- no self-fandom

Source: crates/er-sim/src/sim/systems/revel.rs, Love-reaction block around fandom.record_love(&comp.composer, tick); crates/er-sim/src/sim/components.rs, Fandom::record_love.

The 5-Fandom Cap

Each elf tracks at most 5 fandoms (MAX_FANDOMS = 5). When a sixth Love would create a new entry, the system sorts the full list by love_count (highest first) and truncates to 5. The weakest fandom -- the composer the elf Loved the fewest times -- is pruned.

This means an elf's five fandoms are effectively their five most-Loved composers. An elf who Loves six different composers once each will lose one of them; the prune is deterministic (sort order) but the displaced composer is whichever tied entry landed at index 5 after sorting.

Fandoms do not decay on their own. The only way to lose a fandom is to be crowded out by a stronger one. This makes fandom memory asymmetric: easy to acquire (one Love), sticky until bumped.

Source: crates/er-sim/src/sim/components.rs, Fandom::record_love -- prune branch at self.fans_of.len() > Self::MAX_FANDOMS.

The Fandom Tick System

The fandom_system runs every 50 ticks (skipping tick 0). On each cycle, it walks every elf with at least one fandom and checks distance to each composer they're a fan of.

A composer within Manhattan distance 4 of the fan triggers three effects on that tick:

EffectTargetMagnitudeSaturation
Social inspiration boostComposer+2Saturating add (caps at u8 max)
Relationship strengthenFan's record of composer+1 strengthClamped in Relationships::adjust
Fan requestCultural eventFanRequest { fan, composer }Only when tick % 500 == 0

Multiple fandoms in range stack: a composer with three nearby fans gets +6 social inspiration that cycle. A fan with two nearby composer-idols boosts both. The effect is symmetric in that fans create value for composers, but asymmetric in flow -- only the composer's inspiration is touched, not the fan's.

The 50-tick cadence means fandom effects are slow and ambient rather than immediate. A fan moving in next door to their favorite composer will begin nudging the composer's inspiration within a handful of 50-tick cycles, not instantly.

Source: crates/er-sim/src/sim/systems/fandom.rs, fandom_system -- guard tick.is_multiple_of(50) && tick != 0, proximity check dist <= 4, effect application block.

Fan Requests

At ticks divisible by 500 -- roughly once per in-game day -- each in-range fan/composer pair emits a FanRequest cultural event of the form "X wishes Y would compose more." These are flavor events at EventPriority::Minor priority, archived but not surfaced as popups.

Importantly, the request does not cause the composer to actually compose. It's narrative colour, not a task directive. The composer's own needs, aspirations, and policies still drive what they make and when. Fan requests are the atmospheric signal that fandom exists in the world -- gossip that this elf has admirers -- rather than a causal pathway.

Source: crates/er-sim/src/sim/systems/fandom.rs, FanRequest emission block at tick.is_multiple_of(500); crates/er-sim/src/sim/events.rs, FanRequest variant and EventPriority::Minor classification.

Values & Formulas

Key Constants

ConstantValueRole
MAX_FANDOMS5Per-elf fandom roster cap
Fandom tick cadenceevery 50 ticks (skipping 0)Proximity scan and effect application
Proximity thresholdManhattan distance ≤ 4Required for effects to apply
Social inspiration boost+2 per in-range fan per cycleApplied to composer Inspiration.social (saturating)
Relationship boost+1 per in-range fandom per cycleApplied to fan's Relationships entry for composer
Fan request cadenceevery 500 ticksFanRequest event emitted for each in-range pair

Proximity Arithmetic

Manhattan distance is |fan.x - composer.x| + |fan.y - composer.y|. At threshold 4, in-range tiles form a diamond around the composer:

    .  .  X  .  .
    .  X  X  X  .
    X  X  C  X  X
    .  X  X  X  .
    .  .  X  .  .

Where C is the composer and X is an in-range tile. A fan anywhere in this 13-tile diamond contributes to the composer's inspiration that cycle.

In a typical settlement layout, this means fandom effects trigger when fans and composers share a clearing, a dining area, or an adjacent workshop -- everyday social spaces. It does not reach across large settlements or require deliberate pilgrimage.

Interaction with Prestige

Fandom is the largest single input to prestige. The formula is:

Prestige = (recent_loves x 5.0) + (fans x 10.0) + (compositions x 2.0) - decay

Each fan contributes +10 to the composer's colony-wide prestige score. Since a single Love reaction creates a fandom, and a single fandom is worth 2 Love reactions' worth of prestige, fandom formation is the moment a composer's audience reception crosses from ephemeral to durable reputation.

Because the 5-fandom cap is per-fan (not per-composer), a composer can accumulate arbitrarily many fans across the colony. A widely-loved composer easily reaches Renowned or Legendary tiers on fan count alone.

Interaction with Revel Scoring

Fandom does not directly shift revel scoring; reactions are computed from the attendee's aesthetic position relative to the composition, not from whether they're a fan. But fandom feeds back into revels indirectly:

  • Composer inspiration from nearby fans (+2 social per cycle) accumulates into stronger compositions over time, which in turn produce more Love reactions at future revels, which in turn build more fandom.
  • Relationship strengthening (+1 per cycle per nearby fandom) turns fans into friends, which feeds friendship-bonus dynamics elsewhere in the social fabric.

This is the core positive feedback loop for cultural celebrity: Loved work creates fans, fans create inspiration, inspiration creates more Loved work.

Strategy & Play

Reading the Fan Economy

  • One Love is the only threshold that matters. You don't need a composer to blow the audience away -- a single "Love" reaction from a single attendee starts a fandom. Revels with diverse audiences are therefore efficient at spreading fandom: each attendee whose taste aligns can become a new fan.
  • The 5-fandom cap is per-listener, not per-composer. An elf who has Loved 5 different composers is at capacity; their next Love for a new composer displaces their least-loved existing fandom. Mature cultures with many active composers will see fandom turnover, not just accretion.
  • Fandoms stick until crowded out. There's no time-based decay on the Fandom component itself -- a fan who never sees their idol again still counts. This stabilises prestige for composers who've had breakthrough revels.

Layout Implications

Because the proximity threshold is Manhattan ≤ 4, settlement layout matters:

  • Composer housing near social hubs (dining, gathering spots, revel grounds) maximises fan-adjacency, accelerating inspiration gain.
  • Isolated workshops prevent fan-proximity effects even if the composer is widely Loved. A reclusive composer banks prestige (fans count colony-wide) but misses the inspiration and relationship compounding.
  • Fan-heavy clearings become natural creative zones: the ambient +2 social inspiration per cycle from two or three nearby fans keeps a composer's inspiration full, enabling sustained output.

Reading FandomFormed and FanRequest Events

  • FandomFormed appears in the revel recap and event log -- a one-shot "fan X became a fan of composer Y" signal. Track these to see which compositions are building durable audiences.
  • FanRequest appears as ambient minor-priority events: "X wishes Y would compose more." These are indicators of ongoing cultural presence rather than action items. They do not change composer behaviour -- the composer still acts on their own aspirations.
  • Revels -- where fandoms are formed. Love reactions during performances create Fandom entries and FandomFormed events.
  • Prestige -- fandom is the highest-weighted input to prestige scoring (+10 per fan).
  • Relationships -- fandom-driven proximity effects strengthen the fan's relationship with the composer, potentially escalating into friendship.
  • Inspiration -- composers gain +2 social inspiration per cycle per in-range fan.
  • Compositions -- compositions are the artefacts that, when Loved, create fans in the first place.