Contributed by: Takeshi Miyaoka on 木曜日, 10月 08 2026
Last modified on 木曜日, 10月 08 2026
条約交渉で決めた「年間の輸出量」。この数字が、実際の荷物の動きとどう結び付くのか。今回紹介するのは、条約の設定値をただ表示するだけでなく、出荷のたびに年次枠の使用を記録し、輸送が成立しなかった時には枠を戻す仕組みです。現在、Ashwind Chronicleで開発・検証を進めています。
約束は、署名ではなく出荷で動く条約を結んだだけで国の在庫が減るわけではありません。条約が有効で、実際の輸送を差し出す段階になって初めて、輸出国・資源・対象期間に対応する使用量が記録されます。したがって「契約上の上限」と「倉庫にある数量」は別のものです。
現在の実装では、年次期間は単純な1月始まりではなく、条約の成立日を基準にした記念日で区切ります。たとえば条約がゲーム内のある日に成立したなら、その日から次の成立記念日までがひとつの枠になります。輸出方向ごと・資源ごとに使用量を照合し、残量を超える出荷や同じ輸送タスクの二重記録は拒否します。上限を「無制限」にした資源には有限の枠を適用しません。
資源カードが示すのは、交渉で設定する品目と上限です。枠の使用履歴そのものを表示する画面ではありません。
取り消された便は、枠まで戻す出荷時に枠を減らすだけでは、品質検査で拒否された便や未成立の輸送があったとき、枠だけが消費されたままになります。そこで、検査拒否による輸送取消の処理では、対応する輸送タスクの枠使用を「返却済み」と記録し、年次集計から差し引くようにしています。同じタスクを再度返却して二重に増やさないよう、使用記録はタスクIDで追跡します。
流れを短く書くと、条約を受諾 → 実輸送を差し出す → 年次枠を記録 → 検査拒否なら輸送取消と同時に枠を返却。キャンセルされた荷物が条約の残量に影を落とし続けないことが狙いです。
Debug画面で見える約束と、コードで守る帳簿画面では、年数、提供する資源、受け取る資源、提案の状態を確認できます。一方、枠の消費・返却は輸送サービス側の記録として処理されます。提案を送る前の設定画面と、成立後の輸送処理を分けることで、「まだ交渉中なのに枠を使った」「拒否された便なのに上限だけ減った」という食い違いを避けます。
スクリーンショットは実際のゲームDebugビルドから切り出した条約設定画面です。年次枠の計算や取消時の返却を画面上で可視化したものではなく、交渉でどんな約束を設定するのかを示す参考カットです。
条約のカードを組み立てる場面は、DEVELOPMENT SNAPSHOT #44「資源カード一枚から条約へ」でも紹介しました。ゲームの配信・ダウンロード情報はダウンロードページをご覧ください。