2007年11月アーカイブ
DX9用のアス比固定拡大ツールに、バイキュービックシェーダを軽量化したものを追加しました。
アスペクト比を固定したまま画面を拡大するツール for DirectX9(仮)
通常のバイキュービック補間は、4*4の16点から補間していますが、角の4点の影響度は僅か数%程度なので、これらを省略して12点補間としました。
テクスチャ参照回数を25%削減したので、だいぶ軽くなったと思います。
DirectX9用のアス比固定拡大ツールを更新しました。
画面の拡大にピクセルシェーダが使えるようになりました。また、これをもって正式公開とします。
アスペクト比を固定したまま画面を拡大するツール for DirectX9(仮)
バイキュービック補間のシェーダも用意してあります。
バイキュービック補間は思っていたよりも高画質で、これなら固定画素のモニタでも良さそうです。ただし、非常に重い処理で、GeForce7600GSではSXGA解像度が限界です。テクスチャ参照回数がかなり多いので、高解像度での使用はメモリクロックの高いビデオカードが必要です。
アス比固定拡大ツールではC++のソースからDirect3DインターフェースのVtblにアクセスするために#define CINTERFACEをしているのですが、これを定義しているとD3DXのヘッダでエラーが出るようです。
D3DXはインライン関数も多く含まれていますが、該当箇所を見てみると__cplusplusしか考慮されておらず、CINTERFACEが定義されているとメソッドの呼び出しでコンパイルエラーが発生します。
CINTERFACE d3dx9でググっても6件しかヒットしないようなマニアックな仕様では、MSの人達に忘れられていても仕方ないかな?3年前からCINTERFACEを使っている私も、今日まで気付きませんでしたし。
SDKのヘッダに手を加えるわけにもいかないし、VisualC++では#undef __cplusplusは無視されてしまうので、D3DXを使用する部分だけソースを分けないと駄目っぽいです。
テレビゲームをしていて、ボスキャラとの対決は一番面白い部分だと思います。ボスキャラは強力で多彩な攻撃をしてきて、倒すのが非常に困難であるのが一般的であり、攻撃は単調ですぐに死んでしまう雑魚キャラとは一線を画しています。
しかし残念なことに、多彩な攻撃というものを理解していない人が作ったゲームも多い。
真に多彩な攻撃というのは、敵の攻撃の種類が多いのではなく、その攻撃に対してこちらが取るべき回避行動の多さが重要です。
敵が赤い弾と青い弾と緑の弾を撃ってくるが全て画面下にいれば避けられるのでは、それらは3種類の攻撃とは言えず、1種類の攻撃と何も変わりません。全く同じ攻撃で、赤いときは燃えて、黄色いときは感電して、青いときは凍るなんてゲームもありますが、そんなのはちっとも面白くないです。
多彩な攻撃の見本として、カプコンのD&D Shadow over the Mystaraのレッドドラゴンの攻撃とその回避方法を挙げると
・爪でひっかく 手と反対方向にスライディングで逃げる or 画面下でドラゴンの顔付近にいる
・噛み付き 画面下でしゃがむ or 噛み付く直前にスライディングで逃げる
・落石 画面上に逃げる or ドラゴンが飛び上がったら1画面以上横に逃げる
・火柱 火柱のこない位置まで大きく逃げる or フレイムシールドでガードする or 火柱の隙間を抜ける
・縦ブレス 直前にドラゴンが息を吸うので、それに逆らって逃げる
・横ブレス 直前にドラゴンが息を吸うので、逆らわずに首の下に潜り込む
・全体ブレス 背景の岩の陰に隠れる
どの攻撃も見てから完全に回避する方法がありますが、全て回避方法が違います。そしてこれらの攻撃が連続で来たり、場合によっては2種類の攻撃が同時に来ます。
特に秀逸なのが縦ブレスと横ブレスで、どちらもドラゴンが掃除機のように息を吸うことで口元に吸い寄せられますが、片方はそれに逆らって逃げなければいけず、もう片方は逆らわずに突っ込む必要があります。慣れないうちは、どちらも逆らって逃げたくなるのでつい食らってしまいます。(即死攻撃なので食らうとゲームオーバー)

