World of Warcraft(WoW)のエミュレーターサーバー(エミュ鯖)Arcemuを自宅サーバーにセットアップする方法
World of Wrcraftとは?
World of Warcraftは米Blizzard Entertainment社が開発し運営しているオンラインゲーム(MMORPG)です。
2010年時点で登録ユーザ数が1000万人を突破しており、「最多登録者数のMMORPG」として
ギネスブックに登録されています。「WoW」と略記されるのが一般的です。
日本では正式サービスが行われていないことと、ゲーム内の言語はすべて英語(日本人同士なら
日本語会話も可)のため、一般的に英語が苦手な日本人からは敬遠されているようです。
詳しくはこちら。
http://ja.wikipedia.org/wiki/World_of_Warcraft
公式サイトはこちら。
http://us.battle.net/wow/en/
Arcemuとは?
Arcemuとは、非公式のWoWエミュレーターサーバーです。
※※ご注意※※
Arcemuは非公式のサーバーソフトウェアです。
そのためBlizzard Entertainment社に対してArcemuに関する問い合わせは絶対行わないでください。
また、Arcemuの利用はあくまでも個人的な利用目的に留めてください。
(スキルや装備がどの程度の性能なのかを確かめたり、ボスの強さを確認したり、等)
特に、インターネット上に公開するようなことは絶対にしないでください。
公式サイトはこちら。
http://arcemu.org/
Wikiはこちら。
http://www.arcemu.org/wiki/Main_Page
サーバーの構築方法は上記Wikiに詳しく書いてあるのですが、
すべて英語な上、様々なケースについて記載されています。
本エントリでは、特定の構成に特化して簡潔に手順だけを説明したいと思います。
ただし、自分も完全に理解できていないところがあることと、
手順も確実に正しいという自信はないため、間違いがあれば指摘をお願いします。
マシン構成
サーバーOS | Linux(CentOS 5.9(64-bit)) |
サーバーホスト名 | cookie |
クライアントOS | WoWが動作する任意のWindows |
サーバーとクライアントは同一LAN内にあるものとします。
Linuxは「/etc/hosts」を、Windowsは「%SystemRoot%\system32\drivers\etc\hosts」を
編集して、cookieの名前解決ができるようにしておいてください。
クライアントは購入する等各自用意し、パッチ3.3.5まで当てておいてください。
サーバー側では、以下のようにMySQLをインストールしておいてください。
(自分はyumでインストールして、バージョンは5.0.95でした)
yum -y install mysql-server
文字コードの設定を行います。
vi /etc/my.cnf character-set-server = utf8 また以下があった場合は先頭に#を挿入して無効にしておく。 bind-address = 127.0.0.1
起動&自動起動設定
/etc/rc.d/init.d/mysqld start chkconfig mysqld on
初回起動後は、以下を実行してください。
MySQLのrootのパスワードを設定します。
このパスワードは必ず覚えておいてください。
sudo /bin/mysql_secure_installation
(1) ユーザーの作成
今回はarcemuというユーザーでサーバー構築・運用を行います。
以下のコマンドでユーザーを作成してください。
useradd -m -s /bin/bash arcemu
パスワード変更も忘れずに。
passwd arcemu
arcemuでsudoできるように、以下を実行してください。
visudo
一番下に以下を追加してください。
%arcemu ALL=(ALL) ALL
(2) ディレクトリの作成
ユーザーarcemuで作業してください。
以下のディレクトリを実行してください。
mkdir -p /home/arcemu/installer/arcemu/trunk/cmake mkdir -p /home/arcemu/installer/arcemu/build mkdir -p /home/arcemu/server mkdir -p /home/arcemu/server/DBC mkdir -p /home/arcemu/server/maps mkdir -p /home/arcemu/server/etc
(3) ソースコードの取得
Arcemu公式の解説ページはこちら。
http://www.arcemu.org/wiki/Getting_the_source_code
rootで作業してください。
Gitで最新のソースコードが入手できます。
まずはgitクライアントをインストールしますのでrootで作業してください。
まずはgitクライアントが置いてあるリポジトリを追加するために
以下のrpmをインストールします。
rpmは以下に置いてあります。
http://pkgs.repoforge.org/rpmforge-release/
今回は0.5.3(64-bit)を選びます。
各自自分のアーキテクチャに合わせてダウンロードしてください。
具体的には以下を実行。
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
インストールします。
rpm -Uvh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
ここからはユーザーarcemuで作業してください。
ソースコードを「git://github.com/arcemu/arcemu.git」から取得します。
cd /home/arcemu/installer/arcemu git clone git://github.com/arcemu/arcemu.git code
(4) コンパイル
Arcemu公式の解説ページはこちら。
http://arcemu.org/wiki/Compiling:_Linux#Security_and_Accounts
まずはrootで作業してください。
下記を実行して4.4以外のバージョンが出る方は
4.4のgccをインストールしてパスを通す必要があります。
gcc -v
gcc4.4のインストールをするには以下のコマンドを実行します。
yum -y install gcc44
以下もインストールしてください。
yum -y install gcc44-c++
mv /usr/bin/gcc /usr/bin/gcc_old sudo ln -s /usr/bin/gcc44 /usr/bin/gcc mv /usr/bin/x86_64-redhat-linux-gcc /usr/bin/x86_64-redhat-linux-gcc_old sudo ln -s x86_64-redhat-linux6E-gcc44 x86_64-redhat-linux-gcc mv /usr/bin/g++ /usr/bin/g++_old sudo ln -s /usr/bin/g++44 /usr/bin/g++ mv /usr/bin/x86_64-redhat-linux-g++ /usr/bin/x86_64-redhat-linux-g++_old sudo ln -s /usr/bin/x86_64-redhat-linux6E-g++44 /usr/bin/x86_64-redhat-linux-g++
以下のライブラリも必要なのでインストールしてください。
yum -y install zlib-devel yum -y install openssl-devel yum -y install mysql-devel yum -y install pcre-devel
ここからはユーザーarcemuで作業してください。
cmake(makeする前の準備をするものと考えてください)の準備をします。
cd /home/arcemu/installer/arcemu/trunk/cmake wget http://www.cmake.org/files/v2.8/cmake-2.8.4-Linux-i386.tar.gz tar xvfz cmake-2.8.4-Linux-i386.tar.gz cp -R cmake-2.8.4-Linux-i386/* .
コンパイルを開始しましょう。
cd /home/arcemu/installer/arcemu/build cmake -DCMAKE_INSTALL_PREFIX=/home/arcemu/server ../code/cmake make && make install
コンパイルが完了するまでしばらく待ってください。
(失敗したときは、ディスクの容量確認や、ディレクトリの権限を確認してください)
(5) MySQLにrootのパスワードを設定する
rootで作業してください。
後にarcemuのconfファイルにこのパスワードを設定します。
ここでは「cake」とします。
mysql -u root -p パスワードを求められるので、MySQLインストール時に設定したパスワードを入力します。 use mysql; SET PASSWORD FOR root@localhost=PASSWORD('cake'); SET PASSWORD FOR root@cookie=PASSWORD('cake'); quit;
(6) DBCの展開
Arcemu公式の解説ページはこちら。
http://arcemu.org/wiki/Compiling:_DBC_Extraction
まずrootで操作してください。
ここでWindowsにインストールしてあるWoWが必要です。
まるまるLinuxにコピーしてきます。
ここでは「/home/ext」にコピーします。
このディレクトリ直下に「WoW.exe」がある状態になるようにしてください。
Arcemuのツールディレクトリに移動し、必要なファイルをコピーします。
cd /home/arcemu/server/tools cp -p ./* /home/ext
ツールadを実行してDBCを展開します。
cd /home/ext ./ad
できたものをArcemuサーバーへコピーします。
cp -R -p /home/ext/dbc/* /home/arcemu/server/DBC cp -R -p /home/ext/maps/* /home/arcemu/server/maps chown -R arcemu:arcemu /home/arcemu/server/DBC chown -R arcemu:arcemu /home/arcemu/server/maps
続いてconfigファイルのコピーを行います。
ユーザーarcemuで行ってください。
mv /home/arcemu/installer/arcemu/code/configs/*.conf /home/arcemu/server/etc
サーバープログラムlogonとworldの権限を変更します。
chmod a+x logon chmod a+x world
(7) MySQLのセットアップ
rootで作業してください。
ここでいくつかデータベースを作成します。
ユーザー:taiyaki
パスワード:cake
で作成します。
mysql -u root -p CREATE USER 'taiyaki'@'%' IDENTIFIED BY 'cake'; GRANT USAGE ON *.* TO 'taiyaki'@'%' IDENTIFIED BY 'cake' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE `arcemu-world` ; GRANT ALL PRIVILEGES ON `arcemu-world` . * TO 'taiyaki'@'%'; CREATE DATABASE `arcemu-acct` ; GRANT ALL PRIVILEGES ON `arcemu-acct` . * TO 'taiyaki'@'%'; CREATE DATABASE `arc_logon`; CREATE DATABASE `arc_character`; CREATE DATABASE `arc_world`;
さらにいま作成したデーターベースの初期セットアップを行います。
以下のsqlファイルを実行します。
use arc_character; source /home/arcemu/installer/arcemu/code/sql/character_structure.sql; use arc_logon; source /home/arcemu/installer/arcemu/code/sql/logon_structure.sql; use arc_world; source /home/arcemu/installer/arcemu/code/sql/world_structure.sql; exit;
(8) MySQLにWorldデーターベースの内容をセットする
Worldデータベースの内容については、Arcemuでは用意されていません。
WorldデータベースはNpcや敵などの情報が含まれており、
さまざまな種類のWorldデーターベースが作成されています。
今回はその中から、「Land Of Elves (LoE) World Database」を使用します。
公式ページはこちら。
http://dev.landofelves.net/index.php?title=en:Main_Page
rootで作業してください。
Worldデータベースの内容をGitで取得して、取り込みスクリプトを実行します。
mkdir -p /home/arcemu/LoE cd /home/arcemu/LoE git clone git://landofelves.net/loe_world.git cd loe_world chmod 755 ./import.sh ./import.sh
スクリプトが起動しますので、インストール(iをタイプ)を実行します。
あとは自動的にWorldデータベースに値が設定されます。
(9) 管理者アカウントを作成する
rootで作業してください。
アカウント名は以下とします。
ID:admin PASS:cake
以下を実行してください。
mysql -u root -p use arc_login; INSERT INTO `accounts` (login, password, gm, flags, forceLanguage, banned) VALUES ('admin', 'cake', 'az', '24', 'enEN', '0'); exit;
(10) サーバーの設定ファイルを編集する
Arcemu公式の解説ページはこちら。
http://arcemu.org/wiki/Server_configuration
rootで作業してください。
world.confを開きます。
cd /home/arcemu/server/etc vi /home/arcemu/server/etc/world.conf
以下を書き換えます。
★編集前★ <WorldDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306"> <CharacterDatabase Hostname = "host" Username = "username" Password = "passwd" Name = "database" Port = "3306"> <LogonServer DisablePings = "0" RemotePassword = "change_me_world"> ↓ ★編集後★ <WorldDatabase Hostname = "localhost" Username = "root" Password = "cake" Name = "arc_world" Port = "3306"> <CharacterDatabase Hostname = "localhost" Username = "root" Password = "cake" Name = "arc_character" Port = "3306"> <LogonServer DisablePings = "0" RemotePassword = "cake">
さらに、最後の行に移動して数回改行してください。
これ重要です。忘れるとサーバーが起動しない可能性があります。
続いてlogon.conf。
vi /home/arcemu/server/etc/logon.conf
★編集前★ <LogonDatabase Hostname = "host" Username = "username" Password = "Passwd" Name = "database" Port = "3306"> <LogonServer RemotePassword = "change_me_logon" AllowedIPs = "127.0.0.1/24" AllowedModIPs = "127.0.0.1/24"> ↓ ★編集後★ <LogonDatabase Hostname = "localhost" Username = "root" Password = "cake" Name = "arc_logon" Port = "3306"> <LogonServer RemotePassword = "cake" AllowedIPs = "127.0.0.1/24" AllowedModIPs = "127.0.0.1/24">
logon.confも同様に最後の行に移動し、改行をいくつか追加してください。
realms.confはLAN内だけで遊ぶなら、変更は不要のはずなのですが、
LAN内で遊ぶ場合は、以下のループバックアドレスを、
Linuxサーバー自身のIPアドレスにする必要がある気がします。
★編集前★ <Realm1 Name = "Arcemu" Address = "127.0.0.1:8129" Icon = "Normal" Population = "1.0" TimeZone = "1"> ↓ ★編集後★ <Realm1 Name = "Arcemu" Address = "(自ホストで名前解決した結果得られるIPアドレス):8129" Icon = "Normal" Population = "1.0" TimeZone = "1">
またこのファイルにも、末尾に改行を追加しておいてください。
http://arcemu.org/wiki/Arcemu_Use_Cases
(11) 当たり判定情報の設定
rootで作業してください。
WindowsからWoWをインストールしてきたディレクトリに移動します。
cd /home/ext
(6)でコピーしたツールの1つを実行します。
./vmaps.sh
完了すると、以下2つのディレクトリが作成されます。
Buildings vmaps
Buildingsの方は、作成時の一時ファイルですので削除して構いません。
rm -rf ./Buildings
サーバーにコピーします。
cp -p -R vmaps /home/arcemu/server
権限はarcemuにしておきます。
chown -R arcemu:arcemu /home/arcemu/server/vmaps
world.confの設定を変更して当たり判定を有効にします。
vi /home/arcemu/server/etc/world.conf Collision="0" ↓ Collision="1"
(12) サーバーの起動
ユーザーarcemuで作業してください。
まずはログインサーバーを起動します。
cd /home/arcemu/server ./logon
ログインサーバーの起動完了後、ワールドサーバーを起動します。
./world
特にエラーが発生がしなければ、起動完了です。
(13) クライアント側の設定
WindowsでWoWの接続先を変更します。
WoWのインストールされているディレクトリから以下の位置のファイルをオープンしてください。
/data/enus/realmlist.wtf ★編集前★ set realmlist us.logon.worldofwarcraft.com set patchlist us.version.worldofwarcraft.com ↓ ★編集後★ set realmlist cookie set patchlist cookie
cookieはLinuxのホスト名です。
「%SystemRoot%\system32\drivers\etc\hosts」を編集して
cookieの名前解決ができるようにしておいてください。