次の頁     TOP

AI
 このゲームで最も評判の良い点と言えば敵のAIになる。当時定評のあったNOLF2のバージョンからから更に進化したAIを導入しており、障害物をカバーとして使えるのはもちろん、家具を倒して障害物を自分から作ったりも可能。ガラスの部分を破って飛び込んで来たり、手摺を乗り越えてくるといった動作も見せてくる。攻撃に関しても爆発物を見分ける能力を持っており、プレイヤーが爆発物の近くに位置した場合には、それを撃ってダメージを与えようともしてくる。複数人数の場合は部隊としても行動し、様々なフォーメーションを採って攻撃を仕掛けてくる。或る者がSuppressing Fireを行い他の者が接近して来たり、お互いをカバーしながら進行して来たりとシチュエーションに応じてその作戦を変えてくるので、同じ箇所からプレイしても繰り返しの展開にはならない高レベルのAIとなっている。

 ではFPS史上最高の出来とまで言われるこのゲームのAIはどの様な仕組みで動いているのかを詳しく見てみよう。システム自体はgoal-oriented action planning (GOAP)と呼ばれており、一般的なスクリプト形式のAIとは大きく異なったデザインとなっている。まずは普通のFPSでは、

*直線的に突っ込んで来て死ぬまで戦う(Melee Attackのみのモンスター等)。目の前の障害物を避ける能力しか持っていない。
*その場から動かないで攻撃してくる。多少前後左右に動ける程度で周囲の認識は行っていない。
*スクリプトによって移動し障害物の陰等の配置に付いてそこから攻撃するが、その場から動くという概念は無い
*2つの指定されたポジションをループして動き回る


 概ねこんな感じで動かしているが、当然この場合には戦闘を繰り返した際の変化に乏しいという問題が生じる。一方でこのゲームのGOAPではどうやっているのかと言うと、

*AI別に達成可能な行動を集めた"Goal Set"が与えられている
*AI別に"Goal Set"を達成させる為に必要となる"Action Set"が与えられている
*AIは"Goal Set"の中から現時点で最もプライオリティの高いGoalを達成しようとする
*"Action Set"とは予め決められた行動手順の集合であり、これに沿って目標の達成に向う
*"Action Set"の一連の行動には条件分岐を含む
*それぞれの"Action Set"には状況に応じてコスト(重み)が割り振られており、AIは最も効果的と思われるパス(道筋)を採用する

 そしてそれぞれの具体例としては以下の様な物が用意されている(一部)。

