for the {{B.I.O {{D.O.M.E }}}} dome duel · format biodome-duel/1 · ← back to the dome · sample-agent.md
A Markdown file that starts with YAML front matter between two --- lines. Only key: value lines and one level of indented blocks are read; there are no lists or anchors. After the front matter comes free Markdown about your agent, and optionally one fenced block named rules.
---
name: Rook
color: "#4fd1c5"
crystal: aquamarine
author: you
style:
learns: 0.45 # how fast memory moves (0..1)
observes: 0.35 # how often a shown tell is caught (0..1)
probes: 0.20 # exploration: trying moves that are not yet best (0..1)
reaction:
observe: 0.30 # seconds to see a tell
respond: 0.20 # seconds to answer it
sub_id: 0.10 # reflex: emergency dodge when only this fits
gradient:
threshold: 3 # 1x at 0.5, 2x at 2, {{trigger::hide}} at this value (2..5)
decay_s: 3 # calm fades the gradient (e-fold seconds)
bad_outcome: 0.2 # extra gradient for a wrong read (0..1)
hide: best # best | block | dodge
attack:
feint: 0.35 # share of feints when attacking
conceal: 0.30 # chance your tell is hidden
bluff: 0.10 # chance a shown tell lies
notes: "patient, counters feints, hides early"
---
# Rook
Free markdown about your challenger. Nothing here is run.
```rules
open: feint # punch | feint | any (first attack)
counter_bias: 0.2 # 0..1, leans answers toward COUNTER
after_hit: hide # hide | counter | none
```
| key | type · range | default | what it does in the duel |
|---|---|---|---|
| name | 1–24 of A–Z a–z 0–9 space . _ ' - | required | shown on the scorecard. The built-in names Patricia, Pattycakes, Kelvin and Sparring bag get " (challenger)" added. |
| color | "#rrggbb" | crystal colour | crystal and name colour |
| crystal | amethyst, citrine, rose-quartz, quartz, emerald, sapphire, ruby, topaz, obsidian, opal, jade, garnet, aquamarine, moonstone, electrum, peridot, onyx | quartz | the shape of your sapphon in the dome |
| author | text ≤ 40 | – | shown on the card |
| style.learns | 0..1 | 0.4 | learning rate of the memory crystal (0.1 + 0.4 × learns) and how much your attacks adapt to the opponent's habits |
| style.observes | 0..1 | 0.4 | chance to catch a shown tell = 0.4 + 0.6 × observes |
| style.probes | 0..1 | 0.2 | exploration: chance to try a move that isn't your current best (fades as you learn) |
| style weights are normalised to sum to 1, like the three NES-app streams (ls :: patricia :: learns,reacts · toph :: centers,observes · rs :: probes,warily). | |||
| reaction.observe | 0.05..1 s | 0.3 | a tell helps only if observe + respond ≤ its lead time (0.25–0.60 s) |
| reaction.respond | 0.05..1 s | 0.2 | |
| reaction.sub_id | 0.05..0.5 s | 0.1 | reflex: if a punch tell came too late for the triad but sub_id fits, you dodge on reflex |
| gradient.threshold | 2..5 | 3 | 1x at 0.5, 2x at 2 (defence +2), {{trigger::hide}} at this value; it learns itself after 3 hides (≥80% paid → −0.1, <50% → +0.25) |
| gradient.decay_s | 0.5..10 s | 3 | calm fades the gradient (e-fold time; exchanges are 1.2 s apart) |
| gradient.bad_outcome | 0..1 | 0 | extra gradient whenever an exchange goes against you (Pattycakes uses 0.5) |
| hide | best · block · dodge | best | the move you commit to while hiding (best = whichever your memory rates higher) |
| attack.feint | 0..1 | 0.35 | share of feints when attacking (before adapting) |
| attack.conceal | 0..0.9 | 0.3 | chance your tell isn't shown at all |
| attack.bluff | 0..0.5 | 0.1 | chance a shown tell points the wrong way |
| notes | text ≤ 280 | – | shown as text |
One fenced block whose info string is rules, holding plain key: value settings. Only these three keys exist:
| open | punch · feint · any | your first attack |
| counter_bias | 0..1 | leans your answers toward COUNTER (adds 4 × bias to its memory score) |
| after_hit | hide · counter · none | what you do on the exchange after a hit lands on you |
__proto__, constructor and prototype keys are refused; numbers are clamped to their range.rules is shown as text, and the page tells you it was not run.#fragment, which is never sent to any server. Results are plain JSON, and importing one replays it and verifies it rather than trusting it.24 exchanges with the attacker alternating. Damage taken: PUNCH vs DODGE 0 · vs BLOCK 3 · vs COUNTER 10; FEINT vs DODGE 4 (off balance) · vs BLOCK 0 · vs COUNTER: the attacker takes 8. Points = damage dealt. Seeded (mulberry32), so a bout with the same seed and the same starting crystals replays identically, which is what makes result files verifiable.