飼い主ひみつ日記

アクセスカウンタ

zoom RSS 【PCゲーム】シムズ3でテクスチャの再読み込みを速くするのに色々実験してみた

<<   作成日時 : 2012/10/27 18:10   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 最近シムズ3で遊んでいて、場面によって処理が重たくなる場面が多くなってきました。特に気になるのがシムが立ち往生して固まる事で発生するスタックと、マップを行き来した際に読み込んだ区画のテクスチャの張り替えが遅くなる事です。前者は仕様なので根本的に解決する方法は無い(※固まったシムをリセットすればマシになる。MODを使えば街ごとリセットするのも簡単)んですが、後者は何か解決方法があるだろうと模索している最中です。

 その中である程度効果があったのが、CPUのオーバークロックでした。劇的という程では無いにせよ、ある程度描画処理能力が向上するのは間違いないようです。実際に同じセーブデータを用いて、ノーマル設定(Core i5-2500K@3300Mhz/RADEON HD 7770)とOC設定(Core i5-2500K@4300Mhz/RADEON HD 7770)でシムズ3の起動(プログレスバーが動き出してから)→自宅読み込み→市役所に視点移動→再び自宅に視点を戻してテクスチャの張り替え作業が完了するまでを録画してみました。


3300Mhz時


4300Mhz時

 ロード時間が短くなるのは当然として、テクスチャの張り替えまで速くなる理由は分かりません。単純に考えるとCPUがボトルネックになっていてGPUの性能を100%導き出していなかったという事になりますが、だとするとより上位のGPUを使っているユーザーはどうなるんでしょう。Core i5-2500Kを4.3GhzにOCするのだって環境によっては無茶な事だし、一般的なシムズユーザーにOCを奨めるわけにはいきません。ちなみにこの実験を行う前に、OCCT(v4.3.1)で負荷を掛けてエラーが出なかったのは勿論の事、CPU温度が60度を超えない事を確認済みです。室温が23度だった事もあって実現出来た、瞬間最大風速みたいなものです。くれぐれも無茶なOCは控えましょう。

 シムズ3的にOCしたマシンスペックをどう捉えているかですが、それはシムズ3のセーブファイルなどが納められたフォルダにある「DeviceConfig.log」というのを確認すれば分かります。結論から言うと、ノーマル設定でもOC設定でも変わりません。と言うのも、シムズ3がスペック判定に用いているのはDirectX診断ツールの情報そのままのようで、Core i世代のCPUなら3Ghz以上のCPUで最高判定である4が付きます。計算式の導き出し方(Intel Coreシリーズ)は、Mhz換算のクロック×1.3334で、OSがWindows VISTA以降ならそこから400引いた数値が3600以上でハイスペック(cpuLevelUber)と判定されます。ここでハイスペック判定を受けると何が変わるかというと、区画に現れるシムの数が増えるそうです。スレッド数に関して言えば、3スレッドまでしかカウントされず、それ以上はOS側が自動で割り振ったスレッドに応じて負荷分散させるようです。私のマシンを4.3GhzにOCした際の最大CPU使用率は、それぞれ49%、37%、83%、46%で、時間軸から類推するとロード完了直前から最初にゲーム画面が表示されるまでの前後十数秒間(おそらくMODがスクリプト実行しているタイミング?)のようです。スタックしている時はそれより10%程度CPU使用率が低く、視点(別の区画にズーム)を動かしている時は更に10%程度低い使用率でした。ちなみにシムズ3プレイ中のCPU使用率はCore Tempというソフトでログが取れるので、気になる方はご自分のマシンで試してみるといいでしょう。

 CPUはこんな感じですが、GPU(グラフィックカード)はどうかというと、Geforceなら8800GT若しくはGeforce 9500GT(モバイル版はGT 130M)以降、RADEONならRADEON HD 2900若しくはRADEON HD 3600以降でハイスペック(cardLevelUber)と判断され、最高判定である5が付きます。こちらはグラフィックスオプションの初期設定が変わるぐらいで、細かい所ではペットの毛先の描画が正常になるかどうかの違いです。ちなみにパッチ1.39の時点でRADEON HD 7000シリーズだけはシムズ3的に正しく認識されません。従って設定ファイルである「GraphicsRules.sgr」を書き換えない事には、例えウルトラハイエンドのRADEON HD 7970を差していても、DeviceConfig.logにはGPU : 1と表示されます。その隣にあるGPU MemoryというのはVRAMの事で、368MB以上あれば最高判定である4が付く為、最近のものならエントリークラスのものでも512MBは積んでいるので、ほとんどの場合問題無いとみなされている(※あくまでシムズ3のスペック判定上での話。実際の動作は古いもの程シビアになる。参考→MTSさんのGame Help:TS3 System Requirements)のでしょう。

 メインメモリは少し複雑で、OSがVISTA以降だと実装メモリから512MB引いた数値から算出されます。2560MBが閾値となっている為、実装メモリ3GB以上で最高判定4が付くという事になります。断っておきますが、あくまで「データベース(GraphicsRules.sgr)上のスペック判定」な為、実際には実装メモリ3GBではエラーが頻発してゲームにならないでしょう。

 で、そのデータベースとなる「GraphicsRules.sgr」から実装メモリ(ramLevel)に関する項目を探していて見つけたのが、644(※パッチ1.42では651)行目にある「seti MemCacheBudgetValue 209715200」というもの。略語が使われているので正確には分かりませんが、(シムズ3が)メモリキャッシュで確保する量は209715200バイトにしますよ、という事だと思います。バイトだと分かりづらいと思いますが、およそ200MBになります。え?200MBってあまりにも少なすぎやしませんか?桁を間違えたのか?試しにこれを343597384に書き換えてシムズ3を起動し、上の動画にあるセーブデータで同じような事をしてみた所、3.3Ghzのままでも4.3GhzにOCした時と同じぐらい(もしかしたらそれ以上)にテクスチャの張り替えが速くなったように感じられました。じゃあ1GBにあたる1073741824に書き換えてみたらどうなるか実験してみた所、心なしかプログレスバーの進捗が遅くなったように感じられたものの、明らかにさっきよりテクスチャの張り替えが速くなりました。もしかしたら何度も起動した事で、OS側がメインメモリにシムズ3関連ファイルの幾つかをキャッシュしたのかもしれませんが、OCするより効果ありそうです。ただし設定ファイルの書き換えにはリスクが伴う為、セーブデータや設定ファイルのバックアップを取る事を大前提としつつ、何が起きても自己責任で対処出来る方以外は真似しないでください

