エルソード ラグ改善他まとめ 2020 7.14

はじめにお読みください

本件は100%改善可能ではありません、暫定対応となります。
ゲームのラグに関しては個人環境から、ゲームサーバ環境まで様々な要因が考えられるため、これをやったからと改善があるとは断言できないことを了承の上お願いします。

また本件はレジストリ操作を含む作業のため、十分に確認の上お願いします。
バックアップなど必要に応じて作業してください。

なお、大変申し訳ありませんがこの一連の内容を実行した際に起きるトラブルなどは
すべて自己責任になります。筆者は対応できないことをあらかじめご了承下さい。

XIGNCODE3のみを再インストール

本ゲームガードは、ゲーム本体をアンインストールすれば自動的に消える仕様ですが
稀にこちらだけが残るというバグが公式より案内があります。
この状態でゲームを続けていった場合不具合を増長しかねないため、
一新することで改善を試みるものである。

  1. スタートバーを右クリックして、ファイル名を指定して実行

  2. regeditと入力

  3. HKEY_LOCAL_MACHINE
    system
    controlset001
    Services
    とフォルダマークをクリックして辿ってください。

  4. Xhunter1 をフォルダごと削除
    Servicesの中の一番下のほうにいるはずです。

  5. エルソードクライアントが格納されているKOGフォルダより
    xigncodeフォルダを削除
    (移管前クライアントからの継続者は名前が違う可能性あり)

  6. PCを再起動

  7. エルソード公式より、エルソードを立ち上げる
    この時、KEのイラストと共にXIGNCODEのランチャーも小さく出るが
    そのものが入っていないときは、このランチャーがやや時間かかる

  8. 通常通り起動成功すればOK

メモ
筆者はこれだけで、改善されたが元々ゲームガードエラーが
応答ちゃんより多く出る環境のため、元から不具合があった可能性は否めない。

【追記】
レジストリ操作を不要にするため、開発元からアンインストーラーが配布されています。
https://wellbia.com/faq/index_jp.html

筆者未テストにつき、上記工程と同じように消せるかは不明です。

優先度の変更(手動)

アプリケーションを実行するにあたって使われるメモリに優先度をつけることにより
よりパフォーマンスを上げるために行われる。
本件の場合はエルソードそのものを優先度を上げ、XIGNCODEの優先度を下げることにより、ゲームへのパフォーマンスを上げつつ、ゲームガードによる影響度を下げてラグ改善を試みる。

  1. エルソードを起動した状態でタスクマネージャーを開く
  2. 詳細タブ
  3. xxd-0.xemを右クリック→優先度の調整→低
  4. x2.exeを右クリック→優先度の調整→高

このままエルソードをプレイすれば反映されています。
またこの設定は保持されず、エルソードを落とすとリセットされます。
そのため、これで改善があって恒常化したい場合は次の工程をお願いします。

様子見したい人は、エルソードを通常のままでゲームガードを下げてもいいかも。

優先度の変更(自動)

windows標準のタスクマネージャーの拡張機能であるPrioを使います。

https://www.prnwatch.com/prio/
上記からダウンロードし、インストールしてください。
無償アプリケーションで料金はかかりませんが英語アナウンスのため
インストール作業は全て英語になります。nextボタン連打でよいです。
(OSの場所がCじゃないとかの場合はファイルパスが違う可能性はあります)

  1. 手動変更と同様にエルソードを立ち上げ、タスクマネージャーの詳細タブ
  2. xxd-0.xemを右クリック→Set CPU priorty
     新しい項目が出てるので、そちらを低にする。
  3. sava priorityにチェック(レ点が出てればOK)
  4. x2.exeを右クリック→Set CPU priorty
    同様に、新しい項目名が出てるので高にする。
  5. sava priorityにチェック(レ点が出てればOK)

ネットワークチューニングの紹介

こちらの作業は、古いOS(XP)時代にオンゲを少しでも快適にしたいという人達が
行った作業の一部になります。現行環境でこれを行ったとしてもよくなったかどうかは
不明瞭すぎて調査しきれていません。筆者は面倒なのでいの一番に設定してエルソ入れてますが、応答の頻度は非常に少なく、上記のラグ改善も大幅に改善されておりその背景にはこういうことしてますよという紹介になります。
一応当時の古い資料では、これらの設定はPCへの負荷が強まるという報告が多く
実行する際は必ずおかしな様子がないか確認をしてください。
autotuninglevelを上げる
TcpAckFrequency(以下TAF)を設定する
この二つを紹介しておきます。

autotuninglevelの設定変更

なんぞや、と思われると思いますがざっくりふんわり説明すると
ネットの通信量はPC本体に影響がないように自動的にOSで調整しています。
このレベルを引き上げることにより、たくさんの情報を受信できるようにします。
要はスピードテストしたときに出る数字はデフォルトよりレベル上げたほうが出るようになります(回線契約状況によります)

  1. スタートメニュー→すべてのアプリ→Windowsのシステムツールより
     コマンドプロンプトを管理者権限で実行

  2. netsh interface tcp show global
    すると、現在の状況が表示されます。
    受信ウインドウ自動チューニングレベルがnomalになってるかとおもいます。

  3. netsh interface tcp set global autotuninglevel=(設定値)
    設定値はいくつかありますが、筆者は
    highlyrestricted(既定値より受信ウインドウを若干拡大)
    を使っています。要はちょっとだけ、受信量増やせるよ!という意味合いです。