Goal Set: KillEnemy, Dodge(避ける), Cover, Ambush(待ち伏せ), Patrol
Action Set: AttackRanged, AttackMelee, AttackGrenade, DodgeShuffle, DodgeRoll, GotoNode, AttackFromCover, BlindFireCover, SurveyArea, ReloadCovered, SuppressionFire

 例えば通常の状態ではPatrol goalを与えられているAIは、PatrolAreaといったActionを選択して行動している。ここで敵と遭遇した場合には普通KillEnemy goalが与えられるが、それを達成する為のActionは各AIの状況によって変化する。比較的近距離にいればAttackRangedのActionになるし、至近距離ならAttackMeleeもありえる。ショットガンを持っているのに距離が離れている場合には効率が悪いので、GotoNodeでプレイヤーの近くの場所に移動しようとする等のコストによる最適行動の判断で変化するようになっている。つまり敵と遭遇した時点での状況からリアルタイムで判断は行われており、スクリプトによって行動している訳ではない。
 ただしAIは人間と同様に周囲の3D構造を理解しながら動いているのでは無くて(現実問題としてCPUの能力的に無理)、行動パターンは用意されたスクリプトであるし、マップ内の移動可能ルートやカバーとなる場所の理解は予め設定されているNode(Waypoint)に沿っている。しかしどれを選んでどう動くのかは条件分岐による計算でリアルタイムに行われているので、動き自体は常に変化するし理に適った物ともなっている訳だ。


 Goalの切り替えとそれに応じた適切なActionは非常に柔軟に行われており、画一的な動作は一切排除されている。このゲームの一般兵士は最大限に死を避けようとする人間型の設定となっているので、KillEnemyよりも優先するGoalとなるDodgeに切り替わってDodgeShuffle, DodgeRoll等のAcitonを起そうとする。より危険が高いと判断すればCoverというGoalに切り替わってActionも変化する。最初はAttackFromCoverという攻撃Actionを選択するが、そこが攻撃を受けてカバーとして既に通用しないと判断した場合には攻撃を停止して待ち状態となり、別のカバーへの移動ルートを探索する。カバーを発見した場合にはそこへの移動を行うが、無い場合には腕だけを出して銃を乱射してこちらを牽制するBlindFireCoverのActionを起し、危険度の判定がそれを超えると片手で銃を乱射しながら背走するActionへと最終的には移る。逆に状況が安全と判断されるならばGoalとActionは逆方向へと戻って行くようになる。Dodgeの状態で安全と判断するならCoverというGoalへの変更は行われないし、Cover状態から危険度の判断が減るならDodgeへ、更にKillEnemyへと戻ってより高い攻撃状態に入るようになる。

 通常のゲームではAIの行動はスクリプトされているので、基本的に状況判断は行われていない。行われていたとしても一様であり、プレイヤーに狙いを定めさせないようにDodgeする事をプログラムされたAIの場合なら、自分が現在プレイヤーの狙いの対象になっていないのにも関わらず盲目的にDodge動作を行ってしまい、自分から銃の命中精度を不必要に下げてしまうといった問題が起きる。また行動の種類が少ない上に切り替えが突然なので、真正面からの戦闘中に危ないと判断すると唐突に逃げ出したりと不自然にもなる。

 更に行動の判断は現在の状況と可能なActionにおけるコストの計算によって行われるようになっているのでパターン化していない。例えばDodgeの状態では危険だと判断しても近場に適当なカバーとなる場所が見付からないなら、逆に逃げ回るよりもAttackRangedに切り替えて倒す方に傾注した方が危険度が低いと判断して(その状況での分岐計算がそうなるなら)そうして来るし、或いはカバー場所がプレイヤーの近くなのでむしろ危険度が高いと判断すれば、そのままDodge状態で戦うという判断能力(コスト計算)を持っている。
 通常のゲームでは状況判断が出来たとしてもそれは画一的に行われるので、パターンが同じとなってプレイヤー側から予測し易くなってしまう。危険となったらカバーに逃げると設定されていれば、むしろそこまで移動するのはプレイヤーに近付いて危険という状況でも御構い無しに行動を起そうとする等の、リアルタイムでの状況判断が行われていない。

 シチュエーションが変化して現在のプランが達成不利となった場合にはダイナミックに再プランニング可能ともなっている。例えばカバーに入る為に動こうとした場所が攻撃を受けた場合には、すぐに現在の行動プランを捨てて移動を止めてしまって再度プランを製作し直すし、仲間が死んだ箇所にはフラグを付けて危険箇所とマークし、そちらへはなるべく動かないような行動様式も組み込まれている。或いはドアを通ってプレイヤーの居る場所に到達しようとした際にドアを閉められたなら、通り抜けるというプランを捨てて開けようと試みる。ドアをプレイヤーが塞いで開けさせなくしていたならばそれも捨てて、近くのNodeに移動して別の入り口を探して入って来るようになっていると臨機応変でありスタックが少ない。
 一般的なゲームには最初のプランを何が何でも達成しようとするAIが多く、決定事項が達成されるまでは頑なにそれを実行しようとしてくる。なのでこれを利用して狭い入り口に多数の敵を誘き寄せて、通って来る順番に次々と迎え撃つという対処が可能になったりする事が多い。危険という判断を下したら行動を止めるというAIだとこういう風にハメて倒す事は出来ない。


 また個々のAIが独自に判断を行っているので動きが画一化されない為に人間的に見える。例として両方ともプレイヤーの銃口の向いた方向にいるがプレイヤーからの距離は大きく異なっているAIがいた場合、普通のAIだと明らかに状況が異なるのに「攻撃するなら攻撃する」、「DodgeするならDodge」で同じ様な行動を起してしまう。FEARでは離れた場所に居るAIは危険度が低いのでそのまま動かずに攻撃し、近距離の方はカバーを探すといったように動きが状況に応じて個別に計算されるようになっている。

 このシステムのもう一つの利点は、新たなAIの追加がシステム自体に影響を与えないという点。NOLF2の時点ではそれぞれの"Goal Set"毎に異なった"Action Set"を用意していたので問題も起きていたし、AIを追加するには一からの製作と動作検証が必要とされていた。しかしFEARではそれぞれを独立させているので、予め定義されている2つのセットを与えるだけで異なったタイプのAIを簡単に製作可能であり、また動作検証も簡単に行える。例えばロボットタイプの感情を持たないAIの場合には、KillEnemyというGoalとAttackRanged, SurveyAreaという設定だけを与えてやれば、攻撃を避けないで死ぬまで追って来るタイプを製作出来るし、兵士でもCover系統を取り去ってやればより自殺型で攻撃的なAIへの変更も可能となる。


 続いては更に上の階層として存在するSquad AIについて。FEARの部隊行動の一つの特徴は部隊と個人の設定が固定されていない点がまず挙げられる。どういう事かというと、部隊として動くのかどうかはリアルタイムで決定されており、あくまでも個人の行動が優先される。そうしておかないと自分の命が危ういのに部隊としての行動を優先してしまうというおかしな動きになってしまう事があるからだ。馬鹿正直に部隊として常に動いてくるような単純なシステムにはなっていない。

 具体的には部隊にはその時点で一番上のリーダーがアサインされており、他の隊員は現在個人的に特に優先される事項(危険)が無いならSquad Slotに自分を登録する。そしてリーダーによる分析はリアルタイムで行われて、今命令を出すのはGoalの達成に有利だと判断され、そして自分の出す指令に要求される人数が揃っているならば実際に命令が下される。つまり部隊として行動するのが適切ではないケース(敵までの到達ルートに適当なカバーが無い等)では部隊行動は行われないし、作戦が有っても人数が足りないならばそれは破棄される。命令は以下の4種類。

