2008年6月26日木曜日

Battlefield Bad Company

フライングゲッツしました。
しかし、たしか Halo3 か何かで発売日前のゲーム起動を
察知すると Live! のアカウントがバンされたとか言う話を
どっかで見たことあるので遊ぶのは躊躇してしまう。

それにしても洋ゲーは戦争ものゲームばっかりですな。
あまりにも神経質に「暴力ゲームは諸悪の根源!」とばかり
言うのは思考停止だとは思いますが、ゲームという媒体を
考えるとき、もっと幅があってもいいと思うのです。

いやゲームプレイとしての FPS は大変楽しいのですが。
もっとジャンル判定不能なゲームがじゃんじゃん出ないと
尻すぼみになってしまいそうで恐怖を感じます。

* 判定不能っても「世界を救う RPG」とかじゃないよ

2008年6月7日土曜日

Gamefest 資料のメモ

DirectX SDK の新しいのが出ていたので落としに行ったら
Developer Center に Gamefest のプレゼン資料があったので
気になる部分をメモしておく。

気になるところを抜き出しただけ AND 誤りもあるかも…
なので直接資料を観るのがベター。
[ Sublime C++ For Games ]

-----------------------------------------------

o VC 2005 は可変長引数マクロが使用可 (知らんかった)

o RAIIを使え(例外を利用するかどうかによる)
  * RAII = リソース獲得は初期化である [参考リンク]

o 例外の性能ペナルティーは 1-5%
    o コンソールでは無効にすることを考える
    o デバッグモードだけで利用することを考える

o unordered_set/map は set/map より早い
    o 最悪のケースにおいてだけ遅い

o node-based なコンテナ(list,map,set,multi_xx)はやめよう
    o unordered_xx の方がマシ

o 関数の引数に、コンテナでなくてイタレータをとる
o インデックスの代わりにイタレータ
o shared_ptr の利用を考える

o ポインタのエイリアシング
void Add( float* dst, const float* p )
  for ( int i=0; i < n; ++i ) dst = *p + 1.0;
o 上記のような関数はコンパイラの最適化を阻害する
o "p" が "dst" を指すかも → ループ毎にリロード → :-(

o 仮想関数は便利だが、コストはかかる(360では特に)
    o いかついコード内では使わない
    o プラットフォームの区別に利用しない

o アロケーションはコスト高
o 経験則: ゲームループ内でアロケート禁止
o カスタムアロケータ導入を考えてみる

o ベクトルを struct vec { float x,y,z,w; }; ってするのはダメ
o ネイティブな型を使え
    o Xbox 360 : __vector4 / XMVECTOR
    o Windows : __m128 (D3DVECTOR をコアなコードに使うな)