😩

ゼロからMinecraftを作ろうとしてわかったこと

2022/10/08に公開

結論

  • 三つの壁がある
    • 3D演算、描画
    • 3Dライブラリ
    • Minecraft自体のアルゴリズム
  • 3D描画はやっぱり難しい
    • 高校〜大学数学は必須
  • 3D演算ライブラリを使っても難しい
    • Three.jsなどのラッパー?を使っても大変
    • 当たり判定
    • ポリゴンやメッシュの描画
  • 描画的な問題、処理的な問題以外に、Minecraftのアルゴリズムの難しさ
    • 処理をチャンクごとに区切って行う
    • パーリンノイズを使った地形生成
    • チャンクを使用したデータ保存

主に三つの壁

主に、

  • 3D演算、描画
  • 3Dライブラリ
  • Minecraft自体のアルゴリズム

の壁があります。最初の二つは自分も理解はしていたのですが、最後の、

  • Minecraft自体のアルゴリズム

これがさらに難しかったです。

3D演算、描画

三角関数や回転行列を用いてポリゴンを移動させ、メッシュを貼り、テクスチャを貼り、当たり判定などを考える必要がある。

3Dライブラリ

仮にOpenGLやThree.jsのような描画ライブラリを使ったとしても3D描画は難しい。

  • ポリゴンやメッシュの作成
  • 点の座標、ポリゴンの回転方向、法線

Minecraft自体のアルゴリズム

仮に3D描画をフルスクラッチで実装でき、またはライブラリを使いこなせたとしても、Minecraft自体のアルゴリズムがまだ立ちはだかっています。これがかなりやっかいで、

  • チャンクごとの処理、データ管理
  • 当たり判定
  • 地形生成アルゴリズム
    などなどのMinecraft独自の要素がたくさん出てきます。
    ネットで調べても意外と情報が少ないので苦戦します。

関連ページ

https://www.chickensblog.com/scratch-minecraft-2d/
https://www.chickensblog.com/scratch-diagonal-movement/
https://zenn.dev/teba_eleven/articles/aa46297ed1673b
https://zenn.dev/teba_eleven/articles/b00ec37e6dca6d

Discussion