結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

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で作業してください。

コンパイラgccのバージョン4.4を使用します。

下記を実行して4.4以外のバージョンが出る方は
4.4のgccをインストールしてパスを通す必要があります。

gcc -v

gcc4.4のインストールをするには以下のコマンドを実行します。

yum -y install gcc44

以下もインストールしてください。

yum -y install gcc44-c++

gccとg++のシンボリックリンクを張ります。

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

cookieLinuxのホスト名です。
「%SystemRoot%\system32\drivers\etc\hosts」を編集して
cookieの名前解決ができるようにしておいてください。

(14) GMアカウントでログインする

WindowsでWoWを起動して、以下の情報でログインします。
正常に構築できていれば、realmを選択し、キャラクターを作成する画面に進むはずです。

ID:admin
パスワード:cake

あとは、普通にゲームをプレイするだけです!
GMの場合は、GM Islandという特殊なマップから始まりますので、
GMコマンドを使って適当な場所に飛んでから遊んでください!

プライバシーポリシー お問い合わせ