😩
ゼロからMinecraftを作ろうとしてわかったこと
結論
- 三つの壁がある
- 3D演算、描画
- 3Dライブラリ
- Minecraft自体のアルゴリズム
- 3D描画はやっぱり難しい
- 高校〜大学数学は必須
- 3D演算ライブラリを使っても難しい
- Three.jsなどのラッパー?を使っても大変
- 当たり判定
- ポリゴンやメッシュの描画
- 描画的な問題、処理的な問題以外に、Minecraftのアルゴリズムの難しさ
- 処理をチャンクごとに区切って行う
- パーリンノイズを使った地形生成
- チャンクを使用したデータ保存
主に三つの壁
主に、
- 3D演算、描画
- 3Dライブラリ
- Minecraft自体のアルゴリズム
の壁があります。最初の二つは自分も理解はしていたのですが、最後の、
- Minecraft自体のアルゴリズム
これがさらに難しかったです。
3D演算、描画
三角関数や回転行列を用いてポリゴンを移動させ、メッシュを貼り、テクスチャを貼り、当たり判定などを考える必要がある。
3Dライブラリ
仮にOpenGLやThree.jsのような描画ライブラリを使ったとしても3D描画は難しい。
- ポリゴンやメッシュの作成
- 点の座標、ポリゴンの回転方向、法線
Minecraft自体のアルゴリズム
仮に3D描画をフルスクラッチで実装でき、またはライブラリを使いこなせたとしても、Minecraft自体のアルゴリズムがまだ立ちはだかっています。これがかなりやっかいで、
- チャンクごとの処理、データ管理
- 当たり判定
- 地形生成アルゴリズム
などなどのMinecraft独自の要素がたくさん出てきます。
ネットで調べても意外と情報が少ないので苦戦します。
関連ページ
Discussion