[DayZ 1.0] О крашах, вайпах, сбоях сервера, багах и недоработках игры и сервера

Тема закрыта
Фото
aby Создатель портала На форуме с 23 May 06

Друзья, в данную тему я посвящу наболевшим проблемам DayZ 1.0.

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

https://zos.strikearena.ru/forums/topic/60433-dayz-%D1%80%D0%B5%D1%81%D1%82%D0%B0%D1%80%D1%82%D1%8B-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0-%D1%82%D0%B5%D1%85-%D1%87%D0%B0%D1%81%D1%82%D1%8C/
http://s-platoon.ru/topic/7351-fiks-sohranenie-postroekpalatok/
http://images.strikearena.ru/images/aAr51636.jpg

 

Как вы уже могли понять, тема будет посвящена вопросу вайпов, крашей игровых серверов, особенностям сохранения базы данных на серверах игры данной версии, а также особенностям взаимодействия базы данных.

 

И так, начнем. Как нам известно.  Вышедшая версия игры DayZ 1.0 не лишена недостатков. Уже многие из вас оценили ее увлекательные баги, связанные со смертями и полетами в космос персонажей от транспорта, пропажей палаток, бочек, прочих схронов и сундуков, а также построенных объектов. И все перечисленное последнее не случайно.

Все дело в том, что сервер игры выполняет сохранение сервера игры в режиме его работы в свой шифрованный формат, который при неправильном заполнении (или кодировке, сложно сказать точнее) перестает считываться сервером и зачищается при попытке его считать (дабы сервер мог функционровать, а не выключился). Как уже вы могли прочитать по ссылкам свыше, сервер игры постоянно пишет базу данных в шифрованные файлы формата .bin и малейший сбой сервера в виде непредвиденного завершения его работы или принудительного выключения сервера будет являться достаточной причиной для его так называемого ‘вайпа’. Если вы еще не прочитали тему на s-platoon, советую ознакомиться с ней, в данной теме наглядно показано каким образом должен происходить рестарт сервера, и каким образом он происходит во время краша. Т.е. во время рекоммендуемого рестарта сервер выполняет некоторые операции по корректному сохранению всех объектов на карте, прежде чем он выключится и уйдет в рестарт. Именно такое (корректное) выключение сервера игры мы и используем при наших рестартах на серверах (плановых и внеплановых). Но, как многие из вас уже заметили, случаются и краши серверов игры, причины которых никто не понимает. А причины их банальны – это недоработки в исходном коде самого сервера игры, вызывающие разного рода исключения, которые не обработаны должным образом самим сервером игры, и это уже прямые недоработки разработчиков игры над самой игрой. Исправить, как понимаете, это мы не можем, поскольку все процедуры и функции сохранения всей базы данных сервера, начиная от персонажей, и заканчивая всеми объектами на карте зашиты намертво в exe-файле сервера игры, и даже изучить их невозможно никому, кроме разработчиков самой игры. Иными словами, если вы не имеете чудо-навыка по декомпиляции исходного кода игры  (получения исходного кода программы)  с exe-файла сервера игры в виде, который можно потом скомпилировать (собрать исходный код программы  в работающую версию программы), то у вас исправить это не получится. По сему поэтому, не беспокойте администрацию постоянными вопросами о том, почему произошел вайп, удалился тот или иной схрон, сундук, палатка, бочка, машина, постройка и т.п. Причины возникновения описаны в этой теме, и исправить это может лишь разработчик игры.

У вас может возникнуть вопрос следующего вида: ‘А почему бы вам не написать собственную базу данных сервера и не сохранять все объекты так как вам нужно, ведь у вас своя комманда имеется?’ Отвечаю, сделать это не получается по нескольким взаимосвязанным причинам. Одна из причин – это отсутствие официальной документации игры на ее новом языке, а также постоянное изменение функционала EnScript (именно так называется новый язык игры) с ее обновлениями. Для примера, если при выходе версии 1.0 и 0.63 у сервера игры в EnScript работали функциии создания папки, создания файла и заполнения файла без каких-либо ограничений, то за последние 2-4 обновления сервера игры разработчики сломали полностью функцию создания игрой и сервером папок, а также ограничили функцию записи информации в файл(сначала вовсе ограничение по количеству символов в файл было, которое потом убрали, теперь имеется ограничение по количеству записываемых файлов в папке, при достижении которого сервер сообщает, что достингут максимум, и не записывает информацию в файл, но отправляет в функции информацию о том, что запись произошла успешно). Еще одна причина невозможности сделать это – это отсутствие необходимого функционала в коде сервера для взаимодействия с базой данных сервера. Поясняю, многие, кто хоть раз работал в SQF-языке армы, знают, что была простая функция, на примере такой ‘(allmissionobjects ‘car’)’, которая позволяла выбрат, например, все заспавненные объекты транспорта на сервере, или же палатки. Т.е. грубо говоря структуризацию объектов, присутствующих на сервере по тем или иным типам. Так вот, в новом языке игры такого нет, есть лишь одна функция – функция поиска объектов на карте от точки по радиусу.  При этом, функция получает вообще все объекты (т.е. и зомби, и дома, и лут, и животных, и каждые части текстур карты, и т.п.). Если указать, например, центр карты, и сделать поиск по радиусу всей карты, то функция нагружает память сервера феерически сильно, вместо нормальных 4-5 Gb оперативной памяти сервер начинает кушать 16, 20, 25 Gb.  После выполнения функции чтение памяти сервером игры устанавливается в 10 Gb памяти  поумолчанию до его выключения. Как вы понимаете, пойти на такие жертвы мы не можем.
По сему ответ на этот вопрос в коротком смысле понимания звучит именно как ‘технически невозможно’, а подробности описаны вам выше.
Вы также можете спросить ‘Ну сервер же крашится, сделайте бекапы сервера и восстанавливайте их при краше вручную, как и сказано в одной из тем вверху’. Отвечаю, Чтобы вернуть бекап базы данных сервера. Необходимо иметь доступ к серверу игры напрямую (прямой удаленный доступ на сервер с игровыми серверами), вручную остановить сервер и установить бекап на нужную дату. Каждый краш сервера создает так называемый дамп памяти процесса программы. Как видите на скриншоте: http://images.strikearena.ru/images/4nO53949.png  сервера крашатся. Это все краши сервера с 18:00 20.01.2019 по 10:00 21.01.2019. Как понимаете, крашатся сервера довольно часто. А людей, которые у нас могли бы 24\7 дежурить ради восстановления бекапов с прямым доступом к серверу не много, потому чисто технически это крайне сложно реализовать именно постоянно. И как вы видите на скриншоте, моды не влияют на частоту крашей.

Вы также можете спросить “Создаются логи сервера ,краши, почему не отправить это все разработчикам игры на официальный багтрекер?” Отвечаю: я регулярно раз в неделю отправляю на баг-трекер игры всю эту информацию, но как вы видите, это не решает проблемы. На форуме данные сообщения игнорируются, личные сообщения, отправленные комьюнити-менеджеру игры игнорируются аж с ноября месяца того года, а исправления, которые они выпускаю, проблему не решают. Иными словами, делается все,  чтобы решить проблему, но разработчики или не могут, или не хотят этого делать.

Добавлю ко всему выше названному еще и по поводу проблемы ‘спицефичности’ базы данных сервера, а также отвечу на простой вопрос ‘я умер з-за бага, почему бы вам не восстановить персонажа?’  База данных игроков сервера пишется сервером игры в формате SQLite (советую изучить что это за формат и каковы у него ограничения). Из-за особенностей этого формата базы данных, более 1 сервера игры не могут быть подсоеденены к ней для безпроблемной работы сервера игры. А если ее открыть, то вы увидите примерно вот эту картину http://images.strikearena.ru/images/vfi54877.png . Т.е. максимум что мы можем, это объявить смерть персонажу, чтобы при следующем входе на сервер вы переспавнились, и снять блокировку персонажа в базе данных, чтобы не было проблемы входа на сервер, все остальное пишется в неизвестном формате и виде, который не поддается нам для изучения и изменения.

Да, вы можете сказать, “но у вас же есть VIP-сервера с общей базой данных персонажей”, отвечаю, да, есть, чисто технически сделать такое получается максимум для 2 серверов, но это накладывает своего рода проблемы. Более подробно про это уже обсуждалось в одной из приведенных в начале темы статей, затрагивать это повторно я бы не хотел.

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

Хотелось бы в заключение добавить в тему еще один вопрос, звучит он примерно так: 'Почему бы вам не добавить больше серверов с модами на проекте? Почему бы вам не перевести Public #1 и Public #2 в режим работы Public #3?' Отвечаю:
1. Поддержка входа на сервера со Steam означает постоянную поддержку актуальной версии игры, что на данный момент имеется на нашем проекте и поддерживается в течении 24 часов на non-steam клиенте игры после выхода новой версии игры в steam
2. Установка модификаций игры со Steam Workshop означает постоянную поддержку актуальной версии кажой модификации на серверах и on-steam версии клиента игры, что на данный момент весьма проблематично, мы не можем гоняться и отслеживать каждое обновление модификаций в Steam, особенно, если учесть, что этих модификаций не 1 штука, а несколько.
3. Большинство игроков со Steam версии игры без модификаций не станут разбираться в том, что за проблемы возникли при входе на сервера проекта, а просто сменят сервера на сервер другого проекта, где проблем со входом не будет наблюдаться
4. Установка модификаций со Steam Workshop требует определенных навыков работы со Steam DayZ Launcher для подключения необходимых модификаций к игре и устанолвке в версиях, которые используются на Non-Steam версии клиента игры. После п. 3 этим заниматься будут единицы.
5. Альтернативная установка модификаций со Steam Workshop требует скачивания архивов с модификацими для размещения в папке с игрой, что также весьма не просто и занимает некоторое время.

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

В общем и целом если брать во внимание все данные недостатки, то п.1 является вполне допустимым из-за формата работы нашего проекта, а вот остальные пункты приводят к серьезным неудобствам и проблемам, накладывающимся на нехватку людей, занимающихся DayZ Standalone на нашем проекте и нехватку времени, а также серьезно сокращают численность онлайна на проекте, чему явно не будет рад ни один из играющих на серверах проекта. На такие риски мы пойти не можем. Да и сервер Public #3 не заполняется на максимум игроков, а значит таковой потребности в таких изменениях на проекте также не наблюдается.
 

P.S. Со всеми вопросами, касающимися описанных данных в этой теме, а также различными предложениями по ее исправлению можете не беспокоить администрацию, указанная в теме информация достоверна, и подтвердится любыми серверами игры, работающими на данным патче где угодно, будь то лицензия или пиратка. За попытку игнорирования информации с данной темы и попытку задать эти вопросы администрация вправе выдать блокировку аккаунта без каких-либо уведомлений и предупреждений, поскольку разгребать эти вопросы и отвечать по 10 раз за 1 день всем уже нет никаких сил! А отвечаю я на это с момента выхода релизной версии игры ;)

Фото
aby Создатель портала На форуме с 23 May 06

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

 

All foreign visitors who read this news, please use the translators of Internet pages to study the information in this topic. Ignorance of the Russian language is not a valid reason!

Server online

discord.gg/teaByhy

Игровой портал ZoS
900
Server online

ZoS.Strikearena.ru