スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

CEDEC2008 ~2日目~ 

2日目は主にAI関連のカンファレンスが集中していました。
せっかくなので、2日目のAI関連を制覇してきました。
かなり面白かったんですが、あまりにも疲れたので、執筆は徐々に追加する形になります。。
ちなみに、人の数は昨日に負けず劣らず多かったです。
25分前ぐらいにいないと良い位置が取れず、15分前ぐらいにいないと座れないという状況でした。



【AI DAY(1) ニューラルネットワークとゲームAI 】
ニューラルネット(脳のニューロン構造を機械化した物)をゲームに応用できないかと言う講義。
「シューティングのオプションにニューラルネットを使えないか?」
フィードフォワード型とリカレント型があるが、今回は前者を使うとの事。
これは、入力層→隠れ層→出力層の順で処理され、逆はない。
それぞれ複数のユニットを持つが、大抵隠れ層が多くなる。

今までのAIは記号主義であり、プログラマが条件を作って最適解を求める物。
バランス調整が楽にできるが、想定外の事が起きにくい。
新しいAIは学習と経験で最適解を求める。
意外性を期待できるが、調整や実装が大変で、学習に時間がかかる。

実装だが、ユニット数が動的に増える事はなく、層も変わる事がないと言う。
更にノード接続は0~1の重み付けをして、切りたければ0にすればいい。
それを知らなかったがために苦労しましたという話をしてくれた。
また、シグモイド関数などを使うが、
ビューアー等を作りビジュアライズ化する事が必須という話もあった。

とりあえず作ってみたがどうも上手く行かない。
その理由は以下の通りとの事。
・自動的に学習していくわけではない。
・成長が生命的(曲線的)に見えるとは限らない
・教師信号(正しい、正しくない)が偏っていると、イメージ通りの結果にならない。
・他のアルゴリズムで代用できてしまう可能性がある。

なお、これからやろうとする方は、
[ M.L.ミンスキー著 パーセプトロン ]を読んでからやると良いとの事。

「キャラ化」
・そもそも脳のニューロンは数百億有るが、プログラムで使うのは数十個程度。
・時間も限られ、教師信号も多種多様。
上記理由から、どうがんばっても人間まで再現するのはこの手法では無理なようだ。

そこで、ゲームで上手く使えるように紹介されたのが「キャラ化」のお話。
人間は感情的な物が先に来やすいので、キャラクター化する事で感情に波を持たせる事ができる。
「ほめる」「しかる」等ができるようになり、
キャラ側から「ほめてほしい」アピールをすることも自然に可能になる。
この辺りがゲームで適用するには避けて通れないとの考えのようだ。

[ まとめ ]
・学習内容を企画的に明確化できなくてはならない。
 - 学習内容の本質を制作者が理解できない物は出来ない。
・ニューラルネットを使うのに相応しい内容であるのか?
 - 他のアルゴリズムで代用できる事もあるし、その方がコストが低くなったりする。
・複数機能を組み合わせて使い、単体テストは必ずする事。
 - 複雑な物を作るのは無理、単純なバグのない物を組み合わせる事でより良い動きになる。

・個人的にはむしろ「キャラ化」の概念に惹かれた。
 AIでなくても「キャラ化」で成功している例は非常に多い。
・逆にニューラルネット実用化はまだまだ遠い感じのようだ。
 CPUパワーが今より遥かに上がった頃に、実用化の可能性が見えてくるかもしれない。



【 AI DAY(2) AIのアプローチの一つとしての群知能 】
葦(植物)には知能は無いが、群として見ると知能を感じる事がある。
そこで、小さい機能・簡単な機能のAIでも、集まることで”らしく見える”事があるというお話。

ここで、大事なのはプレイヤーが人間”らしく見える”かどうかという話があった。

AIには歴史的に4種類に分けられるらしく、
1.思考ルーチンを、格好良いのでAIと呼んだ。
2.AI技術があり、面白そうなのでゲームを作成した。
3.絵の表現能力が上がりすぎて、動きが旧来のものだと気持ち悪くなってしまい、
  必要に迫られて作成した。
4.ネットゲームの限界を受けて、より対人戦らしいものを。

最近は3のケースが多いらしい。
「近くで誰かが死んだのに、平然と歩いている通行人」
今までのゲームならよかったが、FPSなどのリアルな映像では気持ち悪く見えてしまう。
そのため、絵の完成度を補完するAIが近年良く見られる。

