狩りの手数レポートの読み方
数値は stats/hunt.yaml にあります。
tests/diagnostics/huntStatsReport.test.ts が、同梱の定義(src/assets/world-codex/*.yaml)のまま
遭遇を実際に通して数えたものです。獣・武器・怪我の定義を変更したら再生成します。
npm run stats:hunt
この文書は手書きで、再生成しても書き換わりません。 持つのは読み方——何を測ったか、どこに線を 引いたか、何を数えていないか——だけです。数値そのものは1行も書きません(書けば、再生成した YAMLとずれます)。
YAMLの節
unit は、そのレコードの測定値の単位です(turns は手番の数=tick、wounds は怪我の枚数、
percent は割合)。
| 節 | 中身 |
|---|---|
meta |
殴る人、数えた獣と武器の数、シードの数、打ち切りの手数 |
wariness |
獣ごとの、現れたときの警戒と、そこから近寄れる・掴めるまでの手数 |
encounter |
獣×武器×逃げ道の本数ごとの、決着までの手数と、殴る側が負った怪我の分布 |
ending |
同じ組み合わせごとの結末の割合(倒した・逃げられた・立ち去られた・決着しなかった) |
beast_move |
獣×警戒の段×意識の段×間合いごとの、1手の顔ぶれ |
tracking |
一撃だけ入れて退いた後、獲物が世界に残る手数と、その結末 |
この表とYAMLが食い違うと npm test が赤くなります。 表に挙げた節がYAMLに在って空でないことと、
表に無い節がYAMLに無いことの両方を、生成元のテストが見ます。
測り方
組み方の線は src/analysis/huntEncounter.ts の冒頭が持ちます。要点だけ挙げると、
- 密林に狩人1人と獣1頭だけを置く。島の生成は通しません。 通すと、同じ獣に何手かかるかが
その周の島の形に左右されます。狩人は固定(
metaのhunter)——当たり所の重みは殴る人の狙いを 土台に積む(Skills.md5節)ので、腕の差が混ざらないようにします。 - 殴る側は毎手番かならず武器を重ねます。 「殴るのに1 tick(15分)」なので、殴ることがそのまま
時間の経過になり、同じ回に獣の1手も入ります(
HuntingSystem.md2節)。 外しても振り続けるので、上手い引きを選んだ結果ではありません。 - 引きは固定しません。 シードごとに乱数の列を回すので、出るのは「この引きならこうなる」では なく「何回に1回こうなる」です。
- 逃げ道は0本と1本だけを見ます。 逃走の候補の重みは道の本数を見ない(1本選ぶだけ)ので、 2本目から先は1本と同じです。分かれ目は「逃げ道が在るか」の1点だけ。
- 足元に物は置きません(
beast_moveを除く)。持ち去りと体当たりの候補は相手が居なければ 抽選に出ないので、狩りの手数だけを見る表からは外しています。
決着までの手数(encounter・ending)
turns は、次のどれかが起きた手番の数です。決着しないまま meta の encounter_turn_limit に
届いた遭遇は、そこで打ち切って undecided に数えます(打ち切りぶんは turns の分布にも
入っているので、届かない組み合わせの平均は打ち切りに引っ張られます)。
| 結末 | 意味 |
|---|---|
felled |
獣の血が尽きた。死体になる |
fled |
獣が隣の土地へ逃げた |
left |
獣が立ち去った(世界から消えた) |
undecided |
打ち切りまで決着しなかった |
wounds_taken は、殴る側に刺さっている怪我の枚数です(InjurySystem.md)。
深さは見ていないので、牙で突かれた1枚と噛まれた1枚が同じ1として並びます。
1手の顔ぶれ(beast_move)
手番を1つだけ回して数えます。 2手目からは、その1手が変えた世界(くわえた物・逃げた先)を 見ることになり、素の配分ではなくなるためです。足元には持ち去りの相手と体当たりの相手を1つずつ 置きます——置かないと、その2つの候補は相手が居ないまま抽選に出ません。
lurk は様子をうかがった手番です。何も起きないので何も告げられず、告げられなかった回として
数えています(HuntingSystem.md 5節)。
braced_reach が真の行は、狩人が間合いのある武器(槍)を構えているだけで振っていないときの
顔ぶれです。振らせると警戒と傷が動いてしまい、構えの効きだけを読めなくなります。
consciousness は、体調が押し下げた後の意識です(HuntingSystem.md
5.5節)。濁らせた当人(痛み・失血・衝撃)は問わず、合流した後の値を直に置いています——押し引きが
読むのは合流した後の段だけなので、原因ごとに分けて測る意味がありません。気を失った段は測って
いません——この押し引きは意識が濁っている間のもので、気を失った相手では警戒が消えたぶんが
別に効きます。
その段へ届くかどうかは、この表からは読めません。 意識を直に置いて測っているからで、狩りの最中に
どの段が立つか(foggy はまず立たない)は HuntingSystem.md 5.5節が持ちます。
追跡の窓(tracking)
一撃だけ入れて、道の通っていない土地へ退いたあと、獲物が世界に残る手数です。退いた後は
逃げられても終わらないので、turns は「逃げた先を含めて、その個体が居なくなるまで」を指します。
外した回も混ぜています。 傷の付かなかった個体がどうなるか(丸1日で立ち去る)も窓のうちなので、
endings の割合と合わせて読みます。
felled は血が尽きたぶんで、3つが混ざります——その一撃で尽きた個体(小さい獣ほど多く、min の
側に出ます)、退いた後に傷の出血で尽きた個体、そして傷が膿みきって倒れた個体(獣は自分で傷を
洗えないので、深い傷は必ずここへ行き着きます。median の側に出ます)。left は立ち去ったぶんで、
傷が付かなかったか、癒えきった個体です。
数えていないもの
- 腕の上達。狩猟の腕は殴るたびに伸びますが、遭遇1回の中で卓が変わるほどは伸びません。 遭遇どうしをまたぐ上達(何頭目から楽になるか)は数えていません。
- 道具の消耗。振れば耐久が減りますが、1回の遭遇で尽きる長さではないので、同じ武器で
何頭獲れるかはここでは出しません(
DurationStats.mdが回数を持ちます)。 - 2頭以上との対峙。同時に相手取れるのは設計の帰結ですが、ここでは1頭ずつ数えています。
- 罠。掛けて獲る側は
TrapSystem.mdの担当です。