Dev-блог 143

DevBlog_143_1.jpg

Мусор на карте стал выглядеть круче, также было принято множество мер по оптимизации, исправлены недочёты таблиц лута и много чего ещё.

Изменения стоимости крафта
Броня из дерева не должна была требовать ткань при крафте ещё с тех времён, когда мы ввели в игру компонент «верёвка». Теперь это недоразумение устранено, также я существенно снизил стоимость крафта ведра.

Фермерство 1.5
Я переделал массу различных элементов фермерства. Возможно, вам покажется, что я работал не над приоритетными пунктами, но по факту, я просто хотел привести в порядок некоторые старые функции, чтобы в нужный момент, они были в полной готовности.

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

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

DevBlog_143_2.jpg
DevBlog_143_3.jpg

P.S.
Администраторам серверов: если у вас возникают проблемы с производительностью сервера из-за калькуляции света, вы можете отключить её с помощью команды plantlightdetection = false, после чего она будет рассчитываться в зависимости от времени суток.

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

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

DevBlog_143_4.jpg

Потолочные лампы
С этого обновления яркость потолочных ламп была увеличена на 50%. Разумеется, данное нововведение обосновано работой над фермерством. Сперва я опасался делать это, поскольку яркий свет может начать пробиваться сквозь стены, а мы не можем позволить себе реализовать тени. Тем не менее, я попытался реализовать компромиссное решение, поэтому давайте посмотрим, как пойдёт. Точно ясно лишь одно — процесс выращивания травы стал ещё ярче!

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

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


DevBlog_143_5.jpg
DevBlog_143_6.jpg
DevBlog_143_7.jpg
DevBlog_143_8.jpg
DevBlog_143_9.jpg
DevBlog_143_10.jpg
DevBlog_143_11.jpg

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

DevBlog_143_12.jpg
DevBlog_143_13.jpg

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

Объяснение для Unity-нёрдов: рэгдоллы состоят из массы тел (rigidbodies). Так вот, интерполяция наебенивается в тот момент, когда одни тела являются «родителями» других тел. Исправление ситуации заключалось в том, чтобы перетащить все тела к единому корню объекта.

Короче, теперь мёртвые тела будут двигаться более плавно.

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

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

На нашем HUD-е имеется специальный переменный скрипт, который работает по принципу «если здоровья игрока изменилось — обнови вот этот текст». Так или иначе, я нашёл более лучший и эффективный способ реализовать те же самые функции, что в общей сложности позволяет экономить лишних 0.2 ms/кадр.

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

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

Конечно же эта не вся работа по оптимизации. В ближайшем будущем, я планирую потратить на неё ещё одну неделю.

Изменения в магазине скинов
Я также немного изменил наш магазин. Теперь у нас есть категории для новых предметов (которые были добавлены неделю назад), а также для уходящих предметов (которые вскоре будут удалены из магазина).

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

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

Обновление Unity
Мы обновили движок до версии 5.4.4f1 (была 5.4.2). Это исправило баг с командой “-window-mode exclusive”, которая, как известно, ощутимо увеличивает FPS.

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

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

World Serialization
Я также приступил к новой работе, цель которой значительно сократить время загрузки. Это очень объёмный кусок работы, поэтому я не обещаю первичный вариант для теста как минимум ещё одну неделю. Ко всему прочему, я надеюсь применить всю эту работу и в отношении мододелов, у которых появится возможность работать с генерацией мира. По мере прогресса, я буду вводить вас в курс дела.

Отключение элементов на расстоянии
Alistair заметил, что в игре есть большое количество вещей, визуализация которых не отключается даже на чудовищно далёких расстояниях. Я провёл «чистку» и теперь вашей видеокарте нужно обрабатывать на 100000 вершин меньше, а в довесок, количество запросов на отрисовку сократилось на 500.

Анимации револьвера «Магнум»
Я закончил с анимациями и первичными звуковыми эффектами для магнума. Сейчас я работаю над world_моделями и я думаю, что к следующей неделе он у же будет готов к добавлению в игру.

Оптимизация world_моделей
Как Гарри писал на прошлой неделе, я теперь сосредоточен на поиске неисправного LODинга и неправильных world_моделей. Не уверен, насколько именно это улучшает производительность, но ведь море из капель собирается.

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

Оптимизация звука
На этой неделе я принял множество мер по оптимизации системы звука. Основные дивиденды принесли 2 следующих пункта:

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

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

Звуки животных
Ну и в завершении, я хотел бы рассказать о том, что я работал над новыми звуками животных. Работу над медведем я приостановил до тех пор, пока новая модель с анимациями не будет готова. Пока я не увижу анимаций, я не смогу правильно настроить звук. Сейчас все материалы обработаны и лежат в боевой готовности, так что сразу, как анимации будут готовы, я займусь звуком.

Список изменений:
  • Оптимизированы зоны реверберации.
  • Оптимизирована рециркуляция звука.
  • Увеличена яркость свечения потолочных ламп.
  • Снижена стоимость крафта ведра (-металл).
  • Добавлен новый вид ящиков
  • фиолетовый.
  • Потолочные светильники более не отключаются от воды.
  • Увеличено количество нефти, которое добывается из бочек, однако частота спавна этих бочек была снижена.
  • Посаженные в грядках растения теперь растут быстрее.
  • При периодичном поливе, растения будут давать больше плодов.
  • Растения находящиеся в постоянной тени, будут расти медленно, а те, что находятся на солнце, быстро.
  • Растения находящиеся под светом потолочных ламп также будут расти очень быстро.
  • Трупные мухи более не будут слишком яркими ночью.
  • Теперь для крафта брони из дерева не требуется ткань.
  • Спавны мусорных куч теперь выглядят намного разнообразнее.
  • Произведены некоторые оптимизации на уровне RPC (Remote Procedure Calls).
  • Оптимизировано главное меню и HUD.
  • Движения рэгдоллов стали более плавными.
  • Исправлены неполадки связанные с движениями и прыжками персонажа.
  • Удалены неиспользуемые компоненты животных (тут речь о коде игры).
  • Оптимизированы эффекты частиц и декали.
  • Исправлены баги эффектов частиц (не воспроизводились).
  • Оптимизирована система физики.
  • Удалён комплекс коллайдеров игроков, которые располагаются неподалёку.
  • Исправлены скачки фреймрейта при эффектах smoke_1 и smoke_2 от взрывов.
  • Устранены некоторые эксплойты связанные с временными моделями декор-элементов в бункер-комнатах.
  • Исправлены проблемы связанные с параметром запуска -window-mode exclusive
  • Оптимизированы все префабы лута.
  • Оптимизированы статичные дистанции рендеринга некоторых скал.
  • Добавлены новые вариации грузовиков (декор-элементы).
  • Исправлен баг, из-за которого не рендерилось превью персонажа.
  • Исправлены баги связанные с огнями кодового замка (иногда горели неправильно).
  • Исправлен баг, при котором скалы меняли свой оттенок во время движения персонажа.
  • Оптимизированы отложенные меши декалей.
 
Последнее редактирование:
Сверху