ここで、AIをらしく見せるテクニックがいくつか挙げられた。
小さい技を順次導入していく事が大事という見方。
・目を見る目 - 視界内にある目を見ようとしたり、そらす動作を入れる。
・音源を見ようとする目 - 音源の方を見る。音源が見えなくなってもみようとする。
・探そうとする目 - 音源が分からないと、それを探そうとする。
・パーソナルスペース - ある範囲までは対象に接近を許し、それ以上近づかれると嫌な顔をして離れる。

なるほど、人間らしさの表現としては十分すぎるほどに感じる。
また、パーソナルスペースを実装すると、集団で見たときによりらしく感じる事ができるとの事。

次に4のAIだが、
ネットゲームでは、人が動かす方が、最適を求めた結果機械のようになる事がある。
そうすると、何でネトゲをやっているのかわからなくなり、
結果的に人間性を求めてチャットに入り浸るらしい。
確かにこれは経験があるので、納得してしまった。
ログインして何時間もチャットをやる人も決して少なくないのだ。

更に、未来のAIゲームについての展望が話された。
未来のAIゲームは、インタフェースが変わったゲームではないか?
例えば、目線を動かす事でコミュニケーションを取るゲームが生まれるのではないか。
という意見であった。

[ まとめ ]
・AI技術は"らしく見せる"ことが大切、ユーザーには想像力があるので、
 完璧な物である必要はない。
・らしいAIを作るには、目の動作は避けて通れないようだ。
・高機能の物を作るとコストが莫大になる。
 細かい機能を組み合わせるのが現実的である。




【 AI DAY(3) ゲームとAIはホントに相性がいいのか? 】
「頑張れ森川君2号」「アストロノーカ」でお馴染みの森川さんの講演。
遺伝的アルゴリズム(Genetic Algorithm)をどうゲームに適用するのかのお話。

「遺伝的アルゴリズム(GA)について」

遺伝的アルゴリズムの基本的な流れは、
・最初の集団を作る。
・集団の中から親を選ぶ(何らかの評価基準で確率を割り振る)
・親の遺伝子を交配させる
・子の遺伝子に突然変異を与える
・世代を交代する => 2番目に戻る

この中のどれか一つでも偏っていると、良い結果として収束しないらしい。
親の選び方としては、一番良い行動をした者を選ぶために上手く点数付けする必要がある。
今までのAI関連でも言える事だが、この場合の良い行動は、
「作り手が最終的にこうしたいと思う行動をするもの」であると思われる。

交配には交叉という手法を使う。
遺伝子はビットの配列で管理されているのだが、その中の数点をランダムに選び、
区切られた箇所を入れ替える事で、両親の特徴を引き継げるという。

ただ、そのままでは上手く成長していかない為に、突然変異を起こすように設定する。
これは、ビット配列の一つを一定確率で反転させる処理で行うようだ。
そして、作り手が設定した目標値に達するまでこれを繰り返す事になる。

「アストロノーカでのGAの利用」
アストロノーカは宇宙で野菜を育てる農家のゲームだが、
害獣「バブー」が野菜を狙ってくる設定になっており、
この「バブー」の進化に遺伝的アルゴリズムが使われている。

大きな要素としては、
・身体能力の進化
・トラップへの耐性の進化
・トラップへの戦略の進化
に分けられているのだと言う。

例えば、「落とし穴」に引っかかると、脚力を上げて体重を落とそうとする。
「塀」に何度もぶつかれば、それを迂回したり、腕力があれば壊すなどするようになる。

ゲームで使うポイントとして挙げられたのが、進化速度の面である。
GAは結構ゆっくりと成長するので、1回バブーを撃退する間に、
ゲームの裏で10世代分の交配が行われているのだと言う。
これによって、ユーザーに進化した事がはっきり伝わるレベルになるようだ。

[ まとめ ]
・ユーザーのプレイスタイルによって違った結果が得られる利点。
・学習には時間がかかるので、対策が必要。
・デバッグやゲーム的な制御はやはり大変なようだ。




【 AI DAY(4) 魔ごころを、きみに
 ~ 「勇者のくせになまいきだ。」が目指した自己組織化アルゴリズム ~ 】

本日一番はっちゃけて、面白い講義でした。
積んでるAI自体は簡素な物だが、ゲームらしく見せるための色々な工夫があるというお話。
前の講義で出た、群れのお話もちょっと関連している。

