[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Сервер WoW своими руками «с НУЛЯ» (для версии 2.4.3)
Вторник, 30.09.2014, 17:02 | Сообщение # 1

Ранг
Центурион
Сообщений:
1124
Статус:
Награды:
473
Доброго времени суток всем кто читает эту тему. Мой ник на просторах интернета – Evrial. Данная тема посвящена созданию сервера WoW что называется «с НУЛЯ». Актуально для Windows 32-bit (Linux’ом пока не занимался).

Краткое предисловие
Постараюсь как можно подробнее описать каждый шаг создания сервера. Пример будет для сервера версии 2.4.3. на ядре OregonCore (т.к. я фанат именно этой версии). Материалы темы можно использовать и для других ядер и версий клиента, но не забывайте что в любом случаи будут нюансы. Постараюсь, в зависимости от отзывов, регулярно дополнять и обновлять материалы темы. Итак, начнём?

Примечание: кому, видишь ли, не нравится размер стандартного шрифта – зажимает CTRL и крутим ролик мышки ВВЕРХ (от себя); кому не нравится цвет – подкручиваем настройки видеокарты/монитора, кому не нравится оформление – пишем письмо администрации wowjp чтоб они изменили стандартное оформление (обязательно в письме укажите, что конкретно Вам не нравится).

Я не против распространения данного мануала со ссылкой на автора.

Благодарности: CemakPro[100]MoskOregonCore...

Сборка, созданная в процессе написания мануала, может быть Вами скачана здесь.

Данный мануал в MS Word вы можете скачать здесь. (рекомендую. т.к. намного удобнее).

Содержание
1. Необходимый софт
2. Компиляция ядра и его пропатчивание
2.1. Добываем исходники
2.2. Патчи
2.3. Компиляция
2.4. Вытаскиваем нужные файлы
3. Создаём базу для сервера
3.1. Установка denwer
3.2. Настройка MySQL
3.3. Наполнение базы данных сервера
4. Подготовка к запуску
4.1. Извлечение данных клиента
4.2. Настройка конфигурации
4.3. Последние подготовительные операции
5. Пробный запуск и лог-файлы
6. Переделываем сервер
6.1. Настройка конфигурации под разные типы серверов
6.2. Стартовые запросы для фан-сервера
6.3. Дополнения

1. Необходимый софт


В данном разделе Вы можете найти необходимый софт для сервера (но это не значит, что это всё что может быть; это лишь то, без чего ничего не получится). Практически весь софт является условно бесплатным и Вы можете легко установить его на свой компьютер. Значит нам понадобится такой набор программ:

1. Клиент WoW версии 2.4.3
2. TortoiseHG
3. Visual C++ 2008 Express или Visual C++ 2010 Express (мой пример будет под эту версию). Для снятия 30-дневного триального периода зарегистрируйтесь.
4. MySQL Server (если Вы планируете использовать denwer то можно это не устанавливать; кроме того сразу лучше не настраивать это приложение)
5. .NET Framework 3.5 если Вы используете Visual C++ 2010 Express, то .NET Framework 4 установится при загрузке данного пакета
6. SQLYog или MySQL GUI Tools или Navicat (мне нравится именно этот инструмент; лайт версия весьма урезана; лучше найти лицензионную)
7. CMake
8. OpenSSL
9. DENWER - установка данного приложения (если его можно так назвать) будет описана в разделе «3. Создаём базу для сервера», не ставьте его сразу).
10. Git Bash

2. Компиляция ядра и его пропатчивание


Огромное спасибо Cemak’y за его доходчивый мануал по компиляции ядра. На этом мануале я учился. Так же спасибо Pro[100]Mosk’у за мануал по компиляции ядра.

После того, как мы скачали и установили весь необходимый софт, приступаем к нашему ядру.

2.1. Добываем исходники.

Для простоты работы можно сделать папку под все действия по созданию сервера, но разработчики ядра рекомендуют делать всё в корневом каталоге С:\ (но это не обязательно, но желательно). Я для работ с сервером создал папку D:\Server\Creating. Далее создаём папку под исходник ядра и обзываем её как вам удобно. В моём случаи это будет OregonCore. Далее клацаем на эту папку правой кнопкой TortoiseHG\Clone (как на скриншоте):

В появившемся окне вводим:
Доступно только для пользователейНа скриншоте это выглядит так:

Дожидаемся окончания операции.

2.2. Патчи

Патчи – дополнения и исправления. Вполне можно обойтись без них. Патчи для данного ядра не обязательны. Без них всё будет работать.

