追加の機能

高度な設定については、ハウツーをご覧ください。

アプリケーションでバトルパスを実装する方法

注意
Game Commerceプラグインのみを使用する場合は、このハウツーを参考してください。

バトルパスでは、期間中にクエストをクリアしたり、アクティブにプレイしたりすることで特典が得られ、プレイヤーのエンゲージメントを高めることができます。

限定特典付きの無料バトルパスをご用意しております。最終特典も無料パスには含まれていません。

さらに、プレイヤーは最終的なものを含むすべての特典を含むプレミアムパスを購入することができます。

バトルパスの進捗状況はレベルごとに分かれています。新しいレベルのロックを解除し、バトルパスの有効期限が切れる前に最後の特典を開ける時間を確保するには、プレイヤーは必要な経験値を得るか、レベルを購入する必要があります。

デモプロジェクトでは、エクソラ製品を使ってバトルパスを実装した例を紹介しています。バトルパスを試すには:

  1. Xsollusデモマップを起動します。
  2. デモユーザーとしてログインするか、新規ユーザーを作成します。
  3. サイドメニューでBattle passをクリックします。

バトルパスをプロジェクトに適合させるには:

  1. プロジェクトにバトルパスのロジックを追加します。
  2. リワードクーポンのセットを作成します。
  3. バトルパスの設定を作成します。
  4. バトルパスアイテムを作成します。
  5. レベルアップアイテムを作成します。

プロジェクトにバトルパスロジックを追加する

バトルパスロジックを追加するには:

  1. すべての依存関係のBP_BattlepassPanelBP_StoreDemoブループリントをプロジェクトにコピーします。
  2. インターフェイスを変更(任意)します。
  3. 情報ロジックの保存を修正します。

特典クーポンのセットを作成する

特典には、仮想アイテムや仮想通貨パッケージがあります。

現在のソリューションでは、クーポンの利用によってプレイヤーに特典が与えられます。クーポンセットを作成するには:

  1. パブリッシャーアカウントのプロジェクトに移動します。
  2. プレイヤーへの特典のために仮想アイテム仮想通貨パックを作成します。
  3. それぞれの特典について、以下の推奨事項に基づいてクーポン付きキャンペーンを設定します:

    • バトルパスでのクーポン利用の予定量として、ユーザー1人あたりの利用回数を指定します。1つのクーポンをバトルパスの一部として複数回利用することができます(例:バトルパスのレベルが異なる場合、プレミアム版と無料版の場合)。
    • キャンペーンはバトルパスと同じ期間に有効である必要があります。

バトルパスの構成を構築するには、事前に特典のリストを作成し、各特典について以下の点を示すことをお勧めします:

  • クーポンコード
  • 仮想アイテムまたは仮想通貨パッケージSKU
  • 特典がバトルパスの特定のレベルに属するかどうか
  • 特典が無料版またはプレミアム版に属するかどうか

お知らせ
前のバトルパスの有効期限が切れる前に、新しいバトルパスの特典を設定することができます。アプリケーションのロジックを違反しないために、新しいバトルパスの開始前にクーポンプロモーションを有効にしないでください。

バトルパスの構成を作成する

バトルパスの設定は、次の内容がJSONファイル含む:

  • バトルパスの名前
  • バトルパスの有効期限
  • 無料版とプレミアム版の特典を示すレベルの構造

お知らせ
プレミアムバトルパス版の最高レベルの特典は、自動的にファイナルバトルパスの特典となります。その表示は、レベルクリア時の特典の表示とは異なります。

JSONファイルの構造:

パラメータ種類説明文
Name
stringバトルパスの名称です。バトルパスアイテムの名称と一致する必要があります。
ExpiryDate
stringバトルパスの有効期限。
Levels
arrayバトルパスのレベル構造。
Levels.Tier
integerレベルの数です。
Levels.Experience
integer次のレベルに到達するための経験値です。
Levels.FreeItem
object無料版バトルパスの特典情報です。nullにすることができます。
Levels.FreeItem.Sku
string仮想アイテムや仮想通貨のパッケージのSKUです。特典の画像とその情報をユーザーに表示するために使用されます。 仮想通貨パッケージの場合、パッケージのSKUと仮想通貨のSKUの両方を使用することができます。
Levels.FreeItem.Quantity
integer特典の数です。
Levels.FreeItem.Promocode
string特典のクーポンコードです。
Levels.PremiumItem
objectプレミアム版バトルパスの特典情報です。nullにすることができます。
Levels.PremiumItem.Sku
string仮想アイテムや仮想通貨のパッケージのSKUです。特典の画像とその情報をユーザーに表示するために使用されます。 仮想通貨パッケージの場合、パッケージのSKUと仮想通貨のSKUの両方を使用することができます。
Levels.PremiumItem.Quantity
integer特典の数です。
Levels.PremiumItem.Promocode
string特典のクーポンコードです。

