Создание и настройка сервера DayZ Mod - часть 2. Конфиги, конфиги, кон..фиги...

Тема закреплена бессрочно.

scared

Посвященный
Ур
0
 
Предыдущие части:
1.Подготовка игры и себя к настройке сервера.
2ufenv7.jpg
"Пока все ждут Standalone" - серия статей, посвящённых настройке приватного сервера DayZ Mod.​
У меня давно была идея написать статью, или даже цикл статей, где я поделился бы своим опытом администрирования приватного сервера DayZ, рассказал бы о буднях админа, ожидающих его трудностях и о том, как хобби превратить в нечто большее.​
Так как материала будет достаточно много, придётся все же поделить его на несколько тем. Мы будем последовательно разбираться в тонкостях настройки: начиная с выбора площадки, и заканчивая настройкой приватного списка и добавлением новых объектов на карту.​
Не хочу отвлекать читателей лишней писаниной, просто попрошу все надочёты или ошибки указывать в личные сообщения.​
Итак, приступим.​


Часть 2. Конфиги, конфиги, кон..фиги...

Вот мы и разобрались с подготовкой машины к запуску сервера, и уже в предвкушении потираем ладошки, но... До настоящего старта придётся еще прилично поработать.
Первое, что нужно сделать - настроить конфиги сервера. Всего их 6 штук.

1. "Сетевой" конфиг
Название: arma2.cfg
Где лежит: сервер/cfgdayz/
Важность настройки: высокая (повышается с увеличением макс. кол-ва слотов)
Сложность настройки: высокая
Файл также следует сдублировать в диркеторию под именем "basic.cfg" (мы просто объединили 2 файла в один) после всех изменений.
Это конфигурационный файл "железной" составляющей нашего сервера. Даже скорее "сетевой". Далее под спойлером идут настройки с пояснениями, затем "чистый конфиг" без комментариев, а еще ниже я напишу, как лучше подобрать параметры.
Пояснения:

language="English";//Язык
adapter=-1;
3D_Performance=-4194304;
Resolution_Bpp=32;
Resolution_W=0;
Resolution_H=0;
Windowed=0;
//Все параметры выше не влияют на наш сервер, можно их не менять, но и убирать не надо.
MaxMsgSend=192;//Максимальное кол-во пакетов, которое может быть отправлено за один "кадр" на сервере. БОльшее значение поможет уменьшить лаги на серверах с большой пропускной способностью.
MaxSizeGuaranteed=512;//Макс. размер неповторяемых пакетов без заголовков (используются, например, для мониторинга и передачи выстрелов). Сообщения собираются вот в такие вот пакеты.
MaxSizeNonguaranteed=256;//Макс. размер повторяемых пакетов без заголовков (используются для передачи позиции игрока и техники). Увеличение размера может уменьшить нагрузку на канал, но также и привести к лагам.
MinBandwidth=128000;//Пропускная способность, ГАРАНТИРОВАННО поддерживаемая сервером.
MaxBandwidth=1000000;//Пропускная способность, которая НИКОГДА не будет достигнута сервером - немного больше "верхнего лимита" вашего канала.
MinErrorToSend=0.0020000001;//Минимальная "ошибка", при которой пакет будет отправлен заново. Уменьшение поможет сделать движение объектов при рассматривании их в бинокль/прицел более плавным.
MinErrorToSendNear=0.02;//Минимальная "ошибка", при которой пакет будет отправлен всем близлежащим объектам повторно. Подбирается индивидуально для каждого сервера.
MaxCustomFileSize=0;//Ставим в 0, чтобы игроки со своими "текстурками" не смогли пробиться на наш сервер.
serverLongitude=31;//Долгота местоположения вашего сервера. Нужна для распределения нагрузки между серверами bistudio
serverLatitude=50;//Широта местоположения вашего сервера. Нужна для распределения нагрузки между серверами bistudio
serverLongitudeAuto=0;//Автоопределение местоположения сервера 0 -откл, 1 - вкл.
serverLatitudeAuto=0;//Автоопределение местоположения сервера. 0 -откл, 1 - вкл.
class sockets
{
maxPacketSize=1400;//Этот параметр определяет макс. размер любого пакета (входящего/исходящего) на сервере. Не стоит ставить MaxSizeGuaranteed и MaxSizeNonguaranteed больше, чем этот параметр - это приведёт к лагам. Вообще, лучше оставить его равным 1400.
};
Конфиг:
language="English";
adapter=-1;
3D_Performance=-4194304;
Resolution_Bpp=32;
Resolution_W=0;
Resolution_H=0;
Windowed=0;
MaxMsgSend=192;
MaxSizeGuaranteed=512;
MaxSizeNonguaranteed=256;
MinBandwidth=128000;
MaxBandwidth=1000000;
MinErrorToSend=0.0020000001;
MinErrorToSendNear=0.02;
MaxCustomFileSize=0;
serverLongitude=31;
serverLatitude=50;
serverLongitudeAuto=0;
serverLatitudeAuto=0;
class sockets
{
maxPacketSize=1400;
};



