sbox — Знакомая территория
🏆 Steam Workshop вернулся, маунты Garrys Mod и Source игр, новая система лутбоксов и очень очень очень много исправлений, фиксов и оптимизаций
Оригинал (ссылка)
💙 Русскоязычное сообщество s&box
Steam Workshop для игр и карт
Сегодняшним обновлением мы выпускаем первую версию Steam Workshop для игр . Многие игроки скучали по привычному интерфейсу Steam Workshop, и этим обновлением мы возвращаем его.
Доступность по-прежнему обеспечивается нашей собственной мастерской, это постепенный процесс, и мы дадим разработчикам время адаптироваться. В конечном итоге, когда мы полностью перейдем на Steam Workshop, игры и карты, которые еще не опубликованы, будут недоступны. Поэтому мы призываем разработчиков переиздать свои работы.
Вы можете обсудить это подробнее на наших форумах , где мы описываем любые изменения в рабочем процессе для разработчиков, пытающихся опубликовать свои работы в Workshop уже сейчас.
Еженедельные награды (скины)
Раньше наши еженедельные награды зависели от времени игры и количества сыгранных игр. Теперь от этого отказались.
В новой системе каждую неделю мы выбираем достижения из игр на платформе. Если вы разблокировали эти достижения, то получаете награду. Если вы не разблокировали их в течение недели, то награды не получаете.
Мне эта система нравится гораздо больше. Она объединяет людей в определенной игре для получения достижения и побуждает людей действительно играть в игры, а не просто сидеть в них. Приятной игры!
Source 1 маунты
Как и в Garry's Mod, игры, которыми вы владеете в Steam, можно монтировать в игру и запускать в режиме песочницы.
И теперь мы можем монтировать Garry's Mod и другие игры на движке Source 1 — система монтирования не зависит от движка, у нас уже есть монтирования для Goldsrc, Unreal Engine и других, и сообщество может их тоже запрограммировать.
Non-Temporal SSR
Я полностью переписал наш SSR, сделав его невременным, более простым, более точным и на 30% быстрее. 😎
Модуляторы света
Новый LightModulatorкомпонент фильтрует прямой свет, пропуская его через текстурированный прямоугольник. Он работает с точечными источниками света, прожекторами и солнечным светом, а также влияет на объемный туман.
Я добавил это в первую очередь для того, чтобы создать удобное решение для добавления эффектов каустики воды без каких-либо сложных обходных путей, и с этой задачей оно справляется довольно хорошо:
Но у этого есть и другие цели, которые, я думаю, люди обнаружат со временем. Облака — одна из очевидных.
Система управления туманом
Я объединил все компоненты тумана в один новый Fogкомпонент. Он добавляет несколько полезных функций для настройки внешнего вида тумана, таких как размытие цвета скайбокса в зависимости от расстояния и изменение цвета солнца.
Что еще важнее, он был переработан таким образом, что теперь работает через PostProcessVolume — поэтому разные части карты могут иметь разные настройки тумана, и их можно смешивать.
Спрайт и преломление частиц
Теперь рендереры спрайтов и частиц поддерживают преломление с помощью карт нормалей, что позволяет им искажать сцену позади себя. Это открывает дополнительные возможности для таких эффектов, как тепловая дымка и ударные волны.
Температура света и анимации
Теперь у светильников есть отдельные регуляторы температуры, оттенка и интенсивности. Температура регулируется ползунком в Кельвинах с нейтральным белым светом 6500K, а оттенок работает так же, как и в предыдущей настройке цвета света. Существующие светильники сохраняют свой внешний вид.
Все типы источников света также могут анимироваться. Встроено двенадцать шаблонов, включая классические стили Quake и Half-Life, а также пользовательские кривые интенсивности с зацикливанием и цветовые градиенты. Скорость, длительность и смещение по времени позволяют координировать работу источников света или предотвращать их рассинхронизацию. Анимация отображается в редакторе и может быть записана в виде видеороликов.
Сервер с паролем
Теперь для серверов и лобби может потребоваться пароль, устанавливаемый классическим способом sv_passwordили с помощью команды LobbyConfig.Password. Это дополнение к режимам лобби, доступным только для друзей или только по приглашению.
Больше человеческих голов
Мы добавили к моделям людей еще две женские головы и одну мужскую. В меню аватара также сгруппированы миниатюры скинов по женским и мужским вариантам.
Это первоначальная версия этих головок, в дальнейшем планируются доработки как новых, так и существующих вариантов.
Обновление устаревших шейдеров
Серьезным препятствием на пути улучшения наших шейдеров, функций рендеринга и производительности был страх сломать существующий пользовательский контент.
Игры и карты могли использовать свои собственные пользовательские шейдеры, и любые изменения должны были быть очень тщательными, чтобы предотвратить поломку или сбои в работе пользовательских шейдеров. Единственный способ исправить это — потребовать от создателей обновить и переиздать свои работы для новой версии.
- Когда вносятся изменения в шейдеры, нарушающие обратную совместимость, и повышается версия шейдера, бэкенд перекомпилируется и заменяет старые шейдеры новыми.
- Если мы пока не можем найти его в бэкэнде или вы не в сети, мы обновим шейдер локально, чтобы он продолжал работать . Это может занять от нескольких секунд до минуты в зависимости от сложности шейдера, и данные будут кэшированы на диск.
Теперь мы можем вносить более радикальные изменения в рендерер, не опасаясь, что это нарушит работу пользовательского контента 💪
Компиляция шейдеров во время
Дополнительным преимуществом вышеописанного является то, что теперь игры могут процедурно создавать шейдеры во время выполнения вне редактора с помощью Shader.CompileAsyncAPI. Это открывает доступ к некоторым интересным возможностям песочницы во время выполнения, например, к этой демонстрации Shadertoy.
Стабильность
Мы всегда занимались исправлением сбоев, но в последнее время новые появлялись быстрее, чем мы успевали их исправлять. Некоторые оставались незамеченными слишком долго, потому что были скрыты среди старых.
Поэтому мы улучшили систему отчетности и фильтрации сбоев, и теперь отчеты о сбоях собирают больше данных. Новые сбои сразу же выделяются после выхода релиза, что позволяет нам реагировать на них гораздо быстрее.
Инструменты разработчика F11
Десятки наложений, которые раньше были заблокированы за переменными окружения, теперь собраны в одном месте — в инструментах разработчика.
Клавиша F11 теперь открывает панель внизу экрана игры с возможностью вывести её в отдельное окно; у редактора тоже есть панель для этого.
Помимо информации о ЦП, ГП, памяти и рендеринге, он объединяет данные с консоли, сетевого трафика и интерфейса пользователя. Вы можете проверять трафик синхронизированных переменных, пиры и пропускную способность, а также углубляться в анализ времени отклика кадров, не переключаясь между отдельными наложениями.
Дешёвое сглаживание
Мы добавили CMAA2 в качестве параметра сглаживания графики, который также используется в CS2. Это хороший компромисс между производительностью и качеством MSAA, при этом он не является временным.
Мы также больше никогда не используем сглаживание 8x MSAA по умолчанию и скорректировали предустановки качества.
GPU Occlusion Culling
Я добавил отсечение невидимых объектов на GPU, что означает пропуск отрисовки объектов, находящихся за другими объектами, которые вы не видите.
Вы, наверное, думаете: «Разве этого раньше не было?», нет, конечно, у нас было отсечение по пирамиде видимости, но отсечение невидимых объектов — сложная задача, но мы нашли отличное решение, которое работает в большинстве сценариев.
В Construct это приводит к увеличению FPS на 15-20% в областях с большим количеством скрытой геометрии. В некоторых играх результаты могут быть больше или меньше.Отсечение невидимых объектов включено по умолчанию; для сравнения или отладки можно использовать следующие переменные:
r_occlusion_culling- переключать пропуск объектов, скрытых окклюзиейr_occlusion_debug- рисует рамки отсечения невидимых объектовr_occlusion_freeze- фиксирует процесс отбора в текущем положении камеры.
Плавные тени
У нас был ужасно резкий переход между каскадами теней, поэтому я сделал этот переход более плавным.
Это не влечет за собой никаких потерь производительности, реализация выполнена максимально эффективно.
Более быстрое освещение
Мы переписали часть алгоритмов кластерной сортировки и обхода шейдеров, чтобы освещение, карты окружения и декали распределяли нагрузку между пикселями, что является наибольшим достижением на AMD.
В Steam Deck время отсечения источников света сократилось с ~4 мс до 0,1–0,16 мс; на RX 580 прямой проход был на 36–52% быстрее в тестах с большим количеством источников света. Это измерения конкретной работы рендеринга в тестовых сценах, а не обещание аналогичного улучшения для каждой игры.
Кластерный API также упрощает работу с пользовательскими моделями затенения: используйте его ClusterForEach()для наиболее оптимизированного доступа к любому источнику света, карте окружения или декали в кластере.
Меньше затрат по рендеру
Мы сокращаем объем работы по рендерингу, которая не вносит никакого вклада в итоговое изображение.
В большинстве игр это должно привести к немного более высокой частоте кадров и меньшему потреблению памяти.
- Камеры, не использующие постобработку, больше не обрабатывают буферы, которые никто не читает.
- Коррекция цвета, цветокоррекция и хроматическая аберрация пропускаются, если их настройки не изменяют изображение.
- Затенение окружающей среды и контактные тени также стали дешевле при отключении MSAA.
Более быстрый запуск.. Снова
Мы продолжаем сокращать объем работы на этапе запуска. Подготовка библиотеки типов и сканирование базы данных ресурсов теперь начинаются раньше, перекрывая другие этапы запуска, вместо того чтобы заставлять меню ждать их.
В среднем, по результатам сравнения, время запуска (на моем компьютере) сократилось с 16,31 секунды до 10,16 секунды для открытия меню.
Производительность сети
Мы проверили всю сетевую инфраструктуру и устранили множество избыточных выделений ресурсов и дублирующей работы.
Теперь наши сетевые каналы связи практически не требуют выделения ресурсов, а сокращение избыточной работы высвобождает некоторое время обработки кадров.
Публикуйте то, что используете сами
Примерно 30% ресурсов, опубликованных в списке 50 лучших игр, на самом деле не используются.Заставлять пользователей скачивать файлы, которые их игра никогда не использует, — это, очевидно, пустая трата времени.
Мы упростили процесс публикации, позволяя использовать только те ресурсы, которые действительно применяются в вашей игре, чтобы вы могли прекратить выпуск исходных ресурсов и невыпущенного контента.
Подробнее об этой функции можно прочитать здесь.
Чтобы не нарушить работу существующих проектов, эта опция включена только для новых проектов; для существующих игр вам придется включить ее вручную в настройках проекта.Мы настоятельно рекомендуем включить и использовать ее для оптимизации вашей игры по размеру.
Более быстрый Transform
Теперь мы храним буферы Transform в кэш-линиях и удалили ненужные блокировки при выделении слотов преобразований.
Это означает, что отрисовка большого количества объектов на экране теперь происходит немного быстрее.
Режим ожидания сетевых объектов
Вклад сообщества от Deadmonstor
Сетевые объекты выполняли работу каждый тик, даже когда им нечего было отправлять. Каждое обновление захватывалось, хешировалось и сравнивалось снова, поэтому большие сцены, полные простаивающих объектов, оплачивали состояние, которое никогда не менялось.
Deadmonstor любезно предоставил автоматическую систему перехода в спящий режим сети, вдохновленную Unreal Engine. Теперь сетевые объекты могут переходить в спящий режим и пропускать работу по созданию снимков состояния для каждого тика.
На community_bowling карте с 563 сетевыми объектами и 32 неактивными узлами время работы сети за такт снизилось с 0,47 мс до 0,09 мс (-81%).
Итоги
Это было масштабное обновление. Мы постарались ограничиться основными моментами в блоге, а в списке изменений ниже представлен полный перечень исправлений, включая огромное количество исправлений ошибок, сбоев и улучшений производительности. Команда и наши участники сообщества проделали огромную работу. 💖
Большая часть нашей работы была направлена на то, чтобы сделать s&box более привычным для пользователя. Steam Workshop, ездовые животные из Source 1 и песочница — всё это способствует этому. Мы хотим, чтобы люди могли быстро освоиться, найти знакомые элементы и знать, что делать.
Я знаю, что переход на Steam Workshop вызвал споры среди наших разработчиков, но это также то, о чём игроки постоянно просили, и нам нужно найти баланс между удобством для разработчиков и привлекательностью для игроков. Ни одна сторона не может работать без другой.
Инструментарий для повышения производительности и стабильности уже хорошо отлажен, частота сбоев ниже 1%, инструменты разработчика значительно упрощают диагностику проблем с производительностью, а совместимость с шейдерами устраняет огромное препятствие для улучшений. Мне кажется, мы порой всё ещё топчемся на месте, ускоряя бенчмарки, вместо того, чтобы улучшать работу игр и карт, в которые люди действительно играют, на оборудовании, которое люди действительно используют. Но мы движемся вперёд.