BOLT:SolanaベースのECSフルチェーンゲームエンジン

ビデオリンク:

登壇者:Andrea、Gabriele、Magicblockの共同創設者

演讲标题:オンチェーンゲームのためのフレームワーク

訳者まえがき:「BOLTは、MagicblockチームがSolanaエコシステムのために開発したフルチェーンのゲームエンジンです。 この記事は、Breakpoint 2023イベントでのMagicblockの創設者2人のプレゼンテーションから編集されています。 "

みなさん、こんにちは、ハロウィン前の最後のスピーチですが、スピーチの内容が皆さんにとって興味深いものになることを願っています。 私の名前はアンドレアで、共同創設者のガブリエレです。 本日は、新しいフルチェーンゲームフレームワーク(エンジン)をご紹介します。

01.なぜフルチェーンゲームが必要なのか

まずは基本から始めるので、状態とロジックの両方をオンチェーンでフルチェーンゲームを構築し、それに伴うすべての複雑さに対処する必要があります。 その理由は単純で、従来のゲームインフラにはない機能を利用するためです。

最初の機能は、パーミッションレスMODです。 つまり、すべてのプレイヤーと開発者は、プラグインやMODの導入など、ゲーム内のあらゆるコンポーネントを高度なクライアントからカスタマイズできます。 ゲームの根底にあるロジックでさえ、スマートコントラクトを通じて拡張することができます。 基本的には、各ゲームがデフォルトで新しいプラットフォームである新しいモードであり、チームがどんなに小さくてもコンテンツのパワーハウスになることができます。

2つ目の特徴は永続性です。 自律的な世界と、これらの仮想体験が永遠に存在できるという事実は、多くの影響を引き起こしました。 サーバーを検閲したりシャットダウンしたりすることはないため、これらのエクスペリエンスは実際にはまったく新しい意味をもたらします。 ゲームは、プレイヤーがプレイし、交流し、グローバルな商取引を行うためのプラットフォームとなっており、従来のゲームプラットフォームよりも普遍的です。

最後の特徴は、開放経済です。 ゲームは、ブロックチェーンのオープンでグローバルな摩擦のない決済システム、特にエコシステム内のマイクロペイメントを活用し、DEXやNFTマーケットプレイスなどの既存のオンチェーンインフラストラクチャを再利用することができます。

02.既存のソリューション

オムニチェーンゲームの現在の問題は、開発体験が非常に悪いことであり、市場に出回っているソリューションを見ると、開発者の体験を簡素化しようとする開発フレームワークがいくつかあることがわかりました。

それらのいくつかは、オフチェーンで計算を行い、オンチェーンで計算の完全性を証明できる証明可能なセッションで反復しようとするという点で非常に興味深いものです。 または、ループベースのランタイムではなく、ブロックチェーンゲームエンジンに適したイベント駆動型ランタイムを導入します。

しかし、これらのフレームワークはすべて、より高いパフォーマンスとより高いTPSを実現するために、パフォーマンスとコンポーザビリティのトレードオフを必要とします。 通常は、分離を作成するか、シャードを使用して別のランタイムを導入します。

しかし、私たちはそのトレードオフに満足していません。 私たちは、必要なTPSをサポートできるフレームワークがあるとしたらどうだろうかと考えました。 ゲームが成功すれば、何百万人ものプレイヤーがいても、ガス戦争は起こらないので、ユーザーエクスペリエンスを犠牲にする必要はありません。 また、このフレームワークはシャーディングや断片化を必要としないため、証明可能なゲームセッションを使用し、ガス料金を支払うことなく時間の経過をシミュレートすることもできます。 システムを断片化したり、レイヤー 3 を使用したりする必要はまったくありません。

03.Solanaのフルチェーンゲーム開発エンジン:BOLT

そこで、SVMをベースにした高性能でコンポーザブルなフルチェーンゲーム開発フレームワークであるBOLTをご紹介できることを嬉しく思います。

