航海のレポートの読み方

数値は stats/voyage.yaml にあります。 tests/diagnostics/voyageStatsReport.test.ts が、定義(src/assets/world-codex/*.yaml)だけから 計算したものです。海区の網・見張りの回数・素の横断時間・風の受け方・季節が配る風の重みを変更したら 再生成します。

npm run stats:voyage

この文書は手書きで、再生成しても書き換わりません。 持つのは読み方——何を測ったか、どこに線を 引いたか、何を数えていないか——だけです。数値そのものは1行も書きません(書けば、再生成した YAMLとずれます)。

YAMLの節

節 中身
meta 海区の数・針路の数・日数の分母(1日ぶんの自由時間)
zones 海区ごとの本土までの残り海区数・見張りの回数と時間・素の横断時間・押し流しまでの時間・出る辺
zone_yields 見張り1回が何を返すかの割合と、航路が現れるまでに湧くものが1度以上立つ割合
zone_finds 見張り1回あたりの期待個数。返るものだけ(重み0の候補は落とす)
courses 出航地点×針路の、風を乗せない合計
wind_legs 風が1区間の横断時間へ乗せる分
course_wind 同じ風が通しで吹いた場合の合計
course_season 季節が配る風の重みで期待した合計

この表とYAMLが食い違うと npm test が赤くなります。 表に挙げた節がYAMLに在って空でないことと、 表に無い節がYAMLに無いことの両方を、生成元のテストが見ます。

針路の名前

course が shortest なのは、その出航地点から本土まで最も区間の少ない針路です。それ以外が detour——今の網では分かれ道が1箇所なので、どの出航地点からも針路は2本になります (Voyage.md 3節)。3本以上になったら再生成が投げます——2本を前提にした 名前では足りないので、そのときは名前の付け方を決め直すことになります。

legs は渡る回数で、通る海区の数と同じです(最後の1本が本土へ着く)。lookouts は通る海区それぞれで 航路が現れるまで見張った回数の合計で、渡った先の海区の見張りも含みます——引き返さずに進む限り、 どの海区でも先へ出る辺は自分で見つけることになります。

日数の分母

days は、合計の分を1日ぶんの自由時間(meta の daily_free_minutes)で割ったものです。島の 山を日数で数えるときの分母(ContentSkeleton.md 4節)とまったく同じで、 出どころも1箇所です(src/analysis/balanceTables.ts の DailyLabour)。航海の日数と島側の労働を 同じ物差しで並べるためで、別に引き算をすると生成物ごとに換算が変わります。

海の上で何時に何ができるかは、この割り算に現れません。 見張りは明るく穏やかなうちだけ、横断は夜でも 嵐でもできる(Voyage.md 3.10節)という差は、1日のどこに時間が入るかの話であって、 要る時間の量ではありません。

何を乗せて、何を乗せていないか

実りの読み方

zone_yields の3つ(barren・foraged・spawned)は見張り1回の卓を割ったもので、和は100です。

zone_finds の object は型の名前で、仕様書が使う呼び名とは別です——流木は太い枝2本、漂流物は 太い枝とロープなので、1行が1つの呼び名に対応するとは限りません。

腕前は乗っていません。 湧くものの重みは狩猟の腕を土台にしますが(Skills.md 5節)、定義だけから解くと素の0なので、ここに出るのは素人の卓です。腕が上がるとその海区は魚と鳥の側へ 寄ります。

このレポートは判定を出さない

遠回りを選ぶ理由があるか、季節の窓が期限として働くかは、ここの数字を読んで Voyage.md が決めます。ここが出すのは、その判断に要る差だけです。