スキップしてメイン コンテンツに移動

AIのルートを自動生成

ほっとけーき2での、AI用ルート自動生成を作りました

ほっとけーき2とは?

魔法少女が3D空間で対戦するゲームです。
最近作ってるゲームです。

AIを作るために

AIは空間を移動するために、通れるルートを教えてあげなければなりません。
そのために、ルートデータを用意しましょう。

手動で作るのはメンドくさい

手動でルートデータを作るのはメンドくさいので自動で生成しようと思いました。 一度、モデリングソフト上で点と線のデータをルートにしたてようと、がんばって作ってたんですが途中でやりたくなくなってしまいました。

自動で作るために

自動でルートデータを作るためにステージのモデルデータ自体を利用します。
三角形のポリゴンは以下のようなデータを持ってます。
  • 点A
  • 点B
  • 点C
  • 法線ベクトル
  • その他

1.まず、通れる可能性がある「位置」を出す


三角形の中心(3つの座標の合計 / 3)から、法線ベクトルを適当にのばした位置を通れる可能性がある場所とみなします。

2.集約


点が多過ぎると、計算に時間がかかるのである程度近い点を集約してしまいます。

3.繋ぐ


繋げられる(間に壁がない)点を繋ぎます。

4.ぼっちは消去

3の右下の点のような、何も繋ってない点は消去します。

5.完成!

結果


黄色の丸が点、白い線が繋がっているということを示しています。

コメント

このブログの人気の投稿

UTF8からSJISに文字コード変換ライブラリを作りました

HaxeでWindowsのコンソールに出力するさい、SJISでないと文字化けを起こしてしまいます。
というわけで、文字コード変換ライブラリを作ってみました

2016-05-25追記:今はnorikoというライブラリにSJIS、UTF8、JIS、EUCの文字コード変換ライブラリを実装しています。

ぐるんぐるん

今、ぐるんぐるん(仮)という名前のゲームを作っています。
いわゆる、6DoFでの空間上で撃ちあいをするゲームになっています。Godot Engineの練習3作目として作っています。

Godot Engineの練習として以下の機能を実装する予定ではありますが、調べながらなので何時実装になるかはわかりません。

・ネットワーク対戦
・洞窟ステージ
・軽量化(GridMap + Lightをなんとか良い感じで使いたい)

LightはBakeできるハズなんですが、やるとエディタごと落ちるのでちょっと要調査です。

HaxeのSMFライブラリ format-midiを公開しました

HaxeでStandard MIDI File(以下SMF)の読み書きができるライブラリ「format-midi」を公開しました。

https://bitbucket.org/arlez80/format-midi

これでHaxeを用いてSMFの生成/解析ができます。
使い方はHaxelibのformatというライブラリにあわせて作ってありますので、簡単に使うことができると思います。

https://bitbucket.org/arlez80/m2sauna
これはformat-midiを使って作っている、SMFからAudiosaunaというブラウザ上で動くシーケンサー用のファイルに変換するツールです。