『マインクラフト』で「例のアイコン」のワールドに行くことはできるのか。8か月の調査の末、AI技術と人海戦術が導き出した答え

Pocket
reddit にシェア
LINEで送る

マインクラフト』における、ある「有名スポット」への行き方が特定された。通称「pack.pngの場所」。名前だけではピンとこなくとも、画像を見れば膝を打つのではないだろうか。青い海に浮かぶ岩の小島を、ぽつりぽつりと木々が彩っている。本作のJava Editionを遊んだことのあるプレイヤーにとってはほとんど無意識に刷り込まれた景色といえるだろう。その正体はpack.pngと名付けられた画像だ。『マインクラフト』のゲームファイルに含まれており、ゲーム中ではデフォルトのリソースパックのアイコンとして表示される。またサーバー選択画面でも、アイコンが設定されていないサーバーのサムネイルとして白黒の状態で確認できる。

なおこの画面が確認できるのはバージョン1.13.2まで。


誰もが見たことあるものの、ほとんど気にも留められなかったpack.pngの風景。その起源に注意を向けたのは『マインクラフト』系動画で知られる米YouTuberのSalC1氏だ。同氏は別のプロジェクトで「タイトル画面のワールド」も調査しており、こちらは7月に特定されていた(関連記事)。同氏はまずpack.pngに写る木々が現在のゲーム内で見られるものより明るい色をしているのに注目した。これは最新バージョンの『マインクラフト』で撮影された景色ではない。

さかのぼってみると、pack.pngがはじめて出現したのはアルファ版バージョン1.2.2だということがわかった。ちょうどテクスチャパックの公式サポートが始まった時期だ。2010年11月にリリースされて以来、約10年間もひっそり掲げられていたのである。もっといえば、撮影されたのはどうやらアルファ版バージョン1.2がリリースされる前の1か月以内だということが推測された。2010年10月に行われたアップデートによりバイオームがはじめて実装され、木々の色も明るいものから現在と同じ暗緑色に変更されたからだ。歴代『マインクラフト』全バージョンのクライアントファイルを調査したところ、128×128ピクセルのアイコン以外には同様の画像が見られないのを確認した。この小さなサムネイルが唯一の手がかりだということだ。

SalC1氏が動画で問題を提起すると数千件のコメントが寄せられ、もともと2000人程度だった同氏のDiscordサーバーは一夜にして1万人の調査協力者でひしめくことになった。一大プロジェクトの始まりだ。目的はpack.pngとまったく同じ景色を生み出す「シード値」を探り当てること。シード値とは新規ワールドを作成した際、どこに何があるかを決定するランダムな値だ。数字だけでなく特定の語句を入力してワールドを生成することもでき、当初は「Mojang」などの単語が有力候補とされていた。

試しにSalC1氏はTwitterにて、開発陣宛にアイコンの由来を尋ねるリプライを投げてみる。すると果たして『マインクラフト』の生みの親であるNotch氏その人から反応が返ってきた。曰く、本人もそれがどこで撮られたのか記憶にない。仮にNotch氏が撮ったものだとすると、彼がスクリーンショットを撮るときにはいつもランダムなシード値のワールドで撮影していたのだという。ここで特定の単語からpack.pngのワールドを探る線が消えた。残された道は「写った地形を解析してシード値を探り当てる」のみとなったのだ。

逆探査にあたって集まったのは腕利きのエンジニアたちだ。かつて有名実況者PewDiePie氏と同じワールドを生み出すシード値を特定したことで知られるメンバーで、その実力は折り紙つき。とはいえ今回のリサーチはそれを上回る難易度となる。動画から大量にヒントを得られた前例と異なり、今回の手がかりは128ピクセル四方の小さな画像しかないのだ。何はともあれここから得られる情報をもとに推測を立てるしかない。まずチームが着目したのは端に写り込んだ「雲」だ。あらゆる要素が自動生成される『マインクラフト』だが、実は空に浮かぶ雲はひとつの決まったパターンしかない。これにより、撮影地点はある雲が流れる軌道上の一帯に絞られた。ついで、海面のテクスチャの向きから方位を導きだすことにも成功。XY平面状上の位置がほぼ特定できたため、あとは「どのワールドなら」あの小山が形成されるのかを探ることになった。

このころ同時に始まった取り組みが、「実際にブロックで例の地形を再現してみる」という実験だ。どの位置にどのブロックが置いてあるかは、シード値を逆探査するうえで欠かせない情報となる。ひとつひとつの配置に正確性を要する作業だったが、件の小さいアイコンではどうしても解像度に限界があった。そこでチームは、よりはっきりした画像を手に入れるためにある手段を講じる。大量の『マインクラフト』スクリーンショットを学習させた人工知能を生み出すことで、小さなアイコンから鮮明な画像を“復元”するのだ。あるスタッフが自動で大量の『マインクラフト』スクリーンショットを撮影するツールを作成したことにより、170万枚もの画像をAIに学ばせることができた。トレーニングの成果は、はたして、元のサムネイルよりも格段にくっきりした画像を入手することができた。この新たな設計図をもとに、例の小島の再現が急ピッチで進められる。

『マインクラフト』のワールド生成は大きく2段階に分けられる。まずは「地形」で、土地の高さ・形状・洞窟および、石・土・草ブロックの配置が決定される。次が「分布」で、木や花などの植生が定められる。「地形シード」と、分布を決める「チャンクシード」はそれぞれ独立して生成されるため、調査チームはチャンクシードを特定することで逆算してワールド全体のシード値を探ることにした。大きなヒントとなったのが、小山の中央あたりを流れ落ちる「滝」の存在だ。これと周囲に生えた木々を照らし合わせることで、チャンクシードの候補が限られた。

ここまできても、すべてのシード値を人力で検討することはできない。『マインクラフト』で生成されるシード値の数は281兆4749億7671万0656通りにもおよぶ。そこで利用されたのが「BOINC(Berkeley Open Infrastructure for Network Computing)」だ。複数のPCを使いながら分散して調査を進める仕組みで、かつてタイトル画面のシード値を探った際にも活用された。可能性のあるワールドシードは70万通りに絞られ、そこからさらに別のツールを使うことでpack.pngとの地形が照合された。さらに程なくして『マイクラ』調査研究を専門とするDiscordサーバー「[email protected]」が設立。9月1日より新たに配布されたツールにより、Nvidiaのグラフィックカードがあるユーザーは誰でも自宅のPCでリサーチに協力できるようになった。それからわずか4日後、ついに「そのとき」が訪れる。

シード値「3257840388504953787」、座標「x=49, z=0」。これがpack.pngの撮影されたワールドと、地点である。アルファ版バージョン1.2.2の『マインクラフト』では手動でシード値を入力することができないため、NBTExplorerなどのツールでデータを書き換えることで同様のワールドを生成することができる。画像解析や分散処理など、あらゆるテクノロジーを用いて解き明かされたpack.pngの秘密。『マインクラフト』界隈の技術力と探究心が改めて示された研究結果といえるだろう。興味があれば「名所」を訪ねて、コミュニティの底力に思いを馳せてはいかがだろうか。

Pocket
reddit にシェア
LINEで送る

ニュース

Indie Pick

インタビュー

レビュー・インプレ

Devlog