PvPGN (Battle.net)

Спросили меня не так давно - есть ли возможность поднять свой Battle.net на FreeBSD, а если есть, то помочь настроить. Игры, для которых возникла необходимость в собственном сервере, это Starcraft и Warcraft 3. После недолгих поисков было найдено решение в виде PvPGN. PvPGN (Player versus Player Gaming Network), который является модификацией сервера bnetd, эмулирует работу сервера Blizzard Battle.net (TM). Далее я расскажу о том, как его установить и настроить, а так же с какими проблемами я столкнулся в процессе работы с ним. Все действия будут происходить на ОС FreeBSD версии 8.3.

Идем в порты и устанавливаем PvPGN. На момент написания статьи в портах доступна версия 1.8.5.

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

При сборке порта доступны следующие параметры:

  • MYSQL - поддержка хранения данных о пользователях в MySQL.
  • PGSQL - поддержка хранения данных о пользователях в PostgreSQL.
  • SQLITE3 - поддержка хранения данных о пользователях в SQLite3.
  • D2 - собрать сервер для Diablo 2.

Хранить все в базе данных гораздо удобнее, чем хранить все в фалах. На сервере уже стоит СУБД PostgreSQL, поэтому я поставил галочку напротив опции - PGSQL. Остальные опции убрал.

После установки в директории /usr/local/etc появится директория pvpgn. В ней будут находиться стандартные конфигурационные файлы с именами вида *-sample. Все эти файлы необходимо переименовать (или скопировать) к виду без -sample. Уже сейчас можно запускать сервер и пробовать подключаться к нему, но есть опции, которые полезно будет посмотреть и возможно изменить. Да и к тому же надо настроить работу с PostgreSQL, ибо в стандартной конфигурации сервер все хранит в файлах. Так же не забываем создать базу данных и пользователя для PvPGN, если вы используете СУБД. Вот так выглядит главный конфигурационный файл /usr/local/etc/pvpgn/bnetd.conf у меня:

##############################################################################
# bnetd.conf  -  главный конфигурационный файл                               #
#----------------------------------------------------------------------------#
#                                                                            #
# ####################### Обязательно прочтите это ######################### #
# Данный файл содержит стандартную конфигурацию сервера, которая может       #
# использоваться без модификаций для большинства PvPGN установок, но         #
# возможно вам потребуется сделать некоторые изменения согласно вашим        #
# потребностям. Пустые строки и все, что начинается с символа "#"            #
# игнорируется. Заключайте значения для параметров в кавычки, если они       #
# содержат пробелы.                                                          #
#                                                                            #
##############################################################################


##############################################################################
# Пользователь и группа, под которыми будет работать сервер.                 #
# Можно использовать имена или числовые идентификаторы (начинающиеся с '#'). #
# Если ничего не указано, то сервер работает от пользователя, который его    #
# запустил.                                                                  #
#----------------------------------------------------------------------------#

# Примечание. Пользователь и группа bnetd создается при установке порта.
effective_user  = bnetd
effective_group = bnetd

# effective_user  = #12
# effective_group = #20

#                                                                            #
##############################################################################

