Обновление от 26.09.01
Новое главное меню
Понимаю, что бесконечные переработки меню стали локальным мемом, но интерфейс был полностью воссоздан с нуля.
Главная претензия сообщества сводилась к дефициту достойных проектов. Они определенно существуют, однако мы не умеем грамотно подавать их пользователям. По привычке игроки сразу открывают список серверов, что в корне противоречит идеологии s&box, поэтому данный раздел было решено упразднить.

Теперь игры находятся в самом центре внимания. Мы стремимся предлагать вам релевантные проекты, демонстрируя их контент с помощью живых видеопревью.
Кроме того, фоном играет музыка. Это временное решение, добавленное лишь для того, чтобы подстегнуть нас внедрить полноценную замену. Заодно мы представили новый API Game.Music и специальный компонент MusicComponent, которые упростят добавление музыкального сопровождения для авторов контента.
Система рекомендаций
Выделение игр на первый план имеет смысл лишь в том случае, если мы угадываем ваши предпочтения, поэтому алгоритм подбора был полностью переписан.
Прошлая версия демонстрировала всем одни и те же 31 проект на основе базовых глобальных метрик. Это охватывало всего 1.2% от общего числа игр на платформе. Если ваш проект не попадал в эту золотую жилу, шансов быть замеченным практически не оставалось.
Новый алгоритм расширяет этот охват примерно до 70%, благодаря чему у большинства творений появился реальный шанс найти свою аудиторию.
Возможно, вас интересуют оставшиеся 30%? В эту категорию попали заброшенные работы без базового оформления: без обложек, жанров, тегов и скриншотов. Стоит заполнить эти данные и привлечь пару друзей, как игра тут же начнет появляться в рекомендациях у остальных пользователей.

Теперь контент структурирован по тематическим категориям:
- Часть подборок формируется на основе индивидуальных вкусов (например: «Поскольку вы играли в X», «Игроки с вашими интересами запускали», «Больше игр в жанре X» и т.д.);
- Другие опираются на глобальную статистику («В тренде», «Популярное», «Высокий рейтинг» и др.).
В конечном итоге мы рассчитываем дать равные возможности для поиска каждой игре и упростить для пользователей открытие интересных проектов.
Интеграция игр (Game Mounts)
Мы добавили отдельную страницу, посвященную монтированию игр. Главная цель — наглядно объяснить новичкам суть этой функции.

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

- Долгожданный поиск по настройкам;
- Гибкие инструменты постобработки;
- Режим автоопределения, подбирающий оптимальный пресет графики под характеристики вашего процессора и видеокарты.
Нативный клиент для Linux

Теперь в Steam доступен полноценный нативный клиент для Linux. Благодаря использованию Steam Runtime обеспечивается единый набор зависимостей и стабильная работа на любых дистрибутивах.
Пользователи отмечают существенный прирост производительности по сравнению с запуском Windows-версии через Proton, особенно в плане стабильности и частоты кадров на Steam Deck.
Наверняка найдутся те, кто вспомнит мемную поддержку Linux в Gmod и Rust — здесь всё иначе. Мы осознанно шли к этому шагу, наш проект полностью открыт, а мы владеем исходным кодом и движком в полном объеме.
Нативный редактор под Linux

Вдобавок к клиенту мы портировали редактор на Linux. Изначально это не планировалось так рано, но портирование клиента прошло настолько гладко, что инструментарий редактора заработал практически сразу.
Через Proton редактор никогда не функционировал идеально. И хотя шероховатости и баги еще остались, общий опыт взаимодействия вышел на совершенно другой уровень.
Единственное ограничение — пока что комплект не включает проприетарные инструменты Valve вроде Hammer, ModelDoc или Animgraph.
Будущие платформы

Выбор современных мультиплатформенных и открытых технологий, таких как .NET, SDL3 и Vulkan, заложил прочный фундамент для нашего развития. Это значительно снижает затраты ресурсов на поддержку разных ОС.
Следующим логичным шагом станет релиз редактора под macOS.
Интерфейс постобработки
По умолчанию UI-панели отрисовываются уже после применения постобработки — в большинстве случаев это именно то, что нужно. Но бывают исключения. Например, когда требуется, чтобы элементы интерфейса подсвечивались свечением (bloom) вместе со сценой или на них накладывались радиационные фильтры.
Теперь в свойствах ScreenPanel появилась опция рендеринга до этапа постобработки, позволяющая реализовать любые подобные эффекты.

