ArcheAge OBT

ArcheAgeのオープンベータテストをプレイ中です。
最初は、Geneサーバでプレイしていましたが、プレイヤー数が多すぎてクエストがすすめられないと判断しLv5くらいで移動しました。
現在は、Lusiusサーバです。
Lusiusサーバもプレイヤー数は多いですが、Geneほどではないようです。
ゲームの性質からも人数が少なすぎてもメリットはないのでLusiusでちょうどいいかと思っています。

ここからはゲームプレイに使用しているPCで発生している問題についてです。
 

事象

重くてPCの操作ができなくなる

CBTのころにはあまり感じなかった事ですが、OBTでプレイしていると画面表示がカクカクになったり止まってしまったりします。
あたりを見渡したり、移動したり何か操作をしようとすると、その都度、画面が固まりストレスがたまります。
この症状は、特に、住宅地や村で発生し、その間、ハードディスクのアクセスランプが点滅ではなくずっと点灯です。
このアクセスランプからディスクアクセスが過剰に発生していることはわかります。

CBTおよびOBTの数日間は全く問題はありませんでした。
OBT初日のGeneでプレイしていてもそういった症状は全くなく快適で、キャラクター選択画面後のローディング画面が非常に遅く感じたくらいです。

しかし、今ではゲーム内でテレポートしたあともローディング画面と同じく表示が遅い状況です。
さらに、画面が表示されていても全く操作ができません。
何か操作するたびに画面が停止してマウスカーソルの表示さえもどこかに消えてしまうほどです。
ArcheAgeだけでなくPC自体が重くなっている状態なので、どうすることもできません。

症状は、スラッシングが発生してディスクアクセスが過剰になっている状態に似ています。
 

原因究明

問題解決には、問題の原因を究明しなくてはなりません。
それにはまず、いつなにをしてそうなったのかを考えなければなりませんが、正確にはおぼえていません。
OBTが開始されて最初のメンテナンス後の7月17日くらいからだと思いますが、何かをした記憶はありません。

ArcheAgeはクエストをどんどん進めていくだけでレベルが上がっていき、行動範囲も広がっていきます。
そのため、OBT初期はクエストをすすめてマップの先に進むことを優先していたので、テレポートで戻るといったことはほとんどしていませんでした。
かかしや住宅を建て拠点となる場所ができ、テレポートを使う頻度が増えた頃に上記の症状を自覚するようになりました。
それまでの間、PCの設定をかえたり、何かアプリケーションを導入したりもしていません。
やったことといえば、Windows UpdateとArcheAgeのアップデートくらいです。
ArcheAgeのアップデートは、OBT開始時と正式サービス開始時、定期もしくは臨時メンテナンス終了後の接続時に行われました。
 

ハードフォールトが多発

リソースモニターで確認すると、ArcheAge.exeでハードフォールトが多発しています。
ハードフォールト自体が発生するのは正常な動作ですが、多すぎるのはパフォーマンスの低下になります。
リソースモニターのメモリ項目にあるハードフォールトが何を表すかというと、仮想記憶におけるページ・フォールト(スワップ・アウトや未割り当てのページへのアクセス)の回数です。

ArcheAge.exeは、毎分4~6千回発生していました。
さらに、上記症状が発生した瞬間は、毎秒100回以上発生しているようでした。(※グラフの値は振り切った状態)
この値が多い場合、メモリ(RAM)不足を疑うことになるのですが、このPCは64bitOSで6GBメモリ(RAM)を搭載しています。
本当にメモリ不足なのだろうか?という疑問があります。

そもそもアプリケーションは物理メモリ(RAM)を直接使用せず、仮想メモリを使用します。
64BitクライアントOSの場合、ユーザモードは8TBですが、32bitプログラムの場合は通常2GBです。
ゲームタイトルのほとんどは32bitアドレッシングを使っているのでArcheAgeの仮想メモリ上限も2GBとなるはずです。

ArcheAge.exeで仮想メモリを2GBまで使用できるわけですが、実際にプログラムを処理するには物理メモリ(RAM)にプログラムをロードしなくてはいけません。
物理メモリは6GB搭載していますが、周辺装置に搭載のメモリやシステムなどで使用される分もあるため、プログラムで使用できるのは5GB以下だと思います。
どのプログラムでどれくらいの物理メモリが使用されるかは、OSのメモリマネージャが担っています。
OSが異なればメモリーマネージャの仕様もことなります。

ハードフォールトが多発しているということは、物理メモリへのロードやアンロードが行われ、HDD上のページファイル(pagefile.sys)へのアクセスが増加しているということになります。

リソースモニターを使ってディスクアクセスをモニターしてみると、プロセス名「ArcheAge.exe」による「game_pak」へのアクセスと「pagefile.sys」へのアクセスが急激に増加していました。
この「game_pak」は、ファイルサイズが約21GBあり、ゲームワールドを構成するデータがまとめられたファイルだと思います。