Во первых, нам нужны патчи. Это уже нужно искать самим или же писать их.
Могу подсказать один небольшой сборник патчей (ЕГО Я ЛИЧНО НЕ ПРОВЕРЯЛ НА РАБОТОСПОСОБНОСТЬ). Создаём рядом с исходниками ядра папку Patches. Тыкаем по ней TortoiseHg\Clone… Указываем пути:
Доступно только для пользователей
Нажимаем Clone и дожидаемся окончания операции. В результате получаем много папок. Названия папок соответствуют названиям патчей.

Предположим, что у нас уже есть патчи. Для удобства переименуем файлы патчей в вид 1.patch (так патчить будет удобнее и бычтрее). Скидываем патчи в папку с исходниками. Далее нажимаем правой кнопкой по папке с исходниками (OregonCore) и нажимаем Git Bash:

В появившемся окне вводи строку вида patch –p1 < 1.patch и тыкаем ENTER. На деле это выглядит так:

Вот ядро пропатчено. Приступим к компиляции.

2.3. Компиляция

Рядом с папкой наших исходников (OregonCore в моём случаи) создаём папку, в которой будут происходить работы по компиляции (дабы сохранить нетронутыми наши исходники). В моём случаи это папка Build. Далее открываем CMake GUI (его можно найти в панели Пуск) и заполняем его так, чтобы в верхней строке был адрес папки с исходниками (OreonCore), а во второй – адрес папки для построения сервера (Build):

Нажимаем «Configure». Вам предложит выбор: под какой компилятор делать построение (делайте выбор в соответствии с установленным софтом), выбираем и тыкаем «Finish»:


Дожидаемся окончания операции. Должно написать «Configuration Done» .Далее ставим галочки как на скриншоте. Ещё раз нажимаем «Configure». Дожидаемся надписи «Configuration Done». Должна стать активной клавиша «Generate». Нажимаем её. Должна появиться надпись «Generation Done»:

Вуаля. Едем дальше.

Далее заходим в папку с нашим построением (в моём случаи это D:\Server\Creating\Build) и открываем файл OregonCore.sln. Пока открывается окно Visual Studio и идёт проверка синтаксиса можно покурить. Как только в нижнем углу экрана появилась надпись «Готово» начинаем действовать. Заходим в меню Вид\Панели Инструментов\ и ставим галочку на «Построение». В итоге вверху экрана появится панель построений, что наглядно изображено на скриншоте:

Далее выбираем «Release» вместо «Debug»:


Далее Нажимаем «Построить Решение»:

Дожидаемся окончания операции. Нам должно выдать Построение: успешно: 21, с ошибками: 0, без изменений: 0, пропущено: 1 (не обязательно успешно:21; главное чтоб с ошибками было 0)
На скриншоте выглядит так:

Компиляция завершена.

2.4. Вытаскиваем нужные файлы.

Для начала я бы рекомендовал сделать папку под релиз нашего сервера. Ну к примеру просто обзовём эту папку Release. В ней создадим папки Core и Tools; в папке Tools создаём папки Restarter, Extractor, Regform, Sql, RegForm. Итак у нас в папке с построением есть скомпилированное ядро. Но там много всего в этой папке. Нам нужна папка Bin. В ней то и лежат труды наших работ. Значит что же мы найдём в этой папке (при использовании VS 08 файлов будет больше; но там не трудно разобраться куда и к чему нужны дополнительные файлы):

- map extractor – экстрактор карт под наше ядро (копируем в папку Extractor);
- vmap extractor – экстрактор геодаты под наше ядро (копируем в папку Extractor);
- vmap assembler – ассемблер геодаты под наше ядро (копируем в папку Extractor);
- .dll-файлы – библиотеки (копируем в папку Core);
- OregonRealm.exe – наш реалм (копируем в папку Core);
- OregonCore.exe – собственно сервер (копируем в папку Core);
- .conf.dist-файлы – файлы конфигов, .dist нужно обязательно стереть. Чтобы файлы конфигурации приняли вид oregoncore.conf (копируем в папку Core).

Но это не все файлы, которые нам нужны и которые у нас уже есть. Заходим в папку с исходниками (OregonCore в моём случаи) и там заходим в папку contrib. В этой папке мы найдём рестартеры (копируем в папку Restarter); так же здесь мы найдём registration_form (копируем в папку RegForm). Также в папке sql есть структура базы данных под Oregon Core (копируем в папку Sql).

3. Создаём базу данных для сервера


На этом момента Вам стоит определиться каким образом Вы будете строить базу. Их несколько. Можно с помощью denwer, можно с использованием MySQL Server. Для начинающих я бы рекомендовал denwer. Так же для работы с базой рекомендую использовать Navicat (мне на нём проще, хотя про Sqlyog тоже много положительных отзывов).

3.1. Установка denwer.

Если Вы решили использовать другую основу для базы данных – то можете смело пропускать этот раздел. Но если всё-таки denwer, то он устанавливается так:

