Обновление от 26.09.15

Прокомментировать Просмотры: 2

Холст (Painter)

Painter — это компактный вспомогательный структурный тип, который пришел на смену HudPainter и прежнему механизму рендеринга панелей. Теперь он отвечает за отрисовку всего интерфейса, позволяя вручную создавать элементы управления, HUD, а также обычные и мировые панели с помощью интуитивного и логичного API. Фигуры рендерятся на основе Signed Distance Fields (SDF), что гарантирует идеальное сглаживание и безупречный визуальный стиль.

Арсенал поддерживаемых примитивов впечатляет: дуги, стрелки, кривые Безье, капсулы, окружности, полумесяцы, кресты, сердца, линии, полилинии, многоугольники, четырехугольники, прямоугольники, кольца, звезды, засечки и треугольники.

Обновление от 26.09.15

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

В качестве заливки можно использовать чистый цвет, текстуру, радиальный, линейный или конический градиент.

Для обводки линий доступны различные варианты сопряжения (включая скошенные и скругленные стыки) с настраиваемым пределом длины выступа (miter limit).

Под капотом задействована продвинутая пакетная обработка (batching), благодаря которой производительность находится на запредельном уровне. Данная демонстрация целиком рендерится всего за один вызов отрисовки (draw call).

Открыть видео

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

void Update()
{
using var painter = Camera.BeginHud();

var color = Color.Green;
painter.Fill = Fill.LinearGradient( Color.Red, Color.White, 45.0f );
painter.Stroke = Stroke.Solid( color, 3 );
painter.Circle( new Vector2( 100, 100 ), 50 );
}

В связи с этими изменениями интерфейс IPanelDraw больше не нужен — теперь достаточно просто переопределить метод OnDraw( Painter painter ).

GPU-рендеринг текста

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

Поскольку в дальнейшем мы планируем активно использовать нашу UI-систему для создания инструментов, текстовый рендеринг требовалось вывести на принципиально новый уровень.

Развивая идеи из моих прошлогодних экспериментов с хакатона, я интегрировал в движок полноценный GPU-рендеринг текста на базе алгоритма Ленгеля (Lengyel), полностью сохранив при этом привычный API. Все кривые теперь передаются напрямую на графический процессор и обрабатываются силами шейдеров.

Вам не нужно ничего настраивать вручную — всё работает из коробки. Поддерживаются иероглифы (CJK), эмодзи, тени, обводки и все прочие возможности старой системы, при этом картинка остается невероятно четкой даже при рассмотрении с расстояния в один миллиметр.

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

И всё это по-прежнему рендерится средствами нашего интерфейса всего за один вызов отрисовки.

Миграция хоста

При отключении текущего хоста его снимок состояния (snapshot) теперь корректно восстанавливается на новом хосте, включая объекты, привязанные исключительно к нему. Если ваше игровое состояние переживает позднее подключение игрока (late join), оно гарантированно переживет и миграцию хоста.

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

Более подробную информацию вы найдете в соответствующем разделе документации.

Всплывающие карточки (Hover Cards)

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

Открыть видео

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

Настройки графики в редакторе

Раньше для изменения параметров графики прямо в редакторе приходилось запускать тестовую сцену и открывать внутриигровое меню настроек.

Теперь в элементах управления области просмотра (viewport) появился выпадающий список для быстрого переключения пресетов качества.

Block Party

Обязательно оцените новую игру, созданную на базе нашей двухмерной спрайтовой системы:
https://sbox.game/facepunch/blockparty/

Открыть видео

В ней есть таблица лидеров с поддержкой повторов, редактор уровней с интеграцией мастерской Steam, экспорт в формат GIF и множество других приятных особенностей.

Отражение мешей карт

Открыть видео

Инструмент «Блок» — выравнивание по грани

Открыть видео

Оптимизация сериализации

Клонирование игровых объектов (GameObject) ускорилось примерно в 2.6 раза, а объем аллокаций памяти в синтетических тестах сократился примерно на 38%. Это даст ощутимый прирост везде, где во время работы игры динамически создаются префабы.

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

Сетевые снимки состояния (snapshots) на стороне хоста также стали менее ресурсоемкими. Состояние сцены по-прежнему фиксируется в основном потоке, однако кодирование в JSON, бинарные блоки (blob) и пакеты теперь выполняется вспомогательными потоками (workers), благодаря чему подключение и загрузка новых игроков обходятся хосту гораздо дешевле.

Улучшения для Mac и Linux

Пакет важных исправлений и улучшений для платформ Mac и Linux:

  • На Mac устранены неполадки с вводом в игровом окне, масштабированием интерфейса редактора в высоком разрешении (DPI), открытием папок через Finder и выстраиванием сцен.
  • Добавлена поддержка геометрических шейдеров на Mac, что решило проблему с вылетами компонента подсветки (Highlight); также исправлено время жизни процедурных обратных вызовов рендеринга (callbacks).
  • Корректное определение установленных редакторов кода и элементы управления публикацией/экспортом теперь одинаково хорошо работают на Mac и Linux.
  • Нативные сборки под Linux переведены на использование среды Steam Linux Runtime 4.0.
  • В качестве резервного шрифта для цветных эмодзи на Mac и Linux теперь задействован Twemoji.

Рабочий процесс с открытым исходным кодом

Мы сделали процесс работы с исходным кодом еще более удобным, добавив упрощенный сценарий Setup.bat, а также новый скрипт Setup.sh для Linux и Mac.

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

Вдобавок к этому установщик автоматически настраивает Git-хуки (hooks): теперь загрузка необходимых компонентов запускается фоном при каждом обновлении репозитория (pull) или смене ветки, избавляя вас от необходимости вручную запускать скрипт настройки.

Настройки хранилища

Мы полностью переработали дизайн страницы настроек хранилища.

CSS: overscroll-behavior

Реализовано новое CSS-свойство overscroll-behavior, которое позволяет отключать эффект «отскока» при прокрутке до упора, а также предотвращает перенос (каскадирование) прокрутки на родительскую панель.

Открыть видео

Снижение цены

На этой неделе мы вдвое снизили стоимость игры — с $20 до $10.

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

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

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов