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

使用事例

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

例に含まれるのは……

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

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

PCKファイルについて

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

利点:

  • 段階的なアップデート / パッチ
  • DLCの提供
  • Modサポートの提供
  • Modのためにソースコードの公開は不要
  • プロジェクト構造をよりモジュール化
  • ユーザーはゲームを丸ごと置き換えずにすむ

最初の段階では、プロジェクトをエクスポートしたものをプレイヤーに配布します。その後、機能やコンテンツを追加したくなったら、アップデートを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");
}

警告

ファイルをインポートする際、すでに同じパスに同じ名前のファイルがあれば、新しくインポートされたファイルによって置き換えられます。これはDLCやModを製作するときには気を付けるべきでしょう (Modをツールで別のサブフォルダに隔離するようにすれば解決できます)。一方、ゲームのパッチを作るときにはこの方法は使えます。このようなPCKファイルで、以前に読み込まれたPCKの内容を置き換えて修正するのです。

注釈

For a C# project, you need to build the DLL and place it in the project directory first. Then, before loading the resource pack, you need to load its DLL as follows: Assembly.LoadFile("mod.dll")

概要

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