「勇なまAIとカオス理論」
魔王様曰く「うはwwwテラカオスwwwww」
実際に言ってたので、このゲームが好きなんだな、という思いを受けました。

カオス理論とは、「複雑すぎて未来が予測できない現象」の事です。
雲から降る雨つぶの落下点を予測する事はできません。
これは、初期値が微かに変わっただけで、
結果が大きく異なってしまう現象が起きるからと言われている。(初期値鋭敏性)

勇なまのAI自体は非常に簡素な物で、「ニジリゴケ」のAIについては、
・直進⇒壁に当たったらランダムで曲がるか引き返す。
・土に養分があれば取る、既に持ってれば戻す。

これだけだそうで、カオス理論によって複雑なAIに見えるという事。
なお、ここで肝心な「初期値のずれ」は、プレイヤーによって引き起こされる。
土を掘るわずかなタイミングで、全体としては違った状況を作りだすようだ。

[ 勇なまAIと自己組織化 ]
無秩序であるカオスに向かう中で、自ら秩序を形成しようとする自己組織化が起こる。
アリの生態で例えられていたが、
・基本的に何の情報も持たないうちは無秩序である。
・エサを見つけると持ち帰る時に、フェロモン(情報)を残す。
・他のアリは情報を見つけると、更に同じ事をする。
この流れによって、加速度的に同じ行動をするアリが増え、秩序が生まれて行くのだと言う。
自己組織化では、「粘菌が迷路の最短ルートを解く」という実験があるとの事。

ちなみに勇なまAIはこのままでは自己組織化しないらしい。
自己組織化には必要な物が以下の通りとの事。
・同じ物が沢山あること(アリがいっぱい)
・単純な入出力を持つ事(情報を出したり拾ったり)
・他の出力の影響を受ける事(他のアリの情報を受けて行動を行う)

勇なまAIを自己組織化させるには、プレイヤーの関与が必要であり、
また、だからこそゲームとして成り立つんだという事を話していた。

[ 勇なまAIと生態系 ]
生態系は、生産者・消費者・分解者が上手く関係して回っている。

が、

勇なまは、養分が増えず、土が減ると養分が減る。
つまりは、「必ずほろびる生態系」であるとの事。
しかし、それがリソースマネジメントをゲーム性とする条件であると言う。

また、プレイヤーの立場として、
最初は勇者と同じように、魔王世界に干渉する立場だったが、
プレイヤーの介入が分かりにくかったり、先が見えない等の理由で、
現在の神的な立場でゲームを行うようになったというお話。

[ まとめ ]
・簡素なAIでもゲームには十分使える。
・実際の世界から見ると足りない事があるが、
 そこがゲーム性であり、プレイヤーの関与する部分となる。
・ゲーム作りに愛情は必須。
・カオス理論は色々複雑なので、書籍とか買ってください。
スポンサーサイト
[ 2008/09/10 21:35 ] イベントレポート | TB(0) | CM(0)

CEDEC2008 ~1日目~ 

ゲーム開発者のためのカンファレンスである、CEDEC2008に行ってきました。
まだ2年目なので、本当は遠慮しようかと思ってたのですが、
たまたまチームの人が多忙で空いたので、入れてもらいました。
レポートですが、用語をかき集めた感漂いますが、その通りです。
GPU Gemsとかじゃないと載ってないレベルの用語とか一杯出てきます。
でも、何とか纏めてみたので、勘違いとかあったらコメント指摘してください_no

