どうも、イーサリアムnavi運営のでりおてんちょーです。
今回は、Dark Forestという『zkSNARKを用いたオンチェーンゲーム』について紹介・解説していきたいと思います。
クリプトネイティブなプロジェクトがお好きな方であれば、「できる限りオンチェーンで構築されたゲームをプレイしたい」と思われたことが一度はあるのではないでしょうか?
実際、Ethereumチェーン上でもNFT/DeFi要素を絡めたゲームなどは多数展開されており、AnonymiceやWolf Game、The Cryptなどさまざまな試みが続けられている印象です。

しかし、一般的にEthereum(L1)のオンチェーンゲームの場合、「不完全情報ゲーム」の構築が難しいのではないか?という問いが生まれます。
全ての情報がパブリックブロックチェーン上に記録されており検証可能なので、例えば『隠し要素』をもたせるようなゲームの構築には不向きであり、それゆえに複雑なゲームが成り立たないといった課題があると筆者は理解しています。
しかし、今回ご紹介する「Dark Forest」では、zkSNARKを用いることでそういった課題を解決しながら、MMOゲームをオンチェーンで実現しようと奮闘しており、非常に注目が集まっています。
ということで本記事では、「Dark Forest」というzkSNARKを用いたオンチェーンゲームについてご紹介することで、本プロジェクトの概要ならびに注目ポイント、プリミティブなオンチェーンゲームが実現するweb3時代における不完全情報ゲームなどを理解していただくことを目的とします。
でははじめに、この記事の構成について説明します。
まずは、本記事の題材となっているオンチェーンゲーム「Dark Forest」についての概要、ならびに完全情報ゲーム ・不完全情報ゲーム・暗号版「戦場の霧」などのワードについての理解を深めていただきます。
続いて、筆者が実際に「Dark Forest」をプレイしてみることで、話題となっているオンチェーンゲームの実態をご覧いただき、雰囲気を掴んでいただくことを目的とします。
最後に、オンチェーンゲームの発展可能性やCentralizedなゲームとの違い点などについて、筆者の私見を交えながら解説してまいります。
本記事が、「Dark Forest」の概要や注目ポイント、分散型オンチェーンゲームの可能性などについて理解したいと思われている方にとって、少しでもお役に立てれば幸いです。
※本記事は一般的な情報提供を目的としたものであり、法的または投資上のアドバイスとして解釈されることを意図したものではなく、また解釈されるべきではありません。ゆえに、特定のFT/NFTの購入を推奨するものではございませんので、あくまで勉強の一環としてご活用ください。

Alpha Navigatorは、超アーリーなクリプトプロジェクトに特化して探知し、webサイト, discord, twitterで情報発信を行っています。
thanks for sharing this @ethereumnavi! always awesome to see content from ethereum + DF community from around the world + in many different languages https://t.co/nkmQc0U8Sq
— dark forest (@darkforest_eth) September 26, 2022
Dark Forestとは

概要

Dark Forestは、EthereumチェーンとGnosis(旧: xDai)チェーン上で構築される、分散型のRTS(リアルタイム戦略)オンチェーンゲームです。
本ゲームは「MMO宇宙征服ゲーム」であることを謳っており、劉慈欣(りゅう じきん)氏の代表作である『三体』シリーズの2冊目「The Dark Forest」という同名の小説に基づいたゲーム作品となっています。
本ゲームの執筆時点までの開発状況ですが、現時点からおよそ2年前となる2020年8月7日にEthereumのRopstenテストネットワークで最初のベータ版 (v0.3) がリリースされ、現在(2022年9月半ば)ではv0.6.5まで開発が進んでいます。

実際にどのようなゲームなのか雰囲気を掴んでいただくために後ほど筆者がアリーナ版をプレイしてまいりますが、本章ではDark Forestの革新性ならびに注目ポイントについて、ゲームの概要とともにお伝えしてまいります。
詳細は後述しますが、一般的な「オンチェーンゲーム」では全ての情報が全プレーヤーに対して公開されることになるため、隠し要素を持ち合わせたゲームが設計しづらく、ゲームのジャンルによっては課題ともなり得ます。
しかし、本ゲームではzkSNARKを使用するおかげで、『プレイヤーの動きは正確な詳細で検証可能でありつつも、他のプレイヤーからは隠されている状態』を実現することが可能になっています。

まずはこの点について、ピックアップして解説してまいりたいと思います。
完全情報ゲーム / 不完全情報ゲーム
先述の通り、本ゲームではzkSNARKが用いられており、それゆえにオンチェーンゲームで『プレイヤーの動きは正確な詳細で検証可能でありつつも、他のプレイヤーからは隠されている状態』を実現しています。

