見出し画像

EverQuest: EQmightをセットアップする(セットアップ編2024)

前回までエミュレーションサーバの紹介、そのサーバのひとつであるEQ mightの紹介、番外編でEverquest(以下EQ)で遊ぶPCのセットアップ、そしてEQクライアントのセットアップと続いてきた。今回は第5回、EQエミュレーションサーバのひとつであるEQ mightのセットアップに関して書きたいと思う。

前回EQクライアントのセットアップが完了し、適当なサーバにログインするところまでできた。今回は、EQ might特有の設定と、キャラクター作成、Macroquestのインストールと設定、そして謹製ツールのE4のインストールと設定を行いたいと思う。キャラクターを作成すると簡単に書いたが、今日はそこで詰まりそうな気がするな。


サーバ特有のファイルをダウンロード

上記がEQ mightのウェブページで、そこからDiscordチャネルへのリンクがあるので入っておく。EQ mightのDiscordチャネルにserver-filesというチャネルがあるので、そこからサーバ関連のファイルをダウンロードする。

緑の人は管理人。昔のLazarusみたいにすごく反応がよい

ここにあるeqm_serverfiles.zipというのをダウンロードし、それをEQクライアントの下にコピーする。

ファイルの中身。呪文やアイテム、メッセージ等のデータなど

これでEQ might特有のファイルはコピーされた。このクライアントでは、他のサーバにログインするといろいろと不具合がでるかもしれないことに注意すること。他のサーバで遊ぶときは、前回までセットアップしたEQクライアントにそのサーバ特有のファイルをインストールする。

キャラクタの作成

では、キャラクターを作ってみよう。このあとMacroquestを入れるので、6acc作るか。EQのエミュレーションサーバは、実はここからゲームが始まっている。6人のキャラクターをどのようなクラス構成にするか、どの種族にするか、名前はなににするか。これを考えるだけで一日が終わる。実際にゲームをしなくとも遊べるのはロマサガとEQくらいじゃないだろうか。
名前はいわずもがなだが、クラス構成とそれに続く種族構成は非常に時間がかかる。オリジナルでは、基本的にグループというのは他人と組むものであり、その他人との組み合わせは当然自由が効くものではない。一期一会である。しかしその6人の組み合わせが自由にできるとなるとなかなか決まらない。タンクのヒール、グループのヒール、キュア、マナの管理、rampageの管理、ヘイト、DPS等々を考えると最強の組み合わせが存在しないからだ。LazarusやEQ mightのような複数アカウントを前提としたサーバはさらにシナジーがあるため、余計悩ましくなる。ここはじっくり悩んでゲームを楽しんでもらいたい。

一人目をつくる。今回は名前で悩まず

クラス構成は、とりあえずWAR, MNK, ROG, BRD, SHM, CLRとした。ひさしぶりの純粋なメレーグループである。序盤の慢性的なDPS不足、序盤から中盤にかけてWARのヘイト不足とCLRのマナ不足、そして中盤以降はrampageに泣くことになりそうだがメレー系では鉄板の構成だと思う。

キャラを6人分作ったので、次はマクロツールをいれていこう。ここからがこのエミュレーションサーバの最も重要な部分である。このマクロツールは、オリジナルのEQではルール違反だが、いくつかのEQエミュレーションサーバでは利用が許可されているものである。MacroQuestと呼ばれるもので、簡単に言えば、もともとEQについているマクロを拡張し、プログラミングできるツールである。ツールというより、EQ内に対して方策(コマンド)を人間によるキーボードやマウス入力以外で示すことができ、その結果を状態として得ることができる環境である。強化学習におけるOpenAIが作ったGymに非常に似たソフトウエアだ。ただGymよりずうっと歴史は古い。方策の指示と状態の取得は、未だに名前がわからない謎のプログラミング言語で記述することになる。最近はLuaやC#でも書けるようだ。個人的にはPythonをサポートしてもらえたらすごくいいのだが。

