Rust news
SOCIAL:
В категориях: DevBlog

Devblog 142 на русском

crpd142

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

 

Гавани включены в игру

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

20170105104706_1

Оптимизация

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

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

f96bc63d

Здесь мы видим, что в сцене присутствует 67 медведей Пуки, и все они в данный момент находятся в процессе разработки. Выясняется, что Пуки не выбраковывается по расстоянию и не имеет уровней детализации (LOD).

Ниже вы также можете видеть другие проблемы, например, пять видимых факелов, состоящих из 12 тыс. вершин. Даже несмотря на то, что один из них находится на расстоянии в 330 метров. Что приводит нас к открытию, что многие из этих сущностей не имеют LOD-моделей или отличаются аномально высоким количеством вершин.

Это позволило нам составить список проблем, которые необходимо исправить для улучшения производительности. Например, Алекс обнаружил, что LOD-модели самодельных пистолетов (Eoka Pistols) настроены наоборот, то есть, чем дальше они находятся, тем более детально прорисованными они становятся.

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

Стоимость скинов

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

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

Убран праздничный контент

Мы надеемся, что все вы хорошо провели праздники и весело встретили Новый год. Праздничный контент отключен до следующего Нового года.

Производительность частиц

Мы обнаружили довольно крупную ошибку производительности, связанную с частицами: костры, печи, фонари и потолочные светильники, находящиеся в положении «off», потребляли почти столько же ресурсов, как и включенные. Это происходило, даже когда они были вне зоны видимости.

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

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

Оптимизация рендеринга и дублирование (instancing)

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

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

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

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

Лазейки, связанные с NaN (NaN Exploits)

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

Лазейки, связанные со строительством (Building Exploits)

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

Корректировка анимации визуальных моделей

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

Револьвер «Магнум»

Мы закончили новую модель револьвера и начали подготовку к созданию анимации. Вот как он теперь выглядит.

python

3D-модель

Доработка медведя

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

beartopology

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

bearfur

Звук

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

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

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

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