読者です 読者をやめる 読者になる 読者になる

AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

都市の自動生成

道路から住宅、ビルディングをすべてそれっぽく並べてくれるプログラムを作りました。 まだ碁盤の道路ですが、ブロック内に、家とビルをそれっぽく並べます。 ルールとしては家の玄関の前は道路または空き地があること。 ビルは3種類。家は10種類あります。 …

FTLみたいなものを作ってみる(2)

経路探索を実装。 部屋を三つにして、スタートからゴールまで移動できた。このへんは以前も作ってますが、3Dとの位置合わせが難しかった記憶がありますが、とりあえずできました。 公式チュートリアルのRogueLikeGame的でもありますね。あっちは光線なげて大…

選択したキャラを特定の場所に移動させる

RTSでよくあるような選択したキャラを特定の場所に移動させる処理を作ってみました。 選択は、マウスクリックからドラッグして離した四角形で選択、再度クリックで、そこに移動させます。NavMeshは使わずに、自前の経路探索ルーチンを使っています。同じ座標…

簡単コードで光線飛ばして経路探索(3)

実際にクマさんを経路探索で見つけたパスにそって動かしました。 Vector3 next = Navi.GetNextPath(transform.position, goal);現在地、ゴールを引数で渡すと、次のポイントの座標を返値で返してきます。 次のポイントにつくと、次のポイントを返します。 渡…

簡単コードで光線飛ばして経路探索(2)

もうちょっと複雑な経路にしてみました。navi5からNavi6に行きます。画像の球にナンバーが振ってないので分かりにくいですね(´・ω・`)反復深化6回目から解が得られてますね。dist=60.6初め、下から回っていく経路を先に見つけて、次に真ん中の道を通る経路…

簡単コードで光線飛ばして経路探索

簡単な仕組みで自前で経路探索をやってみました。 画面上のWaypointに球をおいておくと、球と球の間で光線が飛ぶ=通行可能という仕組みで、経路パスを求めます。 次に、スタート球とゴール球を指定して、経路探索を呼ぶと、通行可能なパスを探索して最短経…

動的に障害物を動かすNavMeshの使い方

NavMeshを初めてやってみました。予め経路探索をやっておいて、実行時に最短経路で移動させられる仕組みです。 動かせる障害物を設定できるようで、これを使うと動的に変化する環境を実現できるのでやってみようと思いました。 こちらの記事を参考にさせても…

一番近い部屋に廊下をつなげる

ダンジョンですが、廊下をつなげる方法を、今までは、一つ前に作った部屋と2つ前に作った部屋につないでいましたが、領域分割の状況によっては、かなり離れた部屋に廊下をつなげてしまう場合があったので、以下のようにリストを調べて、一番近い部屋に廊下を…

ローグのダンジョンを自動生成する(3)

経路生成を見なおしたらだいぶマシになった。 一つ前の部屋と必ず繋がっていれば、必ずすべての部屋がつながっていることが保証されるはず。 つながってないなら、ツルハシで壊せば行けるので、隠し部屋ということで(ゝω・) void makeRoadH(int x1,int y1,…

ローグのダンジョンを自動生成する(2)

部屋を分割する時に、水平分割して失敗したら、垂直分割してみる を入れたら、部屋数が増えました。 (逆の垂直分割失敗で、水平分割やってみるも、やっている)前回生成した部屋情報だけ覚えておいて、新しく部屋作った時に 前回の部屋とを道でつなげるだけ…

ローグのダンジョンを自動生成する(1)

再帰的な領域分割での部屋生成まで あとは部屋と部屋を通路で結ぶ必要がある(ここがなかなか難しい) mapは100x100で、縦または横に分割しながら再帰呼び出しして 領域が狭くなったら部屋を作って、親に戻るって感じの動き。 public int[,] map; for(int y=…

SpriteでMapを動的に表示する(3)

いちおう以下のサイトで紹介されてるアルゴリズムにそって壁を設置 せっき~のゲーム屋さん ドルアーガの塔 乱数の工夫の正体 まだなんかルール上おかしい配置があるので、バグがある感じですがSearchAndBuild()を呼んで、 壁の無い柱が無くなったら1を返す…

SpriteでMapを動的に表示する(2)

外壁を表示して、柱と柱の間に壁をランダムに配置 本当にランダムに配置しただけなので、迷路になってません(´・ω・`) こちらで紹介されているようなアルゴリズムで壁を作る必要があります せっき~のゲーム屋さん ドルアーガの塔 乱数の工夫の正体 大きさが違…

迂回してくるゾンビ

モブ子さんは固定ですが、 複数のゾンビが、経路探索して、モブ子さんのところを目指すようになりました。 壁に囲まれている場合は、開いている所を通って近づいてきます。 ゾンビらしからぬ賢さw 次は、モブ子さんが動いても、ゾンビの経路探索が追従する…

迷路を歩くセーラー服さん

セーラー服さんを迷路の中を歩かせました。 基本、向きをスムースに変えて、アニメーションで歩行させると、進行方向に進むという仕組みですが、 回転の角度が小さすぎると隣のマスにいけずに回転するので、回転角度を増やしました。迷路でのゴールをゾンビ…

経路探索実装中(超面倒くさい)

map=new string[10]; map[0]="#####"; map[1]="#G..#"; map[2]="#.###"; map[3]="#...#"; map[4]="#.#.#"; map[5]="###.#"; map[6]="#...#"; map[7]="##.##"; map[8]="#S..#"; map[9]="#####"; #は壁 Gはゴール Sはスタート位置Gからコストどれだけで移動で…