1. Запускаем инстальничек;
2. Закрываем появившееся окно враузера;
3. Тыкаем ENTER;
4. Если выдаёт ошибку про PENG.EXE игнорируем и продолжаем (клацаем Y);
5. Ещё раз тыкаем ENTER;
6. Y;
7. ENTER;
8. Z – Буква для виртуального диска, можете поставить другую, но, желательно, ближе к конце алфавита;
9. ENTER;
10. Ждём копирования файлов;
11. 2;
12. N;
13. ГОТОВО

Я не вдавался в подробности установки дабы не морочиться с длинным и не нужным описанием (но если кому всё-таки нужно, то могу дописать). Что же теперь делать с этим denwer’ом. В директории C:\WebServer лежат некие папочки. Вот это, по сути, и есть наш denwer. В пункте 2.4. я содавал папку для сборки сервера (Release). Вот в неё и нужно перекинуть все эти папки из WebServer. Замечательно. Теперь заходим в папку denwer, запускаем Boot, а затем Run. Если Вы воспользовались denwer, то можете смело переходить к разделу 3.3.

3.2. Настройка MySQL

Если Вы решили не использовать denwer, то читаем. Заходим Пуск\MySQL\MySQL Server\ MySQL Instance Configuration Wizard. Нажимаем Next, выбираем стандартную конфигурацию и опять нажимаем Next, ещё Next, Вводим пароль пользователя root (можете не вводить пароль, а просто снять верхнюю галочку). Нажимаем Execute и наш MeSQL настроен.

3.3. Наполнение базы данных сервера.

Для начала добудем нашу базу. Создаём рядом с ядром папку и называем её OregonDB. Тыкаем правой кнопкой, TortoiseHG\Clone… Заполняем строки:
Доступно только для пользователей
В полученой базе разархивируем ODB0.0.5_919. Полученый .sql-файл копируем в папку sql (в пункте 2.4. мы её создавали в папке Tools).

Итак в папку с будущей сборкой (Release, пункт 2.4) в папке Tools есть папка Sql. В ней у нас на данный момент должны быть такие файлы:
1. Creat_mysql.sql (взято из Oregoncore\sql);
2. World.sql (взято из Oregoncore\sql);
3. Realmd (взято из Oregoncore\sql);
4. Characters (взято из Oregoncore\sql);
5. ODB0.0.5_919 (взято из OregonDB\ODB0.0.5_919.rar);
6. Папка scripts (в ней 4 .sql-файла).

Далее нужно приконектится к серверу. Я буду объяснять на примере Navicat. Итак, открываем данную программу. Создаём новое подключение:

В параметрах этого подключение ставим как на скриншоте и нажимаем ОК:


Подключение создано, осталось подключиться. 2 раза тыкаем на наше подключение. В итоге должна открыться база:

Славненько. Теперь добавим пользователя для нашего эмулятора. Нажимаем Manage Users и создаём нового пользователя (пароль oregon):

Нажимаем ОК. Далее выделяем этого нового пользователя и нажимаем Select All, а замет Save:

Теперь начнём заполнение нашей базы данных. Чтобы залить запрос в базу нужно нажать правой кнопкой по нужной базе и нажать Execute Bath File…

После этого выбираем необходимый запрос и нажимаем Start:

Дожидаемся окончания и надписи Finished - 8 queries executed successfully (вместо 8 может быть абсолютно другое число).

В разделе 2.4. Мы создавали папку Tools в которую закидывали папку sql из исходников.
Далее буду перечислять что и куда заливать в таком виде (не забывайте что чтоб увидеть изменения нужно пере подключить базу):

ИМЯ_БАЗЫ – ИМЯ_ФАЙЛА (файлы в директории sql или поддиректории).

Root - create_mysql;
Characters – characters;
Realmd – realmd;
World – world;
World - ODB0.0.5_919 (можно курить. Это будет долго);
Далее заливаем из подпапки Scripts всё в базу world.

Далее заходим в базе realmd и открываем таблицу realmlist и в поле id ставим 1; все остальные поля сами должны заполниться, кроме name, в это поле пишите название реалма (у меня MyServer).

Ну, вот мы сделали базу для сервера. И таким образом подошли почти вплотную к запуску сервера.

4. Подготовка к запуску


Вот у нас уже есть ядро, база, основа в виде denwer или MySQL Server. Что же ещё нужно.

4.1. Извлечение данных клиента

В папке Release\Tools\Extractor находим 3 файла и копируем их в папку с клиентом.

Запускаем map_extractor и дожидаемся окончания операции. Будет создано 2 папки: dbc и maps. Переносим эти папки к нашему ядру (в папку Core).

Запускаем vmap_extractor и дожидаемся окончания операции.

Создаём .bat-файл и в него пишем такие строки (этот файл сохраняем в папке с клиентом WoW):
Доступно только для пользователейЗапускаем этот .bat-файл и дожидаемся окончания операции. Переносим папку vmaps в папку с ядром.

4.2. Настройка конфигурации

Поскольку мы сами компилили сервер, используя оригинальные исходники и базу, то конфиги не нуждаются в правке. Детальное рассмотрение конфигов будет в разделе 6. Главное чтоб в конфигах были прописаны правильные логины и пароли к базе.

4.3. Последние подготовительные операции

Ещё пару раз проверьте есть ли в папке с ядром папки mapc, dbc, vmaps. Ещё раз проверьте есть ли доступ к базе, запущен ли denwer (MySQL Server), не забыли ли вы внести новый реалм. Проверьте всё. Перекреститесь и едем дальше.

5. Пробный запуск и лог-файлы


После всеобщей проверки запускаем Oregonrealm. Если он в норме и не закрылся и выглядит так как на скрине, то всё ОК:


Далее запускаем Oregoncore. Если всё хорошо, то он начнёт грузиться. Пойдут всякие полосочки и строки. Это займёт около 30 сек. После загрузки вы услышите характерный звук от системного динамика. Окно будет выглядеть так:

Создаём аккаунт командой .create account ВАШ_ЛОГИН ВА_ПАРОЛЬ (пишется это в окне oregoncore). Далее в базе realmd в таблице account находим ваш аккаунт и в столбике expension ставим 1. Чтобы дать себе права админа в столбике gmlevel ставим 4.

В реалмлисте клиента вов пишем set realmlist 127.0.0.1. Заходим в WoW. Вводим логи и пароль. Создаём персонажа. Вуяла. Мы играем на своём сервере.

Далее выходим из WoW. Закрываем Oregoncore и oregonrealm. В папке с ядром должны появиться файлы с расширением .log. Открываем их блокнотом и ищем ошибки типа not exist и т.д. Если есть какая-то ошибка – не ленитесь её перевести. Обычно смысл становится понятен. В моей сборке в файле db_errors была такая ошибка:
Доступно только для пользователей

Добавлено (30.09.2014, 16:59)
---------------------------------------------
6. Переделываем сервер


Как всем известно, бесплатные сервера делятся на несколько типов:

1. Максимально приближенные к BlizzLike – сервера, которых настроены на стандартные рейты официального сервера со стандартным качем, дропом и т.д. Требуют большой работоспособности квестов, итемов и всего остального. Требуют большого оналйна (при малом онлайне не оправдывают себя).

2. Сервера ускоренного кача – например х5, х10, на таких серверах немного ускорен кач; в остальном они обычно похожи на сервера первого типа. Не требуют такой работоспособности квестов, как первый тип, но всё же она должна быть на высоком уровне. Так же большое внимание уделяется инстам 70го лвла, при том что низкоуровневые могут быть недоработанными.

3. Сервера быстрого кача – например х100, х150, на таких серверах процесс кача сводится к 4-5 часам. Особое внимание уделяется хайлевел инстам, системе пвп и т.д. В то же время лоулевельные квесты практически не востребованы, как и инсты.

4. Фан-сервера – максимальный левел при создании персонажа, куча золота, стартовый шмот. Особое внимание уделяется системе пвп. Инсты зачастую выключаются. Встречал даже сервера без мобов. Требуют разнообразных ивентов, рисованного шмота (желательно не рушащего баланс) и всяких интересностей. Наименее требовательны к онлайну (даже при онлайне 30-50 человек сервер может вполне полноценно функцианировать).
Когда мы уже определились в том, какой сервер будем делать, то собственно можно и начать его делать.

6.1. Настройка конфигурации под разные типы серверов

Итак у нас есть рабочее ядро, база, и собственно всё, что нужно. Изначально наш сервер настроен под рейты х1. Так что если нам нужен приближенный BlizzLike, то ничего делать и не нужно. Но ежели тип сервера другой, то таки нужно что-то менять. Начнём с файла конфигурации. Далее буду выкладывать стандартные параметры с комментариями к ним, которые важны для типа сервера (файл oregoncore.conf):

Доступно только для пользователей
Суббота, 07.01.2017, 09:25 | Сообщение # 2

Ранг
Сержант
Сообщений:
1
Статус:
Награды:
0
При клонировании исходников ядра выдает ошибку, часть файлов была уничтожена.
Это проблема с исходником? Как мне ее решить?
  • Страница 1 из 1
  • 1
Поиск:


immortals
Наверх

copyright 2024 immortals сообщество людей и Warcraft

Мобильная версияЭтот сайт защищен «Site Guard» Мы в Контакте
Les immortals ©2013- 2024.