- Регистрация
- 13.10.2013
- Сообщения
- 5 354
- Реакции
- 450
- Баллы
- 0
Полный пошаговый гайд по компиляции TrinityCore серверов 3.3.5 и 7.3.х на линуксе
В этом руководстве я расскажу как самостоятельно скомпилировать сервер World of Warcraft 3.3.5 или 7.3.х на основе ядра TrinityCore.
Часто мне задают различные вопросы связанные с тем как скомпилировать сервер или как его запустить на unix, а так же другие вопросы связанные с этим. По этому я решил составить некое пособие по компиляции сервера TrinityCore на линуксе. Все описанное мной ниже не является 100% решением этого вопроса, поскольку unix ОС отличаются достаточно сильно друг от друга и даже разные версии одной и той же ос будут иметь серьёзные отличия. Так же огромную роль будут играть используемые библиотеки и прочие компоненты системы. В этой статье я буду опираться на определенные ОС и дополнительные компоненты.
Так же нужно понимать, что это руководство рассчитано на пользователей, которые имеют опыт в работе с unix.
Рекомендуемые дистрибутивы:
- Debian 9.x
- Ubuntu 17.04
- Fedora 25 и 26
На дистрибутивах Debian 8 или ниже, Ubuntu 16.04 или ниже, Fedora 24 или ниже не гарантирую работы сервера и требуемых компонентов для ОС.
Требования к ОС и компьютеру:
- Процессор с поддержкой SSE2
- Boost ≥ 1.56
- MySQL ≥ 5.1.0
- OpenSSL = 1.0.x
- CMake ≥ 3.2.0
- GCC ≥ 6.3.0 или Clang ≥ 3.5
- zlib ≥ 1.2.7
- Если вы хотите скомпилировать и использовать сервер 7.3.х на хостинге или на компьютере с unix ОС, а клиент игры использовать на компьютере под управлением windows, то вам так же необходимо скомпилировать сервер на windows для получения «connection_patcher», использование которого необходимо для работы клиента игры. На файлы патчера я размещу ссылки внизу руководства, чтоб не утруждать вас еще и компиляцией на windows.
- При компиляции вы можете получить ошибку «c ++: внутренняя ошибка компилятора: Killed (program cc1plus)». Причинами этого скорее всего является Низкое значение ram / swap. Вам нужно увеличить ram / swap до минимума 2 ГБ оперативной памяти и 2 Гбайта подкачки или уменьшение количества make -j до 1.
Debian
Вводим следующие команды для установки и обновления необходимых пакетов и библиотек.
Код:
apt-get install git clang cmake make gcc g++ libmariadbclient-dev libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server p7zip
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
Ubuntu
Вводим следующие команды для установки и обновления необходимых пакетов и библиотек.
Код:
apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server p7zip
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
Fedora
Вводим следующие команды для установки и обновления необходимых пакетов и библиотек.
Код:
dnf install git clang cmake make gcc gcc-c++ mariadb-devel openssl-devel bzip2-devel readline-devel ncurses-devel boost-devel mariadb-server p7zip
Сборка и компиляция ядра
Создание пользователя
Лично я рекомендую для работы с сервером и всеми его компонентами использовать дополнительную учетную запись, особенно в том случае если на вашем ПК в качестве основной системы используется линукс. Это поможет вам не убить систему пока вы работаете с сервером. Если вы собираете сервер на VPS, то создание дополнительного пользователя будет так же полезно. На рассматриваемых в этом руководстве системах это можно сделать командой. Использовать можно любое удобное для вас имя.
Код:
sudo adduser username
Копирование исходников
3.3.5 (клиент wotlk)
Код:
cd ~/
git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git
Код:
cd ~/
git clone -b master git://github.com/TrinityCore/TrinityCore.git
Патчи
Если вы опытный пользователь линукса, а так же уже не первый раз сталкиваетесь с эмуляторами сервера на базе TrinityCore и знаете что вам необходимо иметь из дополнительных патчей, то дальнейшим шагам будет их установка. Поскольку устанавливать большинство патчей необходимо до компиляции сервера. Но поскольку это руководство ориентировано на новичков во всем этом, то часть связанную с патчами мы пропустим, поскольку это достаточно сложный и трудоемкий процесс который необходимо рассматривать в отдельной теме.
Создание папки сборки
Далее нам требуется создать в корневой папке сервера "TrinityCore" создать папку в которой будут располагаться готовые к построению файлы. Создадим папку под названием "build". Для этого нам нужно ввести следующую команду
Код:
cd TrinityCore
mkdir build
cd build
Настройки необходимые для компиляции
Это один из наиболее важных разделов и здесь вам потребуются все ваши знания в ОС линукс, а возможно и помощ более опытных пользователей.
Для компиляции используется инструмент конфигурации (cmake), для его правильной работы используются различные пакеты и нам необходимо правильно указать общие параметры конфигурации. Если вы используете дистрибутивы, а так же пакеты которые указанны в этом руководстве, то скорее всего у вас не возникнет проблем и вам будет достаточно ввести следующую команду.
Код:
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/username/server
username - имя вашей учетной записи.
server - название папки в которую будут сконфигурированные для компиляции файлы сборки.
Если при введении команды в терминале вы будете видеть ошибки, то попробуйте ввести одну из следующих команд.
Код:
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server -DTOOLS=0
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/$USER/server -DTOOLS=0 -DWITH_WARNINGS=1
Если вы сделали все правильно, то (cmake) сконфигурирует все необходимые файлы и в терминале вы увидете отчет о работе.
Компиляция ядра TrinityCore
Переходим непосредственно к компиляции ядра, для этого вводим команду
Код:
make
make install
Код:
make -j <количество ядер>
make install
Код:
make -j $(nproc) install
Работа с экстракторами
После того как сервер был успешно скомпилирован нам потребуется получить файлы карт из клиента World of Warcraft, которые необходимы для работы сервера. Существует несколько видов карт, среди которых есть обязательно необходимые, без которых сервер просто не будет работать. И рекомендуемые, которые отвечают за различные параметры в игре, например загрузку карт в подземельях. Без них сервер работать будет, но это отразится на удобстве игроков.
Обязательные:
- dbc
- maps
- gt - для Легиона
- vmaps
- mmaps
Все извлеченные карты должны находиться в одной папке, название которой должно быть указанно в worldserver.conf. Обычно эта папка называется "data", но не спешите в ручную создавать папку или вносить изменения в worldserver.conf, все это мы сделаем с помощью команды при извлечении файлов карт.
Разберем команду по ее составляющим:
1. Указываем путь к папке с клиентом World of Warcraft
Код:
cd <your WoW client directory>
2. Указываем путь к экстрактору
Код:
/home/<username>/server/bin/mapextractor
3. Указываем путь и название для папки в которую будут извлечены карты
Код:
mkdir /home/<username>/server/data
4. Если компилируете сервер 3.3.5, то прописываем следующую команду
Код:
cp -r dbc maps /home/<username>/server/data
5. Если компилируете сервер 7.3.х, то прописываем следующую команду
Код:
cp -r dbc maps gt /home/<username>/server/data
6. Следующей командой вносим правки в worldserver.conf
Код:
edit worldserver.conf and change datadir from "." to "../data"
В итоге вся команда в целом должна иметь вот такой вид
Код:
<your WoW client directory>
/home/<username>/server/bin/mapextractor
mkdir /home/<username>/server/data
cp -r dbc maps /home/<username>/server/data
edit worldserver.conf and change datadir from "." to "../data
Извлечение VMaps и MMaps
Хоть это и не обязательные для работы сервера карты, но все же настоятельно рекомендуется извлечь их также. Папки с этими картами так же должны располагаться в папке data.
Для извлечения этих карт команда практически не будет отличаться от предыдущей, измениться только сам экстрактор и название создаваемой папки. Изменения в worldserver.conf здесь уже вносить не требуется.
- Команда для извлечения vmaps.
Код:
cd <your WoW client directory>
/home/<username>/server/bin/vmap4extractor
mkdir vmaps
/home/<username>/server/bin/vmap4assembler Buildings vmaps
cp -r vmaps /home/<username>/server/data
Код:
Processing Map 724
[################################################################]
Extracting GameObject models...Extracting World\Wmo\Band\Final_Stage.wmo
No such file.
Couldn't open RootWmo!!!
Done!
Extract V4.00 2012_02. Work complete. No errors.
- Команда для извлечения mmaps.
Код:
cd <your WoW client directory>
mkdir mmaps
/home/<username>/server/bin/mmaps_generator
cp -r mmaps /home/<username>/server/data
Если вы все же решите не извлекать карты vmaps и mmaps, то в дальнейшем не забудьте отключить их в файле конфигурации worldserver.conf. Открываем файл конфигурации и находим следующие строки:
- vmap.enableLOS = 1 - установить значение 0
- vmap.enableHeight = 1 - установить значение 0
- vmap.petLOS = 1 - установить значение 0
- vmap.enableIndoorCheck = 1 - установите для этого значение 0
Настройка файлов конфигурации
После извлечения всех карт нам нужно отредактировать файлы конфигурации сервера, для того чтоб сервер их мог найти и запуститься. Для этого нужно изменить их расширение с .conf.dist на .conf. После компиляции найти файлы можно по следующему пути / trinitycore / etc /. Изменять их расширение мы будем так же с помощью команды, но в зависимости от версии сервера команда будет отличаться названием файла конфигурации сервера авторизации. Ниже список файлов конфигурации, внимательно его просмотрите.
- worldserver.conf.dist - файл конфигурации самого эмулятора, название одинаково как для сервера 3.3.5 так и для 7.3.х
- authserver.conf.dist - файл конфигурации сервера авторизации на сервере версии 3.3.5
- bnetserver.conf.dist - файл конфигурации сервера авторизации на сервере версии 7.3.х
Код:
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
После смены расширения нам нужно внести изменения и внутри самих файлов. Вам нужно открыть оба ваших файла конфигурации и найти внутри них строки
LoginDatabaseInfo = "127.0.0.1; 3306; trinity; trinity; auth
WorldDatabaseInfo = "127.0.0.1; 3306; trinity; trinity; world
CharacterDatabaseInfo = "127.0.0.1; 3306; trinity; trinity; characters
В этих строках нужно изменить данные на нужные нам
- 127.0.0.1 - ip адрес, изменяем на ip вашего vps или внутрисетивой для игры с друзьями внутри сети. Если кроме вас ни кто не будет играть на сервере то оставляем без изменений. Если ip адрес изменяете, то в дальнейшем не забудьте изменить его в базе auth в таблице realmlist.
- 3306 - порт, оставляем без изменений
- trinity - заменить на свой логин от mysql
- trinity - заменить на свой пароль от mysql
- auth, world и characters - название баз данных, оставить без изменений
Поскольку сервер MySQL мы уже установили в самом начале, (в пункте "установка необходимых пакетов" мы прописывли команду в которой указывали установку сервера MySQL) то теперь перейдем непосредственно сразу к работе с базами.
Загрузка баз
Если вы опытный пользователь, то самостоятельно сможете выбрать нужные вам ревизии как ядра, так и баз. Но поскольку руководство ориентировано на новичков, то в нем мы будем рассматривать работу с самыми последними ревизиями. Загружаем самые последние ревизии баз данных, которые будут подходить под ревизию используемого нами ядра сервера. Обратите внимание на то, что каждая версия сервера использует свои базы данных. Загружайте базу данных которая соответствует версии вашего сервера. Загрузить последние версии баз можно по этой ссылке - Releases · TrinityCore/TrinityCore · GitHub. Загружать нужно только один файл, название которого начинается с TDB_full и с расширением .7z.
Для сервера версии 3.3.5 файл будет называться примерно так TDB_full_335.63_2017_04_18.7z. Название файла расшифровывается так
TDB - TrinityCore Data Base
full - это означает что версия включает в себя все правки которые были внесены в предыдущие базы.
335.63 - цифры 335 обозначают версию клиента игры и соответственно сервера. Цифры 63 означают номер ревизии.
2017_04_18 - дата создания полной версии базы.
Внутри самого архива будет находиться несколько файлов, но нам будет нужен только один, который так же начинается с TDB_full, для сервера версии 7.3.х так же нужен файл с именем TDB_hotfixes. Именно их мы в дальнейшем и будем заливать на сервер.
Создание баз в MySQL
Для создания баз можно использовать либо клиент MySQL, либо командную строку MySQL (CLI).
- Для сервера версии 3.3.5 нужно создать 3 базы Auth, Characters и World. Для создания этих баз нам нужно выполнить sql запрос:
SQL:
https://github.com/TrinityCore/TrinityCore/blob/3.3.5/sql/create/create_mysql.sql
- Для сервера версии 7.3.х нужно создать 4 базы Auth, Characters, World и hotfixes. Для создания этих баз нам нужно выполнить sql запрос:
Код:
https://github.com/TrinityCore/TrinityCore/blob/master/sql/create/create_mysql.sql
Заполнение баз содержимым
Последние версии серверов TrinityCore имеют систему автоматического обновления баз данных, по этому нам не требуеться самостоятельно заливать содержимое из скачанных архивов в созданные нами базы. Нам нужно извлечь из архива требуемые файлы в папку в которой находиться бинарный файл WorldServer (файл для запуска сервера). Далее нам нужно запустить WorldServer и когда вы увидите запрос на создание баз данных нажать enter. WorldServer автоматически заполнит базы и установит обновления. Если сделано все без ошибок, то в консоле сервера вы увидите сообщение о том, что сервер запущен и работает.
После запуска WorldServer можно запускать authserver или bnetserver в зависимости от используемой версии.
Создание учетной записи и настройка клиента
Для сервера 3.3.5
Создаем учетную запись, для этого консоли authserver прописываем команду - .account create user pass
Например .account create admin q1w2e3
После этого в консоли увидим подтверждение созданной учетной записи и ее id номер.
Добавляем права ГМа для созданной учетной записи, для этого вводим команду .account set gmlevel user 3 где user имя созданной учетной записи а цифра обозначает уровень прав. Всего существует 3 уровня прав. 1 уровень самый низкий, 3 самый высокий.
Для серверов 7.3.х
Создаем учетную запись, для этого консоли bnetserver прописываем команду - .bnetaccount create user pass
Например .bnetaccount create admin q1w2e3
После этого в консоли увидим подтверждение созданной учетной записи и ее id номер.
Добавляем права ГМа для созданной учетной записи, для этого вводим команду .account set gmlevel user#realm 3 где user имя созданной учетной записи, realm это номер игрового мира где будут добавлены права ГМа, (если вы не добавляли несколько игровых миров в ручную, то укажите цифру 1, если же добавляли, то значит вы знаете что делаете ). Ну и цифра 3 это уровень прав. Всего существует 3 уровня прав. 1 уровень самый низкий, 3 самый высокий.
Настройка клиента
Клиент 3.3.5 - Если вы изменяли в настройках сервера ip адрес, то отредактируйте файл realmlist.wtf найти его можно по следующему пути - папка с клиентом/Data/ruRU. Откройте файл текстовым редактором и измените ip адрес в строке set realmlist 127.0.0.1 на нужный вам.
Клиент 7.3.х - Если вы изменяли в настройках сервера ip адрес, то отредактируйте файл Config.wtf найти его можно в папке WTF. Откройте файл текстовым редактором и замените в нем строку SET portal "EU" на SET portal "127.0.0.1" или укажите другой нужный вам ipадрес.
Так же для игры на сервере вам потребуется пропатчить ваш клиент. Об этом было написано в самом начале руководства. Для этого нужно скопировать из папки с сервером файл Connection_Patcher.exe в папку с игрой. После этого перетащить мышкой файл Wow.exe на файл Connection_Patcher.exe и в появившемся окне нажать enter. Потом повторить тоже самое с файлом Wow-64.exe. В результате этих действий у вас появятся два новых файла Wow_Patched.exe и Wow-64_Patched.exe. Игру нужно запускать через один из получившихся файлов.
Что бы не утруждать вас еще и компиляцией сервера на windows, как и обещал размещу тут ссылки на файлы Connection_Patcher разной разрядности.
Вложения
Последнее редактирование: