Dev-блог 118

Dev_Blog_118_1.jpg


Изменения в системе опыта вынуждают нас вайпнуть карты и опыт всех официальных серверов. Сервера сообщества, при желании, могут откатиться на старую БД и оставить опыт нетронутым. Извините, но это было необходимо сделать. Помимо изменений в системе опыта, мы также перезапустили геймплей на уровне перестрелок, построили крутые аэродромы и т.д.


Изменения в системе опыта + фиксы

Во время реализации системы на основной ветви в коде присутствовала серьёзная ошибка. Заключалась она в том, что каждому, кто имел хотя бы малейшую долю владения предметом, передавалось 100% добываемого опыта. То есть, будь у вас доля собственности предметом менее 1%, вы получали 100% от добытого с помощью него опыта. Это привело к тому, что некоторые игроки заработали чудовищно огромное количество очков опыта. Если говорить более точно, то некоторым удавалось зарабатывать по 1 уровню в минуту. Благодаря Андре, эта проблема была устранена, а также мы внесли дополнительные изменения:

  • Установлен лимит на получение опыта от одного игрока: не более 6 XP.
  • Более не будет возможности набирать опыт через использование ресурсов.
  • Каждый раз, когда вы будете крафтить предмет в первый раз, вы будете зарабатывать 0.5 ед. опыта.
  • Добавлен эффект димишинга: чем чаще вы совершаете одинаковое действие, тем меньше оно добывает вам опыта.

Эти изменения в большинстве своём воздействуют на кооперативы, т.е. уменьшают эффективность взаимобустинга. Конечно, ваши друзья по-прежнему могут выходить и добывать для вас опыт, но со временем его количество будет сокращаться. Лучше будет познакомиться с другими игроками, которые ранее ещё не добывали вам опыт, от них он пойдёт быстрее.

Вайп-ажиотаж

Благодаря эксплойтам, багам и прочим нашим оплошностям, спустя несколько часов после старта мы наблюдали игроков с 50+ уровнем, которые уже успели всё разблокировать и рассекали по серверу с АК47 и С4. Теперь, когда мы исправили недочёты и понёрфили многие способы добычи опыта, всем новоприбывшим игрокам волей-неволей придётся конкурировать с теми, кто открыл всё практически без усилий. Мы думаем, что это несправедливо. Кроме того, у нас нет никакого способа отслеживания нормальной (легитимной) скорости добычи опыта, поэтому в будущем у нас не будет возможность вносить какие-либо коррективы основываясь на данных этого цикла. В силу этих аргументов, мы приняли решение произвести вайп и начать всё с чистого листа.

Я знаю, это полный отстой, я сожалею о том, что так вышло, но это необходимая мера для того, чтобы мы могли улучшить игру. Также я хотел бы сразу разъяснить, что у нас никогда не было в планах вайпать опыт чаще, чем мы когда-то вайпали чертежи. Пожалуйста, поймите то, что вайпа опыта не должно было быть ещё несколько месяцев, и, как я уже ранее высказывался на Reddit, мне действительно очень жаль, что так вышло. Время от времени такие вещи случаются, и именно поэтому мы до сих пор находимся под тэгом Early Access, но будьте уверены, в будущем мы приложим все усилия, чтобы "смягчить" последствия от подобных ситуаций.

Как раз в рамках этой политики, мы добавили возможность администраторам серверов сообщества перенести старую БД опыта поверх новой, тем самым избежав вайпа.

Если говорить конкретно, владельцы серверов могли обновить свои сервера, после чего восстановить БД опыта и сейвы в серверную папку:

  • Переименовать “xp3.db” в “xp4.db”
  • Переименовать “UserPersistence.db” в “user4.db”
  • Переименовать “0.sav” в папке “save/Procedural Map_3000_1234” в “proceduralmap.3000.1234.132.sav” и потом переместить файл в серверную папку так, чтобы он лежал рядом с файлами “xp4.db” и “user4.db”.
Dev_Blog_118_2.png


Обратите внимание, что в данном примере число "3000" - является размером карты, а 1234 сидом (world seed). Цифры "132" являются нашим текущим внутренним сейвгейм-протоколом, который после этого обновления у всех серверов будет одинаковым.

Что будет с системой опыта дальше?

На следующей неделе я хотел бы реализовать возможность установки множителей опыта у конкретных игроков. После чего у нас появится возможность, к примеру, устанавливать удвоенные рейты опыта на выходных, или добавить функцию повышения рейтов после долгого оффлайна (что сократит разрыв в развитии между обычными игроками и задротами). К тому же, у нас будет возможность отключить получение опыта в оффлайне, если это вдруг станет проблемной областью.

