自律型世界(オンチェーンゲーム)の構築をサポートする「MUD」の概要と、MUDを用いた主要ゲームプロジェクト「OP Craft」「Sky Strife」について概観

どうも、イーサリアムnavi運営のでりおてんちょーです。

昨今では、世界中のクリプトコアな人たちを中心に「オンチェーンゲーム開発」がおこなわれており、弊メディアでもDark ForestやIsaacなど先進的な事例についてピックアップしてきました。

これらの事例を見て、「私もオンチェーンゲーム開発をやってみたい!」と思われた方もいらっしゃったのではないかと思います。

しかし、いざオンチェーンゲームを構築しようとした際に、0からどのように作り上げていけば良いのか、多くの人は分からないものでしょう。

そこで今回は、Optimismエコシステムでのオープンソースのライブラリなどを提供し、そのような課題解決をサポートしてくれる「MUD」についてピックアップしていきたいと思います。

出典:Mud Workshop (figma)

MUDを用いることによって、オンチェーンゲーム開発が簡易になるとともに、各ゲームに相互運用性をもたせることで「自律型世界」を構築しようという野心的な取り組みに参加することが可能になります。

詳細は順を追って解説していきますが、本記事を読むことで自律型世界(オンチェーンゲーム)の構築にはコンポーザビリティや相互運用性、保守性の高いコードを記載することがいかに重要なのかについて、ご理解いただけるかと思います。

ということで本記事では、「MUD」という自律型世界を構築するためのオープンソースエンジンや、MUDを使って展開されているオンチェーンゲーム「OP Craft」「Sky Strife」などについて紹介・解説していきたいと思います。

でははじめに、この記事の構成について説明します。

STEP
「MUD」について

まずは、「MUD」とは何なのか、またその運営元である「Lattice」などについて、簡潔にご紹介します。

STEP
MUDの理解を深めよう

続いて、MUDの理解を深めていただくために、オンチェーンゲーム開発における課題とその解決策としてのESCパターンの概要、そしてMUDの今後の発展可能性などについて解説していきます。

STEP
MUDを使った主要プロダクトを概観

最後に、執筆時点までにMUDを用いたオンチェーンゲーム開発が進められている「OP Craft」「Sky Strife」について概観していきます。

本記事が、「MUD」の概要・注目ポイントなどについて理解したいと思われている方にとって、少しでもお役に立てれば幸いです。

※本記事は一般的な情報提供を目的としたものであり、法的または投資上のアドバイスとして解釈されることを意図したものではなく、また解釈されるべきではありません。ゆえに、特定のFT/NFTの購入を推奨するものではございませんので、あくまで勉強の一環としてご活用ください。

【AD】Nouns DAO JAPAN

Nouns DAO JAPANは世界で一番Nounsを広げるコミュニティを目指します。Discord参加はこちら

目次

「MUD」について

出典:mud.dev

概要

Autonomous Worlds(以下「自律型世界」と表記)を構築するためにつくられた、オープンソースのツール。それが「MUD」です。

MUDは、オンチェーンゲームを超える概念として「自律型世界」を提唱しており、それをEthereumエコシステム上で構築する際の全ての困難な問題を解決するために、オープンソースのライブラリを提供しています。

出典:MUD – An Engine for Autonomous Worlds | Lattice @ Devcon VI Bogotá

また、オープンソースにするために、コンポーザビリティ(構成可用性)の高い設計がなされている点も特徴的です。

ゲーム開発者は、MUDを用いてコンポーネントコントラクトを作成したり、既に存在する異なるコンポーネントを使用しそれらを組み合わせることで、誰でもインターオペラビリティ(相互運用性)を備えたオンチェーンゲームを構築することが可能になるのです。

出典:MUD – An Engine for Autonomous Worlds | Lattice @ Devcon VI Bogotá

例えば、これら2つのゲームは完全に異なるジャンルのものですが、全く同じインフラストラクチャ上に構築されています。

ゲームの詳細は「MUDを使った主要プロダクトを概観」章で解説します。

出典:MUD – An Engine for Autonomous Worlds | Lattice @ Devcon VI Bogotá

運営元:Lattice

出典:lattice.xyz

