セキュリティ
ビルドしたゲームが何にアクセスできるか、その内部に何が同梱されるかを決める 2 つのプロジェクト設定
プロジェクト設定の Security(セキュリティ)には 2 つの設定があります。いずれもプロジェクトごとに保存され、パッケージビルドとプレビュービルドに適用されます。Dev Mode には影響しません。
Network access(ネットワークアクセス)
ゲームがネットワークにアクセスできる範囲を制御します。範囲の狭い順に、3 段階が用意されています。
Off(オフ)— 新規プロジェクトの既定値です。ゲームは自身の内部プロトコルに限定され、発行された HTTP、HTTPS、WebSocket のリクエストはすべて取り消されます。
Allowlist(許可リスト)— プロジェクトが列挙したアドレスと、プラグインが contributes.network で宣言したホストのみを許可します。選択すると選択欄の下に許可リストのエディタが表示され、プラグイン由来のパターンには提供元のプラグインが併記されます。これにより、特定のホストが到達可能である理由をリスト上で確認でき、暗黙的に許可されることはありません。
Any host(任意のホスト)— 任意の宛先へのリクエストを許可します。Network ノードの動作には、この設定または Allowlist が必要です。
現在のビルドが認識できない設定値(上位バージョンに由来する値など)は、最も広い段階ではなく Off として扱われます。設定を解釈できないプロジェクトについて、そのビルドは動作を保証できないためです。また、リクエストの拒否は作者がその場で検知できる失敗であり、ビルド成果物とともに出荷される種類の失敗ではありません。
この設定は 3 か所で検証されます。Off の場合、プロジェクトチェックはネットワークノードをエラーとして報告し、プロダクションビルドは拒否され、実行時にはリクエスト自体が拒否されます。
この設定は Web export(Web エクスポート)では適用されません。実装がデスクトップビルド固有の機構に依存しており、また HTTP(S) で配信されるゲームはその性質上すでにネットワーク上に存在するためです。したがって Network ノードは Web ビルドでも実行されます。ビルドの拒否は引き続き適用されるため、この設定が Off のプロジェクトは、いずれにせよ Network ノードを含む Web ビルドを生成できません。
Encrypt assets(アセットの暗号化)
ビルド成果物の内部に含まれるコンテンツを保護するかどうかを制御します。
Off(オフ)— ゲームのファイルは通常のファイルとして出荷されます。インストール先のフォルダを開けば、画像、音声、動画に加え、ストーリーテキストとプラグインコードを誰でも読み取れます。
On(オン)— デスクトップ向けのパッケージビルドおよびプレビュービルドの内部で、以下が暗号化されます。
- 画像、音声、動画
- コンパイル済みのストーリー
- プラグインコード
- プレイヤーのセーブファイル
暗号化は NarraLeaf/Encryption が提供し、保護の強度は KiriKiri と同等です。
この設定はデスクトップビルドにのみ適用されます。Web ビルドでは暗号化は常に無効です。ブラウザがファイルを直接読み取る必要があるため、隠蔽の余地がありません。Android と iOS のビルドも保護されません。
この設定の適用範囲は次のとおりです。通常のツールでファイルを開けないようにすることで、安易な抽出を防ぎます。ただし、実行中のゲーム自身がコンテンツを読み取れる必要があるため、意図的な攻撃者に対する保証にはなりません。