スポンサーサイト

Posted by なる on --.-- スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Oblivion Stutter Remover

Posted by なる on 26.2011 システム関連 20 comments 0 trackback
2011/02/26 version 4.1.24
2011/02/13 version 4.1.22
2011/02/09 version 4.1.21
2011/02/02 version 4.1.20
2011/01/28 version 4.1.19
2011/01/20 version 4.1.18 (新旧の内容で判りにくくなってる箇所は整理)
2010/11/13 初回公開




雑記で色々と散らばってしまってるので、1つの記事として纏めてみました。
ただ、私自身わからないことが多いのであれですけど…

64Bit OS の人、もしくは 32Bit OS の人でメモリーが 3GB 以上ある人はこちらも参考に。
レジストリの掃除とか 3GB スイッチとか
※32Bit OS の人で 3GB スイッチを試す人は自己責任でお願いします。

Oblivion Stutter Remover (以下 OSR)
OSR001.jpg


●説明1
Oblivion を安定させる Plugin の1つです。
OBSE の Plugin である為、使用するには OBSE が必要。
※必要 version は表記されておらず、最新の OBSE となっています。
※たぶんOBSEv0018以上であれば問題ないとは思います。

目に見える変化は FPS の上限と下限を設定できます。
(初期値 FPSMax 30 , FPSMin 10)

FPS が 30 を超える場合、PCの負荷を減らし FPS を 30 に保つように。
FPS が 10 を下回る高負荷の場合、スローモーションになりフレームのコマ飛びを防ぎます。

その他の細かい内容はちょっと長くなるので下で(●説明2で)

●インストール
OBSE が必要です。【OBSE v0019
OSR を DownLoad し解凍。
現在の最新版は Tripple_WIP_4-1-24 。(ver4.1.24)
※注意 v4.1.21 から Heap / iHeapAlgorithm = 6 が初期値になっています。
この設定で動かすには別途 TBMM_DLL が必要。(OSRのページから DL)
※ Oblivion のみの人は OSR_4-1-24_RC を DL して下さい。
Tripple_WIP_4-1-24 ⇒ FO3、FONV 用 の Stutter_Remover.dll がある。
OSR_4-1-24_RC ⇒ BorlndMM.dll、libtcmalloc_minimal.dll、tbbmalloc.dll が付属している。


FastMM4 を使用する場合
FastMM ver 4.97 が必要。(OSR_4-1-24_RC のファイルでも Ok)

TBBMalloc 選択する場合
別途 TBMM_DLL が必要。(OSRのページから DL)(OSR_4-1-24_RC のファイルでも Ok)

tcmalloc を選択する場合
別途 libtcmalloc_minimal.dll が必要。(OSR_4-1-24_RCに付属)

Oblivon と FO3 と FO3NV 用のdll 3つが入ってるので

sr_Oblivion_Stutter_Remover.dll を Oblivion\Data\OBSE\Plugins へコピーします。
Data フォルダ内に OBSE や Plugins のフォルダが無い場合は作成してください。

Oblivion を OBSE で起動すると Oblivion\Data\OBSE\Plugins に

sr_Oblivion_Stutter_Remover.ini が作成されます。
この ini を弄ることで設定を変更することが可能。

FastMM4 を選択する場合、FastMM ver 4.97 も DownLoad。
\Data\obse\plugins\ComponentDLLs フォルダを作成し
Oblivion\Data\OBSE\Plugins\ComponentDLLs に BorlndMM.dll をコピーしてください。

ini で bReplaceHeap = 1 , iHeapAlgorithm = 1 とすることで
FastMM4 を使った Heap 開放になります。(詳細は ● ini の設定で)

TBBMalloc 選択する場合、TBMM_DLL も必要です。(OSRのところから DL できます)
\Data\obse\plugins\ComponentDLLs フォルダを作成し
Oblivion\Data\OBSE\Plugins\ComponentDLLs に tbbmalloc.dll をコピーしてください。

ini で bReplaceHeap = 1 , iHeapAlgorithm = 6 とすることで
ThreadHeap3 の Heap 開放になります。(詳細は ● ini の設定で)

tcmalloc 選択する場合、TBMM_DLL も必要です。(OSR_4-1-24_RCに付属)
\Data\obse\plugins\ComponentDLLs フォルダを作成し
Oblivion\Data\OBSE\Plugins\ComponentDLLs に libtcmalloc_minimal.dll をコピーしてください。

ini で bReplaceHeap = 1 , iHeapAlgorithm = 8 とすることで
tcmalloc の Heap 開放になります。(詳細は ● ini の設定で)

OSR002.jpg


●旧version からの乗り換え
Oblivion\Data\OBSE\Plugins にある、

sr_Oblivion_Stutter_Remover.dll と sr_Oblivion_Stutter_Remover.ini を削除 (or 別名、別の場所に移動など)
その後、新しい sr_Oblivion_Stutter_Remover.dll をコピーしてください。

※ini は version Up 毎に捨てて作り直してください、変数そのものが変わってる場合があります。
※ini の作り直しは sr_Oblivion_Stutter_Remover.ini がない状態で Oblivion を起動すると作成されます。

● ini の設定
ある程度 PC 環境に左右されると思います。
とりあえず良く判らんって人は bReplaceHeap = 1 に変えるくらいでいいと思います。
なお、OS が 64BitOS の場合、効果が高くなります。
32Bit OS の場合 3GBスイッチが安定するのであれば恩恵は大きいです。
※詳しくは 【レジストリの掃除とか 3GB スイッチとか】 を見てください。
※フォーラムで報告されている内容を元にしています。(v4.1.19の話です)

お勧めの設定1
Master / bReplaceHeap = 1
Heap / iHeapAlgorithm = 1 要 FastMM4 (上参照)
※Heap / iHeapSize は何を設定しても無視されます。そのままで Ok。

お勧めの設定2
Master / bReplaceHeap = 1
Heap / iHeapAlgorithm = 5
Heap / iHeapSize = 650 ※1024 よりも安定してるらしいです

新しいもの好き設定(v4.1.21)
Master / bReplaceHeap = 1
Heap / iHeapAlgorithm = 6 要 TBMM_DLL (上参照)
Experimental / bAlternate64HertzFix = 1
Heap / iHeapSize = 650


※注意
最近下記にしてると NPC の落下死が起こると報告されています。
bAllowSlowMotion = 1

かなり前の version でこの現象と NPC が地底の底に落ちる現象が合ったのですが
もしかしたらそれが復活してしまったのかも?
もし、不自然な NPC が確認できた場合、bAllowSlowMotion = 0 にして見てください。
将来的にこの設定は 0 がデフォルトになるみたいです。

※v4.1.24
記述がなくてよく判らない…生成されるiniが古かったのをFix?

※v4.1.23
Heap / tcmalloc のサポート
iThreadFixedToCPUs のサポート(CPU がスレッドをロックするのを回避する)
※マルチコアCPU用?

※v4.1.22
ThreadHeap3 の BugFix
ベンチ関係の修正?
説明し忘れていた Heap/bZeroAllocation について。
(Heap replacements らしいけど具体的な内容がちょっと判らず)

※v4.1.21
ThreadHeap3 の BugFix
-起動時、終了時にクラッシュするFix。

※v4.1.20
Heap / iHeapAlgorithm = 6 がサポートされました。要 TBMM_DLL
もしかしたらこれが一番のお勧めに変わるかもしれません。

※Experimental は実験的な処理です。不具合がある可能性を考慮して使用するか決めてください。
Experimental / bBenchmarkHeap
これが True(0以外) の場合、メインメニュー画面の時にいくつかの総合ベンチマークを走らせます。
ベンチマーク中は黒い画面が数秒、もしくは数分写るかもしれません。
これによって Oblivion の Heap と OSR の Heap を入れ替える?
※Oblivion の Heap 処理を OSR が完全に奪って制御するってことかな?
※私の環境では
Master / bExperimentalStuff = 1 も設定しないとベンチは走りませんでした。
ベンチマークは Oblivion.exe があるフォルダに作成される、
「sr_Oblivion_Stutter_Remover.log」で確認できます。

benchmarking heap (times are for all threads combined)
simple 26.0 nanoseconds/operation
normal 29.1 nanoseconds/operation
simple 2-thread 13.5 nanoseconds/operation
isolated 2-thread 14.8 nanoseconds/operation
unidir. 2-thread 17.7 nanoseconds/operation

正直内容は判りませんが処理スピードを示してるらしいです。(小さい数字ほど高速)
ただし、速い = 安定とはまた別問題だと思うのでその辺は各自で見極めてください。
iHeapAlgorithm の設定を変えて数字を比べて、速い順番に安定確認するのがいいんじゃないかなぁ。

Experimental / bAlternate64HertzFix
64Hz の問題の代替処理。(すごいー( ̄□ ̄;) )
※64Hz 問題についてはこの記事の最後の方に書いています。


●ini の中である程度説明できる場所

Hashtable について (version 4.1.19 ではデフォルトで使用)
※説明はかなり意訳と私自身のしょぼい知識で書かれています※
Hashtable は Oblivon であらゆるものを検索するのに使用されるメモリーテーブルです。
しかし、Oblivion 標準の Hashtable はあまりにも小さく、しかもサイズを変更することが出来ません。
その為、Hashtable がすぐに一杯となり、パフォーマンス低下を引き起こすことに。
これは OBSE などで大量のメモリーを消費する今となっては大きな問題になってきています。
また残念なことにこの Hashtable は OBSE でうまく開放することが出来ません。
※この辺は Oblivon Engine にもたぶん問題がありそうです。
OSR では Hashtable のサイズを大きくすることが出来ますが、いくつかの問題も含んでいます。
※必要なメモリーを開放して CTD を招くなど(これはOblivion Engine にも言えそう)
その危険性を理解した上で使う場合、下記設定をして下さい。
※PCメモリーが足りない人はもしかすると BSOD になるかもしれません。

ini で以下を 1 に設定する。

Master / bHookHashtables = 1
Hashtables / bUseOverrides = 1
Hashtables / bEnableMessages = 1

----

FPS_Management = {
_comment = Basic FPS stuff, switches to slow-motion on low FPS; in the past this has occaisonally produced bugs like the NPCs-dropping-dead issue; the issues are believed to be fixed but if you suspect you are having related problems you can try disabling bAllowSlowMotion which is the main suspect for any problems relating to FPS management
bAllowSlowMotion = 1
⇒ スローモーション機能を使用するかどうか
⇒ NPC の落下死などの不具合が最近また報告されています、気になる場合は 0 に。
MaximumFPS = 30 
⇒ MaxFPS の値。30だと少なそうですが OSR 無しの 60FPS より快適に感じます。
MinimumFPS = 10 
⇒ MinFPS の値。この値を切るとスローモーションになります。(bAllowSlowMotion = 1が条件)
iSmoothFrames = 0
iSmoothMode = 0
iSleepExtra = 2
⇒ -1 とすると上限値を超えてる場合でも PC を休ませることはしない設定。
⇒ 旧version では PC を休ませると NPC の挙動がおかしかったり、
⇒ NPCが地面の下に落ちるなど不具合もあったのですけど最近は問題ないと思います。
bFPSConsoleSPAM = 0
iSchedulingParanoia = 1
iHardMaxFrametime = 200


----

bReplaceHeap = 1 にしていないと Heap 機能は無効になります。
安定性の問題で初期値は 0 (OFF) なので使用する場合は 1 にしてください。
※ ini の 6行目にこの項目はあります。

Heap = {
_comment = Heap replacement can produce MAJOR improvements in performance on Oblivion, only moderate improvements on Fallout
_comment = It crashes instantly on Fallout, is moderately buggy on Oblivion
_comment = Algorithms: 1=FastMM4 (requires external dll), 2=Microsoft (slow on XP), 3=SimpleHeap1, 5=ThreadHeap2
iHeapAlgorithm = 5
⇒ メモリー開放の選択。
⇒ 1 FastMM4 方式(別途 BorlndMM.dllが必要です)。柔軟で安定。
⇒ 2 OSの機能を使っての開放、XP では遅い。Vista と 7 では問題ないとの事。OS依存。
⇒ 3 OSR作者のシンプルな高速解放(ThreadHeap1) (作者は5を推奨してます)
⇒ 4 選択してはいけない (v4.1.19 から TBBMM (FastMM4 debugging options)
⇒ 5 OSR作者お勧めの開放(ThreadHeap2)。3ほどではないけど高速。 (v4.1.20 から)
⇒ 6 (v4.1.20 から) 5 の改良版 ThreadHeap3 (TBBMalloc)で高速。 ※要 TBMM_DLL。
⇒ 8 (v4.1.23 から) Google が提供する DLL を使用したもの ThreadHeap3 よりは劣るけど校則で安定? ※要 libtcmalloc_minimal.dll。
⇒ 特別問題が無い限り 6 でよさそう。Cellチェンジで CTD が目立つようであれば 5 or 8 or 1 を試してください。
⇒ 私は 8 に設定しています。

bEnableProfiling = 0
iHeapSize = 650
⇒ 64Bit OS 、もしくは 32Bit OS で 3GB Enable の場合、
⇒ 500-1500の間がいいそうです(PC のメモリーも潤沢にある必要があります)
⇒ 3GB Enable を使用していない場合は 300~500の間
⇒ (iHeapAlgorithm = 3 or 5 or 6 である必要があります)

bEnableMessages = 0
iGenericFreeDelay = 0

私が説明できるのはこれくらい(・・`)

●感想
私の中でこの Plugin はもう手放せないです。
昔の Bug が合った時から使ってますが無いと快適さが違います。
あと、CTD にも効果があるだろうなぁーと思ってます。


残りは長ったらしい薀蓄(しかも間違ってる可能盛大( ̄□ ̄;) )

●説明2
目に見えない変化として Oblivion Engine (gamebyro engine) が抱える問題の緩和剤。
この辺は私も良く判ってないです、専門的な内容が多くて…
ただ、Oblivon (だけではなくBethesda社が使っている、gamebyro engine)はメモリー周りの処理が苦手のようです。
FO3 も同じように問題を抱えていてあちらでも OS が 64Bit で 3GB Enable をすると安定するのはそんな理由みたい。
関連 【レジストリの掃除とか 3GB スイッチとか

その中の1つに 64Hz 問題があるみたいです。
これは gamebyro engine 特有の問題と指摘されてます。
つまり、モニタは 60FPS で稼動してるのに、engine は 64Hz/64FPSで処理するので 4Frames スキップしてしまうとの事。

Oblivion , Fallout 3 , Vegas Frameskip Problem


コマ飛びのようなことを言ってるんだと思います。
これが何故大きな問題かというと GPU と engine の間で同期が取れず CTD の原因になっているからだそうです。

FO3NV ではこれの Fix があるみたい。FO3NV を所持していないので試せませんけど…

1) Install FallOut 3 Vegas

2A) Make sure it's patched to the latest steam version ( 1.1.1 ) or Fallout.New.Vegas.Update.3

2B) Delete the Dx9 file if you've used it previously and rerun the launcher and set up your video/sound options!

3) Copy/Unpack the UPDATED "fnv4gb.exe" and the "fnv4gb_helper.dll" (4GB Fallout New Vegas Mod) into your Fallout NV Folder. " Explicitly sets the system timer to 3 ms while running to ensure, rather than just assuming, timeGetTime() will have better accuracy than GetTickCount() " for Frameskipping
4GB Fallout New Vegas

4) Run the fn4gb.exe file! :)

TOTALY SMOOTH GAMEPLAY HARDLY ANY FRAMESKIPPING( Don't use ifpsclamp )

FO3NV と 64Hz の原文記事は Nvidia のフォーラムの内容です。
Every Bethesda Softwares Game Stuters

Nvidia だけではなく ATI のカードでも同じ不具合がある為、Bethesda社側の問題と指摘されています。
GPU のドライバで個別対処は出来るみたいですが、Nvidia と ATI が個別に対応し続けるのはたぶん無理みたいです。

そんなわけでこの問題の解決は...
・Bethesda社が engine を Fix する(今後の作品はともかく Oblivion では絶望的?)
・GPUのドライバで個別対処をしてもらう(GPU側の問題ではない為、難しい?)
・第三者が Fix を...(著作権的に無理ぽい気がする...)

ようするにどうにもならない感じですねΣ( ̄▽ ̄;)

○ Comment

bReplaceHeap = 0 → 1 のこと書き漏れてるかもデス!


CTDするといつも、自分って駄目だーっていつも思ってしまって心に傷がつく笑

FastMMって今まで意識したこと無いんだけど、実際いいもの??

4.1.3 → 4.1.4 って何が変わったんだろう。
とりあえず旧版iniコピーしておいて導入してみようっと。
アルゴリズム5でとりあえず行ってきまーす!

2010.11.14 13:22 | URL | 15jam。 #mQop/nM. [edit]
> bReplaceHeap = 0 → 1 のこと書き漏れてるかもデス!

指摘ありがとうです、忘れてましたOrz

Verup は CriticalSections の改良みたいです
ここがメモリー開放の肝みたいですが詳しいことは全然わからないですねぇ…
4.1.3 とは1箇所違うみたいです、ただ気にしなくてもいいよみたいに書かれてましたけど(たしか
2010.11.14 19:46 | URL | なる #- [edit]
今日あれから数時間遊んだけど、
ディスプレイドライバの応答停止以外でのCTD一回もなかったよ!
2010.11.15 00:50 | URL | 15jam。 #mQop/nM. [edit]
私も少し稼動しただけですが特に問題なさそうです

ドライバの応答停止はハード系かも?
2010.11.15 16:46 | URL | なる #- [edit]
まだ一日しかたってないのにもう4.1.6出てますね・・・
2010.12.11 22:01 | URL | was #- [edit]
wasさん、こんばんは

ですねぇー
ただ、4.1.5で書いてた Hashtable を設定する場合に設定するiniが
デフォルトのiniとなっただけみたいです

sr_Oblivion_Stutter_Remover.iniを消すとデフォルトで作成されるiniには
Hashtable を設定するものになってる

なので4.1.5でも記事どおりにiniを弄ってる場合は変わらないかと思います
2010.12.11 23:07 | URL | なる #- [edit]
通りすがりの者です、日ごろはMBP++などでお世話になっております

WIP版OSRですが、使う場合はBethesdaのForumをよく読んだ方が良さそうですな
作者がThread Heap2より、FastMM4の方が良いと認めつつあるのが気になります
うちは64bitのWindows7ですが、作者が64bit環境ないのは大丈夫かという不安も(笑)
いずれにせよ、作者はまだまだやる気があるようなので、今後に期待ですね
2011.01.22 17:41 | URL | 名無し #3aXRcdxk [edit]
Tripple_WIP_4-1-19が、着たみたいですよ~
2011.01.23 10:59 | URL | #- [edit]
名無しさん、こんばんは

OSRはなかなか上手くいってないみたいですね
報告される内容はFastMM4のほうが安定しているという書き込みが目立ちます
Thread Heap2は最終的にメモリーを食い潰してCTDするみたいですね…
でも活発な意見交換になってるみたいで期待できそうです

MODを弄る立場からするとWin7に乗り換えにくいんですよね、
各種ツールだったりCSとかの絡みで

○○すればWin7でも使えるという情報も見ますがその辺の環境構築がめんどそうだなぁーと思ってて
でも来年辺りには買い替えかなー


OSR 4.1.19 になってましたね、情報ありがとうございます
iHeapAlgorithm=4 is now TBBMM (it used to be FastMM4 w/ debugging options)
らしいのでまあテスト版かなと思ってます、他は変更点ないんじゃないかな
2011.01.23 12:43 | URL | なる #- [edit]
CSといえば、obse20βの導入が必要な事意外は相当便利そうなConstruction Set Extenderという新機能追加ツールがtesnにありますね。
obse20のβがとれたらちょっと触ってみたいツールでもあります。

110126追記:
現在スレでは「TBBMMはさらにいいよ!」というような感じの流れが見えますね。
今までのFastMM4(BorlndMM.dll)の別?新?デバッグ?バージョンらしく、
より早く安定してるとかなんとか・・・
さらに追記:
と思ったら、CTDやブルスクの話も見えますね。
他にもoblivion.iniの設定でかなり安定性が変わるというような書き込みも。
2011.01.24 03:01 | URL | #N6kp4qTg [edit]
TBBMMを試してみましたが、既に報告が上がっている、
セーブをロードしようとするとクラッシュ!が再現されただけでした…
推測ですが、Windows7の64bitでは使えないように思います。
報告見ると、XPもしくは32bit環境では上手く動作するのやもしれませぬ。

oblivion.iniはOSRの作者を始めとして、弄ることに対して否定的な意見が多いですな。
うちではいつからかほとんどデフォルトに戻して、そちらの方が安定してますが、
皆さんは.iniの値を調整して、実際にパフォーマンスアップは見られるんでしょうか?
2011.01.26 20:05 | URL | 名無し #3aXRcdxk [edit]
Construction Set Extenderは便利そうですね、今のところこれがOBSEv0020で唯一入れたいMODかも
まあ、まだDLだけして0020は使ってないんですがβ5になってるし、そろそろ正式版くるかなーと思ってたり

TBBMMは割と評判がいいみたいですね

近いうちにThreadHeap2の改良らしいThreadHeap3が付くみたいですし
色々と議論も活発で

ただOSR自体が環境にかなり左右されるぽいですね
セーブロードでクラッシュする報告もあるみたいでこの辺はOS絡みなのかも?
(作者の方、WiniXP32Bitらしいですし)
まあ機械翻訳を通してみてるのですけどエンジン周りの問題が大きそうな気が…(特に音?)

あとはbAllowSlowMotionを使っているとNPCが落下死する報告がまた上がってるのが気になるところです
(以前のversionであったんですけどねぇ…落下死と地底落ち現象が…)

Oblivion.iniはなんだかんだで初期に戻ることが多いですね…
というのも意味不明なことがあるととりあえずiniを捨てるととい原点になって
弄ってたiniを設定し忘れるという現象なのかもしれませんけど(ぉ

私は基本的にこれと今も変わってないかな…、たまにセルフシャドウ切ったりしますが
http://narulivion.blog46.fc2.com/blog-entry-65.html
2011.01.28 19:59 | URL | なる #- [edit]
セーブをロードするとクラッシュするの直ったみたいですね
こちらではよくクラッシュしてたのがしなくなりました
2011.02.05 15:43 | URL | #- [edit]
あ、これが原因だったのかOrz

最近MOD環境の違うsaveをロードするとCTD多かったのですが改善したぽいです
そしてv4.1.21出てるのかぁ…ペース速いな( ̄□ ̄;)
2011.02.09 15:09 | URL | なる #- [edit]
v4.1.22が出てますよ
主にThreadHeap3のバグ修正と最適化みたいです
それとBenchmarkHeapの高速化(?)、Heap/bZeroAllocationsの実装かな
自分の環境(win7 64bit)だと4.1.20からiHeapAlgorithm = 6でも問題なくなりましたね
2011.02.11 10:05 | URL | #mQop/nM. [edit]
ぉー、もうv4.1.22が( ̄□ ̄;)

TH3のBugFixとベンチ関係(ちょっと意味がわからなかった…)と忘れていたHeap/bZeroAllocationsのことみたいですね
私は今ほとんどOb起動してないんですけど評判見てると良さそうです

情報ありがとうございます(≧∇≦)ノ
2011.02.13 23:20 | URL | なる #- [edit]
bEnableMessages ってなんだろう。
2011.02.14 19:14 | URL | 15jam。 #mQop/nM. [edit]
15jam。さん、こんばんは

bEnableMessages はイベント時にログを残す機能みたいです
v4.1.19の時に作者さんがiniをそう設定してと書いてたのでそのまま書いちゃいましたが
機能的にはあってもなくても関係ないです、たぶん
2011.02.14 22:26 | URL | なる #- [edit]
disableのほうが軽い?笑
2011.02.18 20:16 | URL | 15jam。 #mQop/nM. [edit]
> disableのほうが軽い?笑

厳密に言えばまあ軽くなりますねー
この機能はデバック目的ですし
2011.02.19 19:25 | URL | なる #- [edit]

○ Post comment


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

○ Trackback

trackbackURL:http://narulivion.blog46.fc2.com/tb.php/230-7321347d
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。