事象が発生している間、PC内部では、プロセス名「ArcheAge.exe」により「game_pak」ファイルと「pagefile.sys」ファイルへのアクセスが増加し、2つのファイルが存在するHDDへのアクセス集中により、ゲーム画面の再読み込みが円滑に行われていないともとれます。


それを回避するには「ハードフォールト回数を減らす」もしくは「ページファイルのアクセス速度を向上する」ことかと考えました。
 

ハードフォールト回数を減らす

メモリを増設してメモリ容量を増加させる方法とメモリを使用するプロセス数を減らすことで利用可能量を増加させる方法とが考えられます。
一般的な解決方法としては、物理メモリ(メモリ)を増設することになりますが、その前に、不要なプロセスでメモリが占有されていないかを確認します。

不要なプロセスの代表例がウィルスやメーカー製PCやWindowsOSの特徴でもある使わない機能(常駐プログラム)です。
これら不要なプロセスを停止することで、必要なプロセス(今回の場合はArcheage.exe)に物理メモリを占有させることが可能になり増設と同じ効果が期待できます。

WindowsOSが標準で実行するサービスや自動タスクで不要なものを停止したり、メーカ製PCであればさらにメーカ独自のサービスや自動タスクが登録されていたりしますのでそれらも精査します。
代表的な自動タスクには、デフラグツールの定期実行やDefenderの定期実行があります。
その他、Windows UpdateやMicrosoft Updateも定期的に実行される設定になっている場合があります。

最近のOSの厄介なのはメモリーマネージャの役割が複雑になってきており、prefetchやsuperfetchといった機能とも関係しています。
これらの機能の恩恵で利用者にあったメモリの使い方をしているので利用可能メモリ(空きメモリサイズ)が少ないからといってメモリ不足とはいえなくなりました。
メモリリソースを余しているよりも全体を効率よく使用したほうがメリットが大きいという考えなのだと思います。

superfetchの機能でアプリケーションの起動時間が短縮できたりするのですが、一方で物理メモリやページファイルを占有することになりかねません。
Vista以降で採用されているスリープモードにしても、superfetchと関係があるため、私の場合は、スリープモードを使わずシャットダウンをしていますのでSuperfetchなどは必要ないと判断して無効にしています。
 

ページファイルのアクセス速度を向上する

現在、HDD2台でRaid0(ストライピング)構成にしています。
ページファイルはOS標準のままでシステムドライブ(C:)に作成されています。
複数のHDDでnonRaid構成であれば、ページファイルをシステムドライブ以外に移動するのも効果があると思いますが、RAID構成ではあまり意味がないのかと思います。
とりあえず、ページファイルの断片化を解消するため、一旦、ページファイルを使用しないようにしてデフラグを実行し、再度、ページファイルを設定しました。
デフラグに使用したのはフリーの「UltraDefragポータブル版」です。このソフトウェアはRAIDにも対応しています。

ページファイル以外にArcheAge.exeはゲームデータの読み込みのためにHDDにアクセスしています。
それが「game_pak」です。
オンラインゲームに限らずクライアントPCに導入するゲームプログラムは改ざんなどができないように暗号化されたり、ファイルサイズを小さくするために圧縮されていたりします。
そのためゲームデータの読み込みの際にはディスクアクセス以外に伸張や復号のために計算処理がおこなわれることになります。
リネージュ2やPandorasagaなどのゲームデータは用途別に複数のファイルに分割されていましたが、ArcheAgeは1ファイルに集約されているためgame_pakファイルのサイズは約21GBに達しています。
この大きなサイズのファイルにアクセスし、該当するデータを読み取るにも多くのメモリを使用することになるでしょうから、PCには厳しい環境であるといえると思います。
※バグなどでゲームプログラムのみにパッチをあてるならそれぞれ個別のファイルを置き換えるだけなのでファイルサイズは小さいですが、ゲームデータの修正を含むパッチの場合はこのgame_pakを置き換えるため、毎回、約21GBのファイルを置き換えることになり、ランチャーでの更新作業はダウンロード時間を含むとながくなるようです。
 

効果の確認

試しにArcheAgeをプレイしてみました。
結果、最初はさくさくですが、時間が経過してテレポートやマップ間移動が増えてくると、また同じ症状が発生し、改善は確認できませんでした。

そうなると、HDDをSSDにしてみるのもありかと考えました。
ただ、SSDに代えても効果がなかったら無駄な投資になります。
このPCはP965チップセットマザーなのでSATA3.0Gですので、SATA6.0G+最近の高速SSDの恩恵は望めません。
 

PC3台の比較

3台のPCにArcheAgeを導入して比較してみました。
比較に使ったPCは以下の通りです。
 

  PC1 PC2 PC3