唐突な自分語り(飛ばしてください)

ここで突然自分語りをすることになって大変恐縮だが、ちょっと話をさせてほしい。私も最初は、他のプレイヤーと同じくMacroQuest上でキャラクターの動作を半自動化するマクロ集であるE3を使うユーザーのひとりだった。E3は非常にできの良いマクロだったが、使っていくうちにいろいろと不満が溜まっていき、マクロの構文を勉強しながら、いじっているうちにだんだんE3の原型を留めなくなり、箱根の旅館みたいになってきたため、スクラッチからE3から不要な機能を搭載せず使う機能だけを実装したマクロ集であるE4(自称)を作った。
E4は最適化と拡張を繰り返し、最終的にグループが全滅しないくらい十分強ければ、ボタンひとつで街からの移動、クエストの受注、ダンジョンの攻略(一人二人死んでも蘇生し続行する)、街への帰還、ゴミアイテムの販売と貴重なアイテムを倉庫キャラに渡し、次のダンジョンへ行くというのを全自動で実行できるところまで作った。ここまでくるとマクロツールを許容しているLazarusでも完全にルール違反で、Lazarusの経済をいともたやすく破壊するため、使い方をドキュメントには書かなかった。Lazarusの管理者は自動化に関してはそこそこ寛容だが、経済を破壊する行為を検知すると激しい追求と制裁が下る。途中からいかに機械的でなく、人間らしい動きをするかというところにプログラミングの注意を払った。ただ管理人と話をするたびに薄々気づいているんじゃないかとも感じた。まあ、私と私のツールを使っている眷属がサーバ内で最も金(とAA)があるからすぐわかるよね。私も最初はできたツールがあまりにも容易にゲーム内の通貨を稼ぐことができ、それに夢中になったが、途中からそれよりもEQでの自動化のプログラミングが面白くなってきてしまった。
ちょっと前に、私の仕事ではまったく有効に活用できないのにもかかわらず、奇特にも会社が大学の講師を招いて半年ちかく行う機械学習の講座を会社が費用持ちで受けさせてくれる機会をもうけてくれた。習ったことから深層強化学習で一応スーパーマリオをクリアできるくらいのものは作れるようになった。E4でもすべてを場合分けで作る原始的なやり方ではなく、AIに学習させてクリアさせたほうがずうっとスマートに決まっている。早速作ってみようかと思ったが、AIを勉強するためにはじめたPythonの勉強に始めたWizardryの開発が楽しくなってしまった。

MacroQuestのインストールと初期設定

話がながくなってしまった。普通にEQのエミュレーションサーバでマルチアカウントを動かす限りでは、この謎言語を使う必要はない。上でもちょっと書いたが、MacroQuest上で動作するマクロ集であるE3というものがあり、基本的にそれ用に設定をすれば、自分がメインで動かすアカウント以外はオリジナルのEQの傭兵のように動いてくれる。最初のインストールと設定はちょっと面倒くさいが、それが済めばあとはそのすさまじい恩恵に浴することができる。我慢してぜひ設定していただきたい。
また今日も話が長くなってしまったので、MacroQuestのインストールと自動ログインの設定までやろうと思う。
昔はベースのシステムはMacroQuest2だったが、今ではMQnextという同じ機能を提供するソフトウエアがオープンソースで作り直されている。更にいうと、E3が不満だという人は当然他にも居て、E3を作り直したもの、E3nextというものがある。この手の開発と議論はLazarusで活発に行われている。E4はE3nextとは全く関係ないものだが、そのベースシステムであるMQnextは使う。今回はLazarus向けに公開されているMQnextとE3nextのパッケージをダウンロードして、E3next以外の部分を使おうと思う。

上のgithubから、

右上の緑ボタンからdownload zipを選ぶ

