Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Games Servers —> PVPGN

Игровой сервер Battle.net (StarCraft, Warcraft 3) на основе pvpgn + mysql на FreeBSD

Автор: helloworld.


Сразу скажу, что эта статья НЕ описывает настройку сервера для Diablo2, ибо у меня нет желания ставить wine на сервер только из-за Диаблы.

Сервер, железо, ос:
Pentium 3 - 800 mhz, 256 RAM, 15 gb HDD, 100 mbit\s 3com iface
# uname -a
FreeBSD area52 6.1-RELEASE-p20 FreeBSD 6.1-RELEASE-p20 

# cd /usr/ports/games/pvpgn/
# make install clean

Выбираем в менюшке только mysql.

Все супер, скачалось поставилось. Далее:

# cd /usr/local/etc/pvpgn

Там видим кучу файлов типа *.conf-sample. Переименовываем ВСЕ в вид *.conf

Редактируем главный файл настроек bnetd.conf

# ee bnetd.conf

Видим:

effective_user  = bnetd
effective_group = bnetd

Здесь bnetd - пользователь от которого будем запускать наш Battle.net, убедитесь сначала в /etc/passwd есть ли таковой.

Далее редактируем строку:
storage_path = file:mode=plain;dir=/usr/local/share/pvpgn/users;clan=/usr/local/share/pvpgn/clans;
team=/usr/local/share/pvpgn/teams;default=/usr/local/etc/pvpgn/bnetd_default_user.plain

На это:
storage_path = sql:mode=mysql;host=127.0.0.1;name=pvpgn;user=pvpgn;pass=pvpgn;default=0;prefix=pvpgn_

Где mode - БД mysql, host - хост где висит БД, name - название БД, user - пользователь БД, у когорого есть все права на БД pvpgn, pass - пароль пользователя.

Ищем строку

loglevels =

и пишем следующее :
loglevels = fatal,error,warn,info

Далее правим эти строки:
skip_versioncheck = true
allow_bad_version = true
allow_unknown_version = true

Ну и последнее:
ladder_games = "topvbot,oneonone,melee,ffa"

Весело сохраняем bnetd.conf

После этого выставим права на пользователя bnetd

# chown -R  bnetd: bnetd /usr/local/etc/pvpgn
# chmod -R 644 /usr/local/etc/pvpgn

В /etc/rc.conf пишем
bnetd_enable="YES"

Основная часть работы с pvpgn закочилась.

Нужно создать пользователя pvpgn с паролем pvpgn и со всеми правами на базу данных pvpgn
Я это делал через phpmyadmin. Думаю это составит большого труда.

Тестируем:

#/usr/local/etc/rc.d/bnet start
И сразу смотрим логи /var/log/pvpgn
# cat /var/log/pvpgn/bnetd.log

Если есть последние записи типа
Nov 29 21:41:13 [info ] _setup_listensock: listening for bnet connections on 0.0.0.0:6112 TCP
Nov 29 21:41:13 [info ] _setup_listensock: listening for w3route connections on 0.0.0.0:6200 TCP

Значит сервер запущен и работает.

Если подобных вещей нет и командой netstat -na нет открытых портов *:6112 *:6200 то какие то проблемы. Изучайте английский и читайте лог файл /var/log/pvpgn/bnetd.log

Дополнение №1: Pvpgn очень много кладет логов при присоединении игроков к серверу, созданию игр и тд, место на /var может быстро закончиться, рекомендую поставить
loglevels = none

в файле /usr/local/etc/pvpgn/bnetd.conf если сервер работает стабильно и без проблем.

Дополнение №2: Нам же нужно как то администрировать процесс игры на сервере. После  удачного запуска pvpgn создайте первую учетную запись через Warcraft\Starcraft(прописав ip адрес вашего батлнета в список серверов в игре(например используя программу BNetGatewayEditor)). Так как все логины\пароли храняться в БД mysql то лезем туда через phpmyadmin:
Выбираем нашу бд pvpgn, далее слева pvpgn_BNET, обзор(browse),  ищем логин предполагаемого первого администратора, жмем кнопку редактировать запись, выставляем возле auth_operator: true и auth_admin: true. Сохраняем. Через 300 секундЁ ваши изменения вступят в силу.


ps: статья описывает МИНИМУМ необходимый для поднятия сервера Battle.net  в локальной сети. Вы смело можете покапаться в настройках bnetd.conf и выставить параметры как считаете нужным.



размещено: 2007-12-07,
последнее обновление: 2007-12-07,
автор: helloworld


opt1k, 2007-12-08 в 10:57:32

нормалёк, а BNetGatewayEditor может прописать сервер батлы в варике третьем?

o2x, 2007-12-18 в 14:56:24

С такими правами сервер не запускается.
Правильно так:

# chown -R  bnetd:bnetd /usr/local/etc/pvpgn
# chmod 755 /usr/local/etc/pvpgn
# cd /usr/local/etc/pvpgn
# chmod 644 *
# chown -R bnetd:bnetd /usr/local/share/pvpgn

ufaweb, 2008-01-05 в 17:55:02

опечатка: #/usr/local/etc/rc.d/bnet start
надо: #/usr/local/etc/rc.d/bnetd start

Zv1r, 2008-03-05 в 12:54:39

"...BNetGatewayEditor..."  - антивирус кричит TR/Spy.Agent.G

Roman, 2008-04-02 в 19:05:51

StarCraft/BroodWar поднялся без проблем, WarCraft3 не цепляется нивкакую.

Roman, 2008-04-03 в 8:01:18

WarCraft3 заработал, нужен лоадер, нашёл тут:
http://www.kamrad.ru/showthread.php?s=893fb223ccf41507eee99e3f08257508&postid=742809

val_Atero, 2009-09-02 в 15:37:53

навсякий случай напишу что делать тем, кто не ставит пхпадмин, или не хочет.

Нужно создать пользователя pvpgn с паролем pvpgn и со всеми правами на базу данных pvpgn

#mysqladmin create pvpgn
#mysql
--> GRANT ALL PRIVILEGES ON *.* TO 'pvpgn'@'localhost' IDENTIFIED BY 'pvpgn' WITH GRANT OPTION;


Нам же нужно как то администрировать процесс игры на сервере.

#mysql
--> use pvpgn
--> UPDATE pvpgn_BNET SET auth_admin='true' where username='ваш юзверь';
--> UPDATE pvpgn_BNET SET auth_operator='true' where username='ваш юзверь';

val_Atero, 2009-09-03 в 16:35:39

и последний нюансик.

--> UPDATE pvpgn_BNET SET auth_command_groups=\'255\' WHERE username=\'ваш юзверь\';
теперь все)



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0364 секунд
Из них PHP: 20%; SQL: 80%; Число SQL-запросов: 77 шт.
Исходный размер: 24278; Сжатая: 6491