OS Vista 64bit SP2 Windows 8 Pro 64bit Windows 8 64bit
マザーボード P965 COMMANDO P8Z77-M PRO P8H77-V
CPU Core2Duo E8500 Corei5 3570k Corei5 3570K
メモリ 6GB(2GBx2+1GBx2) 16GB(8GBx2) 8GB(4GBx2)
グラフィック GF8800GT O.C. Intel Hd Graphics 4000(CPU内蔵) Intel Hd Graphics 4000(CPU内蔵)
ストレージ HDD1TB RAID0(SATA3.0G 500GBx2) HDD4TB Windows8拡張域(SATA3.0G 1TBx4 ) SSD180GB(SATA6.0G Intel 335シリーズ)

PC1が問題が発生しているPCです。
 

起動とゲームワールド表示

ブラウザーの「GameStart」ボタンをクリックするとランチャーが起動します。
ランチャー上で「ゲームスタート」をクリックするとHackShieldが起動した後、最初に時間がかかるのが以下の画面です。


「世界が~分裂した。」までの文字がグレイから白く変化することで進捗を表しています。
PC1とPC2は、途中5分割されたように止まりますが、PC3は3分割されたようイメージで途中の停止時間もほぼなくスムーズに進行します。

初回起動時のみフルスクリーンでムービーが再生されます。
「世界が~分裂した。」を再現した内容のムービです。
ムービが終わるとサーバ選択画面→キャラクタ選択画面へと進みます。

※このムービで恐らく推奨の画面設定が決定されるのだと思われます。
(C:\Users\「ログインユーザ名」\Documents\ArcheAge\system.cfgファイルが作成されるます)
※PC2のみ毎回ムービーが再生され、画面設定で変更した内容が反映されませんでした。system.cfgが作成されていなかったのでそれが原因だと思います。


キャラクター選択画面で「スタート」ボタンをクリックすると、以下のローディング画面になります。


この画面(以下ローディング画面)でPC1とPC2は進捗バーが0%、22%くらいと100%のあたりで停止し、PC3はいたってスムーズです。

ローディング画面のあとにゲームワールド内が表示されます。

PC1とPC2は画面表示のあとすぐにキャラクターを操作することができません。
PC3はすぐに操作が可能です。
このとき、PC3からPC1またはPC2のキャラクタをみていると、PC3の画面にPC1のキャラクタが表示されていてもPC1の画面はローディング画面のままです。

※PC2はPC1とも異なり、テクスチャーが異常な表示になっており、オブジェクトが真っ黒です。環境設定の画面設定を確認するとDirectX9が選択されていました。
また、「C:\Users\「ログインユーザ名」\Documents\ArcheAge\USER\shaders」以下には「D3D9」しか作成されていないことからも、DirectX D3D9で描画されているようでした。
Windows8はDirectX11、使用しているグラフィックチップのIntel HD Graphics 4000もDirectX11、グラフィックドライバもDirectX11対応であり、この部分ではPC3と全く同じであるにもかかわらず、DirectX9となってしまいます。
画面設定でDirectX11を選択してもなんら表示はかわらず(適用を押しても変化なしでshaders以下にはD3D11が作成されない)です。
※PC3であえて画面設定をDirectX9にすると、PC2と同じくテクスチャーが異常で操作ができないくらい重くなりますので、PC2が重い原因はDirectX9が選択されているためだと思われます。

 

プレイ中

PC1とPC3は、しばらくプレイしていても特に操作に影響のある遅延は発生しませんでした。
PC2は画面設定のDirectXがDirectX9が選択されてしまっており、テクスチャーが異常でオブジェクトが真っ黒に表示されかつ常時重い状態です。

しかし、PC1ではマップ間移動をしていくうちに画面がとまることがあります。
さらにテレポート後は起動時以上にローディング画面で時間がかかり、画面表示後も操作ができない状態が長時間続きます。
操作できるようになっても何かしようとするとすぐにまた画面がとまるため、あたりを見渡すことも移動もろくにできない状態です。

PC3はなんら変わりなく常にスムーズです。
画面が変わるときの再表示もストレスなく表示され、操作もすぐに可能です。
 

ゲーム内での影響

表示が遅い画面が固まる症状がどのような影響を及ぼすかを、実際にワーストケースのPC1とベストケースのPC3とで、別々のアカウントのキャラクターで同時にログインして確認してみました。
PC3はパートナーのPCなので、協力してもらいPTプレイしてみました。

たとえば、PC3のキャラクターの馬にPC1のキャラクターが同乗した場合、移動中はPC3の画面ではスムーズですが、PC1の画面では何度も画面がかたまったりローディング画面が表示されたりでした。
馬に乗っている場合はおいていかれるということはなく、画面操作ができるようになるとちゃんと現在のPC3のキャラクターと同じ場所にいました。
また、移動中にすれちがうキャラクターの表示はPC1ではタイトルとバーだけでキャラクター自体は表示されないことが多く、乗り物だけが表示されるのみでした。
クエストNPCのところでは、クエストマークの表示はキャラクターが表示された一番最後になるため、どこにNPCがいるのかがわからないといった状態です。