##############################################################################
# Настройки хранилища                                                        #
# storage_path говорит pvpgn как и откуда/куда читать/писать информацию о    #
# пользователях. Доступна 2 драйвера: file и sql                             #
#                                                                            #
# Формат:                                                                    #
# * Для простого (plain) драйвера file:                                      #
#  storage_path = file:mode=plain;dir=<path_to_user_files>;clan=<path_to_clan_files>;default=/path/to/default/account #
# * Для cdb драйвера file:                                                   #
#  storage_path = file:mode=cdb;dir=<path_to_cdb_files>;clan=<path_to_clan_files>;default=/path/to/default/account   #
# * Для драйвера sql/sql2:                                                   #
#  storage_path = sql:variable=value;...;default=0 (0 is the default uid)    #
# or storage_path = sql2:variable=value;...;default=0 (0 is the default uid) #
#                                                                            #
# Доступные параметры для sql/sql2:                                          #
# - "mode" : какая БД будет использоваться (mysql/pgsql/etc..)               #
# - "host" : хост, на котором работает БД                                    #
# - "port" : порт                                                            #
# - "socket" : путь до UNIX сокета                                           #
# - "name" : имя базы данных                                                 #
# - "user" : пользователь                                                    #
# - "pass" : пароль                                                          #
# - "default" : UID используемый по умолчанию                                #
# - "prefix" : префикс для имен таблиц (по умолчанию "")                     #
#                                                                            #
# Примеры:                                                                   #
# 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 = file:mode=cdb;dir=/usr/local/share/pvpgn/userscdb;clan=/usr/local/share/pvpgn/clans;team=/usr/local/share/pvpgn/teams;default=/usr/local/etc/pvpgn/bnetd_default_user.cdb
# storage_path = sql:mode=mysql;host=127.0.0.1;name=PVPGN;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn_
# storage_path = sql:mode=pgsql;host=127.0.0.1;name=pvpgn;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn_
# storage_path = sql:mode=sqlite3;name=/usr/local/share/pvpgn/users.db;default=0;prefix=pvpgn_
# storage_path = sql:mode=odbc;name=PVPGN;prefix=pvpgn_
#                                                                            #
# Внимание!! вы должны изменить ниже параметр "DBlayoutfile" на              #
# sql_DB_layout2.conf, если используете драйвер "sql2" !!!                   #
# storage_path = sql2:mode=mysql;host=127.0.0.1;name=PVPGN;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn2_
# storage_path = sql2:mode=pgsql;host=127.0.0.1;name=pvpgn;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn2_
# storage_path = sql2:mode=sqlite3;name=/usr/local/share/pvpgn/users.db;default=0;prefix=pvpgn2_
# storage_path = sql2:mode=odbc;name=PVPGN;prefix=pvpgn2_
#----------------------------------------------------------------------------#

storage_path = sql:mode=pgsql;host=192.168.7.253;name=dbname;user=user;pass=pass;default=0;prefix=pvpgn_

#                                                                            #
##############################################################################

##############################################################################
# Секция, описывающее расположение служебных файлов                          #
# Параметр pidfile может быть установлен в "".                               #
# Используйте полные пути, чтобы избежать проблем!                           #
#----------------------------------------------------------------------------#

filedir     = /usr/local/share/pvpgn/files
reportdir   = /usr/local/share/pvpgn/reports
chanlogdir  = /usr/local/share/pvpgn/chanlogs
motdfile    = /usr/local/etc/pvpgn/bnmotd.txt
issuefile   = /usr/local/etc/pvpgn/bnissue.txt
channelfile = /usr/local/etc/pvpgn/channel.conf
newsfile    = /usr/local/etc/pvpgn/news.txt
adfile      = /usr/local/etc/pvpgn/ad.conf
topicfile   = /usr/local/etc/pvpgn/topics.conf
ipbanfile   = /usr/local/etc/pvpgn/bnban.conf
helpfile    = /usr/local/etc/pvpgn/bnhelp.conf
mpqfile     = /usr/local/etc/pvpgn/autoupdate.conf
logfile     = /var/log/pvpgn/bnetd.log
realmfile   = /usr/local/etc/pvpgn/realm.conf
maildir     = /usr/local/share/pvpgn/bnmail
versioncheck_file = /usr/local/etc/pvpgn/versioncheck.conf
mapsfile    = /usr/local/etc/pvpgn/bnmaps.conf
xplevelfile = /usr/local/etc/pvpgn/bnxplevel.conf
xpcalcfile  = /usr/local/etc/pvpgn/bnxpcalc.conf
pidfile    = /var/run/pvpgn/bnetd.pid
ladderdir   = /usr/local/share/pvpgn/ladders
command_groups_file = /usr/local/etc/pvpgn/command_groups.conf
tournament_file = /usr/local/etc/pvpgn/tournament.conf
statusdir   = /usr/local/share/pvpgn/status
aliasfile   = /usr/local/etc/pvpgn/bnalias.conf
anongame_infos_file = /usr/local/etc/pvpgn/anongame_infos.conf
DBlayoutfile = /usr/local/etc/pvpgn/sql_DB_layout.conf
supportfile = /usr/local/etc/pvpgn/supportfile.conf
transfile   = /usr/local/etc/pvpgn/address_translation.conf

fortunecmd  = /usr/games/fortune

#                                                                            #
##############################################################################


##############################################################################
# Логи                                                                       #
#----------------------------------------------------------------------------#

# Может быть определено несколько уровней логирования. Каждый уровень
# отделяется запятой. Доступные уровни логирования:
#   none
#   trace
#   debug
#   info
#   warn
#   error
#   fatal
loglevels = fatal,error,warn
#loglevels = fatal,error,warn,info

