English version
is click here.
こんにちは。PCエンジンエミュレータ「Ootake」を製作しています中村です。
"Windows Vista"は、特にゲーマーからは避けられていたOSですが、
新しいOS"Windows 7"についても、このままでは同様の結果になってしまいそうです。
"Vista"がゲーマーから避けられていた理由のひとつとして、ベンチマークスコアが
"XP"と比べて数パーセント落ちてしまうゲームが多かったことが挙げられますが、
これは誤差程度の場合が多く、実際にゲームをする際には大きな問題にはなりません。
最も最悪だった問題は、"Vista"は3フレームまで表示遅延を許す仕様になってしまって
いたことです。"XP"と比べて、操作してからの反応が3フレームも遅れてしまうのです。
※追記です。"XP"も最大3フレームの遅延が許されていますが、"Vista/Win7"ではAero処理
と組み合わさることによって、常に最大(3フレーム)の遅延状態になってしまうようです。
アクションゲームが好きな方なら、この違和感(3フレーム遅延)に気が付く方が多いと思います。
(違和感が"遅延"によるものだということは、わからない方も多いかもしれません)
この"3フレーム遅延"は、Vista専用(または個別対応)ソフトとして開発することで、
0にする(Aeroのオフも必要)ことも可能です。(ただし、デフォルトが3なので、わざわざ
Aeroをオフ+0にしてくれるゲーム開発者の方は少ないかもしれません)
その一方で、既存のXP用ソフト(Direct3D対応のもの)や、ほとんどのXP/Vista用ソフトを、
Vista上で動作させると必ず"3フレームの遅延"が起こってしまいます。
アクションゲームでは、主人公がXPと比べてもっさり動きますし、RPGやネットゲームなどでも、
主人公の方向転換時の感覚は、XPで(少遅延に)慣れた身体には、
重く感じてしまう方が多いでしょう。
これではいくら速いパソコンを使っても、Vistaが「重い重い」言われてしまうのは当然です。
そして、期待の"Windows7"ですが、これもまた"Vista"と全く同様なのです。
アクションゲームには全く向いていないOSと言えます。
(※デスクトップ操作では、HDDへのアクセス向上等によって、XPよりも動き出しが早い場面
も多く、ゲーム以外のところでは向上している部分もあります)
"3フレームの遅延"は、かなり古いパソコンで動画等を鑑賞する場合には有効ですが、
それ以外は害(操作してからの反応・操作感の悪さ)が強すぎます。
いやらしい利点としては、ベンチマークスコアが向上する(実際の操作感は悪くなる)ことが
挙げられます。
多くの人はベンチマークの数値だけを見て性能を判断してしまうので、ビデオカードメーカーの
ドライバもデフォルトが3フレーム遅延を許す設定になっていると思われます。
そして、XPにベンチで追いつくためには、マイクロソフトとしてもこの遅延設定が必要だったの
かもしれません。
さらに、Win7とVistaでは、"Aero(エアロ)"と呼ばれるデスクトップ(透明化処理などが出来る。
デフォルト)が利用可能で、それを利用すると、更なる表示遅延が起こってしまうようです。
ですので、XPと同様の表示反応にするためには、2つの設定が必要になります。
1."Windows Aero"を無効にする(ショートカットアイコンでゲーム毎にも設定可能)
2.ビデオカードドライバの設定(コントロールパネル)で"レンダリング前最大フレーム数"
を"0"に設定する
この2つの設定をすることで、既存のXP用ソフトも、ほとんどのゲームが、
XPと変わらないプレイ感で遊べるようになると思います。
こうすることで、Win7もVistaも、それほど悪くないOSに感じられるかもしれません。
※"WindowsXP"の場合も、よほど古いパソコンでなければ、2の設定を推奨します。
設定方法の詳細
1."Windows
Aero"を無効にする(ショートカットアイコンでゲーム毎にも設定可能)
・まず、ゲームのショートアイコン(デスクトップにない場合はスタートボタンから"すべてのプログラム"をたどって探す)を右クリックして「プロパティ」を選択します。
・プロパティウィンドウ上の「互換性」タブをクリックします。 出てきたページの「デスクトップコンポジションを無効にする」にチェックを入れます。
・「OK」 ボタンを押して完了します。
※フルスクリーンのゲームでも、Aeroを無効にしないと遅延が出るようです。
ゲーム開発者の方へ(反応が重要なゲームのために)
※DwmEnableComposition()関数で、ソフト側からAeroを無効に出来ます。ゲーム終了時には自動で戻るので、アクション系のゲームはAero無効での起動がデフォルトのほうが、ゲームが過小評価されてしまうことがなさそうです。
個人的には、アクション性のないRPGだったとしても、フィールド移動時のレスポンスは大事に思います。おそらくレスポンスがいい状態でプレイしたほうが、ストレスの溜りが少ないので長い間飽きずに楽しめる率が高そうな気がします。
|
2.ビデオカードドライバの設定(コントロールパネル)で"レンダリング前最大フレーム数"を"0"に設定する
※"WindowsXP"の場合も、よほど古いパソコンでなければ、この設定を推奨します。
※GeForceシリーズでの設定例です。AMD(ATI)やその他のチップでは、試していませんが、コントロールパネルやフリーソフトで同様な設定が出来るかもしれません。AMD(ATI)のRADEONシリーズでは、「フリップキューサイズ」が「レンダリング前最大フレーム数」に当たると思います。
・まず、デスクトップ上の何もないところで右クリックし、「NVIDIAコントロールパネル」を選択します。そして、上から3つ目辺りにある、「3D設定の管理」をクリックします。
・出てきた「グローバル設定ページ」の「レンダリング前最大フレーム数」を「0」に設定します。
(※最近のドライバで「0」が無い場合は「1」に設定。 2013.5.24追記)
・右下の「適用」 ボタンを押して完了します。
※この設定をすることで、各種ゲーム系ベンチマークソフトの数値は下がります。ただし、実際のゲームの操作感(スコア&楽しさ)は上がるかと思います。
(普通の動画がスムーズに表示されないぐらいの古いパソコンでは、デフォルトの設定のほうが良い場合もあります。しかし、VistaやWin7が動くパソコン性能ならば、この「0」固定の設定がベストに思います)
ゲーム開発者の方へ(反応が重要なゲームのために)
※拙作のPCエンジンエミュレータ"Ootake"では、この設定を行わない場合でも、ソフト側からこの遅延を0にして動かすようにしています。Vista/Win7専用(またはXP兼用)ゲームでは、ゲーム側からこの遅延設定を0にすることが可能です。ゲーム開発をしている方は、是非、ゲーム側からこの設定をして開発なさってください。(Direct3D9ExのSetMaximumFrameLatency関数で0に設定)
また、ジョイパッド(DirectInput)の遅延問題(こちらのほうがより大きな遅延)もありますので、DirectInputを使う場合は、古いライブラリの使用("Ootake”のReadme.txtをご覧ください)をお奨めします。
-- 古い"dinput.lib"の利用を推奨します("Ootake"のReadme.txtより抜粋)
---------
・添付のソースファイルの他に、「DirectX 9.0 SDK」のライブラリが必要です。最新
版の「DirectX 9.0 SDK」に加えて、古いバージョンの中にだけ存在するファイル
「dinput.lib」(DirectX 7以前互換用)も必要となりますので、下記のマイクロソフト
のサイトからダウンロードして、「dinput.lib」をパスの通ったフォルダへコピーして
ください。
※「DirectX 9.0 SDK」の古いバージョン(「dinput.lib」が含まれているもの)は、現
在でも、下記のマイクロソフトのホームページからダウンロードできます。
DirectX 9.0 SDK Update - (October 2004)
http://www.microsoft.com/downloads/details.aspx?FamilyID=b7bc31fa-2df1-44fd-95a4-c2555446aed4&DisplayLang=en
"December 2004"以降のdinput.lib(ファイルサイズ157KB)は、DirectX8以降の
dinput8.libほどではないですが、わずかに遅延が感じられます。最も入力反応の速い
"October 2004"以前のdinput.lib(ファイルサイズ17.3KB)の利用を強く推奨します。
----------------------------------------------------------------------
操作(&表示)遅延の問題は、”ゲームを売る,商品を売るだけの方”は、全く気にしないことなのかもしれませんが、”ゲームを好きで作っている方”や”ゲームを楽しむ側(マニアでない方も)”にとっては、実はもの凄く大きな問題だと感じています。
|
2009.11.09 Written by Kitao Nakamura.
「パソコン環境による遅延」の解消方法についても記載しました。
「パソコン環境による遅延」の解消方法
こちらのページをご覧ください。
"Ootake" Homepage へ 戻る
|