バトルパスの設定例:

Copy
Full screen
Small screen
{
  "Name": "BP2021JAN",
  "ExpiryDate": "29-03-2021",
  "Levels": [
    {
      "Tier": 1,
      "Experience": 1000,
      "FreeItem": {
        "Sku": "Sku",
        "Quantity": 10,
        "Promocode": "HELLO_WORLD"
      },
      "PremiumItem": {
        "Sku": "Sku2",
        "Promocode": "HELLO_WORLD2"
      }
    },
    {
      "Tier": 2,
      "Experience": 1000
    },
    {
      "Tier": 3,
      "Experience": 1000
    }
  ]
}

バトルパスアイテムを作成する

バトルパスアイテムは、バトルパスの設定を格納するコンテナであり、プレイヤーのプレミアムステータス(プレミアム版を購入しているかどうか)を判断するために使用されます。

バトルパスアイテムを作成するには:

  1. パブリッシャーアカウントでのプロジェクトに移動します。
  2. #BATTLEPASS#という名前の仮想アイテムグループを作成します。

お知らせ
この#BATTLEPASS#グループはユーティリティーグループであり、ゲーム内ストアやインベントリには表示されません。
  1. 以下のパラメータで仮想アイテムを作成します:
    • アイテム名 — 設定で指定されたバトルパスの名前。
    • SKU — バトルパスのID。設定で指定したバトルパスの名前を使用することをお勧めします。
    • アイテムプロパティ — 消耗アイテムまたは非消耗アイテム。
お知らせ
アプリケーションのデバッグ時には、消耗アイテムを作成することをお勧めします。これにより、バトルパスアイテムの有無に対するシステムの反応をテストすることができます。
    • 価格 — バトルパスのプレミアムバージョンの価格。仮想通貨や実際通貨で設定されています。
お知らせ
仮想アイテムの価格が実際と仮想通貨で設定されている場合、アプリケーションは仮想通貨の価格を表示します。
    • グループ — #BATTLEPASS#
  1. 作成した仮想アイテムにバトルパスを追加するには:
    1. Get virtual item APIコールを使用して、アイテムの現在の説明をJSON形式で取得します。
    2. オンラインサービスまたはJSON.stringify()メソッドを使用して、バトルパス設定を文字列に変換します。
    3. アイテムの説明で、long_descriptionパラメータのenオブジェクトに結果の文字列を指定します。
    4. Update virtual item APIコールを使用して、リクエストボディに更新されたアイテムの説明を指定して、アイテムを修正します。

バトルパスのアイテム説明の例:

Copy
Full screen
Small screen
{
  "sku": "BP2021JAN",
  "name":{
    "en": "BP2021JAN"
  },
  "type": "virtual_good",
  "description":{
    "en": "BP2021JAN"
  },
  "image_url": "https://cdn3.xsolla.com/img/misc/images/7cb1c2b719af329a9bc1df994d58b749.png",
  "long_description": {
    "en": "{
                \"Name\":\"BP2021JAN\",
                \"ExpiryDate\":\"01-07-2021\",
                \"Levels\":
                    [
                        {
                            \"Tier\":1,
                            \"Experience\":100,
                            \"FreeItem\":
                                {
                                    \"Sku\":\"Bullets\",
                                    \"Promocode\":\"B2021S1FL1E100\",
                                    \"Quantity\":50
                                }
                        }
                    ]
            }"
  },
  "attributes":[
  ],
  "is_free": false,
  "order": 1,
  "groups":[
    "Battlepass"
  ],
  "regional_prices":[
  ],
  "prices":[
    {
      "amount": 1,
      "currency": "USD",
      "is_default": true,
      "is_enabled": true
    }
  ],
  "media_list":[
  ],
  "vc_prices":[
  ],
  "is_enabled": true,
  "is_show_in_store": true,
  "regions":[
  ],
  "inventory_options":{
    "consumable": false,
    "expiration_period": null
  }
}

レベルアップアイテムを作成する

現在のバトルパスソリューションでは、プレイヤーはリ実際または仮想通貨でレベルを購入することができます。レベルの価格は常に同じです。プレイヤーが現在のレベル内で得た経験値は、次のレベルに引き継がれます。