#                                                                            #
##############################################################################


##############################################################################
# Параметры сервера D2CS                                                     #
#----------------------------------------------------------------------------#

# Версия этого сервера D2CS (установите в 0, чтобы отключить проверку версий)
d2cs_version = 0

# Разрешить серверу D2CS зменять имена realm?
allow_d2cs_setname = true

#                                                                            #
##############################################################################


##############################################################################
# Загружаемые файлы                                                          #
#----------------------------------------------------------------------------#

# Об этих именах файлов сообщается непосредственно клиенту и они должны быть
# указаны относительно директории "filedir".
iconfile = "icons.bni"
war3_iconfile = "icons-WAR3.bni"
star_iconfile = "icons_STAR.bni"

tosfile = "tos.txt"

#                                                                            #
##############################################################################


##############################################################################
# Проверка клиента и обновлений                                              #
#----------------------------------------------------------------------------#

# Это список типов клиентов, которым разрешено подключаться к серверу.
# Список должен быть разделен запятой.
# all  : all client types allowed (default)
# chat : client type "CHAT" allowed (used by some bot software)
# dshr : client type Diablo 1 Shareware
# drtl : client type Diablo 1 (Retail)
# sshr : client type Starcraft Shareware
# star : client type Starcraft
# sexp : client type Starcraft Broodwar
# w2bn : client type Warcraft II Battle.Net Edition
# d2dv : client type Diablo 2
# d2xp : client type Diablo 2 LOD
# war3 : client type Warcraft III (Reign Of Chaos)
# w3xp : client type Warcraft III Frozen Throne
#
# Пример: allowed_clients = war3,w3xp
allowed_clients = all

# Если эта опция включена, то этап проверки версии клиента будет пропущен.
# Работает только с клиентами < 109. Это может оказаться полезным, потому что
# в этом случае вам больше не понадобятся файлы IX86AUTH?.MPQ и PMACAUTH?.MPQ.
# Учтите, что отключение данной функции повлечет за собой отключение
# функции автоматического обновления.
#
# Если вы выключите данный параметр, то вы должны иметь один или несколько
# MPQ файлов. Иначе клиенты будут зависать при первом подключении, потому что
# будут пытаться загрузить эти файлы. Проверка версий может быть отключена
# только для клиентов с версией ниже 109. Начиная с версии 109 клиенты всегда
# делают проверку версий, так как они не функционируют должным образом, если
# сервер не запрашивает ее.
skip_versioncheck = false

# Если вы включили проверку версий, но хотите чтобы клиенты не прошедшие ее
# могли подключиться, то включите данный параметр.
allow_bad_version = false

# Если вы включили проверку версий, но  хотите позволить клиентам
# не присутствующим в параметре versioncheck подключаться к серверу,
# то включите этот параметр. Если вы не имеете полного файла (прим. о каком
# идет речь не понятно) или вас не беспокоят читеры, то это хорошая идея
# (включить параметр).
allow_unknown_version = true

# Здесь определяется как проверять поле exeinfo в файле versioncheck.
# Вы можете выбрать между: no match at all [none] (default), 
# exact match [exact], exact case-sensitive match [exactcase], dumb wildcard 
# match [wildcard], and parsed value comparison [parse]. 
# Учтите: [parse] требует функцию mktime(), которая может быть не в каждой
# системе.
version_exeinfo_match = none

# Если выше вы выбрали [parse], то это допуск, на который время может различаться.
# Время указывается в секундах. Если 0, то данная функция выключена.
version_exeinfo_maxdiff = 0

#                                                                            #
##############################################################################


##############################################################################
#  Временные параметры                                                       #
#----------------------------------------------------------------------------#

# Время в секундах между синхронизациями с БД учеток пользователей, 0 - ждать вечно.
usersync  = 300
# Number of seconds of inactivity before file is unloaded from memory.
# (only checked during account file updates)
userflush = 1200
# Number of users checked for updates at once. Higher values make sense if you 
# either have very fast hardware or you don't have many number of accounts.
# Lower values make sense if you have very high CPU usage on the system you run
# the server (dont make it too low or your system will save accounts continously).
# Modify this value ONLY if you know what you are doing!!
userstep = 100

# Как часто проверять задержки канала до клиента (секунды).
latency = 600

# Как часто проверять жив ли клиент (секунды).
nullmsg = 120

# Amount of time to delay shutting down server in seconds.
shutdown_delay = 300
# Amount of time delay period is decremented by either a SIGTERM or SIGINT
# (control-c) signal in seconds.
shutdown_decr = 60

# Как часто проверять забаненых пользователей на предмет окончания этого самого бана (секунды).
#ipban_check_int = 30

#                                                                            #
##############################################################################


##############################################################################
# Настройки политик                                                          #
#----------------------------------------------------------------------------#

# Если вы не хотите разрешать людям создавать учетки на вашем сервере, то
# установите этот параметр в false.
new_accounts = true

# Максимальное количество учеток, которое возможно создать на этом сервере.
# По умолчанию 0, что значит - без ограничений.
max_accounts = 0

# Запретит вход на сервер под одной учеткой несколько раз одновременно.
kick_old_login = true
#kick_old_login = false
# With no passwords, this is bad to have enabled --NonReal

# Параметр load_new_account упразднен, его функционал всегда включен в PvPGN

# Если пользователь создает новый канал, то добавлять его автоматом или спросить
# их начала (кого их, х/з).
ask_new_channel = true

# Should a game report be written for every game played or just ladder
# games?
#report_all_games = false
report_all_games = true

# Should Diablo I/II reports be written?  There are no winners/losers.
report_diablo_games = false

# Скрывать ли запароленные игры в списке игр?
hide_pass_games = true

# Скрывать ли уже запущенные игры в списке игр? (полезно для очень загруженных серверов)
hide_started_games = true

# Скрывать ли не основные каналы в списке каналов?
hide_temp_channels = true

# Разрешить расширенные команды /-commands? (of course!)
extra_commands = true

# Считать отключение от игры за поражение?
# (Turning this on will override the user's choice in ladder games!)
disc_is_loss = false

# List additional game types to be counted as ladder games
# Curently allowed types: topvbot, melee, ffa, oneonone
# Example: ladder_games = "topvbot,oneonone"
ladder_games = "topvbot,melee,ffa,oneonone"

# If additional game types are configured (see above) to be counted as ladder 
# games then this setting configures a game name prefix to make only games 
# which match this game name prefix be counted as ladder. This allows to 
# still have normal games of the game types configured with "ladder_games" 
# directive. However if this setting is commented or "" then ALL games 
# which match the game types configured with "ladder_games" are to be 
# considered as ladder games. The prefix checking is CASE SENSITIVE!
# Example: ladder_prefix = "ldr_"
ladder_prefix = ""

# Разрешить всем пользователям использовать команды /con и /connections?
enable_conn_all = true

# Скрыть IP адрес от обычных пользователей (from /con, /games, /gameinfo, /netinfo)
hide_addr = false

# Писать в файлы в chanlogdir сообщения в закрытых каналах.
# (see channels.list for public channels)
chanlog = false

# Использовать квоту для каналов?
quota = yes

# Следующие параметры предназначены для ограничения посылаемых сообщений.
#
# Как много строк принимать за время quota_time (секунды)?
# (The default should allow 5 lines in 5 seconds,
# longer time periods allow "bursts" of traffic before the quota is full.)
quota_lines = 5     # must be between 1 and 100 lines
quota_time = 5      # must be between 1 and 60 seconds
# "virtual wrapping", so long lines count as multiple lines
quota_wrapline = 40 # must be between 1 to 256 chars
# absolute maximum characters allowed in a line
quota_maxline = 200 # must be between 1 to 256 chars
#
# How many lines do you accept in quota_time seconds before user is
# disconnected?
# (According to Jung-woo, Dobae is a Korean term for flooding the game server...
# it originally meant "to paint the wallpaper on a new or refurbished house").
# If it less than or equal to quota_lines, there is no warning before
# disconnection so don't set this too low.
quota_dobae = 10     # must be between 1 and 100 lines

# Mail support
mail_support = true
mail_quota = 5

# Channel logging message
log_notice = "*** Please note this channel is logged! ***"

# Банить за превышение количества неудачных попыток входа.
# Fails required to get ip banned (0 - выключить данную возможность)
passfail_count = 5

# Время бана в секундах
passfail_bantime = 300

# Максимальное количество пользователей в закрытом канале (0 - без ограничений)
maxusers_per_channel = 0

#                                                                            #
##############################################################################


##############################################################################
# Параметры учетных записей                                                  #
#----------------------------------------------------------------------------#