Кроме того, интерфейс научился работать с HDR-палитрой, открывая простор для создания ослепительно ярких элементов. Цветовой парсер теперь поддерживает базовые математические операции с умножением, благодаря чему настраивать интенсивность цветов стало еще проще.
background-color: rgba( white * 4, 0.5 );
color: #3273EB * 8;
Градиенты на GPU
Линейные, радиальные и конические CSS-градиенты теперь рассчитываются силами UI-шейдера, а не генерируются заранее в виде текстур. Это делает их более гладкими и ускоряет процесс отрисовки.

Я постарался добиться максимального соответствия веб-стандартам: поддерживаются позиционированные и повторяющиеся фоны, настройка размеров кругов и эллипсов, пиксельные отступы, прозрачная интерполяция и угловые направления.
Обрезка фона
Долгожданная поддержка свойства background-clip уже здесь!

Формы границ пользовательского интерфейса

Мне порядком надоели стандартные прямоугольные элементы в играх, поэтому хотелось дать разработчикам инструмент для создания произвольных полигонов и сложных форм. Решением стала экспериментальная CSS-функция border-shape.
Используя это свойство, вы можете задавать геометрические очертания панелей прямо в коде:
border-shape: polygon( 25% 5%, 75% 5%, 100% 50%, 75% 95%, 25% 95%, 0% 50% );
border-shape: circle( 42px at 60px 45px );
Я реализовал эту возможность на уровне нашего UI-рендерера с помощью Signed Distance Fields (SDF), обеспечив идеальное сглаживание. На такие фигуры можно вешать цветные обводки, тени и использовать их для точной обработки кликов курсором.
Надеюсь, это вдохновит сообщество на создание более смелого и уникального дизайна!
Улучшения рендеринга интерфейса
Раньше блоки, рамки, области видимости и тени по-разному интерпретировали радиус скругления углов. Мы унифицировали эту логику, приведя всё к единому знаменателю, а также добавили поддержку раздельных горизонтальных и вертикальных параметров радиуса.

Теперь интерфейс рендерится в Гамма-режиме (Gamma Mode). Альфа-канал стал вести себя значительно предсказуемее — ровно так же, как в привычных веб-браузерах. Вряд ли это волнует кого-то еще, но лично меня этот момент раздражал довольно долго.


Производительность интерфейса
Детальное профилирование меню помогло выявить и устранить несколько узких мест в графической системе.
Мы выполняли ряд избыточных операций (например, инвертирование матриц), которые незаметны поодиночке, но накладывают огромную нагрузку при пересчете для двух тысяч панелей на каждом кадре.
Текст теперь рендерится без предварительного умножения альфа-канала (unpremultiplied), что позволяет объединять его в общие батчи и сокращать количество вызовов отрисовки.
Кроме того, прокрутка больше не инвалидирует всю структуру макета целиком, избавив нас от неприятных микрофризов.
Редактор уровней — Выделение петли граней (Select Loop Faces)
Выделите две соседние грани и нажмите клавишу L, чтобы автоматически продолжить выделение по всему периметру сетки. Это существенно ускоряет работу с протяженными геометрическими объектами.
Редактор уровней — Поиск похожих объектов (Select Similar)
Функция Select Similar находит идентичные меши и модели на основе текущего выделения, привнося в редактор сцен привычные для ветеранов Hammer сценарии работы.
Улучшения инструментов трансформации
Я переработал поведение гизмо при масштабировании и вращении. Ранее эти операции работали одинаково вне зависимости от выбранного пространства координат, что казалось нелогичным. Теперь разница между глобальным и локальным режимами очевидна.
При изменении размера группы объектов в глобальном пространстве они теперь масштабируются как единое целое относительно общего центра масс. Локальный же режим сохраняет прежнее поведение, меняя масштаб каждого элемента индивидуально от его опорной точки.
Вращение в локальном пространстве теперь поворачивает каждый отдельный объект вокруг его личного центра, тогда как глобальное вращение осталось без изменений.
Тонкая настройка материалов по умолчанию
Появилась возможность определять порядок назначения стартовых материалов при создании моделей через контекстное меню или браузер ассистов. Раньше новые объекты неизменно создавались с дефолтной группой материалов поверх глобального переопределения.
Теперь от этого поведения можно отказаться, указав конкретный материал в качестве глобального оверрйда.

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