レベルアップアイテムを作成するには:

  1. パブリッシャーアカウントでのプロジェクトに移動します。
  2. 次のパラメータで仮想アイテムを作成します:
    • アイテム名 — <battlepassname>_levelup_util形式のレベルアップアイテムの名前で、そこで<battlepassname>は構成で指定されたバトルパス名。
    • SKU — 設定で指定されたバトルパスの名前を使用することをお勧めします。
    • アイテムプロパティ — 消耗アイテムまたは非消耗アイテム。
    • 価格 — 1つレベルの価格。仮想通貨や実際通貨で設定されています。

お知らせ
レベルアップアイテムの価格が実際と仮想通貨で設定されている場合、アプリケーションは仮想通貨の価格を表示します。
    • グループ — #BATTLEPASS#

現在のバトルパスソリューションの詳細

バトルパス表示のロジック

ロジックにより、このアプリケーションでは、1つのバトルパスのみが表示されます:

  • すべてのバトルパスが期限切れの場合、アプリケーションは最後に期限切れになったバトルパスを表示します。
  • すべてのバトルパスの有効期限が切れている場合、アプリケーションは最後に有効期限が切れたバトルパスを表示します。

例1

現在の日付:2021年03月04日。

バトルパスの有効期限:2021年03月01日、2021年04月01日、2021年05月01日。

このアプリケーションでは、有効期限が2021年04月01日のバトルパスが表示されます。

例2

現在の日付:2021年03月04日。

バトルパスの有効期限:2021年02月01日、2021年03月01日。

このアプリケーションでは、有効期限が2021年03月01日のバトルパスが表示されます。

情報ロジックの保存

現在のソリューションでは、バトルパスでのプレイヤーのの進捗状況に関するすべての情報(レベル、経験値、受け取った特典など)は、ユーザーが編集可能な属性に保存されます。デモの一環として、Characterページ上でこれらの属性の読み取りと編集が可能です。

必要な属性が見つからない場合は、自動的に新しい属性が作成されます。システムが、現在のバトルパスではない属性を見つけた場合、それらの属性は自動的に削除されます。

注意
ユーザーが編集可能な属性は、ゲームのクライアント側で変更することができます。バトルパスにおけるプレイヤーの進捗状況を保護するために、独自のロジックを実装する際には、読み出し専用の属性を使用することをお勧めします。

プレイヤーのプレミアム状態を判断するには、プレイヤーのインベントリにバトルパスというアイテムがあるかどうかを確認します。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

SDKを使ってアプリケーションのUIを設定する方法

このSDKには、UIビルダーが含まれています。UIビルダーでは、アプリケーションのUIの視覚を設定することができます。

UIを変更するには、UI要素の視覚に影響を与えるグローバル設定(色、テクスチャ、フォント)を編集します。これらのプロパティは、テーマとしてまとめられます。

同じタイプのUI要素を入れ替えるには、作成したUI要素のコンテナであるウィジェットラッパーを使用します。

UIビルダーには、2つの独立した部分が含まれています:

テーマを操作する

テーマは、XsollaUtilsThemeタイプのアセットです。UI要素で使用される色、フォント、テクスチャのリストが含まれています。すべてのリストは、キーと値のペアのセットで、キーはテーマパラメータの一意の名前、それで値は対応する色、フォント、またはテクスチャです。

Settings > Project Settings > Plugins > Xsolla Utilsでテーマを操作できます:

  • UIのテーマを設定するには、Interface Themeフィールドでそれを選択します。
  • 選択したテーマを編集するには、Interface Themeフィールドの近くにある🔎アイコンをクリックします。

お知らせ
SDKがEpic Gamesランチャー経由でインストールされている場合、SDKの標準テーマを変更すると、これらのテーマを使用している他のプロジェクトにも変更が生じます。アプリケーション用に別のテーマを作成することをお勧めします。
  • 新しいテーマを作成するには、Interface Themeフィルドの近くにある+アイコンをクリックします。
  • 選択したテーマを削除するには、Interface Themeフィルドの近くにある×アイコンをクリックします。
お知らせ
テーマのパラメータ名を変更した場合、そのウィジェットはすべて編集が必要になります。

UI要素をテーマに接続する

UI要素をテーマに接続するには:

  1. UI要素ウィジェットのブループリントで、次の方法でテーマにアクセスします:
    • GetCurrentTheme — プラグイン設定で指定された現在のテーマを返します。
    • GetThemeThemeClassパラメータで指定された名前でテーマを返します。
  2. 以下のメソッドを使用して、テーマのパラメータ名を渡すことで、テーマから確定したパラメータの値を取得します:
    • GetColor — 色の値を取得します。
    • GetFont — フォントを取得します。
    • GetBrush — テクスチャを取得します。

