ルール・エンジン
WorldCodex(ゲーム内のあらゆる要素を定義するYAML)の文法そのもの、その文法を使ってどんな内容にも
適用できる汎用サブシステム(レシピ・コンテナ・耐久値・アクションの使い分け)、気候・地形生成・探索といった
仕組み(プレイヤーの目に触れるモノそのものではなく、それらを成り立たせているメカニズム)に関する
ドキュメントを格納します。
src/ 全体の構造——どこに何を置き、何を知ってよいか——は、エンジンに限らず画面までを規定するので
../CodeStructure.md が持ちます。
石・斧・防具・容器など、「実際にこのゲームに登場する具体的なモノ」は含みません。そちらは
../world/ を参照してください。
収録ドキュメント
YAML文法(WorldCodexの書き方そのもの)
- WorldCodex YAML 文法リファレンス — 型・プロパティ・スロット・操作・効果・ レシピの文法をここに集約
- WorldCodex YAMLスキーマ定義(JSON Schema本体) — 上記文法の 機械的な検証
実際のゲームデータ(src/assets/world-codex/*.yaml)を型・プロパティ・スロット・操作の単位で辿って読むには、
閲覧ビューア(npm run dev:codex、公開先は ../../codex/)を開いてください。作りと設計判断は
src/codex-viewer/ の各ファイルのコメントにあります。
汎用サブシステム(文法を使って、どんな内容にも適用できる仕組みの設計)
-
レシピシステム設計 — 作りかけを「製作中オブジェクト」という普通の物として扱い、材料投入を「入れ物へ落とす」に載せる方法
-
スキルシステム設計 — レシピをいつ作れるようになるかを決める、習熟度の成長と解放条件
-
スロットシステム設計 — 固定位置・受け入れ制約・スタックのまとまりと並び順
-
コンテナの容量・重さ・保護 — 重さの純粋な合算と、担ぎ方で変わる負荷(load)。持てるか・運べるかをどちらで決めるか
-
液体容器システム設計 — 量・飲用・注ぎ移し・蒸発・降雨の実現方法
-
耐久値システム設計 — 素材の屋外劣化と食料の腐敗を単一の durability で表すときの減少量。素材ごとの寿命日数もここ
-
アクションシステム設計 — actions / combinations の実行時の仕組み
-
気候システム設計 — 季節・天気を world のプロパティと貯水池モデルで駆動する方法
-
明るさシステム設計 — 明るさをEVスケールで持ち、手元・視界と、それを 導く環境光へ分けて、行動ごとに要る明るさで線を引く方法
-
火システム設計 — 炉の組み立て・燃料・熾による保火と、その熱を料理へ渡す受け渡し口
-
地形生成システム設計 — 島の座標・軸・LocationTypeマッチング・パスネットワーク生成のアルゴリズム
-
探索・道システム設計 — 生成された土地のスロット構成・探索・道の発見と移動
-
狩猟システム設計 — 動物との対峙をターンや専用画面ではなく、怪我・時間・既存の操作へ載せる方法
-
罠システム設計 — 危険の代わりに時間と食料を賭ける道。見えないタイマー・土地ごとの成否・餌・掛かった獲物の拘束
-
怪我システム設計 — 傷を専用の体力値ではなく1つのオブジェクトとして表し、手当てを枠へ載せる方法
-
生命と意識のシステム設計 — 何が意識を奪い、何が命を奪うか。気絶と死の表し方
-
消化システム設計 — 食べた物が胃・腸を通って蓄えになるまでの経路と、実際の消化時間から見積もった輸送の速さ
-
ローカライゼーション — 表示文字列をWorldCodexから切り離し、言語ごとの対応表から引く仕組み
実装ガイド(コード構造の把握。「なぜ」ではなく「どこに・どう実装されているか」)
- コードの構造 —
src/の構成要素と置き場の一覧、依存の向き、新しいファイルを どこへ置くか、それぞれが何を知ってよいか(このフォルダの外) - TypeScriptコーディング規約 — Prettier・ESLint・
tscでは強制できない 書き方の取り決め(このフォルダの外) - 地形生成 実装ガイド — 実際のクラス名・メソッド名でたどる、 ロードから島の実体化までの呼び出し関係
- ソースリファレンス —
src/のクラス・型・JSDocから TypeDocが自動生成する一覧(設計の意図はこのフォルダの手書きドキュメント側にある)
その他
- セーブデータ管理 — 保存先・スキーマ・削除の扱いなど、 スタート画面・セーブ選択画面のモックから派生した永続化の決定。 決まった開始状態から起動するテスト用シナリオもこの節にある
- アセットパック — 同梱されていない定義YAML・絵・表示文字列を、1つのZIPとして受け取る方針 (未実装)
- 設計の経緯・教訓集 — 再発防止のために残す過去の失敗・不採用の決定。 項目が領域を跨ぐので、このフォルダの外