Pack、パッチ、そしてModをエクスポートする

使用事例

ゲームをデプロイした後でも機能を追加したくなる事はよくあります。

例に含まれるのは……

  • ダウンロードコンテンツ: 機能とコンテンツをゲームに追加します。
  • パッチ: 出荷済みの製品に見つかったバグを修正します。
  • Mod: 他の人々でもゲームのコンテンツを製作できるようにします。

これらのツールが、最初のリリース後も開発を続ける助けになるのです。

PCKファイルについて

Godotではこれらをリソースパック機能(PCKファイル、拡張子は.pck)により実現しています。

利点:

  • 段階的なアップデート / パッチ
  • DLCの提供
  • Modサポートの提供
  • Modのためにソースコードの公開は不要
  • プロジェクト構造をよりモジュール化
  • users don't have to replace the entire game

最初の段階では、プロジェクトをエクスポートしたものをプレイヤーに配布します。その後、機能やコンテンツを追加したくなったら、アップデートをPCKファイルでユーザーに配るのです。

制限はありませんが、PCKファイルに通常含まれるのは:

  • スクリプト
  • シーン
  • シェーダー
  • モデル
  • テクスチャ
  • サウンドエフェクト
  • 音楽
  • その他ゲームへのインポートに適したアセット

PCKファイルは全く別のGodotプロジェクトをも含むことができ、元のゲームはそれを実行中に読み込めます。

PCKファイルの生成

プロジェクトのすべてのリソースをPCKファイルに詰めるには、プロジェクトを開いて『プロジェクト/エクスポート』に行き、『PCK/Zipのエクスポート』をクリックします。同時に、エクスポートテンプレートを選択していることを確認してください。

../../../_images/export_pck.png

もうひとつの方法は、コマンドラインからエクスポートすることです。もし出力ファイル名の終わりがPCKあるいはZIPファイル拡張子の場合、エクスポートプロセスは選んだプラットフォーム向けにファイルをビルドします。

注釈

もしゲームにModを追加できるようにしたい場合、ユーザーにも同様にエクスポートしたファイルを作成してもらう必要があります。元のゲームで、PCK内のリソースは決められたディレクトリ構造に置くようにするか、もしくはスクリプトにMod用のインターフェースを用意してから、次の選択肢は…

  1. ディレクトリ構造かインターフェースについてのドキュメンテーションを公開し、Mod作者たちにGodotエンジンをインストールしてもらい、(確実に動作するように)ドキュメンテーションに定義されたAPIに沿ってModを製作してもらいます。それから、上記の解説どおりにGodot内蔵のエクスポート・ツールにてPCKファイルを作成してもらいます。
  2. Godotを使って、プロジェクトのAPIに対応したGUIツールを製作します。このGodotツールは、toolsを有効にしてビルドしたエンジン上で動かすか、そうしたエンジンにアクセスできる必要があります(この場合、エンジンはツールと一緒に配布するか、あるいはゲームに同梱する)。それからこのツールでOS.execute()を用い、Godotの実行ファイルを呼び出してPCKファイルをエクスポートします。セキュリティ上、ゲーム本体のエンジンはtoolsを無効にし、Mod用ツールだけtoolsを有効するほうが良いでしょう。

実行時にPCKファイルを開く

PCKファイルのインポートは、一行でできます。しかし注意すべき点は、もしインポートが失敗してもエラーや例外は発生しません。なのでその代わり、検証コードをその上に少し加える必要があるかもしれません。下の例では、ゲームの実行ファイルがあるディレクトリで『mod.pck』を探します。このPCKファイルにはルートにテストシーン『mod_scene.tscn』を格納しています。

func _your_function():
    ProjectSettings.load_resource_pack("res://mod.pck")
    # Now one can use the assets as if they had them in the project from the start
    var imported_scene = load("res://mod_scene.tscn")
private void YourFunction()
{
    ProjectSettings.LoadResourcePack("res://mod.pck");
    // Now one can use the assets as if they had them in the project from the start
    var importedScene = (PackedScene)ResourceLoader.Load("res://mod_scene.tscn");
}

警告

By default, if you import a file with the same file path/name as one you already have in your project, the imported one will replace it. This is something to watch out for when creating DLC or mods (solved easily with a tool isolating mods to a specific mods subfolder). However, it is also a way of creating patches for one's own game. A PCK file of this kind can fix the content of a previously loaded PCK.

To opt out of this behavior, pass false as the second argument to ProjectSettings.load_resource_pack().

注釈

C#プロジェクトの場合、最初にDLLをビルドし、プロジェクトディレクトリに配置する必要があります。次に、リソースパックをロードする前に、次のようにDLLをロードする必要があります: Assembly.LoadFile("mod.dll")

概要

このチュートリアルで、Mod、パッチ、DLCを簡単にゲームに追加できることを示せたと思います。重要なのは、ゲームの将来のコンテンツを配布する計画を決めることと、そのためにカスタマイズしたワークフローを作り上げることです。開発者がどのような方法を選ぶにしても、Godotならそのプロセスをスムーズにできるはずです。