ラベル AI の投稿を表示しています。 すべての投稿を表示
ラベル AI の投稿を表示しています。 すべての投稿を表示

2012年10月17日水曜日

Unity AIの実現にUnitySteerを活用する~その3

前回に続いてUnity Steerについて紹介したい。

情報源としては2009年までさかのぼるが、当時にUnitySteer全体像について作者が説明した内容の紹介をさせていきたい。過去情報の翻訳であるため、すでに不要となっているものもあるため、その点はご留意いただきたい(Radar Prefabの使い方など一部すでに変更となっています)
2009/7/8

UnitySteerはゲームキャラクターや乗り物がシーンを自動操縦するためのクラスを含む。
どれぐらい加速するか、どれぐらい持続するか、乗り物の特徴にあわせどのように曲がるか障害物をよけるときにどのように行動すべきか、他の登場人物からどれぐらい距離を保つべきか、等々。いくつかのビヘイビアはきわめてかんたんであるが、より複雑な動作を実現するには組み合わせることが有効である。

このライブラリはOpenSteerおよびOpenSteerDotNetをUnityに移行したものであり重複したクラスを省いたり必要に応じてUnityのメソッド呼び出しを適宜おこなっている。乗り物のクラスは初期化の際にTransformかRigidbodyを設定するオプションがあり、乗り物が値を直接更新することが出来たり、その後、コードの書き直しを通じて経路探索にも応用されている。

移行の際にもとの乗り物サンプルを拡張し、可能なかぎり統合しながらいくつかの追加機能を加えている:
  • 乗り物連結(Vehicle tethering)
  • レーダープレハブにてトリガーベースの近接検知(Radar prefab)
  • 重み付けによりステアリングBehaviorの優先順位づけ
  • Angry Ant Pathとの統合

現状乗り物のクラスとしてあり、MonoBehaviourスクリプトが準備されているのは
  • 群れ行動(Flocking)
  • 障害物回避(Obstacle avoidance)
  • 徘徊行動(Wandering)
  • 追跡行動(Pursuit)
  • 乗り物連鎖(Chains of vehicles)
すべて2D, 3D動作が提供されている。
------

百聞は一見に如かずなので前回までとはまた異なるWeb Playerサンプルを参考にしていただきたい。


AIをゲーム開発に生かそうぜ!

2012年10月16日火曜日

Unity AIの実現にUnitySteerを活用する~その2



前回の続きでUnity SteerでどのようにAIを使うことが出来るか引き続き紹介をしたい。

まずは前回も紹介したWeb Player Demoを再掲する:

紹介リンク
http://arges-systems.com/blog/2010/10/19/unitysteer-20-multiple-agents-example/

デモでどのようなAIを使用しているかというと:

ビヘイビア(振る舞い)を状況に応じて切り替え、キャラクターを制御している。

シーンに4種類のビヘイビアスクリプトがあり、全てのキャラクターにアタッチされている。
・自由に方向を変えながら移動する=放浪(SteerForWander)
・他のキャラクターを回避する=隣人回避(SteerForNeighborAvoidance)
・他の障害物を回避する=障害物回避(SteerForSphericalObstacleAvoidance)
・キャラクターがお互いに離れすぎないようにする=束縛(SteerForTether)

なお、
デモで「1」を押すとデフォルト設定にて77キャラクターが登場するか「2」を押すと154キャラクターで同様のシーンが表示され、処理負荷が重くなるが十分処理出来る環境かが確認できる

最初のキャラクター生成時の配置はランダムに行われており、延々とキャラクター同士はぶつからずに進んでいく。

デモから学べることは至極単純で、Unity Steerでは複数のビヘイビアスクリプトが用意されていて、使用したいものをキャラクターにアタッチすることで様々なキャラクター制御がなされる仕組みとなっている。

どういう組み合わせにするかをは自身のゲームに必要な動きを考えることになるが、パックマンで例えると、ずっと追いかけてくるゴーストが特別アイテムの入手をきっかけに一転して逃げるようになる行動を取らせることなどイメージしやすいのではないかと思う。

次回はさらに他にどのようなスクリプトが用意されているかについて引き続き紹介したい。

AIを組み込むことで開発者も楽しみながら学べるぞ!

2012年10月15日月曜日

Unity AIの実現にUnitySteerを活用する~その1

UnityでAIを実現する方法はいくつかあるが、今回はC++でフリーのライブラリOpenSteerをUnityに取り込んだUnitySteerを紹介したい。

AIについては百聞一見にしかずでまずは紹介リンクにあるWeb Player Demoを見ていただきたい。

紹介リンク
http://arges-systems.com/blog/2010/10/19/unitysteer-20-multiple-agents-example/

OpenSteerは2002年にCraig Reynolds氏がソニーコンピュータエンターテインメントアメリカに所属していた際に開発されている。その後、SCEA, SCEIなどのサポートをえてオープンソースで公開されることとなった。現在の最新に至るまでに数多くの協力者によって出来上がったライブラリといえる。

Unity SteerはRicardo J. Méndez氏などArges SystemsのメンバーがOpenSteerをUnityに移行したアセットであり、MITライセンスとして提供されている。

アセットストアにも置かれているが、より最新のソースコードはGitHubにアップされているため、自身の環境で確認したいという方は是非ダウンロードしてみていただきたい。

ダウンロードリンク
https://github.com/ricardojmendez/UnitySteer/tags

応用がかなり効き、ポテンシャルはきわめて大きいライブラリなのだが、まだドキュメントが少ないのが現状であるため、使い方が分からないところが難点である。

有難いことに作者のRicardo J. Méndez氏に公式サイトのブログコンテンツ翻訳の承諾を得たので次回の投稿よりもう少し詳細について紹介していきたい。

AIをUnity3Dゲームに活用しようぜ!

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