sbox
October 28

sbox — Знакомая территория

🏆 Steam Workshop вернулся, маунты Garrys Mod и Source игр, новая система лутбоксов и очень очень очень много исправлений, фиксов и оптимизаций

Оригинал (ссылка)

💙 Русскоязычное сообщество s&box

Steam Workshop для игр и карт

Автор: devultj

Сегодняшним обновлением мы выпускаем первую версию Steam Workshop для игр . Многие игроки скучали по привычному интерфейсу Steam Workshop, и этим обновлением мы возвращаем его.

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

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

Еженедельные награды (скины)

Автор: garry

Раньше наши еженедельные награды зависели от времени игры и количества сыгранных игр. Теперь от этого отказались.

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

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

Source 1 маунты

Автор: Layla

Как и в Garry's Mod, игры, которыми вы владеете в Steam, можно монтировать в игру и запускать в режиме песочницы.
И теперь мы можем монтировать Garry's Mod и другие игры на движке Source 1 — система монтирования не зависит от движка, у нас уже есть монтирования для Goldsrc, Unreal Engine и других, и сообщество может их тоже запрограммировать.

Non-Temporal SSR

Автор: Sam

Я полностью переписал наш SSR, сделав его невременным, более простым, более точным и на 30% быстрее. 😎

Модуляторы света

Автор: garry

Новый LightModulatorкомпонент фильтрует прямой свет, пропуская его через текстурированный прямоугольник. Он работает с точечными источниками света, прожекторами и солнечным светом, а также влияет на объемный туман.

Я добавил это в первую очередь для того, чтобы создать удобное решение для добавления эффектов каустики воды без каких-либо сложных обходных путей, и с этой задачей оно справляется довольно хорошо:

Но у этого есть и другие цели, которые, я думаю, люди обнаружат со временем. Облака — одна из очевидных.

Система управления туманом

Автор: garry

Я объединил все компоненты тумана в один новый Fogкомпонент. Он добавляет несколько полезных функций для настройки внешнего вида тумана, таких как размытие цвета скайбокса в зависимости от расстояния и изменение цвета солнца.

Что еще важнее, он был переработан таким образом, что теперь работает через PostProcessVolume — поэтому разные части карты могут иметь разные настройки тумана, и их можно смешивать.

Спрайт и преломление частиц

Автор: garry

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

Температура света и анимации

Автор: garry

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

Все типы источников света также могут анимироваться. Встроено двенадцать шаблонов, включая классические стили Quake и Half-Life, а также пользовательские кривые интенсивности с зацикливанием и цветовые градиенты. Скорость, длительность и смещение по времени позволяют координировать работу источников света или предотвращать их рассинхронизацию. Анимация отображается в редакторе и может быть записана в виде видеороликов.

Сервер с паролем

Автор: matt

Теперь для серверов и лобби может потребоваться пароль, устанавливаемый классическим способом sv_passwordили с помощью команды LobbyConfig.Password. Это дополнение к режимам лобби, доступным только для друзей или только по приглашению.

Больше человеческих голов

Автор: Danduw

Мы добавили к моделям людей еще две женские головы и одну мужскую. В меню аватара также сгруппированы миниатюры скинов по женским и мужским вариантам.

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

Обновление устаревших шейдеров

Автор: matt

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

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

Теперь мы делаем две вещи:

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

Теперь мы можем вносить более радикальные изменения в рендерер, не опасаясь, что это нарушит работу пользовательского контента 💪

Компиляция шейдеров во время

Автор: matt

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

Стабильность

Автор: Lorenzo

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

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

Инструменты разработчика F11

Автор: matt

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

Клавиша F11 теперь открывает панель внизу экрана игры с возможностью вывести её в отдельное окно; у редактора тоже есть панель для этого.

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

Дешёвое сглаживание

Автор: Alex

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

Мы также больше никогда не используем сглаживание 8x MSAA по умолчанию и скорректировали предустановки качества.

GPU Occlusion Culling

Автор: Alex

Я добавил отсечение невидимых объектов на GPU, что означает пропуск отрисовки объектов, находящихся за другими объектами, которые вы не видите.

Вы, наверное, думаете: «Разве этого раньше не было?», нет, конечно, у нас было отсечение по пирамиде видимости, но отсечение невидимых объектов — сложная задача, но мы нашли отличное решение, которое работает в большинстве сценариев.

В Construct это приводит к увеличению FPS на 15-20% в областях с большим количеством скрытой геометрии. В некоторых играх результаты могут быть больше или меньше.Отсечение невидимых объектов включено по умолчанию; для сравнения или отладки можно использовать следующие переменные:

  • r_occlusion_culling- переключать пропуск объектов, скрытых окклюзией
  • r_occlusion_debug- рисует рамки отсечения невидимых объектов
  • r_occlusion_freeze- фиксирует процесс отбора в текущем положении камеры.

Плавные тени

Автор: Alex

У нас был ужасно резкий переход между каскадами теней, поэтому я сделал этот переход более плавным.

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

Более быстрое освещение

Автор: Sam

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

В Steam Deck время отсечения источников света сократилось с ~4 мс до 0,1–0,16 мс; на RX 580 прямой проход был на 36–52% быстрее в тестах с большим количеством источников света. Это измерения конкретной работы рендеринга в тестовых сценах, а не обещание аналогичного улучшения для каждой игры.

Кластерный API также упрощает работу с пользовательскими моделями затенения: используйте его ClusterForEach()для наиболее оптимизированного доступа к любому источнику света, карте окружения или декали в кластере.

Меньше затрат по рендеру

Автор: antopilo

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

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

Более быстрый запуск.. Снова

Автор: Alex

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

В среднем, по результатам сравнения, время запуска (на моем компьютере) сократилось с 16,31 секунды до 10,16 секунды для открытия меню.

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

Автор: Lorenzo

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

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

Публикуйте то, что используете сами

Автор: Lorenzo

Примерно 30% ресурсов, опубликованных в списке 50 лучших игр, на самом деле не используются.Заставлять пользователей скачивать файлы, которые их игра никогда не использует, — это, очевидно, пустая трата времени.

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

Подробнее об этой функции можно прочитать здесь.

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

Более быстрый Transform

Автор: Sam

Теперь мы храним буферы Transform в кэш-линиях и удалили ненужные блокировки при выделении слотов преобразований.

Это означает, что отрисовка большого количества объектов на экране теперь происходит немного быстрее.

Режим ожидания сетевых объектов

Автор: Lorenzo

Вклад сообщества от Deadmonstor

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

Deadmonstor любезно предоставил автоматическую систему перехода в спящий режим сети, вдохновленную Unreal Engine. Теперь сетевые объекты могут переходить в спящий режим и пропускать работу по созданию снимков состояния для каждого тика.
На community_bowling карте с 563 сетевыми объектами и 32 неактивными узлами время работы сети за такт снизилось с 0,47 мс до 0,09 мс (-81%).

Итоги

Автор: matt

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

Большая часть нашей работы была направлена ​​на то, чтобы сделать s&box более привычным для пользователя. Steam Workshop, ездовые животные из Source 1 и песочница — всё это способствует этому. Мы хотим, чтобы люди могли быстро освоиться, найти знакомые элементы и знать, что делать.

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

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

Впереди ещё много всего, так что оставайтесь с нами. 🤝