Наркотик для игроманов. Ставим под Linux популярные игровые сервераВладимир «turbina» Ляшко (v.turbina@gmail.com) Ролевая игра World of Warcraft и шутер Call of Duty завоевали миллионы поклонников во всем мире. Увы, чтобы поиграть, на большинстве серверов придется раскошелиться. Бесплатные сервера часто перегружены или попросту недоступны из другого региона. Так почему бы не поднять свой собственный игровой сервачок? Разделяем и властвуем с мангосЦель проекта MaNGOS (Massive Network Game Object Server, getmangos.com) – это создание альтернативной реализации сервера WoW. Сегодня доступны версии под Linux, FreeBSD и Windows. Лицензия не позволяет использовать мангос в коммерческих целях и устанавливать публичные серверы на его основе, но никто не запрещает настроить WoW сервер в домашней сети. Существуют отдельные проекты по наполнению базы данных мангос и написанию скриптов для уникального поведения отдельных NPC. Код MaNGOS является открытым, и энтузиасты предлагают огромное количество патчей, устраняющих те или иные ошибки. Обилие наработок, порядок их установки и прочие тонкости могут сбить с толку любого. Поэтому статья написана в виде пошагового руководства. Чтобы построить сервер только из свободно распространяемых компонентов, установку будем производить в Ubuntu 8.04 LTS (хотя многое из сказанного актуально и для других Linux-дистрибутивов). Первым делом инсталлируем пакеты, необходимые для получения git/SVN-архивов и сборки приложений. Так как для хранения игрового мира используется MySQL (по умолчанию) или PostgreSQL, ставим соответствующие пакеты. Кроме того, нужны заголовочные файлы OpenSSL и сервера БД.
Создаем рабочий каталог:
Сейчас предстоит сделать первый выбор: ссылки проекта ведут, как минимум, на две версии сервера. На момент написания этих строк в SVN (и git) была версия 0.13, которая поддерживает новую версию клиента 3.0.3 (build 9183) и старого 2.4.3. Стабильный релиз MaNGOS 0.12 поддерживает только 2.4.3 версию клиента. Будем работать с 0.13, но в установке особой разницы нет.
Или через git:
Теперь нужно скачать расширение ScriptDev2 (sf.net/projects/scriptdev2). Оно обеспечивает работу скриптов, предназначенных для создания игровых объектов, персонажей и квестов:
Название каталога должно быть именно ScriptDev2, никаких scriptdev2 или Scriptdev2! Получаем копию:
Патчим:
Или по старинке:
При получении файлов через git есть один каверзный момент. Если в каталоге src/bindings лежит файл .gitignore:
– то эту строку нужно закомментировать, иначе ScriptDev2 собираться не будет. Чтобы обновить все файлы для компиляции, вводим:
Если попытаться сконфигурировать в текущем каталоге, получим ошибку, поэтому:
Так мы подключили удаленное администрирование (--enable-ra) и командную консоль (--enable-cli). Чтобы не искать файлы по всем каталогам, можно использовать стандартные ключи '–-prefix', '--sysconfdir' и '--datadir'. Чтобы задействовать базу PostgreSQL, дополнительно укажи параметры "--with-mysql=no --with-postgresql=yes".
Чистим:
Создаем базыДля создания баз и таблиц сервера используем заготовки, находящиеся в подкаталоге sql дистрибутива:
В результате будет создана база mangos, администратором которой является пользователь mangos с паролем mangos:
В рабочей системе желательно изменить пароль и ограничить доступ к MySQL только с локального узла (в Ubuntu и других дистрибутивах так сделано по умолчанию). Заполняем таблицы, создаем дополнительные базы:
И подтягиваем базу ScriptDev2:
На этом сервер к работе, в принципе, готов. Но подключаться к нему еще ой как рано. Где же мои орки?Базы и таблицы созданы, но их еще нужно наполнить содержимым, то есть создать будущие поля сражений и заселить их монстрами. Здесь начинается самое интересное. Проектов, реализующих нужную нам функциональность, великое множество. Это UDB (UnifiedDb, www.udbforums.org), который можно назвать официальным, YTDB (ytdb.kanet.ru), Silvermoon (projectsilvermoon.net), Silver DataBase (SDB, opensvn.csie.org/SDB, sf.net/projects/sdbmangos), немецкий MaNGOS-DBs (sf.net/projects/gm-db), EDB и другие. Какой из них выбрать - единодушного мнения на этот счет нет и не будет. Посетить проекты рекомендую в любом случае, там найдешь полный список файлов, патчей, а также полуготовые сборки (100% работоспособности никто гарантировать не может, но все же это лучше, чем ничего).
Нужный нам файл сжат архиватором RAR. В поставке Ubuntu его нет, поэтому:
Распаковываем архив и заполняем базу:
Теперь обновляем базу до ревизии сервера. На момент написания этих строк в подкаталоге Updates было 7 файлов, но, поверь, это еще не предел. В некоторых советах предлагают собрать их в один файл и поставить командой «cat trunk/Updates/0.10.4_additions/* > updates.sql». Но лучше так не делать и накатывать каждое отдельно, так как в апдейтах меняется структура БД, и «одновременная» установка может вызвать ошибку. К тому же, в updates может находиться обновление не только для базы mangos, но и для realmd, realmlist, characters. К какой из них относится конкретный файл, – подскажет имя. Так, файл обновления 5632_characters.sql соответствует 5632 версии базы characters. Поэтому методично ставим обновления, ориентируясь на дату, которая может использоваться в наименовании файла, или релиз. Текущий релиз сервера узнать просто:
При запуске сервера выдается чуть больше информации: «MaNGOS/0.13.0 (2008-12-30 02:00:26 Revision 6985 - 205)». В нашем случае используется база версии 6766 (определяем по имени UDB_0.10.4_Core_6766_SD2_689.sql). То есть, нужны все апдейты позднее 30.12.2008 и версии 205/6985. Старшие обновления ставим первыми. Если при установке появилась ошибка, ничего страшного, пропускаем этот файл. Апгрейдим и таблицы для работы ScriptDev2. Здесь все просто:
И, наконец, последний шаг: заносим в realmlist настройки нашего сервера (название и IP-адрес):
Да, еще один необязательный, но весьма желательный с точки зрения безопасности шаг. Запрос:
– покажет наличие четырех учетных записей в таблице account базы realmd. Их лучше удалить и записать свою (например, admin/password):
Как вариант, для редактирования таблиц можно воспользоваться одним из интерфейсов к MySQL, вроде phpMyAdmin. Правим конфигиПосле установки у нас должно появиться три конфигурационных файла: mangosd.conf, realmd.conf и scriptdev2.conf. Все они находятся в /usr/local/etc (если не использовалась директива '--sysconfdir'). В scriptdev2.conf настраивается только уровень журналирования, поэтому интерес для нас представляют первые два файла.
Настройки в mangosd.conf практически аналогичны:
В каталоге mangos/contrib/extractor находится программа AD, применяемая для извлечения карт (две версии для Linux и Windows). Рекомендуется использовать виндовый вариант (AD.exe), – работает лучше. С одного из проектов поддержки (например, mangos.ru) скачиваем архив с dbc-файлами и распаковываем их в /usr/local/share/mangos/dbc:
Копируем файлы с диска WOW в каталог с программой AD.exe, затем создаем подкаталог maps и запускаем распаковщик. По окончании процесса переносим заполненный каталог maps в /usr/local/share/mangos. Аналогично извлекаем vmaps, копируем в корень архива WoW каталог vmap_extract_assembler_bin (из дистрибутива MaNGOS) и запускаем находящийся внутри батник makevmaps_SIMPLE.bat. В итоге получим подкаталог vmaps, который копируем на сервер в ту же папку, где и maps. Все готово к первому запуску мангоса:
В процессе запуска на консоль будут выведены диагностические сообщения, просмотри их на наличие ошибок. В будущем, для автоматизации запуска, можно написать скрипт (на указанных выше ресурсах есть готовые примеры). Да, и команды на боевом сервере нужно выполнять с повышенным приоритетом, добавив в начале "nice -n -20". Для управления сервером, аккаунтами, базами и прочими компонентами есть довольно большое количество проектов – поиск на Sourceforge выдаст не один десяток ссылок. Например, терминал MaNGOS DB Terminal (sf.net/projects/mdbt), веб-интерфейсы MWFv3 (mangos-wf-v3.sf.net). Очень популярен редактор квестов, мобов, объектов, предметов и прочего – Quice (quice.indomit.ru). Сейчас активно развивается проект WotLK (MaNGOS Beta Server, sf.net/projects/wotlkmangosbeta), благодаря нему установка сервера MaNGOS может заметно упроститься. Сall of Duty 4Установка сервера для игры в Call of Duty 4 проще: нет такого выбора, а значит, и путаницы, но немного потрудиться все-таки придется. Необходимые файлы можно скачать с одного из зеркал, ссылки на которые найдешь на странице icculus.org/news/news.php?id=4095, в ветке «Download» сайта cod-4.ru или в форуме www.callofduty.ru/forum (ветка «Сервера под Linux»). Есть ссылки на разные версии в вариантах для Windows и Linux, в обычной и Full комплектациях. Обычная версия содержит только скрипт и бинарник для индексирования диска, а вариант Full – дополнительно некоторые библиотеки и пару карт. Помимо этого, для установки своего сервера нам понадобится DVD-диск с игрой. Создаем рабочий каталог:
В примере буду использовать обычный вариант сервера, взятый с icculus.org. Качаем архив с одного из зеркал (размер чуть больше 3 Мб) и распаковываем:
Получаем в текущем каталоге ряд файлов (cod4_lnxded, cod4_lnxded-bin, libgcc_s.so.1, libstdc++.so.6), которые при помощи «chmod +x» делаем исполняемыми. Сначала устанавливаем и активируем античит-систему PunkBuster:
Если есть файлы поддержки русского языка, добавляем в строку запуска «+set loc_language 6». Опционально указываем IP-адрес, порт, конфигурационные файлы и прочие параметры (кстати, активация Punkbuster может привести к тому, что зайти в игру нельзя – ботов она тоже убирает; если это так, просто не используем ее):
Параметр «+set dedicated 1» означает выделенный локальный сервер, «+map_rotate» - запуск непрерывной смены карт. Удобнее все настройки поместить в конфиг и положить в подкаталог main. Команды netstat/sockstat должны показать активные порты:
На самом деле, во время игры открытых сервером портов будет больше (20500, 29900, 20510 и 28960). Не забываем прописать их в разрешающие правила файрвола. INFO
WWWСайты проектов, связанных с MaNGOS: Сайты проектов, связанных с COD: |