UberPepito

Пикабушник
Дата рождения: 18 сентября 1956
поставил 2442 плюса и 916 минусов
Награды:
10 лет на Пикабу
392 рейтинг 5 подписчиков 18 подписок 3 поста 0 в горячем

Как мы свой областной WoW сервер запускали (да, на них ещё играют)

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Шёл март 2015 года. Было много свободного времени , а в голову постоянно приходили разные мысли запустить какой-нибудь проект в интернете. Не ради денег, а именно ради самого проекта. Чтобы было.


Раньше у нас был городской пиратский сервер любимой миллионами игры World of Warcraft. Сервер был популярный, я и сам там играл. Но из-за разных обстоятельств (жадные скотины у руля) проект закрылся. Было несколько слабых попыток подняться снова. Но всё впустую.


Заметив, что сейчас каждый третий запускает свой игровой сервер, мы решились. Что мы, рыжие что ли? И работа закипела.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Из чего состоит обычный WoW-сервер?

Если грубо, то всего из 4 вещей: ядро, база данных, сайт, хостинг.

И если хостинг можно купить почти где угодно, а платных и бесплатных сайтов в сети полным-полно, то с ядром и базой данных для этого ядра дела обстоят сложнее.


Ядро представляет из себя написанный на языке C++ фреймворк с добавлением готовых скриптов (например, описывающих поведение монстров или тех или иных заклинаний в том или ином случае). Несколько лет назад было много разных групп разработчиков, каждая группа занималась своим ядром, выкладывая свои труды (или их большую часть) в общий доступ. Разработчики сливались вместе, снова дробились на отдельные группы, пробовали использовать разные подходы и даже разные языки программирования.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Сейчас ситуация другая. Большинство разработчиков или ушли в приват (пишут код только за деньги и продают, не выкладывая в общий доступ) или просто забросили это дело. И по сути осталась только одна живая группа, которая продолжает идти вперёд и выкладывать свои исходники (код ядра) в сеть. Называют они себя TrinityCore и имеют самое живое и больше комунити среди всех оставшихся. До сих пор все спорят о качестве ядер от разных разработчиков. Но 100% работоспособностью не может похвастаться ни одно из них.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

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


Пс, на самом деле некоторые данные хранятся ещё в специальных файлах. Но эти файлы генерируются инструментами, которые входят в ядро, так что не будем на этом задерживаться.


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


И да, мы за основу взяли ядро от TrinityCore, и уже целый год не только следим за обновлениями проекта, но и активно вносим свои собственные изменения, чтобы игрокам на нашем сервере игралось максимально комфортно. Некоторые игроки собирают сервер не сами, а ставят чужие репаки (покупают или берут бесплатно на разных форумах), которые избавляют будущих ОдмЕнов от надобности разбираться в работе всей системы. Сразу можно запускать сервер в 3 клика. Но такой подход мне кажется неверным, ведь в готовых репаках вы ничего уже не измените.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Если хотите, можно сравнить сервер с блинами.

Что лучше: бабушкины блины на масленицу, которые она делает с любовью и вручную, или же заморозка из магазина, которые уже готовы - только разогрей? Ваша бабушка сделает блинчики по вашему вкусу. Потому что она сама мешает тесто. И, возможно, любит вас. Готовые блины с завода вы изменить не сможете. Они уже готовы, вы довольствуетесь тем, что уже есть. Потому что на том заводе, скорее всего, никто не любит вас. А жизнь - это боль.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Теперь как это всё собирается. Я опишу вам общую схему. Подробнее о сборке сервера с нуля могу рассказать в других постах по теме. Если это будет кому-то интересно.


Для начала, нужно заиметь в своё распоряжение хост. Некую машину (реальную или виртуальную), на которой наш новый сервер WoW будет крутиться и работать 24 часа в день и 7 дней в неделю.

Тут нужно понимать, что ваш домашний компьютер для этих целей не годится. Какое бы мощное железо у вас там ни стояло, это всё равно не то. Игровой сервер должен быть онлайн всегда. Не тогда, когда вы уходите по делам (на работу, в школу, в универ) и оставляете сервер включённым, а вообще всегда. У вас могут выключить свет в доме, у вас может пропасть интернет (тех. работы провайдера или пьяный бомж-сосед Анатолий с ножницами), у вас могут сесть за компьютер родственники или ваш кот (он всегда сидит в интернете, пока вас нет дома). В конце концов, ваша скорость интернета и ширина канала просто не позволят играть людям из других городов. У специальных фирм, которые занимаются предоставлением услуг хостинга, таких проблем нет. Это их хлеб, они (обычно) его отрабатывают.


Мощность вашего железа зависит от количества игроков. Нагрузка на сервер растёт почти в геометрической прогрессии. Нужно про этом помнить. Но для начала вам хватит 2 ядер средней мощности, 4гб оперативной памяти, около 40-50гб жёсткого диска. Как все знают, чем больше оперативной памяти, тем лучше чувствует себя админ.


Нам с этим повезло. Наш крупнейший областной провайдер интернета щедро предоставил нам мощности для этого небольшого проекта. За что ему дружно говорим спасибо.


На купленный или арендованный хост загружается загружается база данных, к ней подключаются ваш сервер и ваш сайт. При запуске игрового мира, ядро опрашивает базу и считывает данные. Если всё хорошо - ядро стартует. Если плохо - нет. При регистрации на сайте - данные аккаунта попадают в базу. При вашем входе в игру сервер проверяет, есть ли ваши данные в базе (логи и пароль). Если да - вас пускает. Если нет - вас не пускает. Во время игры ядро постоянно что-то читает из базы и записывает в неё обратно.

Уверен, вы и без меня это знали.

Как мы свой областной WoW сервер запускали (да, на них ещё играют) World of Warcraft, MMORPG, Длиннопост

Что касается сайта для вашего сервера, то тут  всё зависит от вас.

В свободном доступе много не только готовых сайтов-визиток с регистрацией, но и целых cms, заточенных именно под wow. Их действительно много, есть из чего выбрать. Многие люди, когда только открывают свой проект, используют готовый бесплатный сайт (паблик) и потом, если проект начинает развиваться, меняют его на уникальный, написанный специально для них. Ну, или просто меняют тему на новую и уникальную (если мы про cms).


От вашего сайта требуется: понятные ссылки, возможность регистрации в игре, форум, новости проекта. Мы выбрали в качестве сайта FusionCMS, специальная cms для серверов WoW, где не только много разных модулей-дополнений (платных и бесплатных), но и возможность подключать сайт к разным ядрам от разных разработчиков. Мы внесли немного изменений и улучшений, но в целом он готов прямо "из коробки".


Если пост не утонет, в следующий раз напишу про набор команды на проект и про печальное положение игроков пираток. Или про сборку сервера из кода с подробностями (думаю, про команду вам будет интереснее). Оставляйте пожелания в комментариях. И ваши вопросы.

Показать полностью 6

Советская фантазия. Нет, это не моя мечта, просто захотелось нарисовать нечто эпичное.

Все хвастаются своим творчеством. А я что, рыжий? Извиняюсь за качество, не очень старался. Ладно, я никогда не стараюсь..

Вархаммер

не все поймут
Вархаммер не все поймут
Отличная работа, все прочитано!