追記:日を改めて上記設定ファイルの書き換えを保持したまま、OC実験した時と同じセーブデータで起動したところ、テクスチャの張り替えなどが先日確認した時より遅く感じられました。悪い意味での予想通りというかOSがキャッシュに溜め込んでいたお陰で速くなったようです。が、一旦テクスチャの描画が完了すれば、2〜3の区画を行き来する程度ならテクスチャの再描画も発生せず、スムーズに表示されるようです。この時のTS3w.exeが確保していた物理メモリ使用量(ワーキングセット)はおよそ2.7GBで、仮想メモリ使用量も同程度でした。wow64で実行されている32bitアプリケーションでも2GBを超えるメモリを使える事が確実なようです。私のマシンでは、何も起動していない素の状態で3.7GB程の空きメモリがあるので、理論上はシムズ3で3GB超の物理メモリを利用出来る、という事になります。また後日「seti MemCacheBudgetValue」の値を書き換えて実験してみたいと思います。

追記:調子に乗って3GBにあたる3221225472に書き換えて実験してみた所、正常に起動しテクスチャの表示も幾分速くなったように感じられましたが、幾つかの区画を切り替えているうちに一部のテクスチャが真っ黒になり、シムズ3が強制終了してしまいました。エラーログを見るとAccess Violationとあったので、所謂メモリ不足によるものと推測されます。2GBにあたる2147483648でも同様のエラーが出たので、現在はそれより200MB少なくした1937768448にして様子を見ています。ちなみにこの時のTS3w.exeが確保していた物理メモリ使用量はおよそ3.6GBで、上記で予測した3.7GBにほど近い数値となっています。従ってシムズ3以外に何か起動したり、或いはバックグラウンドに常駐するアプリが多い環境によってはもう少し緩い(数値を少なくする)設定変更を強いられるかもしれません。追記:動画を撮影しながら5〜6箇所の区画を連続表示させていたら強制終了しました。「ながら」作業の時にはもう少し設定を緩めないとならないようです。いずれによせ、何が起きても自己責任で対処出来る方以外は実行しないでください