さて1日目はImagire Day、シェーダー関連が色々あります。
Imageあたりから来た言葉かと思ってたら、イマギレさんが出てるらしい('A
グラフィック系講習の人多すぎ、下の階行って、また上がって更に上の階まで列が。。。

受けた講習ごとに纏めようと思いますが、最初に思ったこと。
・やっぱり1時間20分は短いネー
・中級のレベル高すぎ、ある程度しか理解できなかった_no
・宣伝多くない?w

そんな感じで、まとめレポに入ります。


【 Imagire Day(1) レンダリスト養成講座 2.0 】
> トピック1:Real-time, All-frequency Shadows in Dynamic Scenes
SIGGRAPH 2008で出された論文の解説的なトピック。
何となく要約すると、
「今までのソフトシャドウは全ボケだけど、ボケとくっきり陰を分けられますよ。
 更に環境マップからシャドウ計算できますよ。」

ちなみに既存の手法ではSHEXPやWaveletを使った物があるとか。
1.環境マップを複数の面光源に分割。(明るい部分からフィルタサイズを計算)
2.各面光源ごとにライティング計算。
という流れ、予想される事ですが、やっぱり重いらしいです。

技術としては、Convolution Shadowmapという物の応用らしい。
ここで、影周りの技術を辿っていくセッションがあった。
・通常のシャドウマップ(くっきり影)があり、計算式ができる。
・上の影計算は0~1なので、それに平均フィルタをかけたPCF(ソフトシャドウ)
・PCFはシャドウテスト→フィルタリングの順を変えられない。
 それを逆に出来るようにしたのがConvolution Shadowmap。
 フィルタリング後にmipmapを作る事ができ、影のエイリアシング問題を軽減できる。

※何で今まで逆にできなかったのよ?
 シャドウ用の関数が2変数・不連続関数のため0か1になってしまう。
 上記手法はsinの集合計算で近似させているらしい。

で、今回の講義の新手法は、Convolution Shadowmapのフィルタ改良?
従来だとフィルタサイズが固定だが、新手法では自動計算によりフィルタサイズが可変になってる。
より詳しく知りたい人はSIGGRAPHとかの論文を読んでください。

[ 個人的まとめ ]
・環境マップによるソフトシャドウは可能、しかし実用的には重すぎて難しい。
・ライトが1つなら大丈夫と言っていた、それだったら平行光源でいいのでは。。。
・現実系のゲームじゃないと美を求めすぎぐらいの表現、他に処理使って欲しいw
 ただ、環境マップから生成は面白いし、実用化されたらちょっと感動するかも?


> トピック2:光学に基づいたボケ味の表現
簡単に言うと、
「実際のカメラのピントが合わなかった時の問題を再現して、現実っぽく見せる」
被写界深度との組み合わせで説明されていました。
ちなみに、スキャッターベースとギャザーベースの被写界深度があるらしく、
今回のはボケの形状をいじりやすいスキャッターベースを使うとか。

・実際のレンズには収差(全ての光が焦点に集まらない)がある。
 - 球面収差
  通常のレンズは球面なため、どこを通るかで若干焦点がずれる。
  そのため、場所によってぼけたりしてしまう。
 - 軸上色収差
  色の波長によって屈折率が変わり、ずれが生じる。
  そのため、輪郭付近で色が発生してしまう。

ちなみに、被写体の後方に出来る「後ボケ」と、被写体の前に出来る「前ボケ」で、
ボケの形状や、発生する色が変化します。

ダブレットレンズとかで補正するらしいですが、
それを使っても完全に補正しきれず、ちょっと珍しい形状(波形みたいな)が生まれます。
これをむしろ味としてエフェクトに使っていたのが、今回の講演。

レンズからレイキャストした情報をテクスチャに格納し、
収差用の関数(レンズのが分かればそれ)を適用する。
ダブレットレンズとかも、同じようにやるみたいです、詳細はそれほど語られませんでした。

[ まとめ ]
・あらゆるボケ味をパラメータ変えるだけで表現できる。
・シーンを限定する事で、テクスチャは事前に生成しておける。
・実際の写真はもっとほこりとかの汚れがある。
・口径蝕や円形以外のしぼりも作ると更に表現の幅が広がる。

・個人的にデモがすごい綺麗だったので、イルミネーション系に使うのは有りだと思う。
 リアルタイムにもできるらしいけど、さすがに重そうなので、イベントシーンとか?



【 Imagire Day(3) ゲーム開発のためのプロシージャル技術の応用 】
プロシージャル技術とは、プログラムによってリソースを自動で生成する技術。
最近利用しているエンジンでは、CryEngine2.0やfrostbiteがある。
これらの技術を使う事で、ゲームデザインその物が変わる、というお話。

用いるパターンとしては、
レベルデザイン(モデル)、AI、ユーザーアクション、ゲームシステムの4つと定義されました。

・レベルデザイン
法則性を持ったモデルをプログラムで自動生成する。
この場合の法則は、暗黙的な法則(物理法則など)がプログラム化される事が多い。
例えば、木のモデルを、葉の硬さなどをパラメータで与えてやる事で自動生成したりする。

・AI
あらゆる状態に対応できる物を作るのが理想ではあるが、状態空間が近年大きくなっている。
そのため、予め全てを作るのではなく、起こった状態に対して行動を生成するAIが求められるとの事。

・ユーザーアクション
ユーザーのする事ができる行為が定義される空間と言っていました。
プロシージャルにすることで、ユーザーの可能性空間を広げる事ができる、との事。
最近の物だとSporeというゲームが良く出来ていると紹介されています。
モデリング→テクスチャリング→モーション付けを簡易化していて、
ユーザーにとっては少ない労力で高度で大きなコンテンツを作ってる感覚になる。

・ゲームシステム
例えとしては、遺伝的アルゴリズムが挙げられた。
集団を一定の方向に進化させるための物で、混ぜ合わせたりする。
これについては、2日目の森川さんの講義を受けたので、そちらで纏める事とします。

これによって、ユーザーを解析しながらゲームを作っていく事が可能になるとの事。

[ まとめ ]
・どんどんリアルになって広大な世界を作る必要が出てきている。
 プロシージャル化する事で、その世界を現実的なコストで作れる可能性がある。
・近年CPUも高速化しているので、そろそろ本格的に使える頃かもしれない。
・プログラムも複雑な物となるので、コストの比較が必要。
・ありえない規模になりそうであったら、一度検討してみるのがいいんじゃない?というお話。



【 今後のインテル Visual Computingの方向性 】
正直、ちょっと期待外れだったこの講義。
そんなに特筆すべき事がなかったので、さらっと行きます。

[ マルチコアアーキテクチャにおける、DirectXを使用するアプリケーションの最適化 ]
これにすごく期待してたんですが、大した事言われませんでした。
グラフィックスには未だにCPUパワーがかなり必要であるので、
アプリケーション、DirectX API実行とオーバーヘッド、ビデオカードドライバの全体を解析する必要がある。
解析手法として、性能向上のゴール地点を先に用意するのが肝要との事。

マルチコアの物に対しては、どれだけ並列化できるかが性能向上率に繋がる。
この辺が複雑になってくるので、定期的に性能解析を行う必要がある。
・CPU解析ツール
 - VTuneアナライザー : DirectX SDKを入れるとシンボル解析が可能になる。
 - Intel スレッドプロファイラー
 - Microsoft PIX for Windows
・GPU解析ツール
 - Microsoft PIX for Windows
 - Perfhud
 - PerfStudio
 - Intel グラフィックスパフォーマンスアナライザ

後は、DrawPrimitiveは纏める事。
GPUの呼び出しを取得して何かやるなら、その部分は1つのスレッドでやること。
任意のCPUにスレッドを貼り付けるような事は禁止。
リソースの更新は、スレッドの最初か最後にまとめて行う事。

とかそんな感じの講義でした。

もう一個大きなトピックで、Many-CoreハードウェアのLarrabeeが発表されましたが、
こちらはSIGGRAPHで既にやった内容のようなので割愛します。
ざっと言うと、CPUとGPUを纏められて、レンダリングパイプラインは全てプログラミングできます。
みたいな感じでしょうか。

[ Larrabeeまとめ ]
・CPUの汎用性&GPUの並列性。
・GPUの制限から解き放つ事ができる。
・(コアを増やして行った時に)高効率でスケールするソフトウェアレンダラー。
・様々なアプリケーションへの対応。

[ まとめ ]
・これからよりマルチコア、メニーコアになって行く。
・ツールとかを使って総合的に解析しながら、効率の良い最適化をしないといけない。
・CPUとGPUが統合される日が来るかも・・・?
[ 2008/09/10 00:12 ] 通常日記 | TB(0) | CM(0)

修羅場抜けたー 

ちょっと前まで修羅場ってました。
やっぱり開発はそういう事もあるもので、というか良くあるもので。
中国人とお仕事をした時の、文化の壁で色々苦労したり。
良い経験にはなりましたよ。

最近肩こりが結構ひどめです。
そんなわけで、時々マッサージを受けたり。
一度整骨院に行ってみたら、眼から来てるらしいとの事。
心当たり?ありまくりですが?

そういえば、mixiには書きましたがgoogle chrome使いました。
タブブラウザで超高速表示。
忘れがちだが、開発支援ツールがデフォルトでついてます。
スタイルシートとか、ブラウザ上で色分けして表示したりしてくれる。
JavaScriptの実行タイムラインが見れたりデバッガがついてたり。。
最近は恵まれてるなーとか思った今日この頃でした。
[ 2008/09/07 18:22 ] 通常日記 | TB(0) | CM(0)
プロフィール

poro

  • Author:poro
  • プログラマやってる人です。
    絵とかも好きだったり、
    何か作りたいとか最近考えているらしい。
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。