つまり、オンチェーンゲームでありながらも「秘匿情報」を持ち合わせているという意味で、『不完全情報ゲーム』と言い表されます。
『完全情報ゲーム』『不完全情報ゲーム』は聞き馴染みのないワードかもしれませんが、概念自体はシンプルです。
「完全情報ゲームとは何か?」を親しみのあるゲームで説明すると、例えばチェスや囲碁などといったゲームです。
これは、盤上の情報などが誰の視点からも全て公開されている(明かされている)ことから、『完全情報ゲーム』であると言えます。

同様に、CryptoKittiesも完全情報ゲームです。なぜなら、すべてのプレーヤーは誰がどのkittyを保有しているか、各kittyのtraits(特性)が何であるかを知っているからです。
要は、相手の状況が完全に見える状態のテーブルゲームや、Ethereumチェーン上で完結する従来のオンチェーンゲームといった類のゲーム全般を表すワードです。
一方で、Dark Forestは『不完全情報ゲーム』と呼ばれる類のオンチェーンゲームです。
『不完全情報ゲーム』を親しみのあるゲームで説明すると、麻雀やポーカーのように「隠し情報」があるようなゲームとなります。
麻雀の場合は相手の手牌・場の山牌が隠されていますし、ポーカーも相手の手札・場の山札に関する情報は隠されています。

そしてDark Forestの新奇性は、この『不完全情報ゲーム』を”オンチェーンで”実現しているところにあります。
暗号版「戦場の霧」(Cryptographic Fog of War)
一般的に、戦争もののゲームなどでは「戦場の霧」と呼ばれるシステムが存在し、『プレイヤー側の部隊から見える様になるまで、相手側の部隊・地形等の情報を表示しない方式』『作戦や戦闘シーンにおける不確定要素』を指す言葉として用いられています。

Dark Forestの「戦場の霧」は、プレイヤーには見えないマップの部分です。 新しいDark Forestアカウントを作成すると、マップのごく一部 (開始エリア) のみがプレイヤーに公開され、宇宙の残りの部分は「戦場の霧」に覆われます。時間が経つにつれて、マップはCPUマイニングによって明らかになっていき、その速度はCPUのパワーに依存します。
出典:dfwiki.net/wiki/Fog_of_war
今までのいわゆるフルオンチェーンゲームであれば完全情報ゲームになるケースがほとんどで、「戦場の霧」などを搭載した実用的なMMOゲームの制作は難しいと考えられていました。
しかし、先述の通りDark ForestではzkSNARKを使用することで、共有マップ上の位置を非表示にして「戦争の霧」の作成を実現しています。

プレイヤーは、自身が征服した惑星の座標をコアスマートコントラクトに対して送信せず、その代わりにハッシュが有効であるというゼロ知識証明と共に、(惑星座標をハッシュすることによって) 惑星の位置へのコミットメントを送信し、これにより惑星の場所がシークレットデータとして扱われます。
また同様に、プレーヤーが移動をおこなった場合、移動元の惑星のハッシュと移動先のハッシュを、それが「有効な」移動であると証明するゼロ知識証明と共に送信します。
ハッシュを反転させるのは難しいため、Dark Forestコントラクトを調べても、他のプレイヤーが実際にどこにいるかはわかりません。他のプレイヤーを見つける唯一の方法は、力ずくで探索するしかないのです。
その他|プラグインシステムの存在などの要素

Dark Foresの最も重要な目的は、『ユーザーがさまざまな方法で達成できる楽しみをもつこと』であると謳われています。
例えば、ゲームプレイには関心が薄いものの開発に興味があるという方は、プラグインを作成して提供するという楽しみ方が設けられていたり、コレクターの方はアーティファクトの収集をオンチェーンベースでおこなうことができます。
少しだけ深掘りすると、前者の「プラグインシステム」により、各ユーザーはコードの記述による『アクションの自動化』を実現できるため『botネットワークが構築可能となる』のです。
また、アクションの自動化によりDeFiスペースで起きているような『高いレベルのゲームシステム』が構築可能となるでしょう。
そして、このゲームシステムが公式から提供されるものではなく、ユーザーが創出するものであることもポイントです。
以上、本ゲームに関する全ての情報を本記事に記載することは難しいため一部に絞ってお伝えいたしましたが、その他にも以下のような特徴・ポイントなどがあるので、興味のある方は深掘りして調べてみてください。
- 完全にオンチェーンにあることの利点
- 非常にプログラムしやすく、クライアントには依存しない
- プレイヤー集団やギルドのためのスクリプトを書いたり、サードパーティのクライアントやbotを作成したり、スマートコントラクトも設計可能
- DAOの存在
- プレイヤー集団やギルドが共同で1つのアカウントやスマートコントラクトアカウントを運営し、基本的には協力的な仕組みでリーダーボードでの最高得点を達成しようとする集団
- スマートコントラクトのプレイヤーの存在
- Dark Forestのコアコントラクトでは、EOAプレーヤー・スマートコントラクトプレーヤーにかかわらず同じ扱い
- 新しい機能、新しいグローバルな機能を、EthereumベースのアーキテクチャとスマートコントラクトによってDark Forestに追加可能
- その他技術的な要素の補足
- ブラウザ・クライアントを介してシステムとやり取りするエンドユーザーの手に、ゼロ知識証明を届けることができる最初のアプリケーションの1つ
- シークレットデータのためのマーケットプレイスを構築するプロジェクトも進行中
実際にプレイしてみることで雰囲気を掴む
本章では、Dark Forestが実際にどのようなゲームなのか雰囲気を掴んでいただくために、筆者がアリーナ版をプレイする様子をお届けいたします。(Dark Forest Arenaは、dfdaoが作成したDark Forestのフォーク版ゲームです)
ゲームの内容そのものに対して関心がないという方は、次章【「オンチェーンゲーム」の可能性について考察】まで読み飛ばしていただいて結構です。

