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


これらの事例を見て、「私もオンチェーンゲーム開発をやってみたい!」と思われた方もいらっしゃったのではないかと思います。
しかし、いざオンチェーンゲームを構築しようとした際に、0からどのように作り上げていけば良いのか、多くの人は分からないでしょう。
そこで今回は、EVMチェーンエコシステムでオープンソースライブラリなどを提供し、そのような課題解決をサポートしてくれる「MUD」についてピックアップしていきたいと思います。

MUDを用いることによって、オンチェーンゲーム開発が簡易になるとともに、各ゲームに相互運用性をもたせることで「自律型世界」を構築しようという野心的な取り組みに参加することが可能になります。
ということで本記事では、「MUD」という自律型世界を構築するためのオープンソースエンジンや、MUDを使って展開されているオンチェーンゲーム「OP Craft」「Sky Strife」などについて紹介・解説していきたいと思います。
でははじめに、この記事の構成について説明します。
まずは、「MUD」とは何なのか、またその運営元である「Lattice」などについて、簡潔にご紹介します。
続いて、MUDの理解を深めていただくために、オンチェーンゲーム開発における課題とその解決策としてのECSパターンの概要、そしてMUDの今後の発展可能性などについて解説していきます。
最後に、執筆時点までにMUDを用いたオンチェーンゲーム開発が進められている「OP Craft」「Sky Strife」について概観していきます。
本記事が、「MUD」の概要・注目ポイントなどについて理解したいと思われている方にとって、少しでもお役に立てれば幸いです。
※本記事は一般的な情報提供を目的としたものであり、法的または投資上のアドバイスとして解釈されることを意図したものではなく、また解釈されるべきではありません。ゆえに、特定のFT/NFTの購入を推奨するものではございませんので、あくまで勉強の一環としてご活用ください。
イーサリアムnaviの活動をサポートしたい方は、「定期購読プラン」をご利用ください。
「MUD」について

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

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

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

運営元:Lattice

MUDの開発母体は「Lattice」というチームであり、主に以下チームメンバーで構成されています。
筆者はLatticeについて、『オンチェーンゲームの上位版である「自律型世界」を構築するために活動しているクリプトコアなチーム』という理解をしています。

ちなみに、LatticeのTwitterアカウントのフォロワー数は執筆時点では5,200人ほどですが、Larry Cermak氏やsassal氏、その他多くのVCの中の人・クリプトコア層の人々からフォローされています。
MUDの理解を深めよう
本章では、まずMUDの理解を深めるための前段階として「ECSパターンの基本的な概要」を中心に解説し、ECSに関する一般的な直感を身につけることを目的とします。
その後、MUDを使ってオンチェーンゲームを構築することでどのような利点があるのかなど、今後の発展可能性について触れていきたいと思います。
少々難解な内容を含みますので、MUDの仕組み部分ではなく概要や導入事例だけおさえたいという方は、本章は読み飛ばしていただいて構いません。

まずECSとは「エンティティ・コンポーネント・システム(Entity Component System)」の略称であり、主にゲーム開発で使用されているソフトウェアアーキテクチャパターンを指す単語です。
ECSパターンは、クラスベースの「継承」のような他の一般的なソフトウェアアーキテクチャのパラダイムに代わるものであり、Latticeチーム曰く『自律型世界を構築する際に抱えていた課題を解消するものであった』そうです。
ECSパターンを使用する以前で抱えていた課題
では、自律型世界をオンチェーンで構築するにあたり、LatticeチームはECSパターンを知る以前にどういった課題を抱えていたのか。

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

世界には、生き物や物質などさまざまなエンティティ(実体)が存在します。
ということで、まずはMonster(モンスター)
とDonkey(ロバ)
の2種類のエンティティを用いて、ゲームを作ることを想像してみましょう。

そして、このMonster
とDonkey
は、どちらも動くことができるものとします。
この時、クラスと継承のある世界ではMovable
という基底クラスを作り、Monster
とDonkey
のクラスをこの基底クラスから継承させることができますね。

さてここで、このゲームにCombat(戦闘)
を追加したいとします。
「Monster
は戦闘に参加しますが、Donkey
は参加しない」としたい場合、Combat
ロジックをMonster
クラスに入れることになります。

しかし、ここでさらに、『戦闘には参加するが、移動することはできない』 という類の新しいエンティティTower(塔)
を追加するとします。
Monster
とTower
の両方が継承するCombat
基底クラスがあればこの問題は解決されますが、Monster
はすでにMovable
を継承しており、多重継承はバグの元になってしまい、コードのmaintainability(メンテナンス性)に大きな問題を抱えてしまうことになりかねません。

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

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

本節では、ECSが先に述べてきた課題をどのように解決できるのかについて見ていきます。
ECSではその名の通り、「エンティティ」「コンポーネント」「システム」の3つが、基本的な構成要素です。
- エンティティ(空箱)
- 単なるID(uint型)であり、ロジックやデータを格納していない
- コンポーネント(データ)
- データを格納し、「エンティティにアタッチ(添付)」することが可能
- 「プロパティ」と考えることもできるが、データはクラスのプロパティとは異なる方法で構造化されている
- システム(ロジック)
- ロジックを実行する
- コンポーネントだけを扱い、エンティティは扱わない

ECSについての理解を深めるために、ここでは「Movable」「Combat」「Inventory」という3つのコンポーネントを作成するケースを想定してみましょう。
コンポーネントは単なるデータであり、処理の内容などは一切含みません。
ロジックを実行するための処理は「システム」として分けて扱われますが、ここでは以下3つのシステムを追加します。

