日記(1052)

<前 次>

パネルγの実行速度一定化について

さて、処理落ちが起こるとゲームのテンポが変わってしまい、ランキングを開催したいと思っていることもあって、公正さに欠けるのは致命的だと思うので、最も時間のかかると思われる描画処理について考えていました。

1.普通に描画する。
とにかく簡単。
でもマシンの性能によっては普通に処理落ちします。
2.遅れていたらフレームスキップする。
例えば2フレームの時間で描画していたら、ゲーム処理→描画→ゲーム処理→フレームスキップ→ゲーム処理、となって、2フレームの時間が経過した跡に瞬時に2フレーム分の処理が行われ、これはこれで公正さが失われます。
3.描画命令をキューに入れて後でまとめて実行する。
「後で実行」を別スレッドで管理すれば描画でもたついている間にも裏ではゲームが普通のスピードで進んでいるため実質的な公正さは保たれるはずです。
ただし、「キューに入れる」とという作業が余計に加わるので全体的な速度そのものはかえって遅くなりますし、メモリ使用量もキューの分だけ増えます。
とりあえず2は前に試してえらい目にあったので却下ということで、1か3になるのですが、とりあえず今のところは1の方式を実装して、様子を見てから3に切り替えるかどうかを判断しようと思っています。

バックバッファ

プライマリサーフェスを作ってました。
フルスクリーンとウィンドウモードで扱いが違うから少し厄介です。
もしかしたらパネルγ、かわいい女の子は別として、何か別のキャラクターが出てくるかもしれません。
今のところはまだ可能性の段階ですが。

さらにBGM

変更。
空のクラス→クラスそのものを作らない。
そうでもしないと純粋仮想クラスのメンバとやらがまずいんじゃないかなと思って。
で、例のDirectDraw、早速実装してみました。
さて、ウィンドウモードとフルスクリーンモードでは画面の反映の仕方が違うそうだけど、どうなるか。
なんとなくBGMのパターンを増やしてみたり。
神秘的かもしれないイメージで作ってみたけど、だけど神秘のカケラもないこのゲーム、どうなることやら。
低い点数のときは暗い曲調なのです。

しかもMazeCube

練習用としてはMazeCubeを作ることにしました。
MazeSquareの3D版っぽい位置付けだけどこっちは完成したら一般公開します。
とはいえルールすら決まってなくて、完成するかどうかすら怪しいものですが…
ギヤバネくんが歩き回るゲームになるような気がしないでもない。
DirectX AppWizard使用。

で、めでたく本番用になったパネルγ、DirectDrawを使えるようにするため、Direct3DとDirectDrawを切り替えやすいようにしていました。
Direct3D使用時はDirectDrawクラスが空のクラスになり、DirectDraw使用時にはDirect3Dが空のクラスになって使わないことになります。
どちらでも同じ感覚で使えるように基底クラスとしてCDrawBaseを作って、その派生クラスとしてCDirectDrawとCDirect3Dを作っています。

そしてDirectX7

「パネルγ」、DirectX8を使うということで何も考えずDirectXGraphicsを使っていたのですが、今更言うまでもなくこのゲームはバリバリの2Dゲーム。
Direct3Dが得意とする回転拡大縮小やらアルファブレンディングやら、ましてや頂点シェーダやらピクセルシェーダなんかとはまったく無縁のシロモノ。
アルファブレンディングだけはパネルが消えるエフェクトに使えそうですが、使うのはどちらかというとひたすら矩形転送というDirectDrawが大得意とする分野がメインなのでそっち使ったほうがよさそうな気がします。
ついでに言うと、効果音はMEを使う可能性があるので、DirectXAudioのDirectSoundとDirectMusicとの統合があんまり意味を成さず、DirextX6.1のDirectMusicで充分そうな気もして、そうなるとグラフィック7、サウンド6.1となり、DirectX8を使う意義がなくなったよう感じます。
さて、問題はコンパイルが通るかどうか…

質量

日記はブログじゃないのです。
ブログは有用な情報こそが命、つまらないことなら更新せずに記事ひとつあたりの内容の密度を高めることが重要でしょうよ。
でも日記は毎日つけることそれ自体が目的、内容云々より一日一回書く!
その上で不要と思われる情報はあとから消していけばよいのです。
「質と量」のブログに対して「質より量」のWeb日記なのです。
ということをHP作成論に書こうと思ったり思わなかったり。

天皇誕生日だったのね…

はてなやめました。

んでもって、今日はドラクエ7とスマブラをやってました。

<前 次>