Помимо этого, мы продолжим работать над балансом и вносить изменения в древо технологий, а также добавлять новые возможности добычи очков опыта. Кроме того, нам уже пора думать о реализации некой функции, которая позволит вам лишиться всех очков опыта для более весомой награды (возможно некое подобие престиж-мода в Call of Duty), что, к слову, также снизит потребность в глобальных вайпах опыта.

Продолжение работ над аэродромом

После релиза нового аэродрома на прошлой неделе, я перешёл к доведению всей рабочей зоны до ума. Конечно, я продолжу "полировать" его и дальше, но сейчас он стал смотреться гораздо лучше. Текущие работы включали в себя переделку моделей ангаров двухлетней давности:

Dev_Blog_118_3.jpg
Dev_Blog_118_4.jpg

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

Серверная производительность

У нас имеется специальный Staging-сервер, на котором мы проводим все тесты и там производительность была достаточно неплохой. Однако, когда мы выпустили патч в релиз, мы поняли, что серверная производительность дерьмовая. Крайне дерьмовая. После некоторого расследования, мы выяснили, что серверы впадали в ступор во время сохранения данных системы опыта в базу данных на жёстком диске. Мы не заметили этого недочёта на нашем тестовом сервере, т.к. на нём установлены супер быстрые жёсткие диски, но у большинства игровых серверов таковых нет, т.к. они им тупо не нужны.

После всего этого я проделал кучу работы по оптимизации и смог добиться хороших результатов. Чтобы пресечь возникновение таких ситуаций в будущем, мы запустили ещё больше staging-серверов работающих на обычном оборудовании.

Производительность сетевого кода

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

Перезапуск геймплея на уровне перестрелок

Теперь все изменения касаясь этого уровня геймплея реализованы на основном клиенте. Ранее, данная проблема была одной из самых главных, и теперь, как мне кажется, мы встали на верный путь. Все подробности этих изменений я описал в блоге 117.

Основная суть:

  • Добавлена новая система хитбоксов (одежда более не влияет на них).
  • Реализована новая модель урона оружия (теперь множители урона по туловищу более предсказуемы).
  • Релизована новая система детекции попаданий снарядов (опять же в пользу надёжности результатов попаданий).
  • Добавлена новая система защиты экипировки (в пользу сокращения защитных свойств основанных на рандоме).

Цель всех этих изменений - сделать перестрелки между игроками более точными и предсказуемыми. Хотя, само собой, ситуация всё ещё далека от совершенства. Это лишь первый шаг в правильном направлении, благодаря которому, в будущем мы сможем улучшить ситуацию ещё больше.

Строительство заблокировано

Это было повсюду. Были редкие инциденты, когда игроки не могли строить что-либо, пока не умирали и не респавнились. Отследить этот баг было для нас серьёзной проблемой, но тем не менее, сейчас он устранён. Дайте нам знать, если вдруг снова с ним столкнётесь.

Устранение эксплойтов

Вернувшись к своему регулярному занятию, я принялся вновь бороться с эксплойтами. На этой неделе я коснулся особо долгоиграющих эксплойтов. В частности, устранил эксплойтинг некоторых дизайнов баз, что позволяли сделать внешние стены неуязвимыми по отношению к ракетам. Также я устранил эксплойты, благодаря которым, люди продолжали строиться внутри скал. И наконец, я устранил эксплойтинг стеклянных окон в данжах, благодаря которым люди становились невосприимчивыми к пулемётному огню патрульных вертолётов.

Исправления анти-хак систем

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

Обеспечение соблюдения правильного выбора ветви

Сервера теперь могут установить специальный параметр запуска "server.branch", чтобы заставить игроков, которые пытаются подключиться, быть на определённой ветви-Steam. Мы используем эту функцию для сохранения наших официальных staging-серверов в работоспособном состоянии.

Переделывание костяной брони

Работа продолжается. В этот раз я уделил время деталям, в частности ремешкам, завязкам и мелким костям. Я стараюсь приложить усилия, чтобы она выглядела максимально кустарной. Детали конечно мелкие, но без них броня будет смотреться гораздо скучнее.

Dev_Blog_118_5.jpg


Ещё больше опций сглаживания

