SequenceのUnreal Engine SDKを使ったWeb3ゲーム機能の構築と統合
Sequence Wallet の統合、プレイヤーのアセット取得、メッセージ署名、トランザクション送信など、Sequence の Unreal SDK を使って実現できます。
Cropout入門 - Unreal Engineゲームガイド
CropoutはUnreal Engineで作られたトップダウン型のカジュアルRTSゲームです。このガイドでは、SequenceのUnreal SDKを使ってEmbedded Wallet機能を統合する方法を解説します。
この統合により、プレイヤーはスマートコントラクトウォレット、ゲーム内アセットの所有、トランザクション管理などの機能を、煩わしいポップアップやガス代の心配なく利用できます。
このガイド用のボイラープレートをご確認ください。 Embedded Walletsについて詳しくはこちら。
1. セットアップ
ゲームサンプルをダウンロードする
Unreal Engineがインストールされている場合は、UnrealのCropoutページに直接アクセスしてください。
まだの場合は、まずEpic Games Launcherをインストールしてください:
-
Epic Gamesの公式サイトからランチャーをダウンロードしてインストールします。
-
ログイン:Epic Gamesアカウントでサインインするか、新規作成することもできます。
-
プロジェクトを探す:Unreal Engineタブの「Learn」セクションで「Cropout Sample Project」と検索します。
-
「Add to Library」をクリックし、「Install」でプロジェクトファイルをダウンロードします。
Sequence Unreal Engine SDKをダウンロードする
まず、Sequence SDKの最新バージョンをダウンロードし、SequencePlugin
フォルダをUnrealプロジェクトのPlugin
フォルダに配置します。
または、Epic Games MarketplaceからSDKを取得できます。
プロジェクトの設定
-
SequenceConfig.ini
ファイルに、Builder ConsoleのSettings > API Access Keys
で取得したWaaS Config Key
とBuilder API Keyを追加してください。 -
また、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 > ContractsでWeb3 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 Item
のBurn
トランザクションを作成・送信し、トランザクションのステータスとコントラクトアドレスを取得してバーン成功を確認します。成功時はコントラクトのプロパティを使ってプレイヤーに報酬を付与します。これはCUI_VaultItem
ブループリントで確認できます。
より詳しい解説は、Read From BlockchainおよびWrite to Blockchainのセクションをご覧ください。
5. プレイヤーのサインアウト
プレイヤーのサインアウトとセッション終了には、Sequence SessionsサブシステムのClear Session
を呼び出します。これにより保存された認証情報が削除され、次回アクセス時に再度ログインが必要になります。このメソッドはUI_Layer_Menuで呼び出します。