Новый лаунчер
Наша долгосрочная цель — полностью избавиться от зависимостей Qt. Изучив возможные пути, мы пришли к выводу, что логичнее всего использовать собственную систему панелей. Всё равно в конечном итоге нам пришлось бы оборачивать сторонние решения в собственный UI-слой. К тому же любые улучшения для редактора автоматически принесут пользу и самой игре.
Первым шагом стал полный отказ от Qt в пользу собственной панельной архитектуры при создании лаунчера.

Новая программа обзавелась долгожданными функциями. Самый частый запрос касался предотвращения повторного запуска: теперь лаунчер определяет активный процесс редактора, подсвечивает его в списке и не дает запустить копию повторно.
Галерея панелей
Путь к полному откажу от Qt будет долгим. Нам предстоит доработать множество нюансов интерфейсной системы, и часть задач уже выполнена. Для отладки и демонстрации возможностей UI мы добавили в папку bin/managed/ утилиту PanelGallery.exe.

Форум

Форумный раздел приобрел привычный и интуитивно понятный внешний вид, работать с ним стало значительно приятнее.
Страницы в формате Markdown
Наша документация, справочники по API, учебные материалы и списки изменений теперь доступны в формате Markdown. Достаточно дописать .md в конце любой ссылки или воспользоваться заголовком Accept: text/markdown.
Скучно для обычных людей, но просто восхитительно для ботов и парсеров 🤖
Дорожная карта

Раньше мы не слишком успешно доносили до сообщества наши планы и текущие успехи, поэтому страница дорожной карты была полностью переработана. Мы упростили процесс ее обновления и сделали более наглядной для вас: теперь клик по любому пункту открывает всплывающее окно с детальным описанием, ссылками на GitHub и прочей полезной информацией.
Итоги
Последние недели выдались суматошными, но мы вновь в строю. Я хотел прояснить наши стратегические планы: ранее я упоминал их в Discord, но нигде не фиксировал письменно. Учитывая стабильные показатели онлайна, вполне естественно, что игроки испытывают беспокойство.
Это наш собственный движок. Движок Facepunch. Мы развиваем его, потому что верим: рано или поздно мы захотим создать игру на собственной технологической базе. Я не хочу зависеть от решений компании Unity, которая в один прекрасный день может заявить о претензиях на 40% нашей выручки. Мы не стремимся стать новыми приверженцами Unity. Мы хотим создать бесплатный, открытый и современный движок. Поэтому, независимо от текущей популярности платформы s&box, мы продолжим двигаться в этом направлении как в инвестицию в наше идеальное будущее.
Тем не менее, мы искренне заинтересованы в успехе платформы. Мы хотим, чтобы здесь играли люди, получали удовольствие и зарабатывали деньги, которые окупят дальнейшую разработку. И мы продолжим стимулировать этот процесс.
Следующий рубеж — геймджем. Мероприятие стартует уже в этом месяце (в сентябре), в пятницу, 4-го числа. Общий призовой фонд составит £50,000. Мы проектируем механику так, чтобы она была увлекательной как для участников, так и для зрителей: победителей будут выбирать сами игроки. К этому моменту мы планируем запустить бесплатные выходные или распродажу. Подробности появятся совсем скоро.
Затем, ближе к рождественским праздникам, нас ждет крупная распродажа с перекрестным продвижением Rust. Мы надеемся, что привлечение аудитории, не состоящей из хардкорных фанатов Garry’s Mod, поможет им быстрее находить контент по душе.
В следующем году мы намерены проводить геймджемы на регулярной основе, постепенно совершенствуя их организацию до состояния автономного процесса.
А в определенный момент мы оглянемся назад и скажем себе: «Знаете что? Давайте сделаем игру по совершенно новой интеллектуальной собственности». Наша внутренняя команда возьмется за создание самостоятельного проекта на собственном движке и выпустит его в Steam и на актуальных консолях.
Обновление от 26.08.05
Обновление от 26.07.22
Обновление от 26.07.15
Обновление от 26.07.08
Обновление от 26.07.01
Обновление от 26.06.24