きれいなOBLIVIONでPCにも自分にも優しいプレイ


           
ジャイアンがきれいなジャイアンになると誰にでも優しくなるように、OBLIVIONがきれいなOBLIVIONになると、プレイヤーやPCに優しくなります。

つまりどういう事かというと、Dateフォルダ内をきれいにして、読み込みをスムーズに、負荷を軽減して穏やかな気持ちでプレイできるようになろう、というわけです。

まぁ元々のPCスペックがあればどうでもいい話なんですけどね。ただ、MODが要求するスペックってマジで青天井なんで、より理想に近づくためには意識しとくといいのでは、ってのはあります。

基本的に別記事に挙げてた内容なんですが、そちらが長くなりすぎたので内容を分割して、記事を独立させました。

こことか、他の外国のサイトとかでも読んだ気がしますが、MOD管理ソフトやSkyBSA(純粋にロード順で後に来るデータが先のものを上書きしていく様にするMOD)を使わない場合、オブリは全部のBSAおよびDateフォルダに追加されたMOD用のデータ(以後ルーズファイル)の中から、日付の古いBSAから読み込んで、新しい日付のBSAを読み込み、日付の新しいルーズファイルで上書きします。この際、日付のBSA同士は先に読み込んだものが優先されます。
 つまり、BSA同士で重複する項目がある場合は古いデータが優先され、それよりも新しいルーズファイルがあればそれになる、という変な優先順位があるらしい(多分あってると思うんだけど)のです。まぁ通常はMODの並び順を変えて、WryBashとかが日付も調整してくれるので普段は意識しません。実際、SkyBSAを入れる必要も無いと思う。

 ただこれだと、重複するデータが多ければ多いほどデータのチェックが複雑化しますよね。さらにBSAは圧縮されてる場合があるので、その場合は非圧縮状態に戻して…という作業も行われるわけです。これが積み重なると、カクツキとか起動の失敗とかランタイムエラー(これは関係ないかも)とかFPSの低下とかいろいろ生み出すわけです。暴力的なオブリが、快適なプレイに襲い掛かるのです。

で、以下のようにDateフォルダ内を整理してゆきます。
・MODのデータにバニラのBSAに存在するファイルと同じファイルがある場合、基本的にBSAに統合してしまう。非圧縮で。
・2GB以上のBSAは読み込まれないので、適当に分割する。
・マージして問題ないespはどんどんマージして、それ用のメッシュやテクスチャはbsa化する。
・最終的に、極力ルーズファイルを無くしてほとんどがBSAになるといいなと思っている。


完全にバックアップしてからやってね。
作業の流れ
一通り、MODを入れ切った状態にします。最終系に近い状態から始める方が、個人的には考えやすくて楽です。どのくらい効果が出たかもわかりやすいし。

・めぼしいMODをある程度入れてロード順を確認、プレイに問題ないことをテストする。

・バニラのBSAを解凍する。OBMMのUtilityメニューから行いました。

・Dateフォルダ内のルーズファイルとして並んでいるMeshesおよびTexturesフォルダ直下を確認。バニラにも存在するファイルは先ほど解凍したバニラBSAの中に放り込んでいきます。完全にバニラのデータを上書きするものだけでbsaを作るようにします。

・Nif、テクスチャの最適化(任意)。BSAに再パックする前にやっておきます。詳しいやり方はほかの方のとこ見てください。

・フォルダの分割を行います。おそらく一つのBSA用フォルダが2GBを軽く超えてると思います。今後の追加も考えながら、少なくとも2GB以下になるようにTextures直下のフォルダ、Meshes直下のフォルダを新しく別のフォルダに振り分けます。うちではこのような感じになりました。後々の事を考えて、フォルダの名前も変更します。

 M.bsa 
 バニラのメッシュを非圧縮化、MODで新しく生成されたdistantlodフォルダ、MODで変更されたtreesフォルダもそのまま投入。それらはmeshesフォルダと同じ階層に並べます。

 T1.bsa
 主にlandscapeフォルダ、plantsフォルダといった地形などに関するデータをバニラとMODですべてまとめて「Textures」フォルダ以下に並べます。もちろん、重複する場合は必要なものだけ入れるように。これはRAMディスク行きです。

 T2.bsa
 CharacterやMenuなど。


注意として、どれも必ず「Textures」や「Meshes」のフォルダを作ってからその中に入れてください。
・各種フォルダをBSA化。これもOBMMのUtilityから行いました。

出来上がった各種BSAをDate内に入れます。また、CSを使わないなら、もとからあるOblivion - Meshes.bsaとOblivion - textures - compressed.bsaはどこか別の場所に移します。別に移さなくてもいいです。この後の作業で読み込みすらされなくなるので。

・Wrye Bashを起動させます。今投入したbsaファイルの日付が、自動で変更されます。

Oblivion.iniの編集を行います。このままでは名前を変えたり追加したりしたBSAを読み込んでくれないので、iniを書き換えてこれらを基本BSAと認識してくれるようにします。

うちの場合はこう。

SMasterTexturesArchiveFileName1=Oblivion - Textures - Compressed.bsa

SMasterTexturesArchiveFileName1=T1.bsa
SMasterTexturesArchiveFileName2=T2.bsa

sArchiveList=ArchiveInvalidationInvalidated!.bsa, Oblivion - Textures - Compressed.bsa, Oblivion - Meshes.bsa, Oblivion - Sounds.bsa, Oblivion - Voices1.bsa, Oblivion - Voices2.bsa, Oblivion - Misc.bsa

これは必要ないのかもしれない。255文字以上は認識されないので、その為にフォルダ名を短くしました。

sArchiveList=ArchiveInvalidationInvalidated!.bsa, T1.bsa, T2.bsa, M.bsa, Oblivion - Sounds.bsa, Oblivion - Voices1.bsa, Oblivion - Voices2.bsa, Oblivion - Misc.bsa


・RAMディスクの設定;今使ってない。
異常に敷居が低くなっている。うちは以下の手順で。
SoftPerfectRamDiskをDL。
 タスクバーのインジケーターから起動して、緑のプラスマークアイコンからRAMディスク作成。フォーマットはNTFS、サイズはそこに置くbsaファイルのサイズに合わせて、ドライブ名はお好みで。
LinkShellExtensionをDL。
 右クリックから簡単にリンクシェルを張れる。日本語対応の安心ソフト。準備としてはexeを実行してウィザードに沿ってセッティングしておくだけ。


先ほど作成したRAMディスクに一つフォルダを作って、T1.bsaをそこに移動します。
 RAMディスク内のT1.bsaを右クリックし、「リンク元」として設定。次にOblivion/Dateフォルダを右クリックして、「シンボリックリンクを作成」。すると、Dateフォルダ内にT1.bsaへのショートカットアイコンのようなものが作成され、bsaファイルが「そこにあるもの」として認識されるようになる。

というわけで、ほぼクリックだけでRAMディスクからのBSA読み込み環境作成が出来ます。


BSAに再パックする前の統合フォルダは、その状態でとっておくと何かと便利。MODを追加する際に、大丈夫そうなデータはそこに入れてBSA化、データフォルダに上書きすればOKです。

この一連の作業できれいなOBLIVIONにしたおかげで、そもそも起動に失敗するとか、ムシャクシャして殴られる(CTD)とかはほんとになくなりました。以前はやや重かったHESUシリーズの一部とかも快適に歩き回れるようになったので、大変良かったです。




以前の、不安定な時のボヤキ↓

MODの数が増えてくるとどうしても不安定になってくる。うちは低スペック故なのか特にそうで、起動する時点でもう不安定。起動さえしちゃえば、ほぼCTDはしないんですが。どう不安定かというと、

STEAM起動→OBLIVIONランチャー起動→PLAY→ちょっと読み込みかけてあきらめる→
  「稼働中」が「プレイ可能」に戻ってタイトル出ない→繰り返すとそのうち起動する


ていう状態でした。起動時のメモリ確保が出来てないとか、そういうどうしようもないお恥ずかしいレベルの話の気がしたので、最近はこれ↓を使ってます
Application Priority Changer
指定したタスクに対するメモリ使用の優先度を指定するソフト。とにかく起動時にもっと頑張ってほしいの。

自己流ですが、Oblivion」を優先度「高」に、「Oblivion Launcher」「enbhost」を「通常以上」に指定してます。あんまり高くするとPCの方が止まっちゃうので注意。

さらに、NEXUSのこの記事に倣ってOblivionが使用するCPUを二つに限定させます。これがどのくらい効果あるのかはちょっと怪しいけどね。効果があるのは確認しました。ただ、意味があるのかないのかはよくわからん。
まず、タスクマネージャを起動させて、パフォーマンスタブでCPUをクリックすると、コア毎の使用率がグラフで表示されますよね。これを出したままOblivionを起動させてみると、プレイ中は確かに一つだけ処理というか、負荷が集中していることが分かります。オブリってホントにCPU一つしか使わないのね。他のも動いてはいますが、おそらく並行して行われてるWindowsの通常の処理。で、先ほどのソフトでOblivionが使用するCPUを0と1に指定してから起動すると、今度はコアを二つ使いだすんです。iniの方の設定(ここの「スレッド」参照ね)も必要なのかなぁ?最近ではこの設定は意味ないってのが主流だと思うんだけど。

で、肝心の負荷なんだけど、コア二つ使ってるから一つの時の半分くらいの負荷かっていうと、全然そうじゃなくて、一つの時と同じくらいの負荷が二つにかかっている…。無駄に2倍の処理してるってことなのかなぁ?それじゃメモリとかにも負荷が倍いきそうだから、そうじゃ無いはずなんだけど。PC分かってない人が中途半端にいろいろしようとしてドツボにはまるパターンなんでしょうね。

総合的にみて、かなり起動がスムーズになったし、プレイ中も全く問題ないと思う。あ、でもさっきの記事内の「xpの互換モード」に変更するってのは全然ダメだった。起動すらしない。More Heapもうちだと全く機能しないんだよなぁ…。レジストリの掃除も今のPCだと意味ないって話もあるから、機械的に全部やらない方がよさそう。



その後テクスチャの最適化と、Dateフォルダ内のBSA統合で重複フォルダを減らしたら劇的に改善されました。