2026年のベスト・ボクセルゲームエンジン — そしてインストール不要の選択肢
自分だけのボクセルゲームエンジンを作る
ボクセルゲームエンジンを比較 — Hytopia、Noa、Luanti、Godot、Unity — さらに、何もインストールせずに歩き回れるブラウザのボクセルの世界も。
ボクセルゲームエンジンは三つのグループに分かれます。専用のボクセルエンジン、ボクセル層を後から載せた汎用エンジン、そして何もインストールせずタブの中で描画されるブラウザの世界です。専用エンジンは、チャンクの保存、メッシュ化、光の伝播を初日から提供する代わりに、その周りにあるすべてをそれらに合わせて縛ります。汎用エンジンは完全なツールチェーンを渡し、チャンクのパイプラインは宿題としてあなたに任せます。ブラウザの世界は、インストールもビルド工程もまるごと省きます。
このページでは、Hytopia、Noa、Luanti、ボクセルプラグインを入れたGodot、そしてボクセルプラグインを入れたUnityを比較します。それぞれが実際に何なのか、その中で何を書くのか、そしてどこで時間を失うのか。最後にブラウザという選択肢、つまり描写したその同じ分に開いて歩き回れる世界を紹介します。
早わかり:どのボクセルエンジンを使うべきか?
専用のボクセルエンジン、たとえばNoaやLuanti:世界のデータそのものが成果物で、画面に何かが映る前にメッシャーやチャンクストリーマー、フラッドフィルの光処理を書きたくない場合に使います。
汎用エンジンとボクセルプラグイン、たとえばGodotやUnity:アニメーション、UI、物理、音声、入力マッピング、そしてプラットフォームへのエクスポートが必要で、他人のフレームループの中でチャンクパイプラインを自分が持つことを受け入れる場合に使います。
インストール不要のブラウザの世界、たとえばNeta Studioのビルダー:最初の障害が、別の人にその世界を見てもらうことである場合に使います。リンクは、ダウンロード、ツールチェーン、ビルド工程よりも安くつきます。
決め手は、あなたのクリティカルパスに何が乗っているかです。難しいのがコンテンツなら、アイデアとその中を歩き回ることの距離が最も短いパイプラインを選びましょう。難しいのがシミュレーション、何千もの相互作用するブロック、独自の物理、決定論的なネットワーク状態なら、プロファイルして、パッチを当てて、再コンパイルできるツールキットを選びましょう。
エンジン比較
以下に五つの選択肢を、順位ではなく性格で記述します。どれもボクセルを描画します。違いは、何を渡してくれ、何を返すことを期待するかにあります。
まず言語の列を読んでください。ネイティブのビルド工程なしにランタイムのどれだけを変更できるかが決まり、それが深夜二時にどうデバッグするかを左右します。
Hytopia
Hytopiaは、JavaScriptとTypeScriptのSDKを備えたホスト型のボクセルゲームプラットフォームです。世界はボクセルベースで、クライアントはブラウザで動作し、マルチプレイは後付けではなくプラットフォームの一部です。SDKのエンティティとプレイヤーのAPIに対してゲームロジックを書き、サーバーはプラットフォームが処理します。引き換えに、あなたのゲームは彼らのランタイム上で動きます。設定とスクリプトはできますが、エンジンの単体バイナリを配布することはできません。
Noa
NoaはThree.js上に構築された、ブラウザ向けのJavaScriptボクセルエンジンです。チャンク化された地形、メッシュ生成、エンティティシステム、そして単純な衝突と重力を処理し、残りはあなたが持ち込むことを期待します。レンダリングの設定、入力、ゲームルール、ネットワーキングです。そのAPIは端から端まで読み切れるほど小さく、そこが本当の利点です。何かが妙な挙動をしたとき、その失敗はあなたが開けるコードの中にあり、ブラックボックスの中にはありません。
Luanti(旧Minetest)
Luantiは、単一のゲームではなくオープンソースのボクセルプラットフォームです(旧称Minetest)。エンジンはC++ですが、ゲームプレイはLuaで書かれたゲームとMODとして提供されるので、再コンパイルせずにブロックの挙動、クラフト、エンティティを変更できます。その世界は16x16x16のマップブロックからなるノードグリッドで、サーバーはネットワーク越しにブロックをクライアントへストリームします。サーバーはローカルでも実行でき、同じサーバーコードがレンタルホストでも動きます。active_block_rangeやmax_block_send_distanceといった設定が、プレイヤーがどこまで見えるか、クライアントがどれだけRAMを使うかを決めます。
ボクセルプラグインを入れたGodot
Godotのコアエンジンにはボクセル地形がありません。自分で追加します。チャンクメッシュを生成するコミュニティのアドオンか、ArrayMeshのサーフェスと衝突シェイプを生成する自作のメッシャーです。Godotはボクセルを囲む部分、つまりシーンツリー、AnimationPlayer、UI、物理ボディ、入力、エクスポートテンプレートを提供し、さらにメッシュ化のコードにはGDScript、C#、またはGDExtension経由のC++を提供します。チャンクメッシュの生成はワーカースレッドかWorkerThreadPoolのタスクに載せるべきです。メインスレッドで行うのが、プレイヤーがチャンクの境界を越えるときのカクつきのいつもの原因です。
ボクセルプラグインを入れたUnity
Unityは、より重いツールチェーンで同じ話です。ボクセル地形はプラグインか自作のチャンクシステムから来ます。生産的な道はC#のJob SystemでBurstコンパイルされたジョブで、ワーカースレッド上でメッシュデータを生成し、Mesh.SetVerticesなどの呼び出しでアップロードします。繰り返し問題になるのが衝突判定です。チャンクごとのMeshColliderは生成(クック)にコストがかかるので、多くのプロジェクトは代わりにブロックグリッドに対するボクセルのレイキャストとAABB衝突を書きます。Unityのアニメーション、UI、オーディオミキサー、ビルドパイプラインは、デスクトップとウェブの両ターゲットにわたってそのまま使えます。
| エンジン | 形態 | 書く言語 | 実行方法 |
|---|---|---|---|
| Hytopia | SDKを備えたホスト型ボクセルプラットフォーム | TypeScriptまたはJavaScript | 彼らのホスト型ランタイム上のブラウザクライアント |
| Noa | Three.js上のブラウザボクセルエンジン | JavaScript | 自分のページと自分のサーバー |
| Luanti | Luaのゲームを載せたオープンソースのボクセルプラットフォーム | ゲームとMODにはLua | インストールするクライアントと自前のサーバー |
| ボクセルアドオンを足したGodot | ボクセル地形を追加した汎用エンジン | GDScript、C#、またはGDExtension経由のC++ | デスクトップへのエクスポート、またはブラウザ用ビルドのウェブエクスポート |
| ボクセルプラグインを足したUnity | ボクセル地形を追加した汎用エンジン | C#、メッシュ化にはBurstジョブ | デスクトップ、コンソール、またはWebGLビルド |
| Neta Studio 3Dゲームビルダー | ブラウザの世界ビルダー | 平易な言葉による説明 | ブラウザのタブ、インストール不要 |
何もインストールせずにボクセルの世界を遊ぶ
ボクセルの世界を作りたいかどうかを最速で決める方法は、その中に立つことです。Neta Studio 3Dゲームビルダーはブラウザのタブで動作します。世界、地形、雰囲気、構造物の説明を入力すると、ビルダーはWASDとマウスで歩き回れる遊べるThree.jsシーンを生成します。SDKも、エディタのインストールも、ビルド工程も、先に配線すべきアセットパイプラインもありません。
手に入る世界は本物のジオメトリで、動画ではありません。それに衝突し、カメラをその中で動かし、変更を描写することで世界を変えます。水位を上げ、橋を加え、谷を広げ、そして再生成します。Agent Sprite Forgeが二次元の層を担います。エージェント、小道具、アイテム用のスプライトで、シーンがキャラクターアーティスト待ちで止まることがありません。Mini Worldは最小のデモで、ノートパソコンでの最初の目標に最適です。The Cyclops' Islandはより大きな作り込まれた世界で、地形と照明が平坦でないときのシーンがどんなものかを示します。
これがやらないこと:専用エンジンのようなブロック単位のスクリプティングAPIは提供せず、ストア向けの単体実行ファイルも生成しません。これはパイプラインのレビューと反復の端であり、ボクセルの世界とはこういうものだと別の人に示す最短の方法です。
01
最新のデスクトップブラウザでビルダーを開きます。Chrome、Edge、Firefox、Safariはいずれも動作します。必要なのはWebGL2をサポートするGPUで、デモの世界なら内蔵グラフィックスで十分です。
02
世界を説明する一文を書きます。具体的な名詞は形容詞に勝ります。霧の松の島、石の塔、浅いラグーンと書けば、「かっこいい島」よりも生成器に置くものを多く与えられます。
03
生成して、歩いてみます。移動はWASDとマウスルックです。まず斜面の衝突と水際を確認しましょう。生成された地形がたいてい間違っているのはそこだからです。
04
個々のブロックを動かすのではなく、変更を描写して編集します。世界がまだ流動的なうちは、手でジオメトリを置くより再生成のほうが安くつきます。
05
顔が要るもの — エージェント、小道具、アイテム — にはAgent Sprite Forgeでスプライトを追加します。
06
リンクを共有します。相手はタブを開くだけで、何もインストールせずに同じ世界に降り立ちます。
本当に重要なこと
四つの性質が、ボクセルエンジンが三か月目に快適か苦痛かを決めます。どれも機能一覧には載らず、どれもコミットする前に測定できます。
世界の大きさ
保存は安く、ストリーミングは安くありません。世界はふつう16x16x16または32x32x32ブロックのチャンクに分割され、エンジンはその半径分を常駐させます。メモリはおおよそ半径の三乗で増えるので、表示距離を二倍にすると、メッシュを数える前にブロックデータが約八倍になります。座標も重要です。float32の位置は原点から遠いと精度を失い、10万ユニットをはるかに超えたあたりでカメラの震えやZファイティングとして現れます。エンジンはこれを原点の再基準化かカメラ相対レンダリングで扱います。大陸を計画する前に、自分のエンジンがどちらなのかを調べましょう。
照明
ボクセルの照明はふつうフラッドフィルです。各ブロックは光のレベルを保持し、日光は不透明なブロックに当たるまで下向きに伝播し、松明は減衰しながら外側へ伝播します。ブロック単位では安く、正しく保つのは高くつきます。プレイヤーがブロックを置くか取り除くと、そのチャンクと隣接チャンクの光を再計算しなければならず、隣のチャンクを飛ばすと、境界を越えて明るい継ぎ目として光が漏れます。エンジンが光を頂点カラーに焼き込むなら、編集のたびにメッシュを焼き直します。シェーダーで照らすなら、ユニフォームの上限と余分なドローコールで支払うことになります。
マルチプレイ
ボクセルのマルチプレイは、ほとんどが帯域幅の問題です。サーバーは権威的で、ブロックグリッドを保持し、クライアントは位置ではなく意図を送ります。差分として流れるのは編集だけで、しかも関心半径の内側のチャンクだけが送られるので、通信量は世界の大きさではなく、プレイヤー数かける表示半径で増えます。二人のクライアントが同じティックで同じブロックを掘るのは実際に起こるケースで、答えを定義しなければなりません。選んだエンジンにネットワーキングがなければ、関心システム、差分フォーマット、クライアント予測を自分で書くことになります。それは機能ではなくプロジェクトです。
ブラウザで動作する
ブラウザを対象にすると、インストールの手順がなくなります。これは、誰かに自分の世界を試してもらうときに最大の離脱要因です。代償はより小さな予算です。WebGL2のドローコール、SharedArrayBufferのためにクロスオリジン分離を設定しない限り単一のメインJavaScriptスレッド、そしてすべてのアセットのダウンロードサイズです。WebGPUは現在のデスクトップブラウザに存在しますが均一ではなく、WebGL2へのフォールバックは今も標準的な実践です。世界がタブで動くなら、メッセージで送れます。ランチャーが必要なら、送れません。
ボクセルサンドボックスとボクセルエンジン
ボクセルサンドボックスは、たまたまブロックで作られた完成したゲームです。ダウンロードして遊び、ブロックのパレットは開発者が配布したものです。ボクセルエンジンはツールキットです。チャンクの保存、メッシュ化、レンダラー、そしてあなたが対象に書くAPIです。この区別が重要であるのは、検索結果が両方に同じ言葉を使うからです。
ページ上の手がかり。ランチャーとスクリーンショットのギャラリーがあれば、それはサンドボックスです。APIリファレンス、クラス名、インストールするパッケージがあれば、それはエンジンです。ブロックの種類が、登録する実行時オブジェクトではなく編集するデータファイルなら、製品がどの層に住んでいるかがわかります。エクスポートや単体ビルドの経路があれば、あなたはツールキットを買っています。公開する唯一の方法が彼らのプラットフォームの中なら、あなたはそれを借りています。
ハイブリッドはよくあり、名前を挙げる価値があります。Luantiはプラットフォームです。エンジンはツールキット、配布されるゲームはその上に作られたサンドボックスで、どちらの層で働くかを選びます。HytopiaはSDKであると同時にホスト型ランタイムなので、他人のサーバー上で実行されるエンジンレベルのコードを書きます。ブラウザのビルダーはコンテンツ側のはるか端に位置し、システムではなく世界を生み出します。機能一覧を比べる前に、どの層を自分が持つかを決めましょう。優れたエディタを備えたサンドボックスは、APIを備えたエンジンの代わりにはならないからです。
それが属する世界へ歩み入る
スプライトは、立つ場所を持たないキャラクターです。最後の一歩は、他にはない当社ならではのものです。今作ったシートを、誰かが歩き回れる世界に置きます — 小さな島、惑星、雨の街角。このサイトのすべての世界は、一つの書かれた説明から作られ、遊べるページとして公開されています。
FAQ
ブラウザでボクセルゲームは作れますか? +
はい。メッシュ化、衝突判定、フラッドフィルの照明を備えたチャンク化ボクセルの世界は、タブの中でWebGL2で動作し、レンダリング側はThree.jsが担います。NoaとHytopiaはどちらもブラウザを対象にしており、Neta Studioのビルダーは何もインストールせずに歩き回れるブロック造りの世界を生成します。制約はドローコール、単一のメインJavaScriptスレッド、そしてアセットのダウンロードサイズです。
Godotはボクセルに向いていますか? +
Godotはボクセルの周りにあるすべてに強く、ボクセルそのものには中立です。組み込みのボクセル地形はないので、コミュニティのアドオンか自作のコードから、チャンクシステム、メッシャー、衝突判定を追加し、ストリーミングがフレームを止めないようワーカースレッドでメッシュを生成します。すでにGodotを知っているなら、それは妥当な取引です。知らないなら、エンジンを学びながら同時にボクセル層を書くことになります。
Luantiは無料ですか? +
はい。かつてMinetestという名前だったプロジェクト、Luantiは無料かつオープンソースで、有料プランも、プレイやホストに必要なアカウントもありません。サーバーは自分のマシンでもレンタルホストでも実行でき、その上に載るゲームとMODはLuaで書かれているので、エンジンを再ビルドせずにゲームプレイを変えられます。
ボクセルエンジンを作るのにC++は必要ですか? +
ふつうは不要です。HytopiaはJavaScriptとTypeScript、NoaはJavaScript、LuantiのゲームプレイはLua、GodotはGDScriptとC#を提供し、UnityはC#です。C++に手を伸ばすのは、エンジンコアを変更したり、GodotのGDExtensionモジュールやUnityのネイティブプラグインのようなネイティブ拡張を書いたりするときです。メッシュ化のアルゴリズムはどちらでも同じです。
ボクセルとは何ですか? +
ボクセルは、整数座標で指定される規則的な三次元グリッド上の値であり、描画する立方体ではありません。目に見えるブロックは、連続するボクセルから生成されたメッシュです。メッシャーはグリッドを走査し、空き空間に接する面だけを出力し、貪欲メッシュ化は同じブロック種の同一平面上の面をより大きな四角形に統合します。保存されるのはグリッドで、見える立方体はレンダリング上の判断です。
ボクセルゲームのマルチプレイはどう動きますか? +
サーバーが権威的なブロックグリッドを保持し、クライアントは位置ではなく意図を送ります。差分として流れるのは編集だけで、サーバーは各プレイヤーの周りの関心半径の内側のチャンクをストリームするので、帯域幅は世界の大きさではなくプレイヤー数かける表示半径で増えます。クライアント側の予測が移動の往復遅延を隠し、二人のプレイヤーが同じティックで同じブロックを編集するケースはサーバーが解決します。
ボクセルの性能問題は実際に何が引き起こしますか? +
三つ、順に。メインスレッドでのメッシュ化、多すぎるドローコール、そしてコライダーのクックです。チャンクメッシュはワーカー上で生成して完成したバッファをアップロードし、ブロックごとに一つのオブジェクトではなくチャンクごとに一つのメッシュを保ち、チャンクをカメラの視錐台でカリングします。物理側では、チャンクごとのメッシュコライダーは、ブロックグリッドに対するレイキャストとAABBの判定よりはるかにコストがかかります。
ブラウザで作った世界はエクスポートできますか? +
Neta Studioのビルダーは世界をタブの中で実行するので、共有はリンクで、相手にインストールは不要です。単体バイナリのエクスポートパイプラインではないので、ダウンロード可能なビルドやコンソール向けパッケージが必要なら、自前のボクセル層を載せたGodotかUnityが欲しくなります。多くのチームはブラウザでレイアウトを試作し、世界が固まってからエンジンで作り直します。
3Dゲームビルダーに戻る
完成した31の3Dワールド、ゲーム、シーンがすべて一つのページに — そのすべてが遊べます。