もんしょの巣穴blog

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

パーバーテクスライティングは時代遅れ?

今年最後の更新です。
個人的ゲームオブザイヤーは…なんだろう?
今年のゲームはどれも面白かったんですが(『雷電4』以外)、これはって言う心に残るゲームはなかったんですよね。
どれも面白かったけど、どれも面白さが予想できたというか…予想外や予想以上の面白さってのがなかったんですよ。
それはそれで安定しているといえばしているけど、面白みには欠けますよね。
最近は『フェイブル2』と『ギアーズオブウォー2』をよく遊んでますが、どちらも面白いです。
ただ、バグが多いんですよね。この2本に限った話じゃないけど。
ゲームになってないとか進行不可能になるとかってのはないんですが、GoW2は拳銃以外で盾が使えるとか、フェイブル2は家具が売られないとか、FO3はキャラが消えるとか。
日本のゲームのバグはけっこう色々突っ込まれてるけど(最近だと『メジャーWii』とか)、洋ゲーのバグは「洋ゲーだから」で済まされてる気がしないでもない。
自由度の高いゲームだとバグなのか仕様なのかもわかりにくいのが困ったところ。キャラが消えるなんてAIが勝手にどっか行ってるだけかもしれないしね。
なんにしても、近年のゲームは困ったバグが多いように感じます。グラフィックとかAIとか発展していくのは重要だけど、バグを減らす何らかの手段も必要なんじゃないかな。

最近、シェーダの自動化をやってみようとメタ言語を作ったまではよかったのですが、XSIのModToolだとmental rayのシェーダが使えない事に気付きました。
設定はできるんですが、どんなに頑張ってもテクスチャ1枚とフォンライティングが限界っぽい。
DirectX用とOpenGL用のマテリアルは使えるようですが、基本はHLSLとかを自分で書けって感じだから、自動化なんてできやしない。
それでも普通のライティングとかを自動化できれば何とかなるかと思ってフラグメントをしこしこ作ってる最中なんですが、ちょっと気になることが。
もしかして、今時(Xbox360/PS3)ってパーバーテクスライティングは時代遅れ?
Imagireさんのサンプルとか見てると、頂点シェーダで渡すのは法線やライトのベクトルで、ハーフベクトルを求めたりしてもろもろ計算するのはピクセルシェーダでやってることが多いような。
確かに、バンプマップやパララクスマップをやる場合にはこれらの情報が必要なのはわかります。
しかし、ランバートライティングなら必要ないし、テクスチャルックアップするにしてもnlとかnhとかを頂点単位で計算しておけば住む話かと思ったわけで。
とはいえ、パーピクセルライティングが基本となればまとめられる部分も多くなるし、けっこう便利化と思ったりもします。
で、実際のところどうなんでしょう?法線くらいはピクセルシェーダに標準的に渡したほうがいいのかな?

スポンサーサイト
  1. 2008/12/25(木) 19:00:33|
  2. プログラミング
  3. | トラックバック:0
  4. | コメント:0

モンテカルロ木探索

1000円で『レッドクリフ』を見てきたのですが、面白くなかったです。
三国志ファンからするとキャラクタ設定がおかしいというか、孔明がシュウユを友人とかいうのにすげぇ違和感が。
三国志を知らないとキャラクタがよくわからない。あんまり特徴がない。
初めて関羽が出てきた時は、名前が出るまで関羽だと気づかなかったくらい。
アクションも白々しくてしょっぱい。ジョン・ウーも戦争映画で多対多を表現するのは苦手か?
しかもこれが3時間。これならもう1回『ダークナイト』を見た方が良かった。やってないけど。

先週金曜日はDiGRAの公開講座に行ってきました。囲碁AIにおけるモンテカルロ木探索についてです。
実はあまり期待してなかったのですが、これがかなり大当たり。
モンテカルロ木探索はここ数年に出てきた技術ではなく、結構昔に考えられた技術。
しかし、当時はそのAIは強くはなく、むしろ弱い部類だったようです。
これに注目が集まったのはほんの2年半前。突然現れてそれまでの様々なAIを過去のものにしてしまいました。
理由としては、CPUの並列化と速度が上がったこと。アルゴリズムに対する若干の改良もありますが、これらが非常に大きい。
そもそもどんな技術なのかというと、これがまたきわめて単純。
モンテカルロ木探索においては、ランダムに終局までゲームを実行することをプレイアウトと言います。
このプレイアウトをとにかく何回も行い、その勝率がいい次の一手を選択するというものです。
囲碁は他のゲームと違って評価関数が作りにくいゲームです。
将棋やチェスは駒によって価値が違ってきますが、囲碁は白黒の石だけです。
オセロの場合、駒には価値がありませんが、目の位置には価値があります。4角や端の辺がいい場所となるわけです。
囲碁は他の石との連携になりますし、短期的な良い手が長期的にも良い手になるわけでもありません。
しかし、将棋などと違って打てる場所にランダムで打っていくだけで終局までいけます。将棋の場合、いつまでたっても王将が取られないということもあるでしょう。
大量に行ったプレイアウトから成績の良いものを選び出せばよいのですが、プレイアウトの質を高めることも重要です。やるだけ無駄なプレイアウトをやらないとか。
この技術はとにかく単純。故に実装しやすいし、アイデア次第でいろいろな場面に利用できます。
某氏と話していて考えた使い道としては、FPSの敵AIの連携した位置取りとか。
黒板モデルで黒板が考えたような感じで、プレイヤーに対する包囲網を敷こうとするわけです。
NPCもPCも次のウェイポイントへ移動する、待機する、銃を撃つ(撃った方向のウェイポイントにいるキャラクタはダメージを受ける)の3つの行動しかできないと仮定します。
この条件で、今のNPC、PCの位置を設定し、プレイアウトを行います。ここで、PCを仕留めることができたら勝ち、だめなら負けということにします。
こうすれば、PCを包囲できる一手を打てるようになる…かもしれません。
ついでに、プレイアウトの回数を増減させてみたり、プレイアウトを最後までやらずに途中で切り上げるなどで難易度の調整も可能です。
プレイアウトの結果から勝率ではなく他の要素を評価することで(囲碁なら目数差とか)ギャンブル性の高いAIを作成することも可能です。
これらは囲碁のAIの世界では追求されません。エンタテインメント的な使用方法については我々の方が研究すべき問題でしょう。
評価関数は基本的に必要ないのですが、プレイアウトの質を高めるためにある程度の評価関数は必要になります。
ですが、そんなに正確でなくてもいいので、やっぱり適切な評価関数がなければ困る他の手法よりは実装しやすいでしょう。
考えてみると結構面白いことができる技術だと思いますが、リアルタイムでやる場合はAIの更新期間が長めのやつじゃないと厳しいかもしれませんね。

  1. 2008/12/02(火) 01:49:56|
  2. プログラミング
  3. | トラックバック:0
  4. | コメント:0

プロフィール

monsho

Author:monsho
ゲームプログラマ?

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

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