メモリ利用法を修正したHarkonnen氏の私家パッチがリリース

ホーム[H] > Sid Meier's Game > Civilization IV情報, Civ4技術・サポート情報 > メモリ利用法を修正したHarkonnen氏の私家パッチがリリース
【こんなのどうでしょう?】PlayOnline/FINAL FANTASY XI ヴァナ・ディール コレクション Windows版
ジャンル:
Sid Meier's Game
シリーズ:
Civilization IV情報, Civ4技術・サポート情報
種類:
データ/資料
最終更新:
2007年07月20日 17時02分
シリアル:
2005-12-09-08

<< Civ4 v1.09パッチが公式サイトに掲載 / D2D版のv1.09パッチももくじへ戻るCivilization IVのv1.52パッチがリリース >>
この章のはじめへ戻る

前に戻る
追記(2006-6-20)

Civ4 v1.52以降のバージョンには、Firaxis公式による同様の改善が取り込まれています。このパッチは時代遅れなので、v1.52以降の環境では決して使用しないでください

CivFanaticsのフォーラムにて、Harkonnen氏がCivilization IVメモリの利用法を改善するための非公式パッチを公開しています。ファイルサイズは48KBと非常に小さいもの。書庫に含まれる3つのファイルをCiv4のインストールされたフォルダ(Civilization4.exe がある場所)に置き、標準のDLLと置き換えるかたちで使用します。

スレッドが氏に対する感謝の声で溢れているところを見ると、これはかなりすごい効果があるみたい。以下、手順を説明してみます。

ファイルのうち、zlib1.dll は PatchByHarkonnen.dll をロードするためだけに使用されます。また、このライブラリは zlib.net の最新の zlib のソースからコンパイルされています。(訳注:じつは、Civ4に付属する zlib はバージョンが古く、いくつかの脆弱性が報告されている)

かならず zlib1.dll をダウンロードして入れ替える必要があることに注意してください。入れ替えない場合、PatchByHarkonnen.dllがロードされないので、メモリの使用法はまったく改善されません。

このパッチは、最低でもビデオメモリ128MB以上でハードウェアT&L機能をそなえたGeForce2以上のビデオカードを利用し、メインメモリ512MB以上の環境を主な対象としたものですが、それより低い環境でも試してみる価値はあるかもしれません──ビデオメモリ64MBのシステムで効果があったという報告もあります。

手順

パッチを利用するためには、次の手順にしたがってください。グラフィック関連のオプションを下げる手順も含まれていますが、これは必須ではありません。メモリ改善法が成功したあとなら、グラフィックオプションを元に戻してかまいません。

  1. Civilization4.iniを編集し、
    D3D9Query = 1
    DynamicAnimPaging = 0
    

    と設定する。このファイルが見つからない、編集するのが難しいという場合は、飛ばして手順2へ進んでもかまわない。

  2. ゲームを起動する。(ゲームが起動しない場合は手順8へ進む)
  3. ゲームをウィンドウモードにする(必須ではないが、初回起動時の安定動作のためにはこちらの方がおすすめ)
  4. アンチエイリアス (anti-aliasing) を 0 にする。(これも必須ではない)
  5. グラフィック関連のオプションをすべて Low にする。(これも必須ではない)
  6. 低解像度テクスチャ (Low resolution textures) のチェックを入れる。(これも必須ではない)
  7. グラフィックメニュー右側の効果やアニメーションに関しては、チェックを入れておいても構わない
  8. ゲームを終了する

ゲームが 'Initializing Python' フェイスでハングしてしまった場合、[Shift]を押しながらゲームを再起動して、ゲームのキャッシュファイルをクリアしてみてほしい。これはパッチではなくpython24.dllの問題だと思う。

上の手順をすべて踏んだら、サイズのおおきなセーブゲームをロードしてみてほしい。もしゲームがクラッシュしたか、(メインメニュー下の地球や太陽の)グラフィックが乱れた場合、Harkonnen.iniファイルで、

insane_mode = 0

と指定してもういちど試してみてほしい。

解説

ウィンドウモードは、ゲームが 'insane' モードでクラッシュを起こさない確率を上昇させる。

Antialiasing = 0 は劇的に速度を向上させる──このゲームは過剰なほど詳細なジオメトリを利用しており、3〜4ピクセルにひとつギザギザができるらしい。アンチエイリアス (AA) を 4 に設定すると、ビデオカードは実際には〜2048x2048の解像度で仕事をすることになる。遅くなるのも無理はない……。GeForce2のような古いカードはつねに解像度を増加させるが(これをスーパーサンプリングと呼ぶ)、あたらしいビデオカードはギザギザができた場所だけで解像度を増加させる。しかし、このゲームではギザギザが大量に発生するので……マルチサンプリングの場合でもスーパーサンプリングと同じことが起こってしまう。(訳注:ASCII 24によるスーパーサンプリングとマルチサンプリングの解説

textures quality はメインメニューの地球の姿以外に影響をあたえていないように見えるが、それでも〜50MB程度メモリが浮く。この設定は Low にしておくことをおすすめする。

アニメーションやエフェクトもパフォーマンスを減少させるが、これは見る価値がある。好みでオンにしてもよい。

上の手順すべてを踏んだ場合、極大サイズのインド西暦1961年のセーブゲームを、メモリ512MBと insane モードのパッチでプレイできた。(興味を持った人のために、http://sampo.ru/~headden/Harkonnen%20AD-1961.Civ4SavedGameにこのセーブファイルがある) メインメモリが1GBであるか、ビデオメモリが256MBである場合は、グラフィックのディテールをもっと上げても構わないだろう。

Harkonnen.iniの解説

ここまでの動作がうまくいったなら、Harkonnen.iniを編集して、ファイル内のコメントにしたがって 'vid_mem_size' を適切に設定してほしい。基本的に、ビデオメモリが256MBである場合は、この項目に200を設定する。

また、'insane_mode'のコメントもよく読んでおいてほしい。nVidiaと一部のATiのカードの利用者は、ここを 0 に設定する必要があるかもしれない。

Harkonnen.iniのコメント和訳

; 0/1 - このパッチ全体の効果をトグルする

patch_on = 1

; ビデオメモリの使用量を MB 単位で指定する。計算方法は次の通り:
;
; 1. グラフィック(特にテクスチャ)の設定が Low の場合
;    ビデオメモリ + AGPアパーチャサイズ (agp_apperture_size) - 100
;
; 2. グラフィック(特にテクスチャ)の設定が High の場合
;    ビデオメモリ + AGPアパーチャサイズ (agp_apperture_size) - 120
;
; この値を低く設定しすぎるとパフォーマンスが低下する。というのは、
;(Civ4のパフォーマンスとメモリに大きく影響をあたえるところの)ジオメ
; トリの計算にビデオメモリが使用されなくなるからだ。
;
; この値を高くしすぎると、ゲームがクラッシュするか速度が鈍化する可能性
; がある。というのは、ジオメトリ情報がビデオメモリからテクスチャを追い
; 出してしまうからだ。
;
; ビデオメモリ 128MB, ハードウェアT&L, テクスチャ Low の設定では、
; この値に80 を指定することを推奨する。同じ環境でテクスチャを High 設
; 定した場合は 64 を推奨する。
; (メモリ128MBのATi Radeon 9800 Proで試験した結果から)

vid_mem_usage = 80

; insane_mode を 1 に指定すると、'vid_mem_usage' 命令の仮想メモリの使
; 用量を減少させる。(仮想メモリはHDDのスワッピングの原因となる)これ
; は DirectX のドキュメントでは「作動しない」とされているアプローチだ
; が、WinXP SP2 Pro/ATi Radeon 9800 Pro (128MB), Catalyst 5.11 という
; 環境では動作を確認した。
;
; このパッチを当てたらゲームが起動しなくなった、あるいは大/極大マップ
; のスクロール時にゲームがクラッシュするようになったという場合は、この
; 値を 0 に 設定してほしい。
;
; また、この値を 1 に指定すると、[Alt + Tab]が効かなくなる場合があるこ
; とにも注意してほしい。とくに、ほかのゲームを起動した場合、フラッシュ
; プレイヤーを開いたままである場合、ゲームをフルスクリーンモードで起動
; した場合、この症状が発生する可能性が高い。ウィンドウモードでは大丈夫
; だったが、これはブラウザを含む大部分のプログラムをシャットダウンして
; おいた場合だった。'insane_mode = 1' の場合、フルスクリーンモードの
; [Alt + Tab]に失敗する可能性が高い。また、nVidiaのカードではテストし
; ていないことにも注意してほしい。

insane_mode = 1

メモリの使用量

上記の1961ADのセーブファイルを使用した場合:

  1. patch_on = 0 ── 〜700MB
  2. patch_on = 1, vid_mem_usage = 80, insane_mode = 0 ── 〜600MB
  3. patch_on = 1, vid_mem_usage = 80, insane_mode = 1 ── 〜520MB
  4. patch_on = 1, vid_mem_usage = 180, insane_mode = 1 ── 〜420MB

(最後の例は実際に試したことはない。ビデオメモリ256MBの環境にいる人は試してみるべきだろう。おそらくATiのカードでしかうまく働かないだろうが……)

追記

実は、このパッチは civilization4.exe と d3d9.dll の中間のレイヤとして動作する。つまり逆アセンブルの禁止にはあたらないのだ。このパッチに問題があるとしたら、ウィンドウのタイトルと一部のメッセージを書き換えることくらいだろう。実際の話、このパッチは普遍的と言ってもいいくらいだ。Sid Meier's Pirates!にも使えるかもしれない。

重要

ゲームがロード中にクラッシュし、PatchByHarkonnen.dllが原因であるというメッセージが表示された場合は、この投稿のアドバイスにしたがって、ATI Tray Toolsを切ってみてほしい。確信はないが、RivaTunerもパッチに悪い影響をあたえる可能性がある。これらのソフトウェアを完全にアンインストールする必要はなく、オフにするだけでよい。

改変されていないオリジナルの zlib1.dll と python24.dll は以下のURIから取得できる。



次へ進む
<< Civ4 v1.09パッチが公式サイトに掲載 / D2D版のv1.09パッチももくじへ戻るCivilization IVのv1.52パッチがリリース >>
この章のはじめへ戻る