Get-to-Cover: 隊員が他のカバーへと移動中に他がSuppressionFireで援護
Advance-Cover: 敵方向へと向って隊員が前進移動中にSuppressionFireで援護
Orderly-Advance: 敵の位置が正確に分からない状態で、お互いが死角をカバーしあって前進
Search: 敵の存在が確認されていない状態にてカバーしあいながら探索

 その場所における移動可能ルートは予めNodeとして与えられているので、隊を分割して移動する際にルートが二つ有るなら分離してより拡散する動きを行える。また移動可能Nodeは部隊として管理しており、同じNodeに向かう事が可能な隊員が複数存在する場合には、バッティングして固まらないように別々のNodeに向けて動かすようにもなっている。

 全ての部隊行動はリアルタイムで成功チェックを行っており、途中で失敗と判断されたら即座に命令はキャンセルされる。援護を受けて移動中に予想外の攻撃を受けた隊員はすぐに部隊命令をキャンセルして最初の目標とは異なったカバー箇所を目指して走ったりするので、それが作戦のキャンセルを意味するなら他の隊員も部隊行動は同時に中止するということ(移動する隊員が複数なら続行される可能性もある)。この様に常に部隊として行動している訳ではないし、状況が変れば即座に部隊行動は放棄されてしまうので、見た目的にも行動が画一化されずプレイヤー側からはAIの動きが読み難くなり、それが行動の人間らしさを生んでいる

 

GRAPHICS
 使用されているエンジンはJupiter EX Engineという名称の新型Lithtech Engineとなり、Vertex & Pixel ShadersをベースにしてDX9の機能をフルに使用しており、発売時点でのほとんどの最新技術には対応している。

 ライティングは全てダイナミックに計算されており、オブジェクトが動いたり破壊されればそれに応じて影の描画も変化するし、銃のマズルフラッシュもリアルタイムで周囲のライティングを変化させる。また影に関してはプレイヤー自身の影もちゃんと描画されるようになっているし、影の縁をボヤけた柔らかい表現にするSoft Shadowにも対応している。

 戦闘時のエフェクトについてはおそらくこれまでに見たFPSゲームの中でも最高レベルの出来栄えで、派手な銃のエフェクトから金属面に当たって飛び散る火花、グレネード等が爆発した時に空気が揺れ動く表現や、周囲が見えなくなる程に立ち昇る粉塵、銃弾で削れて飛び散る破片等がリアリティを感じさせる。Slow-Mo使用時の弾の軌跡が見えたりする特殊効果も面白い。
 Blood表現は派手なレベルで、弾が当たった際には血飛沫が飛ぶし、背後の壁等にもちゃんと血が付着する。設定にもよるが死体もすぐに消えたりする事は無い。Goreはショットガンで撃ったりした時が主で、爆発系や非常に近距離でのショットガンでは完全に肉片になるという格好でやや不自然さもある。

 一方で炎の描画などは今一つという感が有るし、水面の描画も反射表現が行われていて悪くは無いが、他の優れているゲームの物と比べると水面の動き等にリアリティが感じられない。ホラーのシーンにおけるボヤけたりするエフェクト等もあまり印象的とは思えなかった。

 Normal  Mappingを全面的に使っているとあるのだが、壁等の周囲の環境はともかくとしてキャラクタに関しては使っているのかどうかあまり目立たない印象(特定のキャラクタを除く)。より進化したParallax Mapping(視差)にも対応しているが、一方でHDRの機能は持っていない(そもそもそういうシーンが無いが)。

 アニメーションは細かくて滑らかであり、兵士の動きには相当多彩なパターンが用意されている。


 高度なグラフィックを実現している代償としてかなり負荷が高くなっており、スムースなfpsを確保するにはそれなりに設定を落とさないとならないPCも多くなるだろう(発売当時の話)。グラフィック関連の変化や負荷に関してはこちらのテクノロジー紹介頁が比較画像入りで詳しい。DX9(Shader 2.0)ではなくDX8.1レベル(Shader 1.1)に落とす事でかなり改善されるようだが、それなりにクオリティは落ちてしまう事になる。

 設定面での注意としてはSoft Shadowsのオプションは選択すると「非常に重くなる」という警告が出る通りにfpsに強く影響する設定なのだが、これとFSAA(Full-Screen Anti-Aliasing)の設定は相容れないという点。効果自体が出ないか妙な描画が行われるかになってしまうだけではなく、同サイトの検証によると効果が出ない状態でも処理は行われているらしくfpsには影響してしまうようだ。製品のReadmeでは「Soft ShadowsのオプションはFSAAと組み合わせると効果を表さない(no effect)。またビデオカードのドライバ側から強制的にFSAAを使うと変な描画になってしまう。」となっており、この場合の"no effect"とは処理そのものがカットされるのではなくて、処理は行われるが効果は出ないと捉えるべきのようだ。両方を有効にする設定自体はOptionから出来てしまうので気を付けた方が良い。


