2010年11月11日木曜日

読んだ:ゲームデザイン脳 ―桝田省治の発想とワザ―

なるほどゲームデザイナってこういう事考えて仕事してんのねと素直にするする読めた。

  • 思いついたネタの自分なりに推したい点を短いフレーズにして、タイプが違う複数人に面白そうか聞いてみる
  • ゲームはテーマをシナリオで語るのではなく、システムやバランスをコントロールすることでプレイヤーの体験を通して伝えることも出来る
  • 大義名分でプレイヤーの枷を外す
  • プレイのモチベーションが落ちるほどウソくさくなければ、リアリティなどさして重要ではない
  • 仕様を書く段階でバランス調整の方針や起きそうなトラブルへの対処法も考えておく
  • 問題が起きた時はリカバリーの達成条件をあせらず見極める
  • 最終的にクリア出来るように調整されていても、途中での失敗や敗北にプレイヤーが耐えられない場合もある
  • 普通の人が目配り出来る不確定要素はせいぜい3つまで
  • 何をどう妥協してもかまわないが、ゲームの根幹になる面白さに関わる点を安易に妥協すべきではない
  • ゲームはプレイヤーにジレンマを提示し、どうするのか問いかける
  • 戦闘は戦力的にはプレイヤーがやや有利だが、ミスや事故が2つ重なるか3つ続けば敗北するぐらいが理想的

2010年11月9日火曜日

ゲーム感想:Medal of Honor (2010)

トレーラーを観たら好みっぽかったので発売してすぐにxbox360のアジア版買ったものの、シングルやってほったらかしという状態のMoH。BFBC2とMW2のいいとこ取りを目指してるだろうと見なされていたので、両方と差別化しなければいけないという難しい立場のゲームだったように思う。その観点で言うとシングルプレイはおおむね成功でマルチプレイは失敗だ。

シングルプレイの演出・ストーリーは結構ストイックに戦争映画してて個人的には結構好きな佳作という印象。現場を知らない上の指示による無謀な作戦の結果、取り残された仲間を助けるために過酷なミッションに挑むことになるBHD風味(合間のプリレンダムービーもどことなくBHD風味の色使い)の王道ストーリーが、控えめながらリアリティにこだわった演出で語られる。ただ化学調味料てんこ盛りといった趣のMW2の後だとちょっと薄味に感じるかもしれない。

シングルプレイは前半は集落とか空軍基地跡等でのミッション、後半はアパッチのガナーやるミッション除くとほぼ山岳戦オンリーという構成で、ボリュームはヘタレの自分がMediumでやって5時間弱ぐらい。スクリプトがゴリゴリの進行でマップの分岐も殆ど無いが、ほぼ山だけど微妙に変化に富んだ地形と攻撃機の誘導や狙撃にアパッチのガナー等多彩なミッションがあるためそれほど飽きない。少し飽きる。全体としては空気感がかなり良くておすすめな出来。ただっぴろいマップで好き勝手にルート探して目的達成してくような、BFBCやFarCryみたいな自由度高いミッションもあったらよかったのになーとちょっと思った。

難易度はそんなに高くなく、Mediumだと4~5発程度同時に貰うか至近距離で爆発物食らうと死ぬぐらいの耐久力で、MW2ノーマルよりほんのちょっと柔いかなという程度。敵は結構ちゃんと遮蔽物に隠れながら攻撃してくるので、はみ出した頭や手足撃つなり爆発物当てるなりというイメージになる。銃のリコイルがかなり小さく遠くの敵にもフルオートでそこそこ当たるようになっている。スライディングで遮蔽物を変えながら移動して敵の側面取って倒すのが楽しい。敵はプレイヤー狙い始めてから2斉射目ぐらいからは結構な精度で当ててくるので、ちょっと強引に動くとすぐ死ぬ。接敵距離は0~200m程度で、後半は山岳戦メインなので遠目になることも多い。

グラフィックが相当良いし、最近珍しくリーンアクションがあるようなので、ゲーム用にPC保守してるならPC版がおすすめかもしれない。音もかなりよくてドスが効いた銃声が楽しめる。ゴア表現はM82でヘッドショットが決まると頭が潰れる話ばかりされてるけど、個人的には銃創から血がぴゅーっと出ながら倒れる表現(プライベート・ライアンのスナイパー倒したちょっと後に、倒れた角材が壁ぶっ壊しちゃっての遭遇戦で座った姿勢で死んだドイツ兵を後ろに倒したときみたいなの)があるのが珍しいなと思った。

マルチプレイはルールがMW風味のBFBC2以外の何者でもなかった。シングルプレイはちゃんとBFBC2と差別化出来立てただけに、マルチプレイの操作感はほぼBFBC2のままなのがかなり惜しい。スライディングも無いし。それがつまらないかというとまあ決してつまらなくはないけど、既視感がすごくてあんまりやらないままになっている。定点野郎キルする手段が減った代わりに裏取りしやすくなったBFBC2という雰囲気。

2010年11月8日月曜日

UnityでのAI実装:任意のオブジェクトの方向を向かせる

UnityではTransform.LookAt()があるので、これに向かせたい相手のTransformを渡すと実現できる。Quaternion.LookRotation()を使ってもほぼ同じことが出来る。

以下Transform.LookAtの公式サンプルとほぼ同じ内容。targetに任意のオブジェクトを割り当てるとその方向を向くようになる。

public var target : Transform;

function Update () {
transform.LookAt(target);
}

ただし、この方法では実行した時点で回転が完了する、つまり回転速度が無限になってしまうのが場合によっては問題となる。一定速度以上では旋回しないようにするにはどうするか。

これはQuaternion.Slerp()に面倒事はお任せで実現可能。ただドキュメントが微妙でspeedに何入れるとどれぐらいに制限できるのかというところが分からない。

var speed = 0.5;
public var target : Transform;

function Update () {
var relativePos = target.position - transform.position;
var rotation = Quaternion.LookRotation(relativePos);
transform.rotation =
Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * speed);
}