BOLTはモジュール式でコンポーザブルであるため、Solana上の既存のインフラストラクチャをすべて使用できます。 彼は、オンチェーンID、ガスレスAPI、セッションキーなどの既存のオンチェーン機能だけでなく、既存のAnchor開発フレームワークやSolana上の既存のすべてのプログラムと連携しています。 どちらも、ユーザーの要求に応じて開いたり閉じたり、必要に応じてスケーリングされるゲームセッションであるエフェメラルロールアップのおかげで、より高い桁数でスケーリングできます。

BOLTは非常に高速で、これらの専用ランタイムを使用して特定の操作を高速化する前に、従来のゲームエンジンと同じレベルのパフォーマンスを実現できます。

BOLTフレームのパノラマ表示です。 彼は明らかにSolana用に構築されていますが、SVM互換のレイヤー2など、SVM互換のプラットフォームで使用できます。 BOLTには、コンポーザビリティとスケーラビリティという2つの主要な目標があります。

ECS(Entity Component)システムは、オンチェーンコンポーネントの使用を簡素化する方法の1つです。 もう 1 つは、先ほど簡単に触れた Ephemeral Rollup ですが、この 2 つのテクノロジについては後ほど詳しく説明します。

BOLTは、ゲームのフロントエンドとして機能することが多いUnityなど、最も一般的に使用されているレガシーゲームエンジンと統合されています。 もちろん、これにはGodotやPhaserなどの他のオープンソースで愛されているゲームエンジンも含まれます。 また、インディー開発者のエクスペリエンスを向上させ、迅速なゲーム制作を促進することに重点を置いた、更新されたゲームクライアントであるTurboとも連携しています。 将来的には、さらに多くのパートナーが存在する可能性があります。

ここから始めて、ECSエンティティコンポーネントシステムが必要な理由を説明します。 答えは簡単で、コンポーザビリティを最大限に高めることができるため、既製のコンポーネントを作成して再利用できます。

名前が示すように、ECS は 3 つの主要な要素に組み込まれています: エンティティ (基本的には別のゲーム ワールド インスタンスに登録される識別子)、コンポーネント (基本的にエンティティに関連付けられたデータになるようにデータ構造を定義する)、最後にエンティティにアタッチされたコンポーネントを操作するロジックであるシステムです。

このアーキテクチャの利点は、すべてのシステムとコンポーネントが再利用可能であることです。 これらはパブリック レジストリで公開でき、開発者はあらゆる種類のコンポーネントを簡単に提供、構築、検出、統合できるため、ゼロからコードを 1 行も記述する必要はなく、既存のすべてのコンポーネントを再利用して、最終的にそれらに貢献できます。 たとえば、グリッドデータ構造(迷路や戦場など)、移動システム、または戦場の霧のためのゼロ知識証明システムを使用できます。

04.BOLTエンジンECSプログラミング演習

(翻訳者注:この部分は開発者が元のビデオを見ることを推奨しており、開発者以外の方は読み飛ばして結構です)

さて、IDEに切り替えて、BOLT ECSエンジンを使った簡単なゲーム例をお見せします。

いくつかのエンティティ、場所コンポーネント、およびこの場所コンポーネントのデータを操作および変更する 2 つのシステムを定義します。 したがって、最初のエントリポイントは、ワールドプログラムと対話することです。 ワールドプログラムはBOLTフレームワークの一部であり、新しいワールドインスタンスを登録できるいくつかの抽出を公開しています。

ワールドインスタンスにエンティティを追加したり、定義したエンティティ(基本的にコンポーネントプログラムによって定義されるエンティティ)にコンポーネントを登録したりできます。 コンポーネント プログラムには 2 つのディレクティブが含まれており、1 つ目は、コンポーネントで使用されるデータ行を格納するための領域の初期化、作成、および割り当てです。 この簡単な例では、位置コンポーネントを定義しており、初期化ディレクティブのコンテキストを見ると、コンポーネントデータがあり、コンポーネントデータは、たとえばプレイヤーの位置を格納できるXYZ座標を持つ構造を定義していることがわかります。

さて、2番目のディレクティブはおそらく最も興味深いもので、任意のロジックを実行できるようにするエントリポイントです。 彼は、コンポーネントと任意のシステムを入力として受け取り、プログラミングの場所をまたいで実行することにより、システム内部で定義されたロジックを実行します。 さて、15行目を見ると、CPI(Common Programming Interface)呼び出しがあり、CPIを介して内部的に定義されたロジックを実行します。 彼はシステムによって定義されたすべての計算を実行し、コンポーネントプログラムがそれをデータに取得して設定する場所に戻ります。