デモプロジェクトでは、テーマをサポートするすべてのウィジェットは、テーマパラメータ名を持つStringタイプのパラメータのセットを持っています。これらのパラメーターは、UI要素の視覚を設定するために使用されます。

テーマをサポートするウィジェットの例を見つけるには、Content Browser > Xsolla Content > Common > Components > Primitivesに移動します。

ウィジェットマネージャーを使用する

ウィジェットマネージャーは、同じ種類のUI要素のビジュアルや動作を変更して、自動的に置き換えることができる仕組みです。

ウィジェットマネージャーに対応したUIを作成するには、以下の条件を満たす必要があります:

  • 指定されたUI要素の統一されたインターフェースを持つウィジェットを作成します。
  • ウィジェットライブラリのUI要素ウィジェットのタイプ名を定義します。
  • UI要素のウィジェットタイプをラッパーに渡します。ラッパーは、UI要素を作成するためのコンテナーです。ウィジェットタイプの名前は,ライブラリの名前と同じでなければなりません。
  • UIを作成する際には、ウィジェットではなくラッパーを使用します。

ウィジェットラッパー

コンテナ内のラッパーで,ページ内のラッパーが占める領域に必要なウィジェットを作成するもの。

UIの作成時にウィジェットラッパーを使用することで、UI全体の中でUI要素を自動的に変更することができます。これを行うには、ラッパーのウィジェットを変更します。UIプリミティブを使用する標準的なフローでは,このシナリオではすべてのウィジェットを手動で置き換えることを提案しています。

ウィジェットのタイプに応じて以下のようなラッパーがあります:

  • W_ButtonWrapper — ボタン用
  • W_InputWrapper — 入力フィールド用
  • W_TextWrapper — テキスト用
  • W_RichTextWrapper — リッチテキスト用
  • W_ImageWrapper — 画像用
  • W_CheckBoxWrapper — ボックス用

Detailsパネルでは、ラッパーによって作成されたウィジェットの表示パラメータを設定することができます。Widget Library Nameフィールドには、現在のウィジェットライブラリからウィジェットタイプの名前を指定します。

ウィジェットラッパーのブループリントは、Content Browser > Xsolla Content > Common > Components > Wrappersにあります。

ラッパーは,ウィジェットマネージャのメソッドを使用してウィジェットを操作します。

ウィジェットインターフェース

UIプリミティブが通常のウィジェットと同じようにウィジェットラッパーと相互作用するようにするために、ラッパーは統一されたインターフェイスを使用します。

ウィジェットのタイプに応じて以下のようなラッパーがあります:

  • BPI_PrimitivesButton — ボタン用
  • BPI_PrimitivesInput — 入力フィールド用
  • BPI_PrimitivesText — テキスト用
  • BPI_PrimitivesRichText — リッチテキスト用
  • BPI_PrimitivesImage — 画像用
  • BPI_PrimitivesCheckbox — ボックス用

UI要素ウィジェットのインターフェースは、DetailsパネルのImplemented Interfacesセクションで設定することができます。

ウィジェットのインターフェースは、Content Browser > Xsolla Content > Common > Components > Interfaceにあります。

ウィジェットライブラリ

ウィジェットライブラリは、XsollaUtilsWidgetsLibraryタイプのアセットで、キーと値のペアの形式でウィジェットクラスのリストを含んでいます。キーにはウィジェットタイプの名前が含まれ、値にはこのキーを使用して対応するラッパーによって作成されるウィジェットクラスが含まれます。

ウィジェットライブラリは,ラッパーとウィジェットクラスをつなぐコネクタとして機能します。

BP_DefaultWidgetLibraryのデフォルトウィジェットライブラリはSDKに含まれています。このライブラリには、デモプロジェクトのUI要素のリストが含まれています。

Settings > Project Settings > Plugins > Xsolla Utilsでウィジェットライブラリを操作できます:

  • 現在のウィジェットライブラリをインストールするには、Widgets Libraryフィールドでそれを選択します。
  • 選択したウィジェットライブラリを編集するには、Widgets Libraryフィルドの近くにある🔎アイコンをクリックします。