執筆時点におけるDark Forest Arenaは、上写真のようなコマンドライン調のUI/UXとなっています。
まずはアカウントを作成していくので、n
を打ち込んでEnterキーを押します。

しばらく待機してウォレットの作成が完了したら、続いてはチュートリアルをやっていきたいので、y
を打ち込んでEnterキーを押します。

すると上写真のような、惑星とその周りを周回する宇宙船が表示されました。
左上のガイド文を確認すると『真ん中の惑星をクリックしてください』と書かれているので、クリックします。

よくやった!これがあなたの最初の惑星です。ゲーム中、あなたは宇宙のあちこちで惑星を捕獲することになります。惑星枠内には、惑星の簡単な情報が表示されます。惑星枠内にカーソルを置くと、その惑星の統計情報が表示されます。(レベルやランクの下に表示されます。)
続いて、簡単な操作方法についての確認です。
簡潔ではありますが、以下に基本的な操作方法についてまとめておきます。
アクション | 操作方法 |
---|---|
画面の拡大・縮小 | マウスのホイールでスクロール |
宇宙を移動 | マウスをドラッグ(何もないところをクリックしながら) |
選択画面から戻る | t キー |

また、概要でも触れた通り、本ゲームでは他の惑星を占領していくことで自分の帝国を拡大することができます。
近くに小惑星帯がある場合には、自分の惑星のエネルギーを使って、その小惑星帯を移動して占領することができます。

自分の惑星をクリックしてq
を押したのち自分の陣地内の別の小惑星帯をクリックすることで、エネルギーや宇宙船をそこに飛ばすことができます。

これで自分の小惑星帯から惑星に対してシルバーを送ることができたので、続いては惑星をアップグレードしてみます。
惑星を選択して、Upgradeボタンをクリックします。

すると、シルバーの量が625から500に減少し、黄色の環(わ)が出現して惑星のUpgradeが反映されました。
このように、最初のうちは自分の陣地内にある資源を獲得しながら惑星をアップグレードしていく作業に徹すると良いでしょう。

今回は導入部分のみ一部に絞って解説しましたが、このようにプレイヤーはスターマップ全体にランダムに散らばっている資源を戦略的に収集しながら、惑星帝国をできるだけ遠くまで拡大していき、時には他のプレイヤーからの侵略を撃退していくというのが、大まかかつ基本的な本ゲームの概要となります。
「オンチェーンゲーム」の可能性について考察

さて冒頭の概要で述べた通り、Dark Forestは完全にブロックチェーン上にある「オンチェーンゲーム」として最初にローンチされたゲームの1つです。
執筆時点において「オンチェーンゲーム」の数は、いわゆる一般的なPlay-to-Earnゲームなどと比較すると明らかに少ない印象ですが、Starknetエコシステム周りで活発にオンチェーンゲーム開発がおこなわれていたり、グローバルベースで着実に事例が増えつつあるという所感です。


では、オンチェーンゲームにするとどのようなメリットがあるのかについて、私見を交えて触れていきたいと思います。
例えばCentralizedなゲーム間では、各ゲームにおけるデータ記録サーバーなどがサイロ構造となっているため、相互運用・相互作用の実現が非常に難しいと考えられます。
企業間でパートナーシップを結びアセットを共有し合うことは可能かもしれませんが、それは管理者の一存で全ての運命が決められていくものであり、敢えてありふれた言い回しをするならば非常に「web2的な」アプローチにしかなり得ません。
「web3ならでは」を追求したいのであれば、やはりデータの公開/共有から生まれるパーミッションレス・ネットワークエフェクト・コンポーザビリティなどの要素を取り入れた方が望ましいでしょう。

