現在、ちょっとした楽しみのために小さなプロジェクトに取り組んでいます。OpenGL を使用した C++、WinAPI アプリケーションです。
六角形のグリッドでプレイされる RTS ゲームになることを願っています。基本的なゲーム エンジンが完成したら、さらに拡張する予定です。
現在、私のアプリケーションは、頂点と高さマップの情報を保持する VBO で構成されています。高さマップは、中点変位アルゴリズム (ダイヤモンド スクエア) を使用して生成されます。
六角形グリッドを実装するために、ここで説明したアイデアを採用しました。通常のグリッドの奇数行を下にシフトして、複雑になりすぎずに六角形を比較的簡単にレンダリングできるようにします (願っています)。
数日後、まとまり始め、マウス ピッキングを追加しました。これは、グリッド内の各ヘックスを一意の色でレンダリングし、この FBO 内の特定のマウス位置をサンプリングして、選択したオブジェクトの ID を識別することによって実装されます。セル (下のスクリーンショットの右上に表示されます)。
私のプロジェクトの次の段階では、より「プレイ可能な」地形の生成を検討したいと考えています。私にとってこれは、各六角形の形状が上の画像に見られるものよりも規則的であることを意味します。
だから最終的に私のポイントに来て、そこにある:
- 六角形のすべての点を 1 つの平面 (同一平面) に配置する現在の方法で頂点を平滑化または調整する方法。
編集:ここでポイントを共平面にする方法に関する情報を探している人にとっては、素晴らしい説明です。
- この種のことのより良い制御を可能にする手続き型地形生成へのより良いアプローチ。
- これを可能にする別の方法で頂点情報を表現する方法。
明確にするために、私は隆起したエッジまたはプラットフォーム (以下に示すように) を備えた平らな六角形のグリッドを実現しようとしているわけではありません。
)
すべてのジオメトリが結合して次のビットにつながるようにしたいと思います。
私は現在のようなもの (起伏のある丘と地形は比較的良好) を達成したいと思っていますが、台地はより制御しやすくなっています。これにより、必要に応じてより詳細なメッシュを追加できる、後で領域 (再生できないタイル) をコード化する柔軟性が得られます。
フィードバックは大歓迎です。私はこれを学習演習として使用しています。すべてのコメントを歓迎します。