動画投稿者のmattbatwings氏は3月30日、『マインクラフト』内で3次元のグラフを描画するレッドストーン装置を作ったとして紹介。同装置はModやコマンドブロックを使うことなく動作し、さまざまな式を入力して描画することができる。
Mojang Studiosが手がけるサンドボックスゲーム『マインクラフト』には、電気のように信号を伝える「レッドストーン」というアイテムが存在する。レッドストーンに関連するアイテムは数多く、それらを組み合わせて自動で開閉するドアや、明るさを検知してスイッチが切り替わる照明器具、畑に実った作物を自動で収穫する機構など、さまざまな装置を作ることができる。
Image Credit: mattbatwings on YouTube
今回mattbatwings氏が動画で公開したのは、ゲーム内で3次元のグラフを描画する装置である。ボタンを並べて作った専用のキーボードで式を入力すると、そのグラフを立体的に組み上げてくれるというもの。なお本装置では、右辺の値が0となる方程式に限定し、ユーザーが左辺の式を入力する形式を採用している。またグラフは整数座標がブロック1つで表現される立方体領域で、『マインクラフト』の座標系に合わせるかたちで高さがy軸となっている。
装置全体はかなり巨大だ。各機能ごとに分けてみると、数式を入力するパネル、入力された数式を表示するディスプレイ、入力を処理して計算部分で扱えるかたちに変換する部分、実際に数式を処理する計算部分、計算された値に基づいて各座標を描画するか否かを判定する部分、結果を描画する部分となる。mattbatwings氏が過去に制作した装置から技術を転用した部分も多く、計算部分で多用されている加算装置や、ディスプレイなどの仕組みは知識と技術を積み重ねてきたことで比較的楽に作ることができたようだ。

計算部分では動作を速くするために、計算量を少なくするための工夫が凝らされている。たとえば、mattbatwings氏が過去に公開した2次元グラフの描画装置では、座標ごとに総当りで乗算をおこなって数式を処理していた。しかし、同様の仕組みを3次元グラフで用いると、最大で約3000時間もかかってしまうという。
そのため、mattbatwings氏はx座標とz座標を仮に定数とし、y座標のみの計算をおこなうことにしたそうだ。また、レッドストーン回路で乗算をおこなうのは計算量が大きくなってしまうため、代わりに累積加算をおこなうかたちで高速化。そうした計算をxとzの値を変えながらループすることで、全座標の計算をおこなっている。
Image Credit: mattbatwings on YouTube
また、各座標を描画するか否かを判定する際の処理にも工夫がある。前述した通り、今回の装置では等号と右辺の0は固定されている。本装置ではブロックを1単位としたグリッドに沿ってプロットをおこなうが、各座標が式を満たすかどうかを判定した場合、座標の多くはぴったり0にならないため、描画されないことになる。これでは左辺がちょうど0になる座標のみが描画されて、グラフがスカスカになってしまうのだ。
Image Credit: mattbatwings on YouTube
この問題を解決するために、mattbatwings氏は父親に相談したところ、符号の変化に着目するという新しいアプローチを提案してくれたという。各座標を左辺に代入すると、その値は正または負、もしくは0の値を取る。そのため、もしあるブロックがもつ8つの頂点に、正の値をとるものと負の値をとるものが混在していた場合、そのグリッド上のどこかをグラフが通過しているということになる。値がちょうど0となる点を探すのではなく、値の符号が変化する境界を探すという作戦で、無事連続的なグラフを描画できるようになった。
なおmattbatwings氏は2021年に、大学で微積分を学んだことをきっかけに『マインクラフト』でこの装置を作ろうと夢見たという。しかし当時は技術力がなく、2次元バージョンの開発から始めたそうだ。これまで学んだ技術なども集結させ、ついに装置を完成させた今回のプロジェクトは、同氏の5年越しの集大成というわけだ。
3月30日に公開されたこの動画は、本稿執筆時点で36万回の再生回数を記録。コミュニティで大きな注目を集めている。動画内ではこのほかにも、mattbatwings氏の装置設計の流れや、苦労した部分、過去に多くの『マインクラフト』プレイヤーが3Dプリンタを開発してきた話など、多くのトピックが同氏の動画内で紹介されている。興味のあるかたはチェックするのも良いだろう。またこの装置のワールドデータがPlanet Minecraftにて配布されており、だれでもダウンロード可能。実際に好きな数式を入力して描画させることが可能だ。
Image Credit: mattbatwings on YouTube
ちなみに、本装置には実はほんの少しだけコマンドブロックが使用されている。描画部分で用いられているコンクリートパウダーを無限に生み出すというもので、コマンドブロックを用いずともコンクリートパウダーを補充する漏斗状の装置で同等の仕組みを実現できる。
mattbatwings氏はこのコマンドブロックについて、補充装置のリセットをするのが面倒だったため使ったと説明している。機能的には同じだから許して欲しいとのことだ。デバッグの過程で描画がうまくいくかどうかを確かめるたびに、大量のコンクリートパウダーを手作業で補充する単純作業は、知的喜びも少なく、装置を作ること以上に過酷な作業だったのだろう。
