Yo.'s Game Development Diary
ゲーム開発日誌を公開します。ご意見、ご感想などはこちらのBBSもしくはyo@namikaze.orgまで。
開発以外の日々の雑記帳はこちらへ。切り分けが難しいんですが。
|diary index |<-2000年09月分 |2000年11月分->
Windows2000のものをインストールしました。いい感じです。以前のバージョンでは TNT2 Ultra では色々問題(例えば512x384x16でカラーキーが使えない問題、テクスチャ無しポリゴンの色がレンダリングの状況によって色変化するとか(^^;)が出ていたのですが、 すっかり修正されているみたいです。Windows2000でイディナロークを動かしたい人はインストールしてからムービーを違うフォルダに移動後に実行。(かといって動作の保証はしませんが ;-)
相変わらず悪いです。確実に体力落ちてますね。
デカい wav ファイルを垂れ流しにする技術ですね。音源モジュールを持っていない人でも再生可能ですし、GM/GSの単一音源に縛られず、生音源も使えるという利点と、そして頒布サイズが肥大化する可能性があるという欠点があります。利点を考えると今後の Namikaze Project のゲームの BGM は wav のストリーミング再生する方向性にあります。いまのところ。mp3 再生は考慮中なのですが、ACM でなんとかなるのかいな。
ちょっとした問題が発生しました。現象としては、ストリーミングと通常の static な再生が共存出来ないというものです。 具体的には、IDirectSoundNotify でして、ある1つのセカンダリバッファから QueryInterface で IDirectSoundNotify を取得して、 SetNotificationPositions したのですが、全く無関係の異なるセカンダリバッファの再生終了時においても設定したイベントが 発生してしまう怪現象ために起こります。
Windows2000とWindows98の挙動の違いの問題
Windows98での挙動を調べてみました。案の定、Notify は意図したように動作していました。 恐らくドライバのせいだと思うのですが、DirectSound の挙動が Windows2000とWindows98では異なるようです。
今後 Windows2000 が製作環境なので動かないとマズいです。対策案ははじめから見えていて、これだけは避けたかったのですが、SetNotificationPositions で位置設定してイベント発生を待つのではなく、GetCurrentPosition して得た位置を元にして逐次読み込みを行うというものです。SetNotificationPositions 使っててもそうですけれど、再生は別スレッドにしないと使い物になりません。また、いくらなんでも GetCurrentPosition 連発はマズいと思われますので、Sleep で程よく寝るようにしています。Windows2000でも動くコードになったものの、力技なので納得いかないのは確かです。
他に良い案ありませんかね。