Миграция хоста сохраняет состояние мультиплеера s&box при уходе хоста
Обновление 26.09.15 добавляет в s&box миграцию хоста. Когда хост уходит, его состояние снапшота восстанавливается на новом хосте, включая объекты, доступные только хосту, состояние снапшота и реплицируемые ConVars. Состояние, которое переживает позднее подключение, должно переживать и миграцию хоста. Исполняемый код не переносится, поэтому поведение в процессе выполнения нужно возобновлять на новом хосте. Анализаторы проверяют, безопасны ли состояние и поведение для миграции. Подробности: документация по миграции хоста.
Painter и текст на GPU
Painter заменяет HudPainter и систему отрисовки панелей на общий API рисования для панелей, HUD, мировых панелей, текстур и списков команд. Он отрисовывает сглаженные SDF-фигуры, пути, заливки, обводки и обрезку, включая дуги, стрелки, линии Безье, капсулы, круги, многоугольники и звёзды. Обводки поддерживают внутреннее, центральное и внешнее расположение, а также сплошной, пунктирный и точечный стили; заливки могут быть цветом, изображением или радиальными, линейными и коническими градиентами. Соединения линий поддерживают фаску и скругление. Пакетная обработка сохраняет высокую производительность; демо отрисовывается за один вызов отрисовки. IPanelDraw избыточен; переопределите OnDraw(Painter painter). HudPainter устарел в пользу Painter.Begin, CameraComponent.BeginHud и BeginOverlay.
Отрисовка текста на GPU использует алгоритм Lengyel, сохраняя текущий API. Кривые передаются на GPU и отрисовываются в шейдере, так что никаких действий не требуется. Поддерживаются CJK, эмодзи и всё, что поддерживала предыдущая система, текст остаётся чётким вблизи, а скорость значительно выше. UI, HUD, TextRenderer и текст частиц отрисовываются из контуров глифов за один вызов отрисовки.
Меню и редактор
Карточки при наведении показывают предпросмотр игры с действиями: играть, оценить, в избранное, обзор и скрыть. Игровые модальные окна и тосты переработали, чтобы обзоры, избранное и скрытие игр были заметнее. В модальных окнах оценка, избранное, обзор и скрытие находятся рядом с кнопкой «Играть», а также есть приглашение написать обзор; контекстное меню по правому клику добавляет «Нравится», «Не нравится», «В избранное» и «Скрыть». Номинации Jam работают с карточек при наведении, из игрового модального окна и из тоста в конце игры, с проверками минимального времени игры; кнопки избранного, голосования и номинации обновляются сразу и синхронизируются с сервером.
Пресеты качества редактора переключаются из элементов управления вьюпорта. Инструменты тестирования мультиплеера в редакторе и MCP могут хостить сессии, создавать локальные инстансы и переносить хост. Выбранные меши можно отразить; удержание Shift при перетаскивании создаёт блок, выровненный по поверхности. Выбор пивота задаёт пивот, не меняя выбранный меш. Экспорт Movie Maker по умолчанию использует AV1. Значения функций шейдера можно считывать по имени как целое число без дополнительных объявлений. Настройки хранилища показывают использование и разбивку по типам, прогресс сканирования, рекомендации по очистке и подтверждение удаления.
Производительность и платформа
Клонирование GameObject примерно в 2,6 раза быстрее при примерно на 38% меньшем числе аллокаций в синтетических тестах. В реальных тестах эффект меньше, потому что создание моделей и коллизий — основное узкое место; накладные расходы сериализации и так были низкими. Сетевые снапшоты дешевле на хосте: состояние сцены по-прежнему захватывается в главном потоке, но кодирование JSON, blob и пакетов выполняется в воркерах для снапшотов подключения, загрузки сцены и миграции, сохраняя порядок отправки.
Исправления для Mac и Linux охватывают ввод в игровом окне, масштабирование DPI редактора, открытие папок в Finder, подготовку сцен, определение редактора кода и элементы управления публикацией/экспортом. Поддержка геометрических шейдеров исправляет падения Highlight на Mac, а также исправление времени жизни обратного вызова процедурного рендеринга. Нативные сборки Linux используют Steam Linux Runtime 4.0 с обновлённым libcurl и встроенным ICU, а резервный вариант цветных эмодзи использует Twemoji. Настройка с открытым исходным кодом добавляет Setup.bat и Setup.sh, прогресс загрузки, Git-хуки и артефакты для конкретных платформ.
Block Party и другие исправления
Block Party — новая игра, использующая систему 2D-спрайтов, с таблицами лидеров и повторами, редактором уровней с поддержкой мастерской, экспортом gif и другим: sbox.game/facepunch/blockparty.
CSS overscroll-behavior реализован: отключает отскок при прокрутке у края и предотвращает каскадирование прокрутки на родительскую панель, с управлением по каждой оси (MDN). Отскок прокрутки теперь ограничен жёсткой границей.
Прочие исправления охватывают валидацию Connect Vertices, макеты Asset Browser, восстановление после hotload при публикации, отмену редактирования Doo, зеркалирование мешей, материалы Hammer и импорт FBX. Исправления сетевого кода касаются сериализации подключений, рекурсивных адресных сообщений, ограничения вложенности BytePack до 32 уровней и ограничений loopback. Исправления навигации и физики улучшают управление толпой, трансформации агентов, пересборку navmesh и StepHeight Character Controller. Исправления рендеринга и UI охватывают очистку коллайдеров, утечку VRAM из-за рефракции, Clutter LOD, аутро Razor, устаревшее состояние перетаскивания, растровый текст, альфу цветных эмодзи и текстуры женской кожи.