住居(洞窟・小屋)

概要

本ドキュメントは、プレイヤーが拠点とする住居の内容と、その組み立て方をまとめたものです。仕組みとして使う slots・passives の文法は GameElementDefinition.md 7 節・8 節、 場所としての構造(location trait のスロット)は ExplorationSystem.md 1 節を参照してください。

本ドキュメントは検討結果であり、確定仕様書ではありません。未決事項は 6 節に整理しています。 建てる住居は未実装ですが、1 節の構造スロットは筏で実物になっています (Voyage.md 2.1 節。帆を1枠だけ受け入れ、部品が modify で親を修飾する形)。 洞窟の側は実装済みです(5 節)。

1. 住居は「部品を差し替える場所」

住居は、レシピで作り直して置き換える物ではなく、構造部品を出し入れできる場所として扱います。 location trait が持つスロット(ExplorationSystem.md 1.1 節)に加えて、 構造部品用のスロットを持たせます。

object_defs:
  dwelling:
    traits: [location]
    slots:
      structure:
        cells:
          - {accept: {tag: foundation}, max: 1}
          - {accept: {tag: wall}, max: 1}
          - {accept: {tag: roof}, max: 1}

壁の追加は、空いている枠へ壁を入れるだけです。板壁への更新は、葉の壁を外して板の壁を入れるだけです。 中に置いた物も、中にいるプレイヤー自身も、別のスロットにいるので影響を受けません。

住居に destroy と spawn を使ってはいけません。中身が付随的な入れ物(Containers.md の編み籠→背負い籠)であれば消して湧かせ直す形で構いませんが、住居は中にプレイヤーが入るため、その操作が 成立しません。

2. 部品が親を修飾するので、住居の型は1つ

各部品は、自分が住居へ何を寄与するかを passives の modify で宣言します。

object_defs:
  thatch_roof:
    tags: [roof]
    passives:
      - modify:
          parent:
            rain_protection: 80
            insulation: 30
  plank_wall:
    tags: [wall]
    passives:
      - modify:
          parent:
            wind_protection: 90
            comfort: 20

comfort は場所が持つプロパティ(location trait)で、そこに居るキャラクタが継ぎ、ホームシックの 募りを抑えます(Characters.md ホームシック節)。住居は 1 節のとおり location trait を 持つ場所なので、部品の modify はそのまま住居自身の comfort へ届きます。 住居は建てた土地の中にある 場所なので、その土地の comfort・company(囲いの獣)は住居の中にも届きます(同節)。

住居の性能は、その時点で入っている部品の寄与の合計として導かれます。「葉壁の小屋」「板壁高床の小屋」と いった段階ごとの型は作りません。 型は dwelling 1つで、板壁と葉屋根の組み合わせのような中間状態も、 追加の宣言なしに表現できます。住居は自分がどの段階にあるかを知りません。

この形にすると、次が専用の仕組みなしに成立します。

2.1 部品ごとの comfort

部品 comfort
葉の屋根 5
葉編みの外壁 8
板の壁 20
高床 10

homely(20)へ届くのは高床まで進めてからで、柱と葉の屋根だけでも、葉の壁を足しただけでも 届きません(3 節の段階)。そして板の壁まで揃えても、合計は snug(50)に届きません——60日目からの 募りは建て進めた家が止め、90日目からの募りはどの家も止められない、という形です (Characters.md ホームシック節)。「どうせ建てる家」を 1つ置けば済む圧にしないための線で、そこから先は住居とは別に据える設えが払います (ContentSkeleton.md 3 節の系統12)。

住居の点数は、掛かる手間に比例させません。 家は雨風と虫と湿気のために建てる物で、居心地はその 副産物です——比例させると、建てる手間(同 4 節の系統10)だけで snug を大きく越えます。手間に 比例するのは、据えるためだけに作る設えのほう(src/assets/world-codex/furnishings.yaml)。

