DLC コンテンツのデータベースの作成

Stingray には、ゲーム用に作成およびインストールする DLC バンドルを追跡して識別するためのオプションのメカニズムが用意されています。DLC パッケージを作成するときにこのシステムを使用すると、ランタイム Lua スクリプトは、現在ゲームと一緒にインストールされているすべての DLC バンドルに関する情報を取得できます。

この方法は、DLC モジュールに関する情報をゲームプレイ スクリプトにハードコード化しない場合に役立つことがあり、新しいダウンロード可能なコンテンツを追加するたびに、メイン ゲーム コードにパッチを適用する必要がなくなります。

このシステムは、「ゲームのパッチを作成する」および「ダウンロード可能なコンテンツ(DLC)とその他の追加コンテンツ」に記載された基本的なパッチ適用システムおよび DLC システム上に構築されています。ここで開始する前に、これらのトピックに記載された基本プロセスについて理解しておいてください。

手順 1. .dlc リソースを作成する

DLC モジュール用に作成する .package リソースごとに、プロジェクト リソース フォルダ内のどこかに .dlc リソースを作成します。このファイルは、モジュールに関する次の情報を含む SJSON リソースです。

たとえば、次のようになります。

name = "Continuing Adventures"
package = "packages/continuing_adventures"

ゲーム プロジェクトをビルドすると、これらの .dlc リソースはそれぞれ dlc サブフォルダ内の別のバンドルに書き込まれます。

手順 2. Lua 内の DLC 情報にアクセスする

stingray.DLC オブジェクトで公開されている関数を使用して、ゲーム データ フォルダ内で DLC データをスキャンします。たとえば、次のようになります。

-- start scanning the game data for DLC information...
stingray.DLC.scan_for_dlc()
...

-- when the scan has completed...
-- (note that this may not be in the same frame the scan was launched.)
if stingray.DLC.scan_done() then
    -- get the information found by the scan...
    local res = stingray.DLC.scan_result()
    for _,entry in ipairs(res) do
        local name = entry.name
        local package = entry.package
        ...
        -- evaluate whether any of the packages need to be loaded.
        -- if a package needs to be loaded, pass its package value in
        -- a call to stingray.Application.resource_package() and load
        -- the package. 「パッケージのロードとロード解除」も参照してください。
    end
end

DLC.scan_result() 関数は、設定された .dlc リソースの 1 つに記録されている名前およびパッケージをそれぞれ含むテーブルのリストを返します。

手順 3. パッチに DLC バンドルを追加する

新しい DLC コンテンツ バンドルを含むパッチを作成するには、新しい .dlc リソース ファイルに対応する DLC 環境設定バンドルも含める必要があります。このバンドルは dlc フォルダ内にあります。

DLC フォルダ内に既に別のバンドルが 1 つまたは複数含まれている場合に、パッチに含める必要があるバンドルが不明であれば、ID Lookup ツールを使用してリソースに対応するバンドルを判別できます。「コンパイル済みリソース名について」を参照してください。

また、Stingray エンジン Deployer を介してゲームをバンドルした場合は、Compiler Server ウィンドウで出力を調べて、.dlc リソースに割り当てられた名前を見つけることができます。

DLC ごとに複数のパッケージを使用する

.dlc リソース ファイルにはパッケージ リソースを 1 つのみ登録できます。1 つの DLC モジュールのコンテンツを複数のバンドルに分割する場合は、次のいずれかを実行できます。