しかし冒頭からお伝えしている通り、この「web3ならでは」を追求したゲームは今までにも様々な試みがなされてきましたが、データを公開/共有することの弊害として、『オンチェーンで隠し要素を取り入れたゲームをつくることが非常に難しかった』という点があります。
例えば「じゃんけん」のような単純な遊びをオンチェーンゲームとして実現する場合、先にコントラクトの関数を呼び出してトランザクション生成をおこなった方が先出しとなって情報公開されるため、真剣勝負のじゃんけんゲームが成り立たなくなってしまいます。


また余談ですが、実は筆者は以前Unityというゲームエンジンを用いて、ピンボールを作成していたことがあります。
Unityを触ったことがある方はお分かりかと思いますが、Unityではゲーム内の物理法則などを自由自在に、ゲーム開発者が操作ならびに定義することが可能です。
例えば上のピンボールの場合では、「球の落ちてくる速度(重力)」「球が触れる地面の摩擦係数」「球が当たる壁や各オブジェクトの反発係数」などを操作することで、『開発者の独断で』ゲーム全体に対して変更を加えることができるのです。
これを踏まえてDark Forestのような分散型オンチェーンゲームを考えてみると、例えば宇宙の状態や惑星の軌道など、ありとあらゆる係数に対して『ユーザーの意思で』全員が主体となって変更を加えることが可能になります。
つまり、自分の惑星に加えたはずの変更が、宇宙全体に対して変更を加え相互作用が生まれるわけですが、ここに一つオンチェーンゲームの醍醐味・おもしろさのようなものがあるのではないか考えています。



それって既存のCentralizedなゲームでも実現できるのでは?
と思われる方もいらっしゃるかもしれませんが、それは確かにその通りです。
しかし、全てをオンチェーンに詰め込んでいるからこそ実現できる面白体験がそこには隠されており、ロマンがあるポイントであると思います。
例えば、先のピンボールで実装例を考えてみると、以下などが考えられます。
- 「ピンボールで10,000点以上を獲得したユーザーにNFTを付与する」というクエストがRabbitholeで実装される
- ピンボールで50,000点以上を獲得したユーザーはPhiでピンボールオブジェクトを獲得できる


また逆方向のパターンとしては、『DeFiでのアクションがオンチェーンゲームに何らかの影響を与える』といった相互作用事例も考えられるでしょう。
つまり、「ゲームの枠を飛び越えて、どれだけ多くのプロダクトと結びついていくか」が、今後オンチェーンゲームの肝になってくるのではないでしょうか。
このほかにも、コアゲームシステムが完全にオンチェーンにあり、デフォルトで完全にオープンかつ不変、さらに検証可能となっていることもオンチェーンゲームならではの重要ポイントですが、本章が長くなってしまっためまた別の機会があれば考察してまいります。
Centralizedなゲームサービスでは実現できないことを、Dark Forestを始めとするオンチェーンゲームでは実現しようとしており、そこで得られた知見をオンチェーンゲーム以外のプロダクトにも応用していく。
こういった観点からも、Dark Forestをはじめとする今後のオンチェーンゲームの動向には、引き続き注目していきたいと思います。
参考:
Introducing Dark Forest Lobbies
Announcing Dark Forest
Dark Forest DAO: Games as mediums of technological experimentation and exploration
Six Moonshot ZK Applications
Welcome to the Dark Forest Wiki!
Fog of war
まとめ


今回は、Dark Forestという『zkSNARKを用いたオンチェーンゲーム』について紹介・解説しました。
本記事が、「Dark Forest」の概要や注目ポイント、分散型オンチェーンゲームの可能性などについて理解したいと思われている方にとって、少しでもお役に立ったのであれば幸いです。
また励みになりますので、参考になったという方はぜひTwitterでのシェア・コメントなどしていただけると嬉しいです。
🆕記事をアップしました🆕
— イーサリアムnavi🧭 (@ethereumnavi) September 23, 2022
今回のテーマは、zkSNARKを用いたオンチェーンゲーム「Dark Forest」について✍️
オンチェーンでありながら『不完全情報ゲーム』を構築しているポイントをはじめ、分かりやすく簡潔を意識して概要や可能性など解説しています🎮https://t.co/NJweqoUP6b@darkforest_eth


イーサリアムnaviを運営するSTILL合同会社では、以下などに関するお問い合わせを受け付けております。
- 広告掲載
- リサーチ代行業務
- アドバイザー業務
- その他(ご依頼・ご提案・ご相談など)
まずはお気軽に、こちらからご連絡ください。
- Webサイト:still-llc.co.jp
- Twitter:@STILL_Corp
- メールアドレス:info@still-llc.com