ある時点で、オンライン ストアで購入したダウンロード可能なコンテンツ(DLC)など、ベースのインストールに追加する追加コンテンツを使用してゲームを強化することができます。Stingray でこれを実行する場合、既存のゲーム コンテンツを更新するためにパッチを適用するのとほぼ同じ方法で行うことができます。
Stingray では、DLC と通常のゲーム コンテンツ間には原則的に違いはありません。Stingray の標準ツールを使用して、DLC に新しいコンテンツを作成し、新しいパッケージに編成して、それらのパッケージをバンドルにコンパイルします。これらのバンドルをゲームのパッチとしてユーザに配布します。これにより、既存のゲーム データのバンドルの上に新しいバンドルがインストールされます。
パッチをインストールするすべてのユーザは、そのバンドル データを受け取りますが、通常、ゲームではそのデータを使用できる権利を購入している承認されたユーザのみに使用を許可します。通常、次に示すような Lua のゲームプレイ コードを使用してこれを実行します。
したがって、ユーザがオンライン サービスで DLC を購入した場合、通常、ユーザがアセット ストアから受け取るのは、完全な DLC コンテンツではなくアカウント設定や資格です。ゲームプレイ コードはこれらを使用して、パッチでインストールされた DLC コンテンツがプレイヤーに表示されるかどうかを決定します。
パッチ作成システムの背景情報については、「ゲームのパッチを作成する」を参照してください。
DLC 用のコンテンツを作成するには、Stingray ツールでユニット、レベル、およびスクリプトなどの通常の新しいコンテンツを作成するのと同様に作業します。次に、作成する 1 つまたは複数の新しい .package リソースに、この新しいコンテンツを追加します。詳細については、「リソース パッケージを定義する」を参照してください。
DLC パッケージはその他のリソース パッケージと類似しており、同じ方法でゲームにロードできます。たとえば、次のようになります。
local dlc = stingray.Application.resource_package("packages/test_dlc") stingray.ResourcePackage.load(dlc) stingray.ResourcePackage.flush(dlc)
「パッケージのロードとロード解除」も参照してください。
しかし、通常は、まずプレイヤーがコンテンツにアクセスする権利があるかどうかをチェックします。たとえば、次のコードはプレイヤーが Steam で指定された ID を持つアプリケーションを購入してインストールしているかをチェックします。
if stingray.Steam.is_installed(test_dlc_app_id) local dlc = stingray.Application.resource_package("packages/test_dlc") stingray.ResourcePackage.load(dlc) ... end
DLC パッケージが含まれるゲーム プロジェクトを構築してバンドル化したら、ゲームの新しいパッチを作成する必要があります。この新しいパッチには、追加されたコンテンツに対して作成した新しいパッケージごとにパッチのバンドルが含まれます。
この新しい DLC をサポートするために、その他のパッケージのゲームプレイ リソースを更新する必要があった場合は、パッチには他の既存のコンテンツ パッケージ用の 1 つまたは複数のパッチのバンドルも含まれる場合があります。たとえば、上記のように DLC パッケージをロードおよびロード解除するために、新しいスクリプトの呼び出しを追加する必要があった場合などです。
ゲームのパッチの作成方法の詳細については、、「ゲームのパッチを作成する」を参照してください。
コンパイル済みでもバンドル化されていないデータからゲームを実行する場合、次のエラーが生じることがあります。
Package not loaded: packages/test_dlc
非バンドル モードで実行するには、新しい DLC パッケージへの参照を boot.package ファイルに追加する必要があります。詳細については、「ランタイムでコンテンツをロードおよびロード解除する」を参照してください。