それでは、apply関数のコンテキストを見てみましょうが、基本的には2つのアカウントしか持っていないことがわかります。 1つ目はコンポーネントのデータを含むアカウントで、2つ目はシステムプログラムです。 その結果、システム・プログラムは単一のプログラムではなく、インターフェースになりました。 したがって、BOLTシステムインターフェースに準拠したプログラムはすべて、このアプリを介して実行できます。

05.ECSシステムの意義

基本的に、これはゲームのロジックを設計する方法を変え、従来のプロセスをひっくり返します。 以前は、プログラムにロジックを作成またはカプセル化する場合、通常は最初に機能を追加し、それぞれがプログラム内のディレクティブであり、その後、ある時点で開発中のゲーム プログラムをロックダウンしていました。

しかし、ECSモデルでは、最初から不変のプログラムを持つことができ、このプロキシメカニズムを使用して、社内または誰でも構築するシステムを追加できるため、永遠に実行でき、スケーラブルで、誰でもゲームのロジックを実際に変更できるゲームを作成できます。

これらのコンポーネントで動作する新しいシステムを展開できます。 これで、インターフェイスでいくつかのチェックを行うことができるため、コンポーネントデータを変更できる新しいシステムを追加する権限のないゲームメカニクスを設計できます。

または、システムがコンポーネントの実行を許可しているかどうかを確認するインターフェイスを設定することもできます。 たとえば、誰かが新しいロジックを提案し、そのロジックが承認された場合、すべてのプレイヤーがそのロジックをゲームで使用できるガバナンスシステムを設計できます。

これにより、ゲームのワールド(ワールドコントラクト)が分岐することさえあります。 世界では、フライトシステムを所有しています。 また、別の世界では、システムが承認されなくても、異なるルールを持つことが可能であり、誰もが自分のバージョンの世界に貢献することができます。

次に、そのコンポーネントを変更できるシステムを構築する方法を見てみましょう。 システムは基本的に実行命令を定義するSolana上のプログラムにすぎず、実行命令はCPI(Common Programming Interface)のコンポーネントプログラムから呼び出すものです。 ここでは、入力方向を受け取り、デルタを計算し、コンポーネントの X 位置と Y 位置を変更するという非常に単純なロジックをカプセル化しています。

それでは、ゲームをリリースした後でも、他の誰かがデプロイできる別のシステムを見てみましょう。 ute を実装するシステムの別の例を次に示します。 ここでは、Z 位置が 1 ずつ増加しているため、誰かが側面システムを追加しようとしていますが、これはゲームの上に別のレイヤーを持つインターフェイスである可能性があります。

つまり、今の考え方は、これらすべてのシステム、これらすべてのコンポーネントが本当にコンポーザブルであり、ゲームのユーザーはもはや単純なユーザーではなく、ゲームがオープンでスケーラブルで永続的なプラットフォームになったということです。 そこで、今回の例で用意した単体テストを実行し、SolanaのスマートコントラクトフレームワークであるAnchor上に構築されたBOLT CLIを使用しますので、すでにSolanaを使い慣れている方は、新たに学ぶ必要はありません。

今はSolanaでプログラムを開発して、プログラムを開発して、プログラムをテストするだけなので、ここではbolt buildとbolt testを実行し、ここでプログラムをデプロイし、次にここで準備した型テストを行っています。

したがって、ここでのテストは、新しいワールドを初期化するためのトランザクションを送信しています。 いくつかのエンティティを登録し、そのうちのいくつかにロケーションコンポーネントをアタッチしていますが、興味深いのは、ここでいくつかのシステムを実行することです。 したがって、ここでは apply 関数を呼び出し、それらのシステムの 1 つを使用しています。 したがって、これはデフォルトのシステムです。

