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のエクスポート』をクリックします。同時に、エクスポートテンプレートを選択していることを確認してください。

もうひとつの方法は、コマンドラインからエクスポートすることです。もし出力ファイル名の終わりがPCKあるいはZIPファイル拡張子の場合、エクスポートプロセスは選んだプラットフォーム向けにファイルをビルドします。
注釈
もしゲームにModを追加できるようにしたい場合、ユーザーにも同様にエクスポートしたファイルを作成してもらう必要があります。元のゲームで、PCK内のリソースは決められたディレクトリ構造に置くようにするか、もしくはスクリプトにMod用のインターフェースを用意してから、次の選択肢は…
ディレクトリ構造かインターフェースについてのドキュメンテーションを公開し、Mod作者たちにGodotエンジンをインストールしてもらい、(確実に動作するように)ドキュメンテーションに定義されたAPIに沿ってModを製作してもらいます。それから、上記の解説どおりにGodot内蔵のエクスポート・ツールにてPCKファイルを作成してもらいます。
The developer uses Godot to build a GUI tool for adding their exact API content to a project. This Godot tool must either run on a tools-enabled build of the engine or have access to one (distributed alongside or perhaps in the original game's files). The tool can then use the Godot executable to export a PCK file from the command line with OS.execute(). The game itself shouldn't use a tool-build of the engine (for security), so it's best to keep the modding tool and game separate.
実行時にPCKファイルを開く¶
To import a PCK file, one uses the ProjectSettings singleton. The following example expects a “mod.pck” file in the directory of the games executable. The PCK file contains a “mod_scene.tscn” test scene in its root.
func _your_function():
# This could fail if, for example, mod.pck cannot be found.
var success = ProjectSettings.load_resource_pack("res://mod.pck")
if success:
# 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()
{
// This could fail if, for example, mod.pck cannot be found.
var success = ProjectSettings.LoadResourcePack("res://mod.pck");
if (success)
{
// 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ならそのプロセスをスムーズにできるはずです。