Home > ゲーム > 32ビット

32ビット

  • Posted by: とみ~☆かいら
  • 2014年5月24日 12:57
  • ゲーム

2014-05-19_00002.jpgよくよく考えてみるとGTA4は32ビットアプリであるわけなので、Windowsの32ビットアプリの仕様上、アプリケーションに対して2GB以上のメモリ割り当てはできない(3GBスイッチという例外的な処理はあるけれども、あくまで例外)。

しかしながら、何故か画質設定画面ではVRAMとかも例えば自分のiMacならば4GB全て認識しているような挙動を示してはいるけれども、これまた何故か設定限界警告が常に出ていたり、性能は十分に足りているはずなのに長時間起動しているとテクスチャ剥がれや処理落ちによりゲームの続行が困難(或いは不可能)になったりと不思議な状態であった。

そこで、じゃあ32ビットアプリであるのならば、メインメモリでもVRAMでもアプリケーションが認識するメモリ領域を2GB以内に制限すればいいのではないか、という仮定に至る。

思えば、大昔のWin9x系OSなんかはOSそのものがそういう仕様で大容量メモリなんかに対応できなかったりしたので、その応用である。

GTA4は幸いにもコマンドラインである程度そういう挙動を制御することができるわけなので、早速活用させてもらう。

■よく言われている仕様
GTA4は最近のPCで起動すると何故かグラフィック設定の制限が掛かったりしてマトモに設定できないし、自分もその制限に引っかかっていたけれども、コマンドラインを活用することで強制的にその制限を外すことができるので、半ばそうやって起動することが定番になっている。

曰く、その設定としては

・-norestrictions(画質制限の解除)
・-nomemrestrict(メモリ使用制限の解除)

の2つは最低限必要とある。

■VRAMの制限
GTA4のWikiによると、availablevidmemのコマンドを使うとアプリが認識するVRAMのサイズを変更できるとある。

使い方としては「-availablevidmem 0.9」のように、引数にGB単位でVRAMのサイズを入力せよとなっているのだが、自分の環境の場合上記の通りそもそもこのコマンドが無くても4GBほぼフルに認識されてるような状態な上、Wikiの通りに入力しても何故かそのようには反映されない。

代わりにに適当な数字を入れたりするとVRAMの認識サイズが変わるので、コマンドライン解説の原文を改めて読んでみると「Percentage of available video memory」とあるので、どうもこれは「認識されるVRAMの割合を入力せよ」という方が正しいようである。

というわけで引数を0.5に設定するとめでたく認識サイズが約2GBほどとなり、同時に設定限界警告も消えた。

元々最高設定でも1.2GBほどしか使わないので、2GBしか認識していなくても問題は無いし、実際にはそれ以上のVRAMがあるわけなので、他への影響もない。たぶん。

また、VRAMが正常に(?)認識されるようになったせいか、-norestrictionsを使わなくてもグラフィック設定が自由にできるようになった。

やはり32ビットアプリケーションの制限を大幅に超えるVRAMが搭載されていることで、アプリケーション側が間違って認識しているようだ。

だがまだ挙動は不安定だ。

追記:
VRAM容量が正しく認識できない環境でも-availablevidmemは役に立つ。

Inspiron 17 7000では、バニラ状態(というかENB無しの状態)だとVRAM容量が正しく認識されるのに、ENBを導入すると何故か250MB程度しかVRAMを認識しない。

この時に、-availablevidmemで認識させたい容量の倍率を入力する(この機種だとVRAMは2GBなので、大体80倍ほど)と、認識サイズが250×80で概ね2GB程度のサイズに修正される。

やはり-availablevidmemは(初期状態でゲームクライアントが認識している)VRAMサイズの倍率の方が正しいらしい。

■メインメモリ最適化
タスクマネージャでGTA4クライアントの挙動を観察していると、メインメモリはほぼ常時2GBいっぱいいっぱいを食っていってしまう。というのは前にも言ったけれども、やはりこれも何か変な気がするので最適化したい。

メインメモリ関連ではグラフィック設定制限を解除するために-nomemrestrictを適用しているが、このコマンドはメモリの使用制限を解除するコマンドとされているが、Win7 64bit@32GBメモリの環境では、これを使うことにより本来参照できるメモリ領域以上の部分を参照して、一種のオーバーフローバグのような挙動を示しているのではないか、と推測する。