こんな感じで最新版をダウンロードする。ファイルを適当なディレクトリに
解凍する。ファイル数がすごくあり解凍に時間がかかる。ほとんどのファイルはMQnext上でC#を使うためのファイルで今回の使い方では全く不要だ。ここから順を追って説明していく。今回のファイルを解凍したフォルダを便宜上\eqmmとする。また、EQクライアントをインストールした先を\eqmとする

1.mono関連のデカいファイルを消す

\eqmm\resources\mono以下を消す。これは使わないので消して構わない。E3nextを使うなら必要

2.ログイン時にE3nextを起動しないようにする

\eqmm\config\ingame.cfgをメモ帳であけると、/mono e3と書いてあるが、それを消して空行にして保存しておく。ここはあとでE4用に変更予定

3.MacroQuest.iniを修正し、余計なプラグインの起動を抑止する

Macroquestは謎言語によるマクロだけでなく、外部モジュールによっても拡張ができるようになっている。ユーザーが作ったモジュールがたくさんあり、E3nextもE4もそれを利用している。他にもMacroQuest.iniには設定するところがたくさんあり、慣れてきたら自分でいろいろいじると面白いかもしれない。ただ、デフォルトでは余計なプラグインが多いため、起動は抑止したい。私の設定をはっておく。
この中でE3nextを使わないなら、mq2monoは0にしたほうがいいと思う。あと[Filter]の部分がmana stoneのスパムを消すようにLazarus向けになりすぎているため、この辺は修正してもいいと思う。今回は最低限の設定だけ書いておく。

[Plugins]
mq2autologin=1
mq2bzsrch=0
mq2chatwnd=1
mq2custombinds=1
mq2eqbugfix=1
mq2itemdisplay=1
mq2labels=1
mq2lua=0
mq2map=1
mq2aaspend=0
mq2cast=1
MQ2Events=0
MQ2TargetInfo=0
mq2netbots=1
mq2nav=1
mq2moveutils=1
mq2hud=1
mq2eqbc=1
MQ2Exchange=1
mq2advpath=1
mq2linkdb=1
mq2xtarinfo=0
mq2groupinfo=0
mq2dannet=1
mq2cpuload=0
mq2collections=1
MQ2Twist=1
mq2hudmove=0
mq2rand=0
mq2mono=0
MQ2ConstantAffinity=1

4.MQ2Autologin.iniを修正し、自動ログインを有効にする

ここは、みんな一度はひっかかるところだ。なかなか設定が難しいと思う。ただ、これが設定できないと毎回ログインパスワードの入力とサーバ選択、キャラクター選択が必要になって死ぬ。ここの設定さえ済めば、毎回ダブルクリック一回で全員ログインする。設定は\eqmm\config\以下にあるMQ2Autologin.iniだ。以下を参考にして書いてほしい。

[Settings]
DefaultEQPath=c:\eqm
UseStationNamesInsteadOfSessions=1
KickActiveCharacter=1
KickActiveTrader=1
Debug=0
UseAuth=0
UseMQ2Login=0
NotifyOnServerUP=0
CharSelectDelay=3
EnableCustomClientIni=0

[Servers]
;EQ Might=EQ Might
EQ Might=[[R] ] EQ Might

; 一人目。xxxxxxにアカウント名を設定。yyyyyyにそのパスワードを設定。zzzzzzにログインしたいキャラクター名を指定
[xxxxxx]
Password=yyyyyy
Server=EQ Might
Character=zzzzzz

; 二人目。以降は同じようにエントリを追加
[aaaaaa]
Password=bbbbbb
Server=EQ Might
Character=cccccc

5.同時にEQを起動しログインするバッチファイルを作る

MQnextの起動と、各クライアント間で通信するサーバソフトであるeqbcsと、各クライアントを起動するというバッチファイルを作る。EQ起動時はこのバッチファイルを実行するようにする。