Итак, о настройке. С параметрами serverLongitude/serverLatitude и MinBandwidth/MaxBandwidth всё понятно - первые можно не трогать, поставив serverLongitudeAuto/serverLatitudeAuto в 1, а вторые выставить таким образом: MinBandwidth - немного меньше вашей минимальной гарантированной пропускной способности,
MaxBandwidth-заявленная пропускная способность плюс пару мегабит/сек. Значения следует переводить в бит/сек.
MaxMsgSend рассчитываем, исходя из максимальной скорости нашего сервера и среднего кол-ва игроков, которых мы рассчитываем видеть на сервере. Дефолтное значение - 128. Для 30 игроков достаточно поставить 192. Для 45-50 уже лучше увеличить до 256. Но опять же, не забываем, что 30, 45-50 здесь - СРЕДНЕЕ кол-во игроков, на которое мы рассчитываем, поэтому не тянитесь тут к верхнему порогу, старайтесь его уменьшить. Этот параметр придётся откалибровать позже, когда сервер соберёт свою аудиторию.
MaxSizeGuaranteed - чем больше игроков, тем больше размер. Рассчитываем, как (17 * МАКСИМАЛЬНОЕ_КОЛ-ВО_ИГРОКОВ). В примере 30*15=510. Округлил в сторону 512 - степени двойки.
MaxSizeNonguaranteed - в зависимости от кол-ва техники ставим: Если техники больше 40 единиц - MaxSizeGuaranteed/2. Если меньше 40 - MaxSizeGuaranteed/4. В примере:512/2=256
MinErrorToSend=0.0020000001 - советую сначала поставить такое значение, потом подобрать его под лично ваш сервер (посмотреть в бинокль за приятелем, бегающим вдалеке, оценить плавность)
MinErrorToSendNear=0.02 - советую сначала поставить такое значение, потом подобрать его под лично ваш сервер (побегать вместе с приятелем, проверить плавность передвижения)
Вот теперь наш сервер готов принять игроков "морально". Но буквально... Смогут ли они его найти в браузере? Сможете ли вы им управлять через rcon? Нет. Поэтому переходим к следующему файлу

2. "Лицевой" конфиг
Название: server.cfg
Где лежит: сервер/cfgdayz/
Важность настройки: высшая (обязательно настраивать)
Сложность настройки: cредняя
Конфиг, представляющий "лицо" сервера:)
Открываем спойлеры и учимся
Пояснения:
//
// server.cfg
//
// комментарии записываются в формате "//КОММЕНТАРИЙ", и не влияют на комментируемый параметр


// GLOBAL SETTINGS
hostname = "DayZ- СЕРВЕР_ВАСИ(v1.7.6.1/Beta 102591)[PRIVATE|3DP:ON|CH:ON] - hosted by VASYA PUPKIN";// Имя сервера, которое Вы будете видеть в системах мониторинга и в браузере в игре. Обычно тут указывается версия мода/бета-патча/аддонов, ну и настройки, которые мы рассмотрим далее
password = "";// Пароль для входа на сервер
passwordAdmin = "vasya_pupkin_super_admin";// Пароль для управления сервером прямо во время игры (об этом мы поговорим через один выпуск)
reportingIP = "arma2oapc.master.gamespy.com";// Мастер-сервер. Не изменяем.
logFile = "server_console.log";// Имя файла журнала (далее - лога). Желательно не менять - некоторые парсеры логов используют именно это имя.


// Сообщение приветствия ("MESSAGE OF THE DAY" - motd)
// Можно заполнить несколько линий через запятую, сообщения будут появляться через заданный в секундах интервал
// Можно сделать пустые сообщения - "", для того чтобы увеличить интервал между определёнными из них. Важен тот факт, что интервал и время появления сообщений ведётся для каждого игрока отдельно
motd[] = {
"VISIT MY WEBSITE VASYAPUPKIN.COM",
"ADMIN CONTACT: VASYAPUPKIN (SKYPE) OR VASYAPUPKIN@VASYAPUPKIN.COM",
"Do not cheat, respect other players.",
};
motdInterval = 450;// Tот самый интервал между сообщениями. "нулевая" секунда - момент подключения игрока к серверу.


// Настройки подключения
maxPlayers =34;// Максимальное кол-во игроков
kickDuplicate = 1;// Если выставить в "1", игра будет кикать игроков под одинаковым, используемым ID
verifySignatures = 1;// Проверять сигнатуры файлов (.pbo). "0" - нет, "1" - .pbo вместо .bisign, "2" - .bisign и .pbo
equalModRequired = 0;// Функция более не поддерживается. Ранее проверяла совместимость модов на сервере и у клиента.
requiredBuild = 102591;// Минимальная версия beta-patch'a, необходимая для подключения


// Голосование
voteMissionPlayers = 1;// Сколько игроков должно быть на сервере для показа экрана выбора миссий. В DayZ не влияет ни на что
voteThreshold = 2;// Точно так же, не меняем


// INGAME SETTINGS
disableVoN = 0;// Отключить голосовое общение в игре ("0" - чтобы включить)
vonCodecQuality = 6;// Качество звука (от 1 до 10 - может нехило жрать трафик)
persistent = 1;// Если стоит "1", даже после выхода всех игроков миссия будет продолжать выполняться (не советую выключать - при рестартах будет мешать).
timeStampFormat = "short";// Формат таймштампов в server.rpt-файле. Возможные значения - "none" (нет, стандарт.),"short" (короткий - время),"full" (полный - дата/время).
BattlEye = 1; // Античит BattlEye. Обязательно "1".


// События
onUserConnected = "";//Сообщение при подключении игрока (отключены в DayZ)
onUserDisonnected = "";//Сообщение при отключении игрока (отключены в DayZ)
doubleIdDetected = "";//Сообщение при подключении игрока с используемым ID(отключены в DayZ)

// Проверка сигнатур
onUnsignedData = "kick (_this select 0)";// при несовпадении сигнатур (в примере - кик)
onHackedData = "kick (_this select 0)";//"ban (_this select 0)";// при использовании умышленно измененных файлов - кик, закомментирована (//...) команда для бана.
onDifferentData = "";// сигнатуры верны, но версия отключается


// Цикл миссий
class Missions
{
class DayZ {
template = dayz_1.Chernarus;//имя миссии, которую следует запустить
difficulty = "regular"; // настройки сложности сервера, которыми мы займёмся в буквально через абзац
};
};
Чистый конфиг:

//
// server.cfg
//
// комментарии записываются в формате "//КОММЕНТАРИЙ", и не влияют на комментируемый параметр


// GLOBAL SETTINGS
hostname = "DayZ- СЕРВЕР_ВАСИ(v1.7.6.1/Beta 102591)[PRIVATE|3DP:ON|CH:ON] - hosted by VASYA PUPKIN";
password = "";
passwordAdmin = "vasya_pupkin_super_admin";
reportingIP = "arma2oapc.master.gamespy.com";
logFile = "server_console.log";
motd[] = {
"VISIT MY WEBSITE VASYAPUPKIN.COM",
"ADMIN CONTACT: VASYAPUPKIN (SKYPE) OR VASYAPUPKIN@VASYAPUPKIN.COM",
"Do not cheat, respect other players.",
};
motdInterval = 450;


// Настройки подключения
maxPlayers =34;
kickDuplicate = 1;
verifySignatures = 1;
equalModRequired = 0;
requiredBuild = 102591;


// Голосование
voteMissionPlayers = 1;
voteThreshold = 2;

// INGAME SETTINGS
disableVoN = 0;
vonCodecQuality = 6;
persistent = 1;
timeStampFormat = "short";
BattlEye = 1;


// События
onUserConnected = "";
onUserDisonnected = "";
doubleIdDetected = "";

// Проверка сигнатур
onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";
onDifferentData = "";


// Цикл миссий
class Missions
{
class DayZ {
template = dayz_1.Chernarus;
difficulty = "regular";
};
};


Думаю, тут не должно возникнуть никаких поблем. Еще раз напомню о важности названия сервера по общепринятому шаблону(с указанием версии, бета-патча, сложности и словом DayZ для поиска), о том, что обязательно нужно включить BattlEye, и о том, что не рекомендуется выставлять число игроков больше 60.
Переходим к следующему конфигу.
DayZ-Standalone-mocap-610x344.jpg
3. "BattlEye" конфиг
Название: BEserver.cfg
Где лежит: сервер/cfgdayz/
Важность настройки: высшая (обязательно настраивать)
Сложность настройки: низкая
Тут всё просто до ужаса.

RConPassword vasya_pupkin_super_admin
MaxPing 300

RConPassword - наш РКОН-пароль для управления сервером через BattlEye, обычно ставится такой же как passwordAdmin в конфиге выше
MaxPing - при превышении этого значения игрок с таким пингом будет кикнут. Более 300 обычно начинаются лаги, поэтому отсекаем игроков из дальнего забугорья:)

4. "Игровой" конфиг
Название: cfgdayz.ArmA2OAProfile
Где лежит: сервер/cfgdayz/users/cfgdayz
Важность настройки: средняя
Сложность настройки: средняя
Конфиг позволяет редактировать настройки сложности сервера (такие как наличие прицела, вид от третьего лица, и показ ников игроков при наведении оружия). Как и обычно, просим под первый спойлер за пояснениями формата, и под второй - для примера конфига.
Формат следующий:

class Recruit //Имя настройки сложности
{
class Flags //Объявление самих настроек
{
3rdPersonView=0;// включение/выключение вида от третьего лица. В имени сервера хар-ка 3DP:ON/OFF
armor=1;//всегда выключена в DayZ.
autoAim=0;//всегда выключена в DayZ.
autoGuideAT=1;//всегда выключена в DayZ.
autoSpot=1;//всегда выключена в DayZ.
cameraShake=0;//всегда выключена в DayZ.
clockIndicator=1;//всегда выключена в DayZ.
deathMessages=1;// включение/выключение вывода сообщения о смерти игрока внизу экрана
enemyTag=0;//всегда выключена в DayZ.
friendlyTag=0;//Показывать/скрывать ники игроков при наведении
hud=1;//всегда выключена в DayZ.
hudGroupInfo=1;//всегда выключена в DayZ.
hudPerm=1;// Показывать/скрывать через некоторое время иконки еды/питья/... и оружия
hudWp=1;//всегда выключена в DayZ.
hudWpPerm=0;//всегда выключена в DayZ.
map=0;// Включить/выключить указатели на карте (да-да, те, которые SHFT+ЛКМ)
netStats=1;//всегда выключена в DayZ.
tracers=0;//всегда выключена в DayZ.
ultraAI=0;//всегда выключена в DayZ.
unlimitedSaves=1;//всегда выключена в DayZ.
vonID=1;// Показывать ник игрока, говорящего в голосовой чат
weaponCursor=1;// Показывать прицел оружия
};
skillFriendly=0;//не поддерживается в DayZ.
precisionFriendly=0;//не поддерживается в DayZ.
skillEnemy=0;//не поддерживается в DayZ.
precisionEnemy=0;//не поддерживается в DayZ.
};

А вот и пример конфига с разными настройками сложности.


С этими конфигами разобрались. Теперь передохнём и посмотрим настройки каналов для чата и голосовых сообщений.
Открываем директорию
сервер\MPMissions\dayz_1.Chernarus
В ней находим файл
description.ext
Открываем его текстовым редактором, находим строчку, которая начинается на
disableChannels[]=
В ней в фигурных скобках перечислены ID каналов, которые будут НЕДОСТУПНЫ обычным игрокам на сервере. Вот айди каналов и их имена в игре:
C++:
0 = Global (Общий)
1 = Side (Дополнительный)
2 = Command (Командный)
3 = Group (Группы)
4 = Vehicle (Траспортный)
5 = Direct (Прямое соединение)
6 = System (Системный)

Стоит заметить, что MOTD и сообщения от админов будут появляться через глобальный чат, даже если он отключен.
Групповой чат не следует отключать, он используется при заходе игрока на сервер и выборе его роли.

Сервер почти готов, наши админские ладошки растёрты в кровь, осталось сделать только одно -настроить базу данных. Как это сделать?
Для начала скачаем Navicat. И отложим его ненадолго в сторонку (до следующей статьи) :).

Теперь откроем предпоследний конфиг на сегодня

uley.jpg
5. "БАЗАДАННЫЙ" конфиг
Название: my.ini
Где лежит: сервер/MySQL/
Важность настройки: средняя
Сложность настройки: средняя
Содержание конфига с комментариями нужных нам настроек. Здесь комментарии отделяются от настройки символом "#", а не "//", как было ранее. Так что закомментированная строка просто будет пропущена (пришлось залить сюда, т.к. есть ограничения в длине сообщения).

http://dayz.codeit.org.ua/hive.txt

Ну вот и всё, наконец, последний-препослений конфиг на сегодня! Набираемся терпения, и работаем!
5. "HIVE" конфиг
Название: HiveExt.ini
Где лежит: сервер/cfgdayz/
Важность настройки: средняя
Сложность настройки: высокая
Здесь комментарии идут уже в немного другом формате. Вместо "#" и "//" используется православный знак ";":

;Это комментарии
;Закомментированные параметры не будут читаться, и не будут учтены

;Формат для настройки
;Параметр = Значение

;Если строка закомментирована, значит параметр не является обязательным и может не быть применён
;Чтобы поменять значение, просто раскомментируйте строку (уберите ";")

;Файл должен лежать в директории cfgdayz

[Time]
;Возможные значения Local, Custom, Static
;You cannot use Static on OFFICIAL Hive, it will just revert to Local
Type = Static
;При использовании Custom, устанваливается "отступ" от пояса UTC - Offset
;Offset = 0
;Опции ниже идут только для типа Static (Определенное время в игре при каждом старте сервера)
;Параметр (0-24) показывает ЧАС, который будет установлен на сервере при старте
Hour = 8
;Параметр (ДД/ММ/ГГГГ) даты
Date = 19/3/2013

[Logger]
;Возможные значения: trace, debug, information, notice, warning, error, critical, fatal, none
;Отсортированы по важности (ниже-выше)
;Показывает какие сообщения следует выводить в консоль и логи
Level = fatal

;Раскомментируем, чтобы определить уровень вывода информации ТОЛЬКО В КОНСОЛЬ
;Значение может иметь только более высокий приоритет, чем Level
ConsoleLevel = none

;По дефолту консоль hive совмещена с консолью игры.
;Чтобы разбить консоль hive в отдельное окно, поставьте этот параметр в true
;SeparateConsole = true

[Database]
;Айпи сервера, к которому следует подключиться
;На ОФИЦИАЛЬНОМ hive остальные настройки в этой секции ничего не изменят
Host = 127.0.0.1

;Тип БД(также доступен Postgre). Ставим MySql
Type = MySql

;Порт, к которому стоит подключаться
Port = 3316

;Имя БД сервера (ставим hivemind на приватном сервере)
Database = hivemind

;Имя пользователя для подключения
Username = root
;Пароль для подключения
Password = root

;If using OFFICIAL hive, the settings in this section have no effect, appropriate layout will be used
[Characters]
;The field name that Player's IDs are stored in (unique per game license)
;Some table layouts have this as PlayerID, and some as PlayerUID, that's why this is configurable
;IDField = PlayerUID
;The field name that Player's World Position and rotation is stored in
;Enables you to run multiple different maps (different instances) off the same character table
;WSField = Worldspace

;If using OFFICIAL hive, the settings in this section have no effect, as it will clean up by itself
[Objects]
;Which table should the objects be stored and fetched from ?
;Table = Object_DATA

;Отрицательное значение отключит эту фичу
;0 значит, что сервер удалит все пустые палатки после рестарта
;Положительное число укажет кол-во дней до удаления палатки после смерти установившего её игрока (мы рассмотрим эту настройку далее в разделе Настройка БД)
CleanupPlacedAfterDays = 3

;Удаление техники и палаток за границами карты (мы рассмотрим эту настройку далее в разделе Настройка БД)
ResetOOBVehicles = true

;Настройки ниже на официальном hive не работают
[ObjectDB]
;Можно перенести БД объектов на сервере на другой сервер (например, чтобы объединить несколько баз палаток в одну). Я не буду останавливаться на этих настройках и переводить их
;Use = false

;The settings here have the same meaning as in [Database], and are only used if the setting above is set to true
;Type = MySql
;Host = localhost
;Port = 3306
;Database =
;Username = root
;Password =
На этом на сегодня всё, прошу прощения за задержку, я ненадолго уезжал в отпуск, теперь, думаю, дело пойдёт быстрее.
В следующий раз мы рассмотрим нюансы работы с БД и впервые запустим свой сервер, а через раз разберёмся как настроить DayZ Anti-Hax, BattlEye Extended Controls и белый список.
Всем, кто осилил - большое спасибо за внимание, ну и прошу сообщать об ошибках мне в ЛС.
Встретимся в ближайшее время!
 
Супер! Спасибо огромное за материал! (beans)
 

Zukuto

Непобедимый
Ур
8
 
Спасибо, ждем еще!
 

Kinky

Только с побережья
Ур
0
 
Хорошо, спасибо, а теперь главный вопрос который не где не могу найти, как приватить базы в DayZ ???
 

Zukuto

Непобедимый
Ур
8
 
Кто создавал сервер с миссиями? На карте спавнится ящик с вещами или техника, а ее охраняют боты. Меня интересует какие плюшки такое включают. Если можно то ссылку на источник с инфой о установке.
 
Сверху