MUDの開発母体は「Lattice」というチームであり、主に以下チームメンバーで構成されています。

筆者はLatticeについて、『オンチェーンゲームの上位版である「自律型世界」を構築するために活動しているクリプトコアなチーム』という理解をしています。

出典:twitter.com/latticexyz

ちなみに、LatticeのTwitterアカウントのフォロワー数は執筆時点では5,200人ほどですが、Larry Cermak氏sassal氏、その他多くのVCの中の人・クリプトコア層の人々からフォローされています。

MUDの理解を深めよう

本章では、まずMUDの理解を深めるための前段階として「ECSパターンの基本的な概要」を中心に解説し、ECSに関する一般的な直感を身につけることを目的とします。

その後、MUDを使ってオンチェーンゲームを構築することでどのような利点があるのかなど、今後の発展可能性について触れていきたいと思います。

少々難解な内容を含みますので、MUDの仕組み部分ではなく概要や導入事例だけおさえたいという方は、本章は読み飛ばしていただいて構いません。

出典:Mud Workshop (figma)

参考記事:
Introduction to the Entity Component System (ECS) pattern

まずESCとは「エンティティ・コンポーネント・システム(Entity Component System)」の略称であり、主にゲーム開発で使用されているソフトウェアアーキテクチャパターンのことを指す単語です。

ECSパターンは、クラスベースの「継承」のような他の一般的なソフトウェアアーキテクチャのパラダイムに代わるものであり、Latticeチーム曰く『自律型世界を構築する際に抱えていた課題を解消するものであった』そうです。

ESCパターンを使用する以前で抱えていた課題

では、自律型世界をオンチェーンで構築するにあたり、LatticeチームはESCパターンを知る以前にどういった課題を抱えていたのか。

出典:Mud Workshop (figma)

結論から言うと、彼らはECSを知る前の段階において、コードのmaintainability(メンテナンス性)、composability(構成可用性)、mudulability(調節可用性)に大きな問題を抱えていました。

一体どういうことなのか、簡単な例を添えて確認していきましょう。

出典:Mud Workshop (figma)

世界には、生き物や物質などさまざまなエンティティ(実体)が存在します。

ということで、まずはMonster(モンスター)Donkey(ロバ)の2種類のエンティティを用いて、ゲームを作ることを想像してみましょう。

出典:Mud Workshop (figma)

そして、このMonsterDonkeyは、どちらも動くことができるものとします。

この時、クラスと継承のある世界ではMovableという基底クラスを作り、MonsterDonkeyのクラスをこの基底クラスから継承させることができますね。

出典:Mud Workshop (figma)

さてここで、このゲームにCombat(戦闘)を追加したいとします。

Monsterは戦闘に参加しますが、Donkeyは参加しない」としたい場合、CombatロジックをMonsterクラスに入れることになります。

出典:Mud Workshop (figma)

しかし、ここでさらに、『戦闘には参加するが、移動することはできない』 という類の新しいエンティティTower(塔)を追加するとします。

MonsterTowerの両方が継承するCombat基底クラスがあればこの問題は解決されますが、MonsterはすでにMovableを継承しており、多重継承はバグの元になってしまい、コードのmaintainability(メンテナンス性)に大きな問題を抱えてしまうことになりかねません。

「3種類のエンティティ」と「2種類の機能」だけでも、自律型世界の構築に際してすでにアーキテクチャの問題に直面しているのです。

出典:Mud Workshop (figma)

もし多重継承が許されないのであれば、両方のエンティティに対してそれぞれロジックを複製する以外の選択肢はありません。

出典:Mud Workshop (figma)

次に、Inventory(在庫)付きのChest(椅子)を追加し、さらにInventory付きのDonkeyも追加するとしたら、どんなバグが起こり得るでしょうか。たまったものではありませんね。

この段階で、composability(構成可用性)、mudulability(調節可用性)に大きな問題を抱えてしまうことが、容易に想像できるでしょう。

ESCパターンによる解決策

出典:Mud Workshop (figma)

本節では、ECSが先に述べてきた課題をどのように解決できるのかについて見ていきます。