お知らせ
SDKがEpic Gamesランチャー経由でインストールされている場合、SDKの標準ウィジェットライブラリを変更すると、これらのウィジェットライブラリを使用している他のプロジェクトにも変更が生じます。アプリケーション用に別のウィジェットライブラリを作成することをお勧めします。
  • 新しいウィジェットライブラリを作成するには、Widgets Libraryフィルドの近くにある+アイコンをクリックします。
  • 選択したウィジェットライブラリを削除するには、Widgets Libraryフィルドの近くにある×アイコンをクリックします。

ラッパーブループリントで次のメソッドを使用して、ウィジェットライブラリにアクセスします:

  • GetCurrentWidgetsLibrary — プラグイン設定で指定された現在のウィジェットライブラリを返します。
  • GetWidgetsLibraryWidgetLibraryClassパラメータで指定された名前で指定されたウィジェットライブラリを返します。

ラッパーブループリントのGetWidgetメソッドを利用して、ライブラリからウィジェットタイプを取得します。

ウィジェットマネージャーのメソッド

次のメソッドは、ウィジェットと対話するためにラッパーによって使用されます。テーマをサポートする独自のラッパーやウィジェットを作成するときに使用します。

ボタンを使用するメソッド

メソッド名説明
SetButtonEnabledキーボード、マウス、タイマーイベントなどにボタンが反応するかどうかを定義するボタンの状態を設定します。
IsButtonEnabledボタンがキーボード、マウス、タイマーイベントなどに反応するかどうかを定義するボタンの状態を返します。
GetWidgetウィジェットを含むUIプリミティブのリストを返します。ボタンクリックイベントのサブスクライブに使用されます。
ConstructButtonボタンウィジェットを初期化します。ウィジェットラッパーによって使用されます。
SetExtraDataボタンの追加データのリストを設定します。すべてのウィジェットは、受信したデータを処理し、それを実証し、内部ロジックに従って使用します。例えば、追加データのセットを使って、ドロップダウンメニューを持つボタンに、ドロップダウンメニューの要素のリストを渡すことができます。
SetIconDataボタンに表示するアイコンのリストを設定します。アイコンのサイズや、他のボタン要素との距離を指定するには、このメソッドを使います。
SetButtonSelectedトグル位置を設定します。例えば:オンまたはオフカート内またはカートに入らないなど。
GetThemeDataボタンウィジェットが使用するテーマパラメータのセットを返します。
SetButtonTextボタンのテキストを設定します。

ボックスを使用するメソッド

メソッド名説明
SetIsCheckedボックスがチェックされているか、チェックされていないかの状態を設定します。
GetIsCheckedボックスの状態を返します。
IsTickHoveredカーソルがボックス領域にカーソルを合わせているかどうかを確認します。
ConstructCheckboxボックスウィジェットを初期化します。ウィジェットラッパーによって使用されます。
GetWidgetウィジェットに含まれるUIプリミティブのリストを返します。ボックスイベントのサブスクライブに使用されます。
GetThemeDataボックスウィジェットが使用するテーマパラメーターのセットを返します。
SetTextボックスのテキストを設定します。
GetTextボックスのテキストを受信します。

テキストまたはリッチテキストを操作するメソッド

メソッド名説明
GetTextテキストの値を返します。
SetTextテキストの値を設定します。
GetWidgetウィジェットに含まれるUIプリミティブのリストを返します。テキストイベントのサブスクライブに使用されます。
GetThemeDataテキストウィジェットで使用されるテーマパラメーターのセットを返します。
ConstructTextテキストウィジェットを初期化します。ウィジェットラッパーによって使用されます。

画像を使用するメソッド

メソッド名説明
GetImage画像を返します。
SetImage画像を設定します。
GetWidgetウィジェットに含まれるUIプリミティブのリストを返します。画像イベントのサブスクライブに使用されます。
GetThemeDataイメージウィジェットが使用するテーマパラメータのセットを返します。
ConstructImage画像ウィジェットを初期化します。ウィジェットラッパーによって使用されます。

入力フィルドを使用するメソッド

メソッド名説明
GetText入力フィールドのテキストを返します。
SetText入力フィールドのテキストを設定します。
GetWidgetウィジェットに含まれるUIプリミティブのリストを返します。入力フィルドイベントのサブスクライブに使用されます。
ConstructInput入力フィールドウィジェットを初期化します。ウィジェットラッパーによって使用されます。
GetHint入力フィールドのヒントテキストを返します。
SetHint入力フィールドのヒントテキストを設定します。
SetupFocus入力フィールドのフォーカスを設定します。
GetThemeData入力フィールド・ウィジェットが使用するテーマパラメータのセットを返します。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示
最終更新日: 2024年7月3日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!