また、恐らくメインメモリ関連のコマンドラインとしてはmemrestrictという項目も存在し、それでメインメモリの使用量を設定することもできるようなのだけれども、これに当てはめる引数が少々特殊だったので、公式らしい人が解説していた中での最大値である681574400を適用してみる。

すると、今まで2GBいっぱいいっぱいまで使っていたメインメモリの使用量が1.6GB前後まで低下した。

だが、それでも不安定な感じは消えなかったので、メインメモリ関連のコマンドラインそのものを削除してみると、今度はメインメモリが状況によって1.8~1.9GB前後で変化するようになり、負荷が少なそうな場面ではメモリ消費量が減少し、負荷が上がると増加するという、それなりに納得の行く挙動となった。

結局、メインメモリに関してはコマンドラインそのものを使わないのが今のところ一番効果が見られるようで、テクスチャ剥がれなどの挙動がかなり低減したように見える。

テクスチャ剥がれそのものはちょくちょく発生するけれども、テクスチャの再読み込みのような挙動がスムーズに行われるようになった感じで、今までだったら派手にテクスチャ剥がれが起こっていた状況を敢えて再現しても、剥がれたら剥がれっぱなしとか、隠れ家に戻ると異空間になっているとかは、今のところ発生していない。

■その他のコマンドライン
ほぼ有用な効果は見られなかった。

noprecacheなんかは如何にも良さそうな気がするけれども、どうもこれはテクスチャとかのデータを先読み(=Precache)するのではなく、逐次読み出しにするためのコマンドのようで、こういうテクスチャ剥がれなどが酷い環境下ではむしろ逆効果に近かった。

また、そもそも6年前のゲームであるので、コマンドラインの内容にも当時のグラボ向けの設定(今のグラボでは使えないものもあるらしい)が結構あるので、恐らくこの辺りはそもそもグラボ側が認識しないのだと思う。

特に酷かったのはno_3GBで、これを適用すると最初からテクスチャ剥がれが頻発するような状態になったりした。
コマンドラインの解説を読む限りでは3GBスイッチ関連のコマンドのようだけれども・・・。

***
個人的なhandling.datの覚え書き。

■Mass
Mass:
車重の設定値。単位はkg。

Drag Multiplier:
走行抵抗値。
4〜5前後などの比較的大きな数字が適用されているデフォ車から、一部のMODのようにほとんど0のような数字まで適用されている例もあるけれども、個人的にはあまり変化がある数字には思えない。

■Center of Mass
X軸:
左右の重心設定。0で中心。単位はm。
ほとんど弄ることはない。

Y軸:
前後の重心設定。0で中心。単位はm。
+側で前重心に、−側で後重心になる。
また、X・Y軸については重心を大きく移動させると、その重心の側に車体が傾く。

Z軸:
上下の重心設定。少々特殊。単位はm。
+側で重心が高く、-側で低くなる。
ただ、0は中心ではなく、基準点のように感じる。

従って、車によって設定はかなり異なるようで、重心設定が0~少々+側になっていても安定している車もあれば、少々-に振る程度では簡単に横転する車もある。

また、重心を低くするとロールやピッチング方向の挙動も減少していくが、下げ過ぎるとロール・ピッチングの挙動が逆になる。

■Transmission
Bias:
駆動配分。0~1の間で設定する。
0で後輪駆動、1で前輪駆動、0~1の間は4WDとなる。(0.5でトルク配分50:50)

Gears:
変速段数。
変速の演出に影響する他、加速力に影響する。変速段数が多いほど加速が良い。
MOD車で実車と同数に設定するのもオツなものだが、多段ミッションを再現しようとするとForceなどの値が低くても非常に加速力が高くなるので注意。
逆にCVT車や電気自動車などの再現で段数を「1」にすると発進加速が極端に悪くなる。

Force:
加速性能の基本値。高いほど加速が良い。
普通の乗用車で0.15前後・スーパーカーなどの超高性能車で0.3前後が多い。
加速性能はGearsやInertia、Velocityの影響も受けるので、走行性能はTransmissionの設定値全体で見る必要がある。

Inertia:
加速ゲイン設定。普通は1前後に設定されていることが多い。
高いほど加速ゲインが高くなる。変わったところではトランスミッションの変速スピードも変わる(1未満の値で顕著)。