netsh interface tcp set global autotuninglevel=highlyrestricted

と入力すればいいです。
再度2をやって、値が変わっていたらOKです。PC再起動して通常通りどうぞ。

参考URL
https://kotonova.com/1443

設定値はほかにもありますので、上記を参照ください。

TcpAckFrequency(以下TAF)を設定する

こちらもなんぞや、と思われますが
ネトゲだったらサーバからデータをもらったのを「もらったよー!」とn回ごとに報告するんですね。

初期設定ではnが「2」になっています。
つまり、サーバからデータを2個もらうまで「2個めまだかなー」と200ミリ秒待ってるんです。この待ち時間の間、通信処理は止まってます。
TAF設定を変更することで、このnを「1(=毎回)」に変更できます。
そうすると毎回「もらったよー!」とすぐ報告するので「2個めまだかな」がなくなるわけですね。

メリットはポーションの反映やキーを押したときの反応速度などがよくなります。
デメリットは、絶え間なく通信を行うため通信機器・PC本体への負荷が強まります。

参考動画
https://nico.ms/sm5297908

こちらはレジストリの値を新設するので間違いのないようにお願いします。

  1. コマンドプロンプト起動→ipconfig
    表示されるIpv4アドレス(192ほにゃららみたいなの)を控えておく

  2. ファイル名を指定して実行→regedit
    HKEY_LOCAL_MACHINE
    SYSTEM
    CurrentControlSet
    Services
    Tcpip
    Parameters
    Interfaces
    とフォルダマークを開いてたどってください。

  3. Interfacesの中にあるLANアダプターを特定
    Interfacesをクリックして選択し、検索窓(Ctrl+F)から
    1の工程で出したIPアドレスを入力し、データのみをチェック
     DhcpIPAddress
     IPAddress

    どちらかが出てくると思います。この二つのうちどちらかが格納されている
    英数字の羅列の名前のフォルダがLANアダプターのレジストリになります。
    Interfacesの中にそいつがいることを確認してください。

  4. 特定したフォルダ名っぽいのを右クリック→新規(N)→DWORD(32ビット)値(D)

  5. 右側に「新しい値 #1」ができるので、名前を「TcpAckFrequency」に変更

  6. 名前を変更した値をダブルクリックで編集窓を開き
     値のデータを1 16進数にチェック

以上となります。PC再起動して通常通り使用してください。

ハイパーゆとり用

上記二つのネットワークチューニングに関し、レジストリ操作なんてやってられるか!!!というワガママ向けに、アプリケーションで設定できるものがあります。

kukutune - ハイパーゆとり用MTU/TAF/RWIN変更ツール
https://magical.kuku.lu/?num=1155

TAFはこちらからワンボタンで設定できます。
MTU RWINはざっくり言えば昔から手動で個別に変更する値でしたが
後にwin7からまとめて変更できるようなコマンドを実装したのがnetshになります。

ハイパーゆとり用ツールでオススメの変更値が書かれていますが
上記のnetshコマンドと同等のものだと思います。

思うだけで確証がないのは、netshもMTU/RWINの変更も時代背景が古く
WIN10と今の高速化されたネット環境、性能のよいPCパーツのおかげで
よほどのプロじゃない限り違いが分からないっぽいです。筆者もやってるけど分かりません。また2019年末には、マイクロソフトから近いうちにこの機能も終了予定が公表されています。

TAFに関しては、今の時代でもエルソや現在サービス続いてるほかのゲームでも
違いが分かる、という人の声はあります。

badmoduleinfoエラー 7.14追加

エルソがスッと落ちず、短い時間のフリーズの後に落ちる場合、
イベントビューワーを確認すると落ちた時刻にbadmoduleinfoでエラーがが
出てることがある。この場合、XIGNCODE3のエラーも同時に出る。

多くのオンラインゲームでこの現象は発生するが、基本的にはWin10によるもののようであり、多くは解決策が曖昧ではっきりとしたものはないが総じて4つの原因がある模様。

①OSアップデート
 古いOS更新のままであったり、更新すると出てきたり治ったりする。

②グラフィックボードの更新
 古いもののままだと、出てくる。更新すると治ったり再発したり。
 なんでって話だけど、グラボもOSも連携して動くものなので、基本的には
 更新に関してはマメにやりつつも、ビルド番号は控えておくのがベター

③フルスクリーン最適化
Win10から搭載された謎機能。フルスクプレイ派は確認しておきたい。
x2.exeのプロパティの互換性の中にフルスクリーン最適化を無効化するがあるので
チェックを入れる。外しておくと、OS制御となるらしいがメモリ食ったり変な挙動になるゲームが一部存在する・・・?

④仮想メモリの自動制御
正直言うと、なんでこれがエラーに繋がるのかよく分からない。
結局のところOS絡みであるのは間違いないのだが、仮想でもなんでもメモリのフルパワーを全てOSに食われないようにカスタムで余力残してやればいい理論のようで。

チェックを外してカスタムに値を入れるのだが
どんな値を入れろっていうんだって話だが、PC個体値によるので正確な数字は
導けない・・・。

筆者は最大値から少し少なめの数字を初期と最大に入れた。
挙動的には問題はない・・・。

最後に

誤字や分かりにくい説明部分があればごめんなさい。

筆者連絡先 @kyouino_els 
ご意見感想、ほかにいいアイデアなどあればお願いします( ˘ω˘ )

END

Close