概要
- Blocky Planet はUnityで開発された、球体上にMinecraft風ボクセルをマッピングする技術デモ。
- 惑星は 手続き型生成 ・完全破壊可能で、20種以上のブロックを設置・除去可能。
- 球体構造特有の 設計課題 や歪み対策について詳細に解説。
- ブロック配置や構造管理のための 独自アルゴリズム と工夫。
- 本記事は、これらの技術的チャレンジと実装方法に焦点を当てる内容。
Blocky Planet: 球体ボクセル惑星制作の技術的課題
- Blocky Planet は、Unityエンジン上で制作したMinecraft風の球体ボクセル惑星デモ。
- 惑星は 手続き型生成 ・完全破壊可能で、20種類以上のブロックを配置・削除可能。
- Windows向けに最適化した無料ビルドを Itch.io で公開、Web版も用意(動作に若干の不安定さあり)。
- 開発動機は、Jordan Peckの古い技術デモへの インスパイア と、手続き型ジオメトリやボクセルゲームへの興味。
- フルゲーム化は未定、サイドプロジェクトとして 随時アップデート 予定。
- 開発期間は約1ヶ月、週15時間程度の作業時間で実装。
- 開発環境は Unity 6+C#、Job SystemとBurst Compilerを活用しつつDOTSは未採用。
- テクスチャはすべて自作、ピクセルアートツールやスクリプトで生成。
- 質問やアイデアは Reddit投稿 で受付中、要望が妥当なら反映する可能性も。
球体ボクセル惑星の設計課題
- コードで球体を作るのは簡単だが、 重力方向とブロック面の整合性 が課題。
- ブロックの垂直面を常に重力方向(惑星中心)に合わせる必要性。
- 課題は2つ:
- 2Dグリッドを3D球体へ マッピング する手法
- 外側へ進むほどブロック幅を 維持 する工夫
球体へのグリッドマッピング
- Gaussの定理により、平面グリッドを球面へ歪みなく貼るのは 不可能。
- 一般的な地図投影(矩形→球体)は極端な 歪み を生む。
- ゲーム開発では Quad Sphere (立方体の6面を球面に投影)が主流、歪みが大幅に軽減。
- Quad Sphere構築手順:
- 原点中心の立方体を準備
- 各面をグリッド状に細分化
- 各頂点を単位球面まで 正規化 して射影
- デフォルトのQuad Sphereでも歪みは残るため、 事前歪み補正 で面積や角度の保存性を向上。
- 歪み補正前後でブロック形状の違いが顕著、補正後はより正方形に近いブロック配置。
深度方向の歪み対策
- 球体では中心に近いほどブロックが 薄く、外側ほど 広く なる問題。
- 理想は、外側ほど1層あたりのブロック数を 増やす 方法。
- ただし、各層のブロック端が揃わず、構造物の一貫性が損なわれる。
- 解決策として、 歪みが大きくなった時のみ 層ごとにブロック数を倍増(最小値2が推奨)。
- この手法で、各層は「シェル」としてまとまり、外側ほど 指数的に ブロック数が増加。
- シェルごとに規則的なグリッドを維持でき、コードの効率化にも寄与。
惑星データ構造
- 平面ボクセルワールドは カラムチャンク+レンダーチャンク で管理(例:Minecraftは16x320x16→16x16x16)。
- 球体ワールドは 6つの扇型セクター に分割、各セクターを「シェル」で細分化。
- セクターごとに、中心から外側に向かってシェルが拡大。
- シェル内のブロック数・層数も外側ほど増加。
- 効率化のため、可変サイズのシェルをさらに 16x16x16の固定チャンク に分割。
- 物理シミュレーションや描画での バッチ処理 最適化。
まとめと今後
- Blocky Planetは、球体上のボクセル配置・深度管理・歪み補正など、 独自の技術的工夫 を実践。
- シェル構造やQuad Sphere補正、効率的なチャンク分割で 快適なプレイ感 と 拡張性 を両立。
- 今後も技術的チャレンジや改善案について情報発信を継続予定。