まず、ECSではその名の通り、「エンティティ」「コンポーネント」「システム」の3つの基本的な構成要素があります。

  • エンティティ
    • 単なるID(uint型)であり、ロジックやデータを格納していない
  • コンポーネント
    • データを格納し、「エンティティにアタッチ(添付)」することが可能
    • 「プロパティ」と考えることもできるが、データはクラスのプロパティとは異なる方法で構造化されている
  • システム
    • ロジックを実行する
    • コンポーネントだけを扱い、エンティティは扱わない

ここでは、「Movable」「Combat」「Inventory」という3つのコンポーネントを作成するケースを想定してみましょう。

出典:Mud Workshop (figma)

次に、ロジックを実行するための「3つのシステム」を追加します。

出典:Mud Workshop (figma)
  • MovementSystem
    • Movableコンポーネントを持つあらゆるエンティティの移動を処理する
  • CombatSystem
    • Combatコンポーネントを持つあらゆるエンティティの戦闘を処理する
  • InventorySystem
    • Inventoryコンポーネントを持つあらゆるエンティティの在庫を処理する

これにて、エンティティの実装は非常にシンプルかつ簡単になりました。

出典:Mud Workshop (figma)

加えて以下のような「多くの種類のエンティティ」を追加したいと思った場合でも、シンプルかつ簡単に実装することができるようになるため、より保守性の高いコードを記載することが可能です。

  • Scout: [Movable]
  • Warchest: [Combat, Inventory]
  • Hero: [Movable, Combat, Inventory]

しかし、ここで最も重要な点は、「全く新しいレベルの高いコンポーザビリティを開放してくれること」です。

出典:Mud Workshop (figma)

各システムは限られたコンポーネントにしか対応しないため、ロジックは高度に分離され、非常に拡張しやすくなっています。

既に存在しているコンポーネントを組み合わせて新しいタイプのエンティティを作成することが可能であり、さらに全てのシステムがそのまま機能するため、これは数多くのエンティティや処理内容が存在する「自律型世界」においては非常に大きなポイントなのです。

今後の発展可能性

出典:Mud Workshop (figma)

ゲームエンジンのSolidityの部分の話をすると、各コンポーネントはそれ自身がコントラクト(○○.sol)であり、さらに各コンポーネントが自身のことを記録するための「Worldコントラクト」が中心にあります。

これにより、各コンポーネントの値が変わるたびにWorldコントラクトはイベントを発し、クライアントはそれを受信することでローカルステートを表すことが可能になります。

出典:Mud Workshop (figma)

これまで学んできたように、コンポーネントには一歳ロジックはなくデータのみが格納されており、ロジックは全てシステムに実装されています。

そして、各コンポーネントがWorldコントラクトに自身のことをを記録するのと同じように、全てのシステムもそれ自体がコントラクト(○○.sol)です。

そして、Worldコントラクトの特筆すべきポイントは、「所有者がおらず、パーミッションレスであること」です。

出典:Mud Workshop (figma)

つまり、誰でも独自のコンポーネントコントラクトをデプロイし、そのコンポーネントを既存または新規のエンティティに追加して、新しい機能やコンテンツを追加することができるのです。

全てのコンポーネント・システムは同じインターフェイスを実装し、そしてWorldコントラクトに記録がなされているのでクライアントをフォークする必要がなく、新しいコンテンツが追加されたら自動的に表示するといったことが可能になります。

つまり、MUDを使ってオンチェーンゲームを構築する人々は、ゲームをフォークしているわけでも、自分たちの世界を作っているわけでもありません。彼らは、既に存在している「自律型世界」に対して、新しい機能を追加しているのです。

MUDを使った主要プロダクトを概観

出典:MUD – An Engine for Autonomous Worlds | Lattice @ Devcon VI Bogotá

本章では、MUDを使用して構築されている2つのオンチェーンゲームプロジェクト「OP Craft」「Sky Strife」について概観していきます。

主要プロダクト①「OP Craft」

出典:dev.optimism.io/opcraft-autonomous-world/

OP Craftは「自律型ボクセル世界」を標榜する、オンチェーン(OP Stack)の3Dボクセルゲームです。

