プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:3Dテストプログラム開発
森のくまさんラストシーン
森のくまさんラストシーン
3Dテストプログラムのデモは、BGMとアニメーションの同期が1秒でもズレると台無しになる。



◎移行完了しました

前回の記事で、コンテントパイプライン系に問題が発生したと記述しましたが、解決しました。

それらのプログラムは別のプロジェクトに独立していたので、そのプロジェクトもXNA3.0に移行したら、あっさり動きました。

結局、ソースは何もいじらずに、ウィザードで変換してDLLを上書きしただけで移行できました。XNA先駆者達の報告では、移行に苦心した人の方が多そうだったので意外ですね。



◎タイミングがずれる問題

移行したプログラムを動かしてみると、BGMとアニメーションのタイミングがずれるのが気になりました。実行する度にズレの程度が変わるのですが、酷い時は2~3秒ずれます。

最初はXNA3.0の問題かと思いましたが、XNA2.0でも同じ現象が再現しました。そこでいろいろ試してみたのですが、実行する度にズレたりズレなかったり、ズレの幅もまちまちなので、同じテストを何度も行うはめになりました。

・XNA2.0の体操服化前のバージョンでも再現する
 →体操服化が原因ではない

・EXEを実行しても再現する
 →デバッグモードが原因ではない

・サブマシンでは再現しない
 →メインマシンの環境の問題

・ネットワーク回線切断時に再現率が高い
 →たまたま?

・全画面表示時に再現率が高い
 →窓枠表示(非全画面表示)ではほぼ再現しない



◎原因判明

CPU使用率を確認したら、窓枠表示時は15~20%ぐらいで、全画面表示時はほぼ100%でした。結論としては「全画面表示時に処理落ちしてタイミングがずれる」ということですね。

尚、、メインマシンのCPUはCore2Duo-2.6GHzで、XNAプログラムはその片方のCPUで動作します。もう片方があるのでPC全体は余力があり、CGも綺麗で滑らかに表示されているので、処理落ちしてるとは気付きませんでした。

考えてみれば、表示処理がオーバーしてるのにフレームを落とさないからタイミングがずれるんでしょうね。ドライバ設定を調整すれば直るかもしれませんが…とりあえず原因判明したからいいや。


ちなみに、サブマシンの方はPentium4-1.6GHzですが、グラフィックボードGeForce5200FXを増設してます。古くて安いボードですが、結構役に立ってたんですね。

メインマシンはグラボ増設してません。XNAがオンボードで動くだけ儲けものですが、全画面表示がこんなにCPU負荷かかるとは知りませんでした。



◎気になること

開発時はここまで気にならなかったんだけど、以前からこんなにズレてたかなぁ?う~む…。

それと、起動時のデフォルトは全画面表示やめて窓枠表示にした方が良かったかなぁ?でもXNAゲームプレイヤーの大半はグラボ増設してそうだし…。

あと、タイミングを合わせる時間として、ゲーム時間(GameTime)はやめた方がいいのかなぁ?でも実時間から取得すると、途中の処理が飛ばされて変な現象やバグが出そうなんだよね…。

例:XNAプログラムは、タイトルバーを押すとゲーム時間がストップします。但し、BGMは非同期に演奏されます。今はゲーム時間を取得してるので、BGMとアニメのタイミングはズレますが、バグは発生しません(多分)。

ここを押すと時間が止まる!



◎次回予告

変なところで時間を喰ってしまいましたが、原因は判明したので良しとしましょう。

次回からXNA3.0環境でプログラム開発をスタートします。
まずはマップですかね~。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。