島内の取引のさまざまな側面に関するベストプラクティスと、ストアフロントのテストおよびデバッグに関するヒントを学びます。
島内の取引の Verse の仕掛けの使用
島内の取引の Verse の仕掛けには、島内の取引のテンプレートが含まれています。 これには、Verse API のマーケットプレイス モジュールの主要な側面の実装が全て含まれています。 これには、アイテム、オファー、バンドル オファー、デフォルトのストア UI を活用した購入の処理が含まれます。 このコードをガイドとして使用すると、ストアフロントを素早く設定できます。
以下の手順で仕掛けにアクセスします。
[Verse Explorer] に移動します。
プロジェクト名を右クリックします。
[Add new Verse file to project (プロジェクトに新規 Verse ファイルを追加)] を選択します。
[In-Island Transactions Device (島内の取引の仕掛け)] を選択します。
コードをそのまま使用するには、Verse コードに移動して次のファイルを編集します。
アイテム名
説明
アイコン
コード内のデフォルト名を、ご自身の利用資格やオファーに一致する名前に置き換えます。
コーディングのベストプラクティス
Verse コードを改良することで、コードのスケーラビリティと島のパフォーマンスを向上させることができます。
ワークフローの整理
プログラミングにおける一般的なベストプラクティスは、関心の分離です。 ファイルや機能は特定のタスクの実行に焦点を当てるようにします。そうすることで、プロジェクトの範囲が拡大するにつれて将来の保守が容易になります。
結果としてより小さく整理された読みやすいコード ファイルとなり、デバッグが容易になります。
トランザクションでこれを適用できる方法には以下のようなものがあります。
アイテム定義を別のファイルに配置します。
オファーとバンドルオファーを別ファイルにまとめます。
全ての静的で事前定義されたオファーを処理するデバイスを作成します。
動的オファーのみを処理するデバイスを作成します。
購入のみを処理するデバイスを作成します。
モジュールの整理
モジュールは、複数のファイルで使用するために再配布可能なコードの最小単位です。 モジュールは、それがすでに使用されているファイル内の依存関係を壊すことなく、時間の経過とともに変更できます。 利用資格定義のような長くて繰り返しの多いコード単位を別のファイルに分割し、using 文を使ってインポートすることができます。
モジュールを使用する大きな利点のひとつは、モジュール内のメンバーに対応する変数を一度、ひとつの場所で定義するだけで済むことです。 これによりモジュールをインポートして変数を参照することで、異なる Verse コード ファイル間で同じデータを共有できるようになります。 モジュールのデータに関連するエラーがある場合、モジュールの内容を使用している全ての場所ではなく、モジュールのみをチェックする必要がある失敗ポイントが削減されます。
以下のスニペットは、モジュール内で CornSeedPacket の利用資格情報を定義する方法を示しています。
EntitlementInfo<public> := module:
CornSeedPacket<public> := module:
Name<public><localizes> : message = "Corn seed pack"
Description<public><localizes> : message = "A pack of corn seeds. Opening a pack yields 10 corn seeds for planting."
ShortDescription<public><localizes> : message = "Contains 10 corn seeds for planting."EntitlementInfo と CornSeedPacket は両方ともモジュールとして定義されており、全ての利用資格情報をインポートし、Name 変数などの CornSeedPacket のメンバー変数に直接アクセスできます。
このスニペットは、corn_seed_pack 利用資格の定義に役立つ EntitlementInfo モジュールをインポートする方法を示すものです。
CornSeedPacket モジュールから変数を直接参照できるため、Name などの変数の文字列を再入力する必要はありません。 これにより、タイプミスなどの視覚的なバグのリスクが軽減されます。
Entitlements<public> := module:
using { EntitlementInfo }
# Using custom entitlement class to distinguish your entitlements.
my_island_entitlement<public> := class<abstract><castable>(entitlement){}
corn_seed_pack<public> := class<concrete>(my_island_entitlement):
var Name<override> : message = CornSeedPacket.Name
var Description<override> : message = CornSeedPacket.Description
var ShortDescription<override> : message = CornSeedPacket.ShortDescription
using 文には、インポートするモジュールへのファイル パスが必要です。 モジュールは同じフォルダーにあることが想定されているため、このインスタンスではファイル パスは必要ありません。
島のパフォーマンスを改善する
<suspends> エフェクトを使用してアイテムの購入および付与方法を定義し、spawn を使用して呼び出すことで、エクスペリエンスの応答性を向上させることができます。
これによりゲーム ロジックの他の側面の実行を継続しながら、TryBuyOffer を非同期的に完了することができます。 これにより、取引が完了するまでゲームが一時停止されることもなくなります。
TryBuyOffer(Player:player, Offer:offer)<suspends>:void=
Result := BuyOffer(Player, Offer)
OnButtonInteraction(Agent:agent):void=
if (Player := player[Agent]):
spawn{TryBuyOffer(Player, OfferType)}
アイコンのベストプラクティス
ゲーム テクスチャには、インゲームで適切にレンダリングするための特定の要件があります。 インポートした画像を使用して UEFN でテクスチャを作成する場合は、ソース画像ファイルの高さと幅に 2 の累乗が使用されていることを確認してください。 これにより、各種プラットフォームでの島の互換性と安定性が向上します。
2 の累乗は、メモリ容量の少ないプラットフォームでテクスチャの解像度を下げるために、テクスチャ ストリーミングでも使用されます。
テクスチャ ストリーミングは以下に役立ちます。
テクスチャの解像度の変更
ゲームのロード時間の特定
ゲームのビジュアル品質の向上
GPU メモリの節約
2 の累乗ルールやテクスチャのリサイズについて詳しくは、「テクスチャのリサイズ」をご参照ください。
UEFN へのカスタム アセットのインポートについては、「アセットのインポート」をご参照ください。 Verse でテクスチャなどのアセットを公開する方法については、「アセットの公開」をご参照ください。
あなたの利用資格のテストとデバッグ
ライブ編集セッションとプライベート プレイテスト セッションは、どちらもデバッグ セッションです。 デバッグ セッションは、取引、利用資格、オファーの動作に次の影響を及ぼします。
取引によってアカウントから V-Bucks が差し引かれることはありません。
付与および購入された利用資格は、デバッグ セッション終了時に削除されます。
デバッグ セッションでは、デバッグ コマンド メニューにアクセスできます。
オファーをテストフェーズ中に使用するには、島のプライベートおよびプレイテスト バージョンで利用可能であり、全てのチーム メンバーがアクセスできる必要があります。 提供されているアイテムはライブとはみなされません。 オファーは、島が公開されて一般公開された後に利用可能になります。
デバッグ コマンド メニューへのアクセス
デバッグ コマンド メニューにアクセスするには PC の Esc キーまたはコントローラーのスタート/オプション ボタンを押し、メニューから [デバッグ コマンド] オプションを選択します。
Store Debug Commands
ストアフロントのデバッグ コマンドは [Store Debug Commands] の下にあります。ここでは次のコマンドにアクセスできます。
コマンド名 | 説明 |
ストアフロントを開く | 利用可能な全ての利用資格のオファーを含む動的なストア UI を表示し、プレイヤーが個別に購入できるようにします。これにより、テストしたい利用資格を直接選択できます。 |
全ての権限を付与 | このプレイヤーのインベントリを満たして、利用可能な全ての利用資格を最大数所有します。 また、ゲーム内の動作をテストして、プレイヤーがアクセスすべきでないエリアのアイテムにアクセスできるかどうかを確認することもできます。 |
権限を1つ付与 | プレイヤーに全ての権限を1つずつ付与します。 これにより多くの利用資格を付与しつつ、耐久性のない利用資格の購入テストを行っても最大所持数に達しないよう、プレイヤーのインベントリに余裕を持たせることができます。利用資格の付与が また、プレイヤーがアクセスすべきでないエリアのアイテムにアクセスできる場合のゲーム内動作をテストすることもできます。 |
権限を強制除外 | これにより、プレイヤーのインベントリから所有している全ての利用資格が削除されます。 これにより、プレイヤーのインベントリをリセットして購入オファーのテストを続行できるようになります。 このコマンドは、利用資格がプレイヤーのインベントリから削除されたときの このコマンドは、インベントリを素早くリセットすることでテストの反復を高速化するのに役立ちます。 |
全ての権限を印刷 | 所持中の権限を全てアウトプットログに印刷します |
購入が常に失敗する | デフォルトではオフです。 オフに設定すると、購入は意図したとおりに動作します。 オンに設定すると、購入が成功することを示す条件に関係なく、購入は常に失敗します。 Purchases Always Fail は、購入試行の失敗を示す false を返す |