ここでは、単純な動きを呼び出し、ここで動きを飛ばしています。 さて、テストのログを見ると、最初の取引では、ここでは上向きの移動システムを使用して、Yポジションを1増やします。 2 番目のトランザクションでは、同じシステムを使用して右に移動し、最後に、逆のフライト システムを実行して、Z 位置を 1 増やします。 これは単純な例ですが、彼は非常に強力なメカニズムを提供しており、誰でもゲームを開発、拡張、そして潜在的にゲームを楽しくすることができます。

06.エフェメラルロールアップ

スライドに戻るので、BOLTフレームワークの2つ目の興味深い側面である、エフェメラル・ロールアップと呼ばれるスケーラビリティ・ソリューションについて説明します。

一般的に、Solanaはすでに非常に高速で安価であり、現在は400ミリ秒ごとにブロックを生成し、数千のトランザクションを処理できるため、実際にはフルチェーンゲームを構築する準備ができていると想定されています。 ただし、マルチプレイヤー用の古い論理チェーンがある場合、場所の更新が遅すぎます。

そのため、Solanaの実行時間と完全に互換性のある短命なアクセラレーションレイヤーを構築できます。 使用される時間はオプションであり、ほとんどのロジックはまだメインチェーン上で実行される間、特定の操作の実際の加速として機能することができるため、Solana上のすべての状態がアカウントに保存されるという機能に依存しています。

通常、ロジックを定義するゲームプログラムがあり、すべての状態がこのアカウントに保存されるため、これらのアカウントの一部をBOLTエンジンを使用するこのエフェメラルレイヤーに委任できます。

この例では、プレイヤーの位置情報を保存する 2 つの承認されたアカウントがあり、プロバイダーは委任要求とプロビジョニング要求をアクティブにリッスンしています。 彼は必要に応じて新しいランタイムを開始する予定で、これは高速でカスタマイズ可能で、ガストランザクションやティックがなく、50ミリ秒未満のトランザクションを実際に作成でき、複数の専用ランタイムを持つことでスケーリングできる可能性があります。

さて、もう1つの興味深い点は、この複雑さをすべてユーザーから抽象化できることです。 RPCルーターは、基本的に従来のRPCルーターに似ています。 RPC クライアントは、RPC と直接対話してトランザクションを送信できます。 Solanaでは、すべてのトランザクションがすべての変更可能で読み取り可能なアカウントに対して事前に宣言されているため、RPCルーターは基本的にトランザクション、データクエリ、および取得を正しい層にルーティングできます。

そして、ある時点で、エフェメラルレイヤー(その名前が示すように)は閉じられ、すべての状態はSolanaベースレイヤーに決済されますが、これはすべてのアカウントを追跡するシーケンサーの責任です。

このメカニズムを別の見方をすると、2つのレイヤーがあり、トランザクションを並行して実行しています。 メインチェーンのスループットを使用せずに低レイテンシーで更新できる委任アカウントがあります。 そして、委任されておらず、メインチェーン上で実行される他のアカウントがあります。

さて、非常に興味深いのは、プログラム、ツール、フレームワーク、インフラストラクチャがすべてメインチェーン上にあることです。 プログラムを Rollup に配置する必要はありませんが、これは他の多くのアーキテクチャでは一般的です。 すべてが同じレイヤー上にあり、すべてがコンポーザブルであり、前述したように、この特殊なランタイムも拡張可能であり、実際にカスタマイズできます。

そして今、これは彼がブロックチェーン上に構築し、低遅延であるまったく新しいカテゴリーのゲームを解き放ちます。 従来のマルチプレイヤーサーバーと同じですが、レイヤー1エコシステムで利用可能なすべてのものと組み合わせることができます。

既存の流動性にアクセスしたり、プロトコルを介してメッセージを送信したり、NFTを作成したり、アカウントの抽象化、セッションキー、リーダーボード、統一されたエコシステムを使用したりすることができ、誰もが同じエコシステムを豊かにしています。

ご清聴ありがとうございました。 QRコードを使用してフレームワークへの早期アクセスにサインアップし、リポジトリをチェックアウトできます。 紹介したフレームワークを詳細に説明した堅牢なドキュメントとホワイトペーパーは、すでに見つかります。 どうもありがとうございます。

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • リポスト
  • 共有
コメント
0/400
コメントなし
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)