Cropout入門 - Unreal Engineゲームガイド

CropoutはUnreal Engineで作られたトップダウン型のカジュアルRTSゲームです。このガイドでは、SequenceのUnreal SDKを使ってEmbedded Wallet機能を統合する方法を解説します。

この統合により、プレイヤーはスマートコントラクトウォレット、ゲーム内アセットの所有、トランザクション管理などの機能を、煩わしいポップアップやガス代の心配なく利用できます。

このガイド用のボイラープレートをご確認ください。 Embedded Walletsについて詳しくはこちら。

1. セットアップ

ゲームサンプルをダウンロードする

Unreal Engineがインストールされている場合は、UnrealのCropoutページに直接アクセスしてください。

まだの場合は、まずEpic Games Launcherをインストールしてください:

  1. Epic Gamesの公式サイトからランチャーをダウンロードしてインストールします。

  2. ログイン:Epic Gamesアカウントでサインインするか、新規作成することもできます。

  3. プロジェクトを探す:Unreal Engineタブの「Learn」セクションで「Cropout Sample Project」と検索します。

  4. 「Add to Library」をクリックし、「Install」でプロジェクトファイルをダウンロードします。

Sequence Unreal Engine SDKをダウンロードする

まず、Sequence SDKの最新バージョンをダウンロードし、SequencePluginフォルダをUnrealプロジェクトのPluginフォルダに配置します。

または、Epic Games MarketplaceからSDKを取得できます。

プロジェクトの設定

  1. Sequence Builderコンソールにサインインしてください。

  2. Builderコンソールでゲーム用プロジェクトを作成します。

  3. BuilderコンソールでEmbedded Walletをセットアップします。

  4. SequenceConfig.iniファイルに、Builder ConsoleSettings > API Access Keysで取得したWaaS Config KeyとBuilder API Keyを追加してください。

  5. また、BuilderのOnboard > Embedded Wallet > Configurationで設定する必要がある、必要なOauthクライアントIDも忘れずに追加してください。

組み込みUIでログインする

Main MenuレベルのブループリントでSequence Connectorアクターを生成し、ログインパネルを表示して初期化します。

開発用途には組み込みUIの利用を推奨しています。詳しくはこちらをご覧ください。 さらにカスタマイズしたい場合は、独自のUI作成方法もご確認ください。

2. ネットワークIDとチェーンの設定

Sequence SDKとのやり取りを始めるには、_Sequence Connector_ブループリントを開き、_Event Graph > Begin Play_のAuth Successイベントを見つけて、SequenceWalletBPサブシステムのApi Update Network Idを呼び出し、ウォレットをプロジェクトで選択したチェーンに設定します。 同じイベント内で、Sequence IndexerサブシステムのSet Chainも呼び出し、アセットを正しく取得できるようにします。

3. ウォレットアドレスの取得

ウォレットアドレスを表示するには、まずSequenceWalletBPでユーザーのウォレット参照を再取得し、選択したネットワークのApi GetWallet Addressを使ってウォレットアドレスを取得・表示します。UI_Layer_Menuでユーザーアドレスを表示します。

4. NFTの設定

今回は、Resource BundleパックやFarming Boosts用にERC-1155コントラクトから始めます。NFTを作成するには、Builder Console > Deploy > ContractsWeb3 Game Itemを選択してください。

アイテムを作成したら、それぞれの販売用コントラクトを新たにデプロイし、Web 3 Game Item(Sale)を選択します。

Web 3 Gameアイテムには、対応する報酬とSaleコントラクトアドレスを、それぞれプロパティとして追加します。

NFTの取得

新しく作成したNFTを取得するには、IndexerサブシステムでGet Token Supplyを呼び出し、指定したコントラクトアドレスの情報とメタデータを取得します。これはCUI_Purchaseブループリントで確認できます。

NFTの購入

プレイヤーがNFTを購入できるようにするには、SequenceSDKサブシステムでPrimaryPurchaseトランザクションを作成・送信します。目的のWeb 3 Game Item(Sale)に対して、コントラクトの「Sale」プロパティを参照します。

プレイヤーのNFTを取得する

プレイヤーのNFTを取得するには、まずIndexerサブシステムでGet Token Balancesを呼び出し、指定ウォレットアドレスの全コントラクト残高を取得します。返却後、今度は各コントラクトごとに再度Get Token Balancesを呼び出し、そのコントラクトの残高と情報・メタデータを取得します。これらの処理はCUI_Vaultブループリントで確認できます。

プレイヤーのNFTをバーンする

NFTを使用したプレイヤーに報酬を与えるには、SequenceSDKサブシステムで目的のWeb 3 Game ItemBurnトランザクションを作成・送信し、トランザクションのステータスとコントラクトアドレスを取得してバーン成功を確認します。成功時はコントラクトのプロパティを使ってプレイヤーに報酬を付与します。これはCUI_VaultItemブループリントで確認できます。

より詳しい解説は、Read From BlockchainおよびWrite to Blockchainのセクションをご覧ください。

5. プレイヤーのサインアウト

プレイヤーのサインアウトとセッション終了には、Sequence SessionsサブシステムのClear Sessionを呼び出します。これにより保存された認証情報が削除され、次回アクセス時に再度ログインが必要になります。このメソッドはUI_Layer_Menuで呼び出します。