января 27 2010 12:49 пп

Создание игрового сервера World of Warcraft на базе Debian или Ubuntu

wowlogo.png

Давно не обновлялся сайт, пора бы уже написать что то дельное и нужное. В этой статье я опишу процесс сборки и установки сервера World of Warcraft на базе открытого дистрибутива Mangos (http://getmangos.com/) который является бесплатной альтернативой продукту от Blizzard, но не является его точной копией, так как Blizzard не открывал исходный код своего сервера. Основой сервера является база данных mysql и два небольших демона для работы с ней. Я использовал дистрибутив Ubuntu 8.04 для сборки.

Установим все необходимое для сборки и дальнейшей работы нашего игрового сервера

Код:

apt-get install build-essential gcc g++ cpp automake git-core autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano mysql-server unrar-free openssl

Затем скачаем исходные коды сервера и scriptdev2 который необходим для его работы
Код:

git clone git://github.com/mangos/mangos.git
cd mangos
svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ src/bindings/ScriptDev2/

Затем применим патчи для исходных текстов
Код:

git am src/bindings/ScriptDev2/patches/MaNGOS-*

Затем переходим к сборке нашего сервера, это может занять некоторое время
Код:

autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/opt/mangos --sysconfdir=/opt/mangos/etc --enable-cli --enable-ra --datadir=/opt/mangos
make -j 2 (если у вас двухядерный процессор, или -j 4, если у вас четырехядерный процессор)
make install

Теперь можно начать настройку игрового сервера, для этого перейдите в его директорию
Код:

cd /opt/mangos/

Скопируйте файлы конфигурации из созданных автоматически при сборке сервера
Код:

cp etc/mangosd.conf.dist etc/mangosd.conf
cp etc/realmd.conf.dist etc/realmd.conf

Скачаем базу данных для нашего сервера
Код:

wget https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/trunk/Full_DB/UDB_0.11.6_Core_8734_SD2_1480.rar --no-check-certificate
wget https://sd2-acid.svn.sourceforge.net/svnroot/sd2-acid/trunk/wotlk/3.0.1/3.0.1_acid.sql --no-check-certificate
unrar-free e UDB*

Теперь можно создать и заполнить базы данных mysql, для этого вам понадобится ваш пароль пользователя root к mysql, вы задавали его в процессе установки пакета mysql-server, в примере указано -pYOURPASS, замените YOURPASS на ваш пароль.
Создадим нужные базы данных и таблицы в них
Код:

mysql -pYOURPASS < /opt/mangos/mangos/sql/create_mysql.sql mysql -pYOURPASS < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_database.sql mysql -pYOURPASS scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_structure_mysql.sql

Теперь заполним служебные базы данных сервера
Код:

mysql -pYOURPASS mangos < /opt/mangos/mangos/sql/mangos.sql mysql -pYOURPASS characters < /opt/mangos/mangos/sql/characters.sql mysql -pYOURPASS realmd < /opt/mangos/mangos/sql/realmd.sql mysql -pYOURPASS scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_script_full.sql

Затем заполним базу данных игрового мира
Код:

mysql -pYOURPASS mangos < ~/UDB_0.11.6_Core_8734_SD2_1480.sql mysql -pYOURPASS mangos < ~/3.0.1_acid.sql mysql -pYOURPASS mangos < ~/mangos/src/bindings/ScriptDev2/sql/mangos_scriptname_full.sql

Если у вас есть желание русифицировать вашу базу данных, а именно квесты, некоторые предметы и тд, вы можете установить RUDB, скачать которую вы можете по ссылке
http://sourceforge.net/projects/rudb/

И наконец применим обновления баз данных, для этого есть небольшой скрипт на питоне, замените в нем YOURPASS на ваш пароль от mysql
Код:

#!/usr/bin/env python
import glob, os
patches = glob.glob('*.sql')
patches = sorted(patches)
for x in patches:
db = x.split("_")[2].replace('.sql', '')
os.system("mysql -v -p{YOURPASS} " + db + " < " + x)

Поместите скрипт в директорию /opt/mangos/mangos/sql/updates/, затем сделайте исполняемым командой chmod +x scriptname (scriptname замените на ваше имя скрипта) и выполните его там для применения патчей баз данных.

Затем назначим имя нашему игровому миру, для этого выполните слудующие команды к БД mysql, заменив в них Your Realm Name на имя вашего мира и Your IP на адрес вашего сервера
Код:

mysql -pYOURPASS
mysql> use realmd;
mysql> UPDATE realmlist SET name = 'Your Realm Name' WHERE id = 1;
mysql> UPDATE realmlist SET address = 'Your IP' WHERE id = 1;
mysql> exit

С базой данных пока все, перейдем к получению нужных для работы сервера файлов, от которых будет зависить версия клиента используемого для игры на сервере. Нам понадобится Windows версия игры с нужным нам патчем, например возьмем версию 3.2.2 (сборка 10505). От вас потребуется скачать на машину с клиентом игры директорию ~/mangos/contrib (она находится в директории с исходными текстами Mangos) с вашего сервера, и найти в ней следующие файлы
Код:

ad.exe
makevmaps_SIMPLE.bat
make vmaps.bat
splitConfig.txt
vmap_assembler.exe
vmapextract_v2.exe

Поместите эти файлы в директорию с установленным клиентом World of Warcraft, затем запустите файл ad.exe, он сделает все необходимое (распакует файл патча и извлечет оттуда необходимое), процесс может занять длительное время. После завершения работы экстрактора вы увидите три новые директории, "maps", "dbc", и "vmaps". Данные директории вам надо загрузить обратно на ваш сервер и поместить в директорию /opt/mangos/bin.

Для запуска нашего WoW сервера нам понадобится screen, обычно он уже установлен, если нет то установите его, затем создадим простенький стартовый скрипт для запуска нашего сервера в дальнейшем.
Код:

#!/bin/bash
cd /opt/mangos/bin
echo "Starting mangos-realmd"
screen -A -m -d -S realmd ./mangos-realmd
echo "Done..."
echo "Starting mangos-worldd"
screen -A -m -d -S worldd ./mangos-worldd
echo "done"
exit 0

Сделайте скрипт исполняемым командой chmod +x scriptname.

Теперь попробуем запустить наш сервер, для начала без screen, откройте две консоли, в первой выполните команды
Код:

cd /opt/mangos/bin
./mangos-realmd

Затем во второй консоли выполните команды
Код:

cd /opt/mangos/bin
./mangos-worldd

Если все прошло нормально, завершите screen и запустите созданный нами ранее скрипт для старта сервера.

Для управления сервером через веб интерфейс существует несколько разных скриптов, но все они не очень богаты функционалом, могут не работать корректно с вашей версией патча, поэтому готовьтесь что возникнут некоторые трудности при их настройке. Небольшую коллекцию веб обвязок для Mangos можно найти по ссылке: http://rumangos.ru/index.php?do=cat&category=www
На этом все, надеюсь у вас все получится.




1 Комментарий »


One Response to “Создание игрового сервера World of Warcraft на базе Debian или Ubuntu”

  1. Twitter Trackbacks for Создание игрового сервера World of Warcraft на базе Debian или Ubuntu | Stepanoff Home Network [sudouser.com] on Topsy.com on 28 Янв 2010 at 06:29 #

    […] Создание игрового сервера World of Warcraft на базе Debian или Ubunt… sudouser.com/sozdanie-igrovogo-servera-world-of-warcraft-na-baze-debian-ili-ubuntu.html – view page – cached Давно не обновлялся сайт, пора бы уже написать что то дельное и нужное. В этой статье я […]

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


« | »



Server load average: 0.10, 0.06, 0.01
Server uptime: 409 days, 20:13
Your IP is: 54.145.68.45.