На этой неделе мы реализовали ещё несколько вариантов сглаживания. Ранее у нас было только 2 варианта: вкл. и выкл. При включённом варианте, эта функция использовала наши стандартные настройки, которые в некоторых случаях могли тормозить. Сейчас мы представляем вам 2 новых опции: FXAA(низкий-средний уровень) и TSSAA (средний-высокий уровень). В сочетании, они должны сделать доступным сглаживание на картах любого ценового диапазона.

Dev_Blog_118_6.jpg


А тут сравнение в более высоком разрешении:

Dev_Blog_118_7.png


Имейте в виду, что TSSAA всё ещё в стадии доработки. В движении возможно будет ощущаться некоторая размытость. Само собой, со временем всё будет дорабатываться и улучаться. При выявлении каких-либо проблем с визуализацией, просто отключайте эту опцию.

Производительность графики

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

Сейчас моя цель заключается в достижении стабильных 60 FPS в 1080p на карте NVIDIA GTX 960 (и всех её аналогов других производителей). Впереди очень много работы, буду держать вас в курсе.

Обновление анимаций арбалета

Помимо основной работы, я занимался устранением вековых проблем анимаций арбалета:

  • Проблемы развёртывания.
  • "Нагромождения" рук во время перезарядки.
  • Несовместимость длины анимации с временем перезарядки.
  • Тряска после перезарядки.
  • Неудовлетворительная анимация выстрела.

Приклад двустволки

Я уже закончил с LOD-ами и текстурами. Со временем я планирую реализовать множество вариаций наших пушек, поэтому позже, когда это будет реализовано, у вас будет возможность кастомизировать своё оружие.

Dev_Blog_118_8.jpg


Велосипедный приклад

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

Dev_Blog_118_9.jpg


К слову, приклад такой я сделал не просто так, в теории он, за счёт пружин, должен снижать отдачу. Если у вас тоже есть подобные практичные идеи - дайте нам знать!

Анимации персонажа

Я заметил, что в некоторых анимациях оружие было неправильно направлено, поэтому я прошёлся по всем и поправил.
Помимо этого, я улучшил анимации выстрела и скорректировал анимации лука.
Также я добавил новые анимации прицеливания перед броском для камня и копья. Так что теперь игроки будут видеть, когда кто-то соберётся их бросить.

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

Помимо этого, я также работал над исправлениями, доработками, а также ввёл новую команду: "music.info", которая будет отображать в консоли информацию о текущем сонге, секции и уровне интенсивности.

Список изменений:
  • Добавлена новая система хитбоксов (одежда более не влияет на них).
  • Реализована новая модель урона оружия (теперь множители урона по туловищу более предсказуемы).
  • Релизована новая система детекции попаданий снарядов (опять же в пользу надёжности результатов попаданий).
  • Добавлена новая система защиты экипировки (в пользу сокращения защитных свойств основанных на рандоме).
  • Животные теперь также используют детализированные хитбоксы с множителями урона.
  • Добавлены анимации в виде от 3-го лица для камня и копья при прицеливании перед броском.
  • Исправлен баг с "выпадающими" глазными яблоками персонажа.
  • Большую печь больше нельзя размещать в воде.
  • Исправлен недочёт, выброшенное оружие не меняло право собственности.
  • Исправлен баг с эффектами частиц огнемёта.
  • На малом водосборнике функция "Использовать" будет всплывать только при наведении непосредственно на кран, а не на весь водосборник.
  • Никакого удвоенного опыта с ломанных объектов, которые вы налутали.
  • Добавлена админ-команда xp.reseteverything для сброса опыта всех персонажей.
  • Обновили анимации арбалета в виде от 1-го лица.
  • Исправлен недочёт: голова клиппилась сквозь шлем-волчьей головы.
  • Устранён эксплойт строительства, с помощью которого можно было добиться иммунитета от урона ракет.
  • Устранён редкий баг, при котором на всей территории появлялся блок строительства.
  • Устранён экплойст связанный с размещением объектов внутри скал.
  • Устранён эксплойтинг вертолёта с помощью стеклянных окон на рэдтаунах.
  • Устранены баги опреснителя воды, возникали проблемы с взаимодействием после рестарта сервера.
  • Устранён редкий случай ложного срабатывания анти-хак системы из-за кода Legacy.
  • Устранён редкий случай ложного срабатывания анти-хак связанный с верификацией снарядов.
  • Добавлена команда server.branch (форсит определённую ветвь для подключения игроков).
  • Обновлён EAC.
 
Последнее редактирование:
Сверху