11/5追記:ウェブリブログが長期間メンテナンスを行っていた関係でご報告が遅れましたが、上記設定ファイルの書き換えは当方の環境下だと1GB(1024MB=1073741824バイト)以下にしないと途中でエラーが発生して強制終了したり、酷い時にはBSODが発生しました。エラーログやBSOD発生時のメッセージ内容(エラーコード)からメモリ不足を疑い、日曜日に合計16GBまで増設して実験してみましたが状況は変わらず、単純にメモリ不足によるエラーで無いものと思われます。

 ここからは推測ですが、設定ファイルを書き換えることでシムズ3の合計使用メモリが2GBを超えている事、書き換える数値を1GB以下にすると安定する事から、VRAM容量(※手持ちのRADEON HD 7770のVRAM容量は1GB)に関係しているのではないかと…。メインメモリに「seti MemCacheBudgetValue」で書き換えた数値分だけレンダリングされたデータの一部をキャッシュしておき、それをその都度VRAMに書き出している(※VRAMで読み込めない分がオーバーフローしてエラーになる)のではないかと。そしてキャッシュされてない部分だけいちからレンダリングする為に描画が遅くなったよう感じ、CPUをオーバークロックする事でGPU処理も速くなって描画が速くなったように感じるのではないかと…。この推測を実証するにはVRAM容量が2GB以上のグラフィックカードを用意せねばならず、今すぐには出来ません。資金と時間的余裕が出来たら年末年始にでも新しいグラフィックカードを購入して実験するかもしれませんが、シーズンズで特に不満が生じなければ購入しないかもしれませんので悪しからずご了承ください ^^;

12/27追記:

 こちらのエントリーで触れたとおりVRAM 2GB版のRADEON HD 7850に乗り換えました。で、上記予想を検証する為に「seti MemCacheBudgetValue」の値を2GB弱に書き換えて実験してみた所、残念ながら予想は見事に外れてしまい、不安定な動作となってしまいました。実はこの実験をする以前に詳しく検索かけてみた所、TS3W.exeの使用メモリが3.7GBを超えるぐらいでシステムが不安定になり、シムズ3が強制終了したりBSODが発生するとの事です。ただしOSがキャッシュした部分に関しては問題無いので、Windows VISTA以降のOSを使用していて、且つメモリを16GB以上搭載したマシンならば、シムズ3を起動後一旦終了させ、もう一度起動する事で上の実証動画にあるようにテクスチャの再読み込みが速くなるものと思われます。

 ちなみにグラフィックボードを上位版に換装した事による体感差は、オブジェクトのレンダリング速度は相対的に速くなりますが、テクスチャの再描画に関してはあまり速くなったとは思えませんでした。シーズンズの降雨(降雪)時における描画のもたつきは多少改善されましたが、オブジェクトを多く設置している巨大区画では依然引っかかりを覚える事もあります。シムズ3を二時間程度遊んでいる間にfpsと使用VRAMのログを取ってみた所、最低0fps(※数秒間続いていた事からスタックしていた時間と推定)、最大147.2fpsで、大抵は50〜70fpsの間を行ったり来たりしていました。VRAM使用量は750MB〜1160MBでしたが、fpsとの因果関係は見つけられませんでした。おそらく表示されている区画(直近に表示していた区画を含む)のサイズやオブジェクトの総数でVRAM使用量が決まってくるものと思われます。ちなみに描画が引っかかっていると推測される時(20〜40fps)のVRAM使用量は多い時で1100MB程度、少ない時で789MBとバラバラで、VRAMを圧迫しているせいで描画がもたついているわけでは無いようです。

 [PR]

テーマ

関連テーマ 一覧

メッセージ

サイト内検索



月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
【PCゲーム】シムズ3でテクスチャの再読み込みを速くするのに色々実験してみた 飼い主ひみつ日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる