2015年9月27日日曜日

Runtime Error! のお話

こんばんわ、クラリスです(/・ω・)/
異界や宮殿にも大分慣れてきて、毎日クラメンとわいわいやっております。
仲間うちでワイワイやれるのは楽しい。オンラインゲームはこうでなければ!と思います。
いろんな考えの方が居るでしょうがっ。

さて、今日はTWのエラーのお話です。
TWが出た当初はXPが全盛期で、それも32bitOSしか出回って無かったですよね。
今では、どうなんでしょうか。Windows7が多い?それともWindows8.1?
また、OSも64bitの方がおそらく大半を占めるのではないでしょうか。

ただ、未だに32bitOSを使っている方も居るかと思います。
どうしてこんな話を?
ここからが本題になります。


TWではメモリの搭載量が少ないとこんなエラーが多発するのです。
見覚えある方も居るでしょう。ランタイムエラーです。
特にSHIFT+Mで街移動が出来るようになってからメモリの使用量が酷く増えました。
それも常時1GB程度のメモリを占有するほどまでに。
32bitOSでは、一般に物理メモリとして3GB±αしか使用することが出来ません。
ページングファイルといって、HDDだったり、SSDだったりをメモリの変わりに使うことも出来ますが、プログラムを最小化をした際に一部のメモリをページングファイルへと隔離するというのが主な機能のようでして、常時アクティブであるオンラインゲームの際にはあまり役に立たないのです。

私のメインPCはWindows7 64bitでメモリも8GBですので、このエラーが出たことはありません。
ただ、サブPCはWindowsXP、もちろん32bitなのです。もはやXP自体が化石に近い。
日ごろから2時間毎くらいにエラーで落ちるのがあまりに億劫でしたので、この改善をと思って色々調べました。

結論から言えば・・・、エラー出なくなりました。今回はその方法をご紹介、もとい個人的な防備録として記録しておきます。

その方法とは以下。


1) 物理メモリの増量。
32bitOSでは3GBと少ししか認識出来ませんので、4GBで十分です。
4GB乗せるのが勿体無い!という人は3.5GB程度でも良いでしょうが、メモリは出来るだけ同じ容量同じ品番をセットで使うのが良いので4GB乗せてしまうのがオススメです。
1GB×4でも2GB×2でもお好きなように。

2) OSの設定変更
32bitOSの初期設定では、1つのプログラムが使うことが出来るメモリの総量は2GBまでに制限されています。実際にはもっと少ない、1.5GB程度すら使用出来ないことも少なくないです。
これを設定によって解除します。
尚、PCが鉄の塊に変わることがあるので、自己責任で。何か起こればシステム復元等してください。バックアップを忘れずに。

①XPの場合
・マイコンピューターを右クリックして、「プロパティ(R)」をクリック、「システムのプロパティ」を開きます。

・「システムのプロパティ」の「詳細設定」タブから「起動と回復」という項目にある「設定」をクリック、「起動と回復」の設定画面を開きます。

・「起動と回復」の設定画面の中の「起動システム」という項目の編集をクリックします。

・boot.iniというテキストが開くので、 末尾に、
 /3GB /USERVA=2500
と追加します。
私の環境では次のようになりました。

/USERVA=2500というのは、ユーザーが使用するプログラムが占有できるメモリの容量です。
2500は2.5GBの意味。
OS自体もメモリを使用するので、3GBものメモリを自由にプログラムに占有させてしまうと様々なトラブルが発生します。
物理メモリ全体で3GB±αしかありませんからね。ですので、この文言によってプログラムの使用できるメモリ量をコントロールします。
不安な方は/USERVA=2200程度でも良いでしょう。TWが2.2GBものメモリを使用することはほとんどありませんし、増えすぎは対策が可能です。これに関しては後述します。

・加筆したテキストを上書き保存します。これで設定は完了です。この後再起動すればOSに設定が適用されることになります。

②Windows VISTA(32bit), Windows7(32bit)の場合
私の環境では検証出来ませんので、動作が重い!フリーズする!を改善「3GBスイッチ」(32bitOS用)などを参考にしました。不安な方はご自分で調べてみてください。
・「スタートボタン」から「すべてのプログラム」→「アクセサリ」を開き、「コマンドプロンプト」を右クリックして「管理者として実行」をクリックします。

・「コマンドプロンプト」が起動したら、特別なことは何もせず、
bcdedit /set IncreaseUserVa 2560
と入力して「Enter」を押します。コピーする場合は「コマンドプロンプト」上で右クリック→「貼り付け」でOKです。
調べると、bcdedit /set IncreaseUserVa 3072と書いてあるサイトが殆どですが、 XPの時と同様の理由から3072を設定するのはオススメしません。 これには他にも理由がありますが、これも後述します。

・「コマンドプロンプト」を閉じて再起動します。これで設定が適用されます。

3) プログラムの設定
NEXONの禁止事項に抵触する恐れがあります。自己責任でお願いします。尤も、エラーの発生をユーザー側で対応しただけですので、問題は無いと思いますが。
・4GB Patchを以下のサイトからダウンロードします。
NTCore の画面右上、或いは中央最下部の Download the 4GB Patch を右クリックして「対象を保存」するなどしてダウンロードしてください。
ZIPファイルですが解凍しても1つのファイルしか出てきませんので、デスクトップ等でも良いと思います。

・4gb_patch.exeをInphaseNDX.EXEファイルに適応する。
4gb_patch.zipを解凍すると、4gb_patch.exeファイルが出てきます。
4gb_patch.exeを実行すると、パッチを当てるファイルを選択するように求められるので、InphaseNDX.EXEファイルを選択します。私の環境では、C:\Program Files\nexon\TalesWeaver\InphaseNDX.EXEですが、OSによって、またインストール時の設定によって人それぞれでしょう。場所が分からない方はエクスプローラーで「InphaseNDX.EXE」と検索してください。
Executable successfully patched!
と表示されたら成功です。
いつも通りにTWを公式ページより起動させてください。
また、4GB Patch は自動でバックアップを取ってくれます。InphaseNDX.EXE.backupというファイルがInphaseNDX.EXEと同じフォルダに作られますので、これをリネームすれば簡単に復元可能です。

4) メモリの解放
2) OSの設定変更でページングファイルの話をしました。中にはページングファイルを使用しない設定にしている人も居るのではないでしょうか。結論から言えば、ページングファイルを使用しないのはオススメしません。特に32bitOSでは、物理メモリ自体が非常に少ないためにページングファイルをうまく使用することで物理メモリの枯渇を防ぐことが出来ます。
実はTWは物理メモリの残量がある一定以下のときに最小化すると、メモリの解放(恐らくメモリがページングファイルへ移行される)が行われるようです。
クライアントを定期的に再起動するの邪魔くさいわ!って人は是非一度最小化してみてください。
私の環境では、4GB Patchを使用することで2GBものメモリを使用している状態も見られるようになりましたのでこのまま放っておけばまたランタイムエラーが発生すると思いますが、最小化を定期的にするだけで簡単にコントロールできるようになりました。
もちろん最小化後の処理が特別重くなったということは・・・少なくとも感じませんでした。
最小化前
最小化後
劇的にメモリ使用量が減っているのが見て取れるかと思います。

※これら一連の変更後に、以下のようなエラーが出るかも知れません。
サーフェスの生成に失敗しました
[DDERR_OUTOFVIDEOMEMORY]
TWはdirectXというOSのグラフィック描画システムを使用しています。このdirectXですが、TWではなくOSのシステムなのです。グラフィックボードを積んでいる方はグラフィックボードのメモリが使用されるので問題は無いのですが、オンボードのチップセットのみの場合にはOSのシステム領域のメモリが使用されるようです。OSのメモリ使用可能量が少ない場合にはこのエラーが出るようですので、 XPならば、
 /3GB /USERVA=2500
VISTA、7ならば、
bcdedit /set IncreaseUserVa 2560
の数値をより小さく設定しなおしてください。
これで改善できるかと思います。
尚、2100程度にまで減らしてもエラーが出る場合にはこの方法は使えないので、システムの復元等で上記の設定変更を全て元に戻してください。

0 件のコメント:

コメントを投稿