逆にして、PC1の馬にPC3のキャラクターが同乗してみました。
PC1で画面操作ができない状態では、PC3からは立ち止まって何もしていない状態に見えました。
これがもしPKに襲われた場合、PC1やPC2では相手がわからないまま、操作できたときには死んでいるということになりそうです。

次に、PC1のキャラクター単独で飛行船に搭乗してみました。
画面表示が止まる状態が発生していると、まず、飛行船がみえないことがあります。
飛行船がみえないと搭乗ができません。
ArcheAgeではエレベータがある場所で見えないことがあり、見えないとそのエレベータを利用することができません。
それと同じことになります。
仮に、飛行船がみえていて搭乗できたとしても、飛行船が移動中に画面表示がとまると、飛行船は先にすすんでいるけども自分は表示が止まった場所で何もしていない状態であるため、空中から落下してしまいます。
落下したところが海など水面でそれなりの深さがあればダメージはありませんが、そうでない場合は落下ダメージを受け最悪は即死してしまいます。

馬に騎乗する場合と飛行船に搭乗する場合の違いは、前者が「Gキー」や「Hキー」などキーを押して乗馬するのに対し後者は船上にキャラクターを移動するだけで搭乗する点です。
おそらくキーを押して搭乗するタイプは画面表示がとまっても搭乗したまま目的地に行くことができ、移動だけで搭乗するタイプは画面表示がとまるとおいていかれおろされてしまうのだと思います。
 

結論

今回の画面表示が固まる症状は、戦闘や飛行船などの乗り物を利用する際に致命的であることがわかりました。
PC1とPC2の症状がほぼ同じことからCPUやグラフィック性能さらにOSの問題ではないと判断しました。
※PC2はDirectXの選択が間違っているので別の要因の可能性あり

PC2とPC3を比較した場合、PC3のほうがスムーズであることから、物理メモリ不足が問題ではないと判断しました。
また、PC3だけがスムーズであるためストレージデバイスの差異すなわちSSDの影響が大きいと判断しました。
※PC3以外のPC1とPC2は健全な状態にない可能性もあります。

レジストリの肥大化を想定してレジストリクリーナを実行したり、ページファイルの断片化を想定してデフラグしたり、不要なプロセスを停止したり、フルスクリーンモードをウィンドウモードにしたり、画面サイズを小さくしたりなどなどしましたが、どれも効果はありませんでした。
リネージュ2では、時間が経つにつれ仮想メモリサイズは2GB付近まで増加していましたが、リソースモニターからArcheAge.exeでは1GB前後までしか増加していないように見えました。
仮にArcheAgeはハードフォールトが発生しやすいプログラムだとしても、ページファイルのアクセスが高速であれば回避できるのだと思います。
あと1点気になるのはクライアントプログラムのデータ量の多さです。
ダウンロードサイズから20GB以上あるようです。
画像表示には何をどこに表示するかはゲームサーバから受信されてくるとして、各グラフィックデータ自体はクライアントプログラムにあるのでそれを読み取る必要があります。
このデータを読み込む頻度と量が多いためにディスクアクセスが増大しているとも考えられます。
そうすると、ページファイルとクライアントプログラムへのアクセスを高速にすれば解決しそうですので、PC3のようにSATA6.0G+高速SSDという選択がベストなのかもしれません。

以下はPC1のリソースモニターの画像です。

リソースモニタ(ディスク)※画面硬直時


リソースモニタ(メモリ)※画面硬直時

 

対処

いまのところPTプレイが多いので、戦闘中に固まっても最悪の事態は回避できそうですし、P965チップセットにSSDを搭載してもその恩恵はわずかであるため、浮遊パーツを使っての補強にとどめることにしました。
とりあえずメモリが2GBと1GBのモジュールを使っているので2GBx4枚にし、HDDを1台追加しHDD3台のRAID0を構成して様子をみようと思います。
ついでに、P5E VM HDMIマザーが余っていたのでこちらに乗り換えて、今使っているCRTを液晶にすればHDMI1本で映像と音声が使えるのでデスク周辺の配線もすっきりします。

参考

多くの人がPCで何か問題が発生してから、自分のPCのことを調査すると思いますが、買ったときの状態でベンチマークテストなどの数値で測定したり同タイプの製品と比較しておけば、問題が発生したときの判断材料として有効利用できると思います。
監視で異常を検知するには、まず正常な状態を把握しておかなければできないことですし、性能監視というのも重要な事だと思います。

 

カテゴリ

その他