@echo off
rem MacroQuestの起動
start /d "c:\eqmm\" c:\eqmm\MacroQuest.exe
rem eqbcsの起動。二重起動を防止する
tasklist /nh /fi "WINDOWTITLE eq server" | find /i "eqbcs.exe" > nul ||(start "server" /d "c:\eqmm\" "c:\eqmm\eqbcs.exe")

timeout /t 2

rem 各キャラクターの起動。各行のzzzzzzにキャラクター名、xxxxxxにログイン名を設定する
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)
tasklist /nh /fi "WINDOWTITLE eq zzzzzz" | find /i "eqgame.exe" > nul ||(start "zzzzzz" /d "c:\eqm" "c:\eqm\eqgame.exe" patchme /Login:xxxxxx) && (timeout /t 4)

timeout /t 16

rem 各CPUにEQクライアントを割り当てる設定。YY部分にCPUコア数の二乗-1を設定する。例えば、コア数が8であれば、8*8-1=63。コア数が4であれば4*4-1=15。コア数が16であれば、16*16-1=255
powershell -NoProfile -ExecutionPolicy unrestricted "$process=GET-PROCESS eqgame; foreach ($i in $process) {$i.ProcessorAffinity=YY}"

適当にeq.batとでもつけて保存して、起動すればOK。うまく設定されていれば、自動的にログインする。最後のpowershellの部分は、あってもなくてもいいが、ちゃんとコアごとにEQのクライアントを割り当ててくれるので、全体的に重くならなくなる。これのお陰でCPUコアがたくさんあるPCが欲しくなる。

6.ちょっとした最適化

では、早速batファイルを実行してみよう。

うまく行った。最新のMQnextでも問題なくログインできるな。機能上問題ないが、PCが悲鳴をあげている。

こいつはやばい

1000円のPCだとCPU、メモリともに非常に厳しい。メモリは読み込むモデルを修正する必要がある。CPUに関しては、表にでている画面以外のフレームレートを最低まで下げてしまえば問題なくなると思う。重いので、1アカウント以外全部落として設定することにする。設定方法は、EQボタンを押し、

MacroQuest Settingsという画面がでるので、そこでFrame Limiterを選択する。

上記のようにEnable frame limiting when in the basckgroudを有効にする。これで、バックグラウンドのEQの描画間隔を1秒に一回に変更する。あとついでに、ビデオの設定も以下に変更しておいた。

影などいらぬ

この辺の設定は、PCの性能が十分高ければ不要だと思う。今回私は1000円PCでためしているのでこの辺の施策が必要になった。

実際はCPUは20-30%程度

CPUが劇的に軽くなった。メモリも旧モデルにしなくてもなんかギリギリ大丈夫っぽい。EQはCPUじゃなくてメモリなのだろうか。メモリに関しては、ゾーン内の読み込みモデルがデフォルトだと凄まじく多く、PoP世代ではほぼ使わないモデルも読んでしまっているところに問題があると思う。ここはあとで削減版に置き換える。

とりあえず全員そろった

7.EQBCSの設定を行う

EQBCS(EverQuest Broad Cast Server)は各クライアント同士で通信をするためのソフトウエアだ。プロトコルはIRCっぽい。これはE3では必須、E4ではユーザーからの指示を通知するときに使っている。初期状態では接続していないので、以下のおまじないを各キャラクターのEQのメインチャットあたりでうちこむ

/bccmd connect 127.0.0.1

これ、EQBCSサーバを他のPCで動かしている場合はそのIPを指定するが、今回は一台のPCで動かしているので、上のコマンドを各キャラクターで一度入力しておけば次回から自動的に接続する。

接続がうまくいった例

全員分接続できたら、以下のコマンドを実行してちゃんと動いているか確認してみよう。

/bcaa //exit

これで全員クライアントが落ちればMQnextもEQBCSも動作していることになる。

最後にEQBCSサーバの画面だけ残ればOK

さて、では今回はここまでにしよう。次回は、MacroQuestの上で動くマクロ集、謹製のE4の設定に関して説明しようと思う。


この記事が気に入ったらサポートをしてみませんか?