- MovementSystem
- Movableコンポーネントを持つあらゆるエンティティの移動を処理する
- CombatSystem
- Combatコンポーネントを持つあらゆるエンティティの戦闘を処理する
- InventorySystem
- Inventoryコンポーネントを持つあらゆるエンティティの在庫を処理する
これにて、エンティティの実装は非常にシンプルかつ簡単になりました。

加えて、「ここから更に多くの種類のエンティティを追加したい!」と思った場合でも、シンプルかつ簡単に実装することができるようになるため、より保守性の高いコードを記載することが可能になります。
- Scout: [Movable]
- Warchest: [Combat, Inventory]
- Hero: [Movable, Combat, Inventory]
しかし、ここで最も重要な点は、ECSパターンが「全く新しいレベルの高いコンポーザビリティを開放してくれること」にあります。

各システムは限られたコンポーネントにしか対応しないため、ロジックは高度に分離されると同時に、非常に拡張しやすい構造になっています。
今後の発展可能性

ゲームエンジンのSolidityの部分の話をすると、各コンポーネントはそれ自身がコントラクト(○○.sol)であり、さらに各コンポーネントが自身のことを記録するための「Worldコントラクト」が中心にあります。
これにより、各コンポーネントの値が変わるたびにWorldコントラクトはイベントを発し、クライアントはそれを受信することでローカルステートを表すことが可能になります。

これまで学んできたように、コンポーネントには一切のロジックはなく「データのみ」が格納されており、ロジックは全てシステムに実装されています。
そして、各コンポーネントがWorldコントラクトに自身のことをを記録するのと同じように、全てのシステムもそれ自体がコントラクト(○○.sol)です。
さらにWorldコントラクトの特筆すべきポイントは、「所有者がおらず、パーミッションレスであること」です。

全てのコンポーネント・システムは各自インターフェイスを実装しつつもWorldコントラクトに記録がなされているのでクライアントをフォークする必要がなく、新しいコンテンツが追加されたら自動的に表示させるといったことが可能になります。
つまり、MUDを使ってオンチェーンゲームを構築する人々は、ゲームをフォークしているわけでも、自分たちの世界を作っているわけでもありません。彼らは、既に存在している「自律型世界」に対して、新しい機能を追加していくことになるです。
MUDを使った主要プロダクトを概観

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

OP Craftは「自律型ボクセル世界」を標榜する、オンチェーン(OP Stack)の3Dボクセルゲームです。
2022年10月18日に正式ローンチされた本ゲームは、LatticeチームとOptimismチームの技術協力により誕生しました。

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

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

今回のメインテーマは「MUD」なのでOP Craftの詳細は割愛しますが、機会があれば別の記事で取り上げたいと思います。
主要プロダクト②「Sky Strife」
Sky Strifeは、MUDゲームエンジンを使って構築された完全オンチェーンRTS(リアルタイム戦略ゲーム)です。




本ゲームの目標は「軍隊を作り、敵を倒し、戦利品を持って最初に脱出すること」であり、大まかなストーリーのあらすじは下記になります。
- Sky Strifeの舞台となるのは、宇宙の底にあるAmalgema(アマルゲマ)という世界
- その特殊な位置関係から、空には異世界の「Shards(かけら)」と呼ばれる浮遊島が常に存在している
- Amalgemaの人々は、この「Shards」の中に貴重なパワーアーチファクトが含まれていることを知った
- そのため、新たなShardsが出現すると、Shardsをめぐる争奪戦が繰り広げられるようになった
ちなみに、先日開催されたDevcon Bogotaでは、賞品付きのトーナメントなども開催されていた模様です。興味のある方は、以下のサイトから辿ってみてください。
3/ AW Arcade: On Wednesday 4:00pm at the Devcon hacker basement, we’ll be showcasing two of our latest projects built with MUD: a fully on-chain 3D voxel world, and Sky Strife: a real-time strategy game. We will run a tournament with prizes.
— Lattice (@latticexyz) October 9, 2022
more info: https://t.co/9qHlYUrNku pic.twitter.com/ycIA2Co9Wl


以上、MUDゲームエンジンを用いて構築されているオンチェーンゲームについて概観しました。
今後は、OP CraftやSky Strifeをはじめとする代表的なゲーム開発が進められていきつつ、MUDベースのオンチェーンゲームが台頭して相互運用されるようにくると、コンポーザビリティの高い設計に努めた効果が表れるようになっていくのではないかと期待しています。
まとめ
今回は、「MUD」という自律型世界を構築するためのオープンソースエンジンや、MUDを使って展開されているオンチェーンゲーム「OP Craft」「Sky Strife」などについて紹介・解説しました。
本記事が、「MUD」の概要・注目ポイントなどについて理解したいと思われている方にとって、少しでもお役に立ったのであれば幸いです。
また励みになりますので、参考になったという方はぜひTwitterでのシェア・コメントなどしていただけると嬉しいです。
🆕記事をアップしました🆕
— イーサリアムnavi🧭広告掲載募集中! (@ethereumnavi) November 19, 2022
今回は、Optimismで自律型世界(オンチェーンゲーム)を構築するためにつくられたオープンソースツール「MUD」について解説📝
MUDをベースに構築されたオンチェーンゲーム「OP Craft」「Sky Strife」などについても概観しています🎮@latticexyz https://t.co/nltqfAusxY


イーサリアムnaviを運営するSTILL合同会社では、web3/crypto関連の記事執筆業務やリサーチ代行、その他(ご依頼・ご提案・ご相談など)に関するお問い合わせを受け付けております。
まずはお気軽に、こちらからご連絡ください。
- 法人プランLP:https://ethereumnavi.com/lp/corporate/
- Twitter:@STILL_Corp
- メールアドレス:info@still-llc.com