OP Stackは、「あらゆるユースケースに対応するカスタムチェーンを構築するために組み立てられるモジュラーコンポーネントのセット」のことを指す。
参考:Introducing the OP Stack

2022年10月18日に正式ローンチされた本ゲームは、LatticeチームとOptimismチームの技術協力により誕生しました。

出典:dev.optimism.io/opcraft-autonomous-world/

先に解説したオンチェーンゲームエンジン「MUD」と、Optimismの「OP Stack」を組み合わせることにより、3Dの自律型世界を構築したと謳っています。

大胆かつ抽象的な表現をすると、『完全オンチェーン版マインクラフト』のようなものです

出典:0xparc.notion.site/Autonomous-Worlds-Arcade-602eb2b16e3f455397cfbb218b0b7843

OP Craftの世界を構成する全ての要素(川・草の葉・山など)や、状態、ユーザーの行動履歴などはオンチェーン情報として格納され、最終的にEthereum(L1)のトランザクションとして記録されます。

でりおてんちょー

今回のメインテーマは「MUD」なのでOP Craftの詳細は割愛しますが、機会があれば別の記事で取り上げたいと思います。

主要プロダクト②「Sky Strife」

出典:0xparc.notion.site/Autonomous-Worlds-Arcade-602eb2b16e3f455397cfbb218b0b7843

Sky Strifeは、MUDゲームエンジンを使って構築された完全オンチェーンRTS(リアルタイム戦略ゲーム)です。

本ゲームの目標は「軍隊を作り、敵を倒し、戦利品を持って最初に脱出すること」であり、大まかなストーリーのあらすじは下記になります。

  • Sky Strifeの舞台となるのは、宇宙の底にあるAmalgema(アマルゲマ)という世界
  • その特殊な位置関係から、空には異世界の「Shards(かけら)」と呼ばれる浮遊島が常に存在している
  • Amalgemaの人々は、この「Shards」の中に貴重なパワーアーチファクトが含まれていることを知った
  • そのため、新たなShardsが出現すると、Shardsをめぐる争奪戦が繰り広げられるようになった

本記事では詳しいゲームルールの説明などは省きますが、執筆時点におけるフェーズは初期ベータ版であり、現状はDiscordで「Sky Strifer」「playtester」のロール保持者のみが参加できる段階となっています。

ちなみに、先日開催されたDevcon Bogotaでは、賞品付きのトーナメントなども開催されていた模様です。興味のある方は、以下のサイトから辿ってみてください。


以上、MUDゲームエンジンを用いて構築されているオンチェーンゲームについて概観しました。

今後は、OP CraftやSky Strifeをはじめとする代表的なゲーム開発が進められていきつつ、MUDベースのオンチェーンゲームが台頭して相互運用されるようにくると、コンポーザビリティの高い設計に努めた効果が表れるようになっていくのではないかと期待しています。

まとめ

【AD】GAME OF THE LOTUS PROJECT
でりおてんちょー

「地方創生×NFT」の取り組みとして非常にユニークで面白いと思います。


今回は、「MUD」という自律型世界を構築するためのオープンソースエンジンや、MUDを使って展開されているオンチェーンゲーム「OP Craft」「Sky Strife」などについて紹介・解説しました。

本記事が、「MUD」の概要・注目ポイントなどについて理解したいと思われている方にとって、少しでもお役に立ったのであれば幸いです。

また励みになりますので、参考になったという方はぜひTwitterでのシェア・コメントなどしていただけると嬉しいです。

イーサリアムnaviを運営するSTILL合同会社では、以下などに関するお問い合わせを受け付けております。

  • 広告掲載
  • PR記事の執筆業務
  • リサーチャー業務
  • アドバイザリー業務
  • その他(ご依頼・ご提案・ご相談など)

まずはお気軽に、ご連絡ください。

励みになるので、よかったらSNSなどでシェアしてください!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

最先端のCryptoネイティブなNFTプロジェクト、SolidityなどWeb3開発情報、その他Ethereum周りの情報などを中心に発信しています。

リサーチ業務やアドバイザー業務、PRなど含む記事執筆業務などのお仕事のご依頼や、イーサリアムnaviに対する広告掲載などは、お問合せページよりお気軽にご連絡ください。

目次