壁の工法違い(4 節の土壁・石積み)は、同じ枠に入る別の部品として同じ物差しへ乗せます。点数を置くのは、 それを部品として表すかが決まってから(6 節)。

3. 段階

熱帯を舞台とするため、屋根は最上位でも葉のままとします。葉葺きは断熱性が板より高く、勾配があれば雨も 流れます。板葺きは継ぎ目から漏れ、日射で室内が暑くなります。

最大の快適性の向上は高床です。地面から離すことで、湿気・虫・浸水から一度に離れられます。

段階 内容 要求
1 柱+葉の屋根 建築 novice
2 葉編みの外壁 建築 basic + 繊維・編み basic
3 高床 建築 skilled + 指物・接合 basic
4 板の壁・床 建築 skilled + 木材加工 skilled(板が要る)

高床への変更は、壁を一度外さなければ行えないものとします。現実の手間を再現しつつ、住居という場所は 消えないため、中の物とプレイヤーはその場に残ります。

手間は1回では払えません(1回の操作は1時間まで、../engine/ActionSystem.md 6.3節)。半日がかりの工事は、住居の側が進み具合を持ち、手を何度か入れる形になります。

interactions:
  raise_floor:
    trigger: menu
    duration: 60
    conditions:
      - not:
          - {slot: structure, matches: {tag: wall}}
      - {prop: raising_progress, lt: 8}
    add: {self: {raising_progress: 1}}

4. 工法ごとの得意分野

土地によって手に入る材料が違うため、工法を複数用意します。どれも全域で他を上回らないようにします。

工法 速さ 耐久 快適性 要求される土地
柱+葉 速い 脆い 低(雨はしのげる) どこでも
土壁 中 中(雨に弱い) 中 粘土
板+高床 遅い 高 最高 木が豊か
石積み 最も遅い 最高 中(湿る) 岩がち

土壁は、編んだ下地に粘土を塗る形(wattle and daub)とします。 日干しレンガは雨で溶け、焼成レンガは窯と 大量の燃料(=木)を要するため、「木が乏しい土地の選択肢」という狙いを満たしません。土壁なら 建築 + 繊維・編み の連言だけで成立し、新しい技術を要求しません。

石積みはモルタルなしの空積みとします。 一人でも建てられますが、石の運搬と積み上げに莫大な時間がかかり、 石が湿気を吸い上げるため高温多湿では快適性が上がりません。最上位ではなく、木が乏しい岩がちな土地での 選択肢として位置づけます。

5. 洞窟との住み分け

洞窟は、建てた住居の下位互換にはしません。下位互換にすると、洞窟を引けなかったプレイヤーが同じ状態へ 追いつくために働くだけになり、選択が発生しないまま負担だけが変わります。

洞窟 建てた住居
入手 見つければ即座、無料 高コスト
場所 選べない(水場・食料から遠いこともある) 選べる
拡張 ほぼできない 際限なく上げられる
快適性 湿る・暗い 上限が高い

洞窟は序盤の贈り物だが上限が低い、という位置づけになるため、洞窟を得たプレイヤーも後半には住居を建てる 理由が残ります。どちらを引いたかは島の地形が決めるので、方針の有利不利を島の側へ分散できます。

5.1 浅い洞窟(shallow_cave)

この表のうち洞窟の列を担うのが浅い洞窟で、岩がちな土地の探索で見つかります (locations.yaml)。設置物でありながら場所でもある——筏(Voyage.md 2.1 節)と 同じ形で、tags: [fixture] + traits: [location] に出入りの操作を足しただけです。中へ入れば location trait のスロットがそのまま拠点の枠になり、物を置くことも火を焚くこともできます。 枠数もかさの上限も置きません——置ける量で洞窟を絞ると、上の表の「拡張できない」が二重になります。

表の「暗い」と「湿る」は、それぞれ次の1行が担っています。

奥へ続く道はまだありません(【いつか: 洞窟内部】、Someday.md)。

6. 未決事項