SOUND
 EAXではAdvanced HDにまで対応しており、EAXのみ(2.0相当)とは別にオプションから設定が可能である。

 撃ち合いになると周囲に跳ね返る弾丸の音もあって臨場感は高い。材質による音の違いもちゃんと再現されている。一方でEAXによる音源定位は普通レベルであって特に優れていないように感じる。

 武器のサウンドは合格点だが、もうちょっと迫力が有った方が良いかなとは感じた。武器に限った事ではないのだが、閉塞空間であればもっと反射音を強調してもいいようにも思う。ホラー関連のエフェクト音もありきたりでもう少し工夫が欲しい。

 良く出来ているのは戦闘中のAIの音声で、よく命令や要請を叫んでいるので臨場感が高まっている。これは意図的だそうで、プレイヤーにAIが今何をしようとしているのかのヒントを与える為にそうしているとの話。"He's rushing!", "He's trying to flank!", "We've got two men down!", "suppression fire"等。

 BGMは通常流れない仕様で、代わりにノイズ調の環境音が静かに流れているようなシーンが多くなっている。

MULTIPLAYER
 トップで解説したようにこのマルチプレイ部分については現在ではF.E.A.R. Combatという名称で無料配布されており、製品版のユーザーと一緒にプレイする事が可能になっている。製品版のユーザーからしても参加人数が増えるのはプレイ可能なサーバーが増える意味からも良い事であり、実際にリリース以降プレイ人口はかなり増えて人気を博している。(これを書いている数年後の現在ではやはり減少している)。

 発売前の開発サイドの話としては、シングルプレイがメインなのでマルチプレイに割く時間と人員が限られており、Objectiveスタイルの様な調整に時間が掛かるモードを導入したり、複雑なクラス制を採用したりするには時間が無い。なのでDMやTDMの様なスタンダードなモードを採用するのに留める方が無難であり、また限られたコンテンツを徹底して練り込んだ方が、手を広げてどっちつかずになるよりも良いと考えたそうである。

 ユニークな点としてはマルチプレイでも”Slo-mo”の能力を使用可能というモードが存在していること。これはマップ上に一つだけ存在するReflex Boosterを奪い合い(マルチプレイでは原理的に一人以上の人間が使うのは無理)、拾ったプレイヤーがバーがフルチャージされるまで持っていると発動。個人またはチーム戦ならチーム全員がその恩恵を受けて、一定時間敵よりも速く動けるようになるというルール(シングルプレイほどの減速はされない)。存在位置や持っている人間は他のプレイヤーから方向が分かるというようにされている。

 参加人数は16人まで。モードは10種類。

*Deathmatch
*Slowmo Deathmatch
*Team Deathmatch
*Slowmo Team Deathmatch
*Elimination ( last man standing)
*Team Elimination
*Capture the Flag
*Slowmo Capture the Flag
*Control
 3つのコントロール・ポイントを奪い合って、保持している間ポイントが入るチーム戦
*Conquer All
 5つのコントロール・ポイントを奪い合うチーム戦。こちらは敵を倒してもポイントが入り、設定されたポイントに先に達したチームが勝利。ただし同時に全てのコントロール・ポイントを抑えればその瞬間に勝利となる。

 チート対策としてはPunkBusterを採用。サーバー側で使用可能武器の設定を行ったり、Voteの機能も標準で備えている。

    次の頁     TOP