なんでプリウスこんなに重いん?

2011年08月29日
0
0
PRIUS ONLINE プリウス資料
プリウスって、画面綺麗なんだけど、同じくらい綺麗な他ゲームにくらべても、重いし落ちやすいですね。

なんでこんなに重いんだろう、という原因を分析して、対処方法の指針となればいいな、という記事です。


プリウスフォルダのファイルを見てみる
プリウスのインストールフォルダの中にあるファイルのうち、気になる部分をぴーくあっぷ!

vcomp.dll
VisualC++用のマルチスレッドライブラリ。
コレがあると言うことは、プリウスオンラインがマルチスレッド向けに作られてる証拠。
マルチスレッド向けCPU(2コア以上、あるいはハイパースレッディング対応など)で、物理コア数やスレッド本数次第で性能が上がると言うこと。

ただし、並列処理は、キチンとしたお作法にしたがってないと、割とメモリリークやバグを引き起こしやすいです。
そのあたり、プリウスはぁゃιぃ

Licenses.txt
プリウスのプログラムが利用してる、オープンソースライブラリのライセンス文書がまとめて書かれてます。
・OGG:プリウスの音源がOGG形式の音声ファイルであることを意味する
・Free Type 2:フォント関係ライブラリ。フォントの表示、アンチエイリアス、拡大など。
・Lua:スクリプト言語。主にゲーム用汎用エンジンなどで利用されることが多い。Luaでプログラムされたことを意味する。
ZLib:flate形式圧縮ライブラリ。GZipなどが代表的。ゲームアーカイブがこの形式で圧縮されてることを意味する。

prius.datとprius.idx
ZLibを用いてることが分かれば、この2つのファイルの意味が分かります。
prius.datのほうが、実際のファイル群をまとめて圧縮したアーカイブファイルで、idxが、dat内部の個々のファイルのインデックス情報を持っています。

つまり、flate形式でランダムアクセスさせてるわけです。
これは、ある意味、ゲーム独自にファイルシステムを用意したと同じ意味です。
(1)OS側のファイルキャッシュは利用不可。
(2)1つのファイルをランダムにシークするので、インストールドライブのランダムリード性能に依存。
(3)ランダムリードしたチャンク(データの断片)をdeflate(解凍)していくので、読み込みごとにデコード処理が発生する。CPUの処理能力を要求する。

この時点で、プリウスが、CPUのマルチスレッド性能、インストールドライブのランダムリード性能の両方を求めているわけです。
ZLibは、マルチスレッド使用時には多少制約があったと思うので、その当たりちゃんと対応しているか不安が…

ただ、Zlibの性能の指標としては、次の記事が参考になります。
http://www.4gamer.net/games/098/G009883/20110102001/
記事中段あたりの、AIDA64テストの項で、Zlibのスコアが紹介されています。
整数演算系のテストと同様とのことで、Core i7 2600K HTTオンのモノがトップで、i7 875K@3.46GHz HTTオンを上回っています。
コアの整数演算能力とマルチスレッド性能が、プリウスでも効いてくると思われます。

○ディスクのランダムリード性能について
ディスクのランダムリード性能を上げるには、最低限、SATA2でありNCQが使える必要があります。
つまり、AHCIで利用しないと効果出ません。

さらに、Zlibでランダムアクセスすることから、prius.datが断片化してると、てきめんに遅くなるはずです。
そして、個別ファイルで存在しないため、OSのファイルキャッシュは利用不可能。となると、ディスクドライブ側キャッシュが大きい方が効果出ます。

一番良いのは、SATA3(6Gbps)のSSDで、ディスクキャッシュが多く、ランダムリード性能が高いもの。
Crusial系が一番良いかと思います。時点でインテルX25-Mか510シリーズ。
ただ、SandForce系コントローラのSSDは、コントローラ側で圧縮かけようとするので、既に圧縮状態にあるprius.datの構成を考えると、色々処理に無駄があって、パフォーマンスに影響しそうな気がします。
(とはいえ、HDDと比べたら、全然SSDのほうが良いと思いますが。)

HDDでRAID0というのは、シーケンシャルリードは上昇しますが、ランダムリードは微々たるものです。チャンクサイズ設定次第では、返って遅くなるかも知れません。プリウスに限っては。



ビデオ設定について
ビデオカードは、高性能なものほどリニアに性能出ると思います。
予算ゆるせば高性能ビデオカードが良いでしょう。

ただし、個人的に気になる点がありました。
ゲームオプションのビデオ設定で、「シェーダー」の項目。
最高にすると、ピクセルシェーディングでマルチ光源処理(環境光の反射など)とサーフェース処理が行われます。
これを最高にすると、光源がスキルの発光(敵含む)、さらには敵ダメージ時のエフェクトなどの光が、すべて光源として扱われて反射処理が実行されます。
範囲狩りなどしてると、極端にパフォーマンスに影響します。

で、うちの場合、ビデオカードを色々比較したところ、高性能ビデオカードにしても、シェーダーの性能に余り変化が見られない気がしました。
うちは最近のRadeonしか使ってないので分かりませんが、プリウスのプログラムが2008年8月ごろ作成されたことを考えると、
○シェーダープログラムが、当時主流のNVIDIA Geforce8800系に最適化されている
○Radeon HD4850発売は2008年6月なので、微妙に間に合ってない。
ということで、Geforceの方が向いてるのかなぁ?とか思ったり。

ただ、うちで利用しているHD4850、HD5850やHD6950はDX9のピクセルシェーダ得意なはずなので、ひょっとするとCPUシェーダー利用なのかも。



結局、どーすりゃいいの?
CPUもビデオカードも良いのを買え!じゃ、あんまりですね。
個人的優先事項を。

(1)CPUを4スレッド以上同時に処理出来るCPU.出来ればインテル系で。(整数演算強い)
(2)ディスクコントローラをSATA2以上、AHCIで利用。
(3)ディスクキャッシュの多いHDD、大プラッタサイズのもの。最近の2TBのHDDなど。
(4)ランダムリードの優秀なSSD。Crusialオススメ。
(5)ビデオカード。解像度1920x1080なら各社ハイエンド系のものを。それ以下なら1600x900や1440x900などの20インチ、19インチサイズあたりが無難。
(6)メモリ4GB未満なら32bit版Windows7、4GB以上なら64bit版Windows7を利用。

個人的には、Windows7とAHCIの相性の良さがあるので、SSD利用ならWindows7と同時が良いと思います。

あくまで個人的見解なので、異論あっても当然だと思います。
最近PCパーツ買ってないので、特にインテル系CPUとNVIDIAビデオカードについては、ネットで情報収集した程度の知識しかありません。
実体験したいんですが、お金が-!
かっちゃん
Posted by かっちゃん
PSO2プレイヤーです。
ship01 チーム「La siesta」所属
ship02 B310で夫婦で遊んでます

クエストよりもファッションコーデの方を楽しんでいます。
最新ACスクラッチ品つかったコーデSS等を公開!
自キャラも他キャラも、素敵コーデにはいいね!しちゃいます。

使用アイコンは Picrewの「happyhappy」にて作成したものを使わせて頂いてます。
https://picrew.me/share?cd=L1FvNBO7l4

モチベアップのために、是非投票ボタンのクリックお願いします!m(_ _)m

にほんブログ村 ゲームブログ ファンタシースターへ

Comments 0

There are no comments yet.

Leave a reply