# Давать имена файлам (которые хранят данные о пользователе) в виде идентификатора или имени игрока?
savebyname = true

# Сохранять данные учетки при отключении
sync_on_logoff = true

# How man rows should the account lookup hash table have?  Servers with
# more accounts should use a larger table for better performance.
hashtable_size = 61

# Per default, only alphanumerical symbols are allowed in account names
# with this variable you can add some extra symbols to be allowed
# but be warned - that some of them might cause trouble - at least with
# savebyname=true (some symbols are forbidden in filenames or might cause
# you real trouble - plz neither allow wildcard symbols like '*' or '?'.
# Path delimiters like '/' or '\' are hardcoded filtered and can't be allowed.
# Also note that allowing the '.' might cause u some headache on win32 systems. 
# You have been warned - the rest is up to you.
# default setting is "-_[]" as it was previous versions
account_allowed_symbols = "-_[]"

# This setting affects users that login with their uid rather than their 
# username. If set to true their displayed username will be forcefully 
# converted to their registered account name.
account_force_username = false

# Максимальное количество пльзователей  в списке друзей.
# default setting is 20
max_friends = 20

#                                                                            #
##############################################################################


##############################################################################
# Tracking server info                                                       #
#----------------------------------------------------------------------------#

# Set track=0 to disable tracking.  Any other number will set number
# of seconds between sending tracking packets. This is OFF by default.
#track = 0
track = 60
# 10 minutes

# Tracking server(s)
# Use a comma delimited list of hostnames with optional UDP port numbers
# after colons. (port 6114 is the default for the newer tracking protocol)
#trackaddrs = "track.bnetd.org,localhost:9999"
#trackaddrs = "track.pvpgn.org"

# Change these to match your system, for example:
location = "Russia"
description = "Rock"
url = "http://www.info-x.org"
contact_name = "Nekit"
contact_email = "admin@info-x.org"

#                                                                            #
##############################################################################


##############################################################################
# Server network info                                                        #
#----------------------------------------------------------------------------#

# Имя сервера (По умолчанию: "PvPGN Realm")
#servername = "PvPGN Realm"

# Максимальное количество подключений к серверу (минимум 32).
max_connections = 100

# Максимальное количество одновременных попыток войти на сервер (0 - без ограничений).
max_concurrent_logins = 0

# Разрешить TCP посылать keepalive.
use_keepalive = true

# Максимальное количество подключений с одного IP (0 - без ограничений)
max_conns_per_IP = 0

# This is a comma delimited list of hostnames that the server should
# listen on.  It might be useful to make an internal-only server on a
# gateway machine for example.  If the list is not set or if it has a
# entry with no host component, the server will bind to that port on all
# interfaces.
#servaddrs = ":9999"
#servaddrs = "myinternalname.some.com,localhost"
servaddrs = ":" # default interface (all) and default port (6112)

# Don't change these unless you really need to!  You will need to run a proxy
# or modify the clients.  Also note that these will not change when simply
# sending a HUP signal to the server; they are only read on startup.

# This is the port the server send the UDP test packets to by default.
# Setting it to zero makes the server use the same port as the TCP connection
# comes from. Newer clients can override this setting on a per connection
# basis.
#udptest_port = 6112


# W3 Play Game router address. Just put your server address in here
# or use 0.0.0.0:6200 for server to bind to all interfaces,
# but make sure you set up w3trans if you do.
w3routeaddr = "0.0.0.0:6200"

# w3routeshow has been removed.
# see the address_translation.conf for translating the w3route ip for local networks

# initkill_timer sets up a periodic timer on init/defer class connections
# this should detect and clean up stale connections to your server
initkill_timer = 120

#                                                                            #
##############################################################################

##############################################################################
# Westwood Online (WOL) configuration                                        #
#----------------------------------------------------------------------------#

# NOTE: WOL support is still experimental!

# This specifies the addresses where IRC connections should be accepted. See
# the description of servaddrs for formatting information. Leave this field
# blank if you do not want to accept IRC connections.  If the port is not
# specifed then 4005 will be used. Note: DO NOT SET THE PORT TO ANYTHING OTHER
# THEN 4005, WOL WILL FAIL IF YOU DO!
#woladdrs = ":4005"

# Just leave these as default (unless you know the timezone, longitiude and latitude
# of your server
woltimezone = "-8"
wollongitude = "36.1083"
wollatitude = "-115.0582"

#                                                                            #
##############################################################################

