コードフレームワーク
コードフレームワークとは
コードプロジェクトとは何か、ファイルがフレームワーク、エレメント、フレーム、レジャーにどう対応するか、The Forge に残るものを説明します。
考え方
コードフレームワークは、ノードで組み立てる代わりに、小さなファイルのプロジェクトとして書くゲームシステムです。お好みのエディタやツールを使えます。The Forge は、ゲームをビルドするのと同じコンパイラでプロジェクトを検証します。
プロジェクト形式は native-game-v1 と呼ばれます。ルールは TypeScript の制限されたサブセットで書きます。インポート、ネットワーク、乱数がないため、同じ入力に対してルールは常に同じ結果を返します。
ダイスはルールではなく、シートで振ります。プレイヤーはフレームでダイスロールをクリックし、結果を読んで、アクションの入力として入力します。ルールがその数値を確認し、結果を書き込みます。「スキルに対してロールする」レシピは、この方法でパーセンタイル判定を作ります。
ファイルと Fabled の対応
各種類のファイルは、Fabled でおなじみのものになります。
| ファイル | 変換先 | 役割 |
|---|---|---|
| manifest/project.json | ゲーム | プロジェクトに名前を付け、フレームワークとシナリオを一覧にします。 |
| schemas/*.json | フレームワーク | 1 種類のエレメントの入力、アクション、フレーム、コンテンツを宣言します。 |
| rules/*.ts | ロジック | エレメントを作成し、その値を変更し、派生値を計算します。 |
| layouts/*.json | フレーム | シートやカードを描き、ボタンをアクションに結び付けます。 |
| scenarios/*.json | テスト | エレメントを作成し、アクションを実行して、すべての値と書き込みを確認します。 |
エレメントは、キャラクター 1 体のような、フレームワークの実際のインスタンスです。エレメントへの変更はすべて、そのレジャーへの書き込みです。アクションが値を直接書き換えることはありません。レジャーに値の設定や加算を依頼し、シナリオがその書き込みを確認します。
プロジェクトの構成
このガイドで使うサンプルゲームのツリー全体です。Lantern Keepers には、ヒットポイントを持つキャラクター 1 体、アクション 2 つ、シート 1 つ、シナリオ 2 つがあります。
manifest/project.json
schemas/keeper.json
rules/keeper.ts
rules/hurt.ts
rules/heal.ts
layouts/keeper.json
scenarios/new-keeper.json
scenarios/heal.jsonThe Forge に残るもの
- プロジェクトを書いて検証します。コンパイラが、何がどこで間違っているかを教えてくれます。
- 適用、準備、リリースは The Forge で行います。サーバーがプロジェクトをもう一度検証し、その判定が最終結果になります。
- ルールはパッケージをインポートしたり、プロジェクトの外にアクセスしたりできません。