Velocity:
最高速の基本値。単位はkm/hらしいがGearsやForce、Inertiaの設定次第ではVelocityで設定した速度以上の速度が出ることもある。加速力にも影響がある。
また、最高速自体はどんなに大きな数字を入力しても287kmまでしか出ないが、加速性能の設定値としてはそれ以上の数字も認識する模様。

■Suspension
Force:
バネの硬さ。高いほど硬い。
お好みに合わせてどうぞ。

Compression Damp:
ダンパーの縮み側(バウンス側)の減衰力。高いほど硬い。
こちらもお好みの合わせてどうぞ。
Damp系の項目は0にセットすると全く減衰しなくなる(揺れが止まらなくなる)。

Rebound Damp:
ダンパーの伸び側(リバウンド側)の減衰力。高いほど硬い。
基本的にはCompression Dampと同じ値程度を入力するが、フワフワした挙動が収まらない時・コーナリング時の姿勢を安定させたい時・欧州車的な路面に張り付くような動きを重視したい時はこの値を高くする。
逆に往年のアメ車的なフワフワした挙動を再現したいときはこの項目を低めにするとよい。

Upper Limit:
サスの縮み側のストローク量。単位はm。

Lower Limit:
サスの伸び側のストローク量。単位はm。
尚、サスストローク設定については車高の影響は受けないようだ。

Raise:
車高設定。単位はm。
0が基準値だがどういう風に見えるかは車のモデリング設定次第だったりする。
基本的には見た目が変わるのが主のように感じるが、車高が変化するとボディの接触判定も当然変わるので、下げ過ぎ・上げ過ぎでボディが地面や何かの障害物に接触するようになることはある。

Bias:
サスペンションレートの前後バランス。0.5が基準値(前後均等)。
0に近いほど後ろ側が硬くなり、1に近いほど前側が硬くなる。

また、これはバネレートのバランスのみが単純に変わっているような感じになるので、この値を大きく変えると前後に車体が傾く。
これを利用することで前後の重心設定を変更したことで傾いた車体の補正をすることができる。

■Traction
Traction Curve Min:
ハンドル舵角の最小値?

Traction Curve Max:
ハンドル舵角の最大値。単位はDegree?
小回りの利かない車はこの値を高めにすると良い。

Traction Curve Lateral:
横グリップの設定値。
海外Wikiの記述によるとスリップアングルの最適角度を設定する値であるとか。
下記のTraction Curve Longitudinalに対してこの値が高過ぎるとオーバーステアになる。また、横滑りしなくなる。

Traction Curve Longitudinal:
縦グリップの設定値。
上記のTraction Curve lateralに対してこの値が高過ぎるとアンダーステアになる。また、横滑りするような挙動になる。

Traction Spring Delta Max:

Traction Bias:
前後グリップバランスの設定値。
0.01で後輪重視(最大。0には設定できないらしい)、0.99で前輪重視(最大。1には設定できないらしい)。

Brake Force:
制動力の設定値。
あまりに高すぎるとABSフラグを使用しても有効に働かなくなるらしい。
Transmission項目のForceと同値程度が適切?

Brake Bias:
制動力の前後バランス。
0に近いほど後輪重視、1に近いほど前輪重視。

■Model Frag
ABS_STD:
ABSを標準装備します。
Brake Forceなどの設定次第では有効に働かない場合もある模様。

ABS_ALT_STD:
ABSを標準装備します。
ABS_STDとの差異は不明。

AXLE_F_MCPHERSON:
前輪を独立懸架サスペンションとして設定します。
以下、AXLE系のフラグは適用するとそれに合わせてサスペンションの挙動が変化する。
設定しない場合(デフォルト)はAXLE_F(R)_MCPHERSON相当?。

AXLE_R_MCPHERSON:
後輪を独立懸架サスペンションとして設定します。

AXLE_F_SOLID:
前輪を車軸懸架サスペンションとして設定します。
(一部のモデルに適用するとテクスチャの不具合が発生する場合あり)

AXLE_R_SOLID:
後輪を車軸懸架サスペンションとして設定します。
(一部のモデルに適用するとテクスチャの不具合が発生する場合あり)

Home > ゲーム > 32ビット

Tag Cloud
RSS
RSS表示パーツ
Links
Counter
Feeds

Return to page top