##############################################################################
# Настройки IRC                                                              #
#----------------------------------------------------------------------------#

# Учтите: поддержка IRC находится на стадии тестирования!

# This specifies the addresses where IRC connections should be accepted. See
# the description of servaddrs for formatting information. Leave this field
# blank if you do not want to accept IRC connections.  If the port is not
# specified then 6667 will be used.
#ircaddrs = ":6667"

# This is the IRC network name. If this is not specified then the default of
# "PvPGN" will be used.
#irc_network_name = "PvPGN"

# This is the hostname used for IRC connections. Set this to your
# hostname, if the automatic detection doesn't correctly. 
#hostname = "none"

# Set this to the desired IRC connection timeout in seconds.
#irc_latency = 180

#                                                                            #
##############################################################################


##############################################################################
# Настройки Telnet                                                           #
#----------------------------------------------------------------------------#

# This specifies the addresses where telnet connections should be accepted.
# See the description of servaddrs for formatting information. Leave this
# field # blank if you do not want to accept telnet connections.  If the port
# is not specifed then 23 will be used.
#telnetaddrs = ":23"
telnetaddrs = ""

###############################################################################
# war3 ladder textual output                                                  #
#-----------------------------------------------------------------------------#
# this is for all the guys, that want Warcraft 3 ladder, but don't want their
# server to run with MySQL support.
# For each ladder (solo, team, ffa, at) a corresponing file is created,
# so it's easy to build your ladder pages with them

# the following value determines, at which rate, these files are created
# set to 0 if you don't want or need these files
war3_ladder_update_secs = 300

# jfro's latest ladder is based on XML... so we can switch to XML output of ladder
# on demand
XML_output_ladder = false

###############################################################################
# server status textual output                                           #
#-----------------------------------------------------------------------------#
# This is for writing status of the server in an attempt to see number of user
# on line actually, and games/chans.
# This is store in file var\status\warcraft3.dat as a *.ini format.
# Shouldn't be so hard in php to create dynamic website using this content.

# the following value determines, at which rate, these files are created
# set to 0 if you don't want or need these files
output_update_secs = 60

# jfro's latest ladder is based on XML... so we can switch to XML output of ladder
# on demand. Maybe we should set update interval bigger cause XML output version
# is much more verbose than the standard output
XML_status_output = false

###############################################################################
# Параметры кланов                                                            #
#-----------------------------------------------------------------------------#

# Time in hours for a new member of clan to be a newer(Peon icon, cannot promote to Grunt)
# default value 168(7 days). If set to 0, all new members could be promote in no time
clan_newer_time = 0

# max members count allowed in a clan, set between 10 and 100, default 50.
clan_max_members = 50

# Default clan channel status when create a clan, 1 for private, 0 for public
clan_channel_default_private = 0

После настройки помещаем демон bnetd в автозагрузку и запускаем его:

echo 'bnetd_enable="YES" >> /etc/rc.conf'
service bnetd start

Проверяем - запустился ли сервис:

sockstat -4 -l | grep bnet
bnetd    bnetd      15105 4  tcp4   *:6112                *:*
bnetd    bnetd      15105 5  udp4   *:6112                *:*
bnetd    bnetd      15105 6  tcp4   *:6200                *:*

На данном этапе настройка сервера PvPGN завершена. Осталось на стороне клиентов прописать адрес данного Battle.net сервера. Для этого есть специальные программы, которые облегчают данный процесс. Парочку таких я прикрипил к статье. Теперь о проблемах, которые возникли в процессе эксплуатации данного сервера. Starcraft подключается к серверу без каких-либо дополнительных приложений, но возникает проблема, когда игроки WAN и LAN пытаются играть вместе. Starcraft жутко начинает лагать. Описание и решение данной проблемы можно найти по ссылке, которую я указал в полезных ссылках. С Warcraft 3 немного веселее - для того, чтобы он работал с данным сервером необходим загрузчик, который я так же прикрепил к статье. Он подходит для версий игры 1.22 и выше, я проверял его на версии 1.26.

Пару слов про создание первого администратора в PvPGN: после создания учетной записи на сервере, нужно подключиться к базе данных и в таблице pvpgn_bnet у нужного пользователя в колонке auth_admin установить значение в true.

Гость (не проверено)

а почему когда пытаюсь создать клан он выдаёт кучу вариантов мнесто /clan create  название клана  сокарщённое название

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика