フラクチャー

 昨日、 Shade を買ったときのヨドバシポイントで買った(なんというワゴン)フラクチャーを簡単に遊びました。

フラクチャー

フラクチャー

 これ、体験版があまりよくなくて、周りでも評判はよくなかったし、実際 Amazon のレビューを見ても……レビューをどの程度あてにするかはともかくとして……ぱっとしてません。

 確かに7千円出せるかと言われると微妙なんですが、3千円なら買いです。システム系、描画系は本当によく出来ていて隙がない。あと地味に音楽が映画的でいいです。ルーカスだからだろうか。

シューティング部分

 恐らく一番の敗因となったであろうシューティング部分は、確かに HALO や Gears of War などのガチムキ・欧米・シューティングと比較するとかなり大味。シューターには評判が悪くても仕方ないだろう。

 しかし、このゲームはどちらかというと日本的ゲームデザインというか、「ゼルダの伝説のアクション部分をシューティングに置き換えた」という感じでデザインされているため、アクション部分が FPS や TPS と比較されないデザインであればまた評価が違ったかもしれない。裏を返せば、シューターではない人が、「銃を使うアクションゲーム」として買えば十分に楽しめるものになっていると個人的には思う。

AI

 シングルプレイをゲームとして楽しんでもらうための、ゲームゲームした AI という印象を受けた。少なくともシングルプレイヤーの相手を知的に務める BOT 的な AI ではなく、プレイヤーを撃破するというより撃破されるために用意された AI という感じになっている。

 敵は積極的に戦線を押し上げるということはせず、レベルデザイン時でデザイナーによって振られた地点を攻撃拠点として利用するような振る舞いになっている模様。押すと攻めてくるが、引くと安全を確保できる。このゲームでは性能差からいって、敵が一斉に押し寄せたらたぶん主人公は一気に撃ち殺されてしまうが、そういう戦術をとらない AI になっている。

 攻撃地点や遮蔽物が利用できるポイント間の移動はありますが、ポイントから一気に攻め潰してくるような振る舞いは難易度 NORMAL ではしません。 HARD だとするのかな。

 基本的には、この「決められた場所にいる」「決められた場所を往復する」という、敵 AI の振る舞いも、味のある待ち伏せ兵器や、弾丸速度の遅い武器の使い方に一役買っている。スーパージャンプをするエリート兵の着地地点を予測してランチャーを撃ち込んだり、リモコン型グレネードを撃ち込んで、敵が射線を確保するために移動したところで起爆するという戦法が取れる。

 またレベルの中には爆発物が比較的積極的に置いてあり、敵はその付近の柱やコンテナを遮蔽物を確保して戦うため(そういう情報が埋め込まれているのだろう)、爆発物を撃って敵を一気に倒すという爽快感のある遊び方を積極的に楽しめる。

  AI が優れていると、行動範囲が広くなって、爆発物を置いても必ずしもそれが使えるとは限らないので、フラクチャーはゲームゲームしたゲームってことでしょう。テラン・デフォンメーションによって変化した地形を AI が認識して、その場でウェイトを振って利用するといったそぶりは見せないため、あらかじめレベルに情報が埋め込まれているのだと思われます。

 で、この AI だとすぐに接近したり回り込んだりできるため、接近戦が一見非常に有効に見えますが、接近攻撃はパシフィカ兵のほうが圧倒的に強いというふうに調整してあるようで、射撃で倒すしかないです。これはもう敵さんはDNAをいじられた改造兵士(つーかアンドロイドにしか見えん)のだから納得もいくところ。 AI というか、ゲームデザインも心得てあって、背後をとられても敵は「しまった」的な感じで射撃で応戦してきます。パシフィカ兵の性能なら接近して主人公をぶん殴って鉛玉をどっさり撃ち込めば2秒くらいでこっちをゲームオーバーにできるんですがそんなことはしません。このへんが逆にシューターの不評を買ったのかもしれない。

 あと、敵が手榴弾をかなり積極的に使ってくるのが特徴。敵が使用するテラン・デフォンメーションは手榴弾しかなく、これが戦場をカオス化してなかなか面白い。考えてみると、前述のとおり、敵はテラン・デフォンメーションで変化した地形を利用して攻めてこないが、射撃の遮蔽は検出しているため、自分に移動可能なポイントに射線がなかったり、すでに味方が射撃ポイントにいて、射線が確保できない場合に手榴弾を使ってくるのではないかと思われる。そのへんが敵が最近のゲームでは珍しいく手榴弾をぽんぽん投げてくる理由なんじゃないかと。

テラン・デフォンメーション

 で、このゲームの根幹をなす、そのテラン・デフォンメーション・システム。ポピュラスのように地形を上下させることができるシステムなんですが。

 体験版では、指定されたところにエントレンチャーを撃ち込むという「やらされてる感」がありました。しかし体験版はあくまでチュートリアルステージであり、製品版では第1章から指定が表示されません。土さえあれば任意の位置で地形の上げ下げができ、一応これを使ってパズル的に地形を突破するというレベルデザインになってます。たとえばエネルギーシールドの内側にある巨大砲台の下に潜り込んで地形を隆起させて砲台を押し上げて、エネルギーシールドに接触させて破壊とか。これが面白いと思った人は買いです。

 あと知人から「オンラインがカオスなことになって面白い」と言ってましたが、敵もテラン・デフォンメーションを使ってきますので、敵と味方が相対する空間でどっかんどっかん地形が変わって、オフラインも十分カオスなことになってます。

 基本的なところとして、敵の軍団と自分の間の地形を隆起させて障壁を作り、それでも敵の弾を遮蔽できなければ、さらに自分の真下を沈降させると塹壕を作ることができます。また、突撃してくる敵を浮かせて、後ろにいる敵の支援火線を断って、山の上に立った敵を撃ちまくるとか。

 ゴンドラに隠れているときに下から撃ってくる敵がやかましければ、一瞬ゴンドラから身を乗り出してスパイク(柱を隆起させる)を投げ込んで……

 隆起した柱の上に乗ってしまった敵を銃撃でフルボッコ。こんな感じで遊べます。逃げない AI が素晴らしい。

 また、地形の隆起と沈降のアニメーションはすばらしく、銃撃やアンジュレーションに対するヒットと、Havokに対するヒットが変化します。また、ヒットコリジョンの変化以上のインパルスをきっちりかけてます。

 そのおかげで、コンテナの下にテラン・デフォンメーションを撃ち込んだときなどは、「物理的には正しくない。でもゲーム的には気持ちい」反応がしっかりあります(下から地形がノソノソとせり出した程度ではコンテナははじき飛ばない。常套の調整とはいえ、しっかり作ってある)。

 おそらく土が露出しているところは元から一定のメッシュで作るように指示されていて、そこの頂点をいじってるくさい。ともかく土があるところはすべて操作できます。テラン・デフォンメーションを使った地形は元の属性に関わらず、表面マテリアルは一定になる。また、このゲームではエントランチャーに関しては、隆起は青、沈降は赤というイメージカラーがあり、それは装備品のマーカーから、チュートリアルの指示表示、テラン・デフォンメーションで変化した地形の色まで統一されている。

ローカライズ

 体験版のときから、「なんでこんなところで切るの!?」という感じだった字幕。この字幕以外のローカライズは悪くないんですが、なにしろ目につきます。

 このシーンだと、
「センサーの反応では、そのエリアにコンベアのパワー・ケーブルがある」
「ようだ。パワー・ケーブルを接続しなおせ」
 という感じ。スクロール字幕ならともかく普通の字幕でこれをやりますか。

 特別にここだけピックアップしたというわけではなく、基本的に2回以上にわけて表示される字幕は、システム的に適当な位置=人間にとっては最悪の位置で区切られます。また、多少誤訳もあるのかコンテキストが繋がっていない会話も……

 こんな感じなので、別の意味で字幕から目を離すことができず、戦闘も激化しているとテラン・デフォンメーションに関する指示を見逃すこともありますが、基本的に地形パズルはそんなに難しくないし、次の目的地にはマーカーが張ってあるのでプレイの支障はないです。

つまり

 ちょこっと書く気だったのに、なんでこんな長文になってるの…… orz

サイトコンフィグを用意しない場合、XCはどういう状態になるのか

 v1.0 "unleashed" コアでは、メインシーケンスとしてタスクシステム、描画シーケンスも共通のものが用意されたため、 index.php に記述する内容は非常に短くなった。ドキュメントでは、最低2ステップで大丈夫という旨を書いている。

<?php
require_once "../core/XCube_Root.class.php";

$root =& XCube_Root::getSingleton();
$root->loadConfig("./config/site_default.ini.php");

$root->execute();

?>

 XOOPS Cube コアは、自身も複数モジュールから構成されているため、構成パーツをコンフィグファイルから読み取って構成を決定する。なぜコンフィグファイルを使うかというと、ハイエンドユーザーが手元でお好みの構成を変更することを想定しているからだ。これも MOD 要素のひとつであって、DI をやりたいわけではない。
(仮に DI をやる場合はこの設定ファイルとは別物になると思う。技術者が使うファイルと、ユーザーが使うファイルは分けたい)

 で、仮に設定ファイルを用意せず、

<?php
require_once "../core/XCube_Root.class.php";

XCube_Root::getSingleton()->execute();

?>

 とだけ書いた場合、いまの開発中の unleashed はどういう動作をするか。結論から言うと正常に動作して終了するが、当然、画面になにも吐き出さない。

  • コントローラは何も使わない。 unleashed ではコントローラクラスを使わないのでこれはよいとして……
  • デリゲートマネージャは XCube_DelegateManager が採用される。 Package_Legacy などはこれを使用している。
  • ロールマネージャは XCube_RoleManager が採用される。 Package_Legacy と同等。
  • コンテキストは XCube_HttpContext が採用される。このクラスは廃止されるかもしれない。
  • リクエストは XCube_HttpRequest が採用される。このクラスは廃止されるかもしれない。
  • テキストフィルタはなにも登録されない。
  • セッションは XCube_Session が採用される。
  • ランゲージマネージャは XCube_LanguageManager が採用される。
  • サービスマネージャは XCube_ServiceManager が採用される。ここは現状構成変更ができない。
  • レンダーシステムは登録されない。


 設定ファイルなしでもプログラムから同等の指定ができるように作るべきかもしれない。それにしてもなぜサービスマネージャーだけ指定できないように作ってあるんだろう*1。ちなみに、 Package_Legacy で使用されている 0.9 コアは、設定ファイルから指定できる構成は unleashed ほど多くはない。

 unleashed のタスクシステムは、ルートタスクさえ決まればそれだけでアプリケーションとしての動作が可能になる。この部分をいまコントローラクラスを使用しているが、タスクシステムを使用しないケースも考えなくてはいけないので、ルートタスクの設定は別途持つようにしようと思う。

*1:ただの抜けでした orz 。minahito_sandbox 上では修正。