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

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

Двумерная физика

В s&box теперь доступна двухмерная физика на базе Box2D (да-да, по аналогии с Box3D). Просто активируйте соответствующий режим в настройках сцены, и объекты начнут симулироваться в плоскости XY. При этом задействуются уже знакомые вам компоненты и API, избавляя от необходимости разделять логику на 2D и 3D.

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

Игровой джем

Стартовал Game Jam III с призовым фондом в 50 000 фунтов стерлингов. Главная тема соревнования — «ЕЩЕ ОДИН РАУНД», а прием работ завершится в пятницу, 25 сентября.

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

Мы встроили мероприятие прямо в меню платформы: теперь участники и зрители могут запускать проекты и голосовать за них.

Мы заложили надежную основу для будущих джемов — теперь сообщество сможет проводить их самостоятельно, а мы будем поощрять авторов внутриигровыми предметами и наградами.

Прощай, Yoga

С самого зарождения проекта в качестве движка интерфейсов мы использовали Yoga. Его задача заключалась в том, чтобы обрабатывать привычные HTML и CSS и распределять элементы по экрану точно так же, как это делает ваш браузер на этой странице.

Однако возможности Yoga ограничивались исключительно флексбоксами, а нам хотелось большего. Поэтому мы заменили его собственным открытым C#-движком компоновки Sandbox.Layout.

Благодаря этому мы смогли реализовать поддержку самых разных вариантов верстки интерфейса, включая display: block, display: grid и display: inline.

Существующие макеты отображаются абсолютно корректно, а производительность даже немного возросла, несмотря на переход с C++ на C#.

Нагрузка на макет Yoga Sandbox.Layout
Плоское flex-дерево на 10 001 узел: первая компоновка 5.40 мс 2.22 мс
Плоское flex-дерево на 10 001 узел: измененный дочерний элемент 3.68 мс 1.37 мс
Вложенное flex-дерево на 10 101 узел: первая компоновка 4.99 мс 3.54 мс
Вложенное flex-дерево на 10 101 узел: изменение размера корня 1.92 мс 2.22 мс

CSS Grid Layout

Мы добавили полноценную поддержку сеточного интерфейса (CSS grid layout). Это во многом напоминает Flex, но значительно упрощает точное и аккуратное размещение контента по сетке.

Встроенный текст

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

Теперь же вы можете использовать свойство display: inline, и контент начнет вести себя точно так же, как в веб-разработке. Это позволяет стилизовать любые текстовые фрагменты, не беспокоясь о сложностях верстки.

Фиксированное позиционирование (Position Fixed)

Мы внедрили поддержку position: fixed. По своему принципу она близка к абсолютному позиционированию, но точкой отсчета всегда служит экран монитора. Это особенно удобно при создании выпадающих элементов меню, например…

Меню

Встречайте новую систему Sandbox.UI.Menu, предназначенную для панелей и выпадающих меню. Она поддерживает абсолютно все возможности редактора, но теперь доступна и непосредственно в ваших играх!

var file = new Menu( "File" );
file.AddOption( "New", "note_add", New ).Shortcut = "Ctrl+N";
file.AddOption( "Open...", "folder_open", Open );
file.AddSeparator();
file.AddOption( "Save", "save", Save ).Enabled = false;

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

Полосы прокрутки

Наконец-то появились полноценные скроллбары! Они встроены прямо в панельную систему и управляются через свойство scrollbar-width. Чтобы сделать их видимыми, мы рекомендуем задавать значение scrollbar-width: auto.

Мы принципиально выступаем против изобретения собственных велосипедов и уникальных стилей CSS, поэтому используются стандартные свойства:

  • scrollbar-width — определяет толщину
  • scrollbar-color — задает расцветку фона и бегунка
  • scrollbar-gutter — настраивает режим отображения (поверх контента или в потоке)

Дерево элементов (Tree View)

В панельной UI-системе появился компонент TreeView, в точности копирующий аналогичный элемент из редактора. Он работает интуитивно понятным образом, напоминая стандартные элементы управления Windows. Реализована виртуализация списков, выделение элементов, навигация с клавиатуры, подсветка при наведении, стилизация строк, переименование, контекстные меню, прокрутка к нужному объекту — в общем, абсолютно всё, к чему вы привыкли.

Подсказки везде

Мы значительно улучшили всплывающие подсказки (тултипы). Теперь они корректно работают в PanelWindows (которые задействованы в новом лаунчере).

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

Палитра цветов

Я полностью переработал инструмент выбора цвета, добавив сразу несколько вариантов раскладки: квадрат, кольцо оттенков, диск оттенков, а также цветовые пространства HSV и RGB.

Ключевые кадры в Movie Maker

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

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

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

Примитив дверного проема

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

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

Новый формат сжатия нормалей сетки

Для нормалей и тангенсов моделей теперь применяются методы кодирования signed-octahedral и diamond, что в конечном счете обеспечило более высокое визуальное качество.

Краткая суть проблемы: прежний формат кодирования страдал от погрешности точности до 1–2 градусов. Это приводило к появлению разнообразных визуальных артефактов, для компенсации которых художникам приходилось задействовать дорогостоящие тангенсы в ModelDoc (что негативно сказывалось на потреблении памяти).

Я заменил старый метод на современный формат (signed-octahedral + diamond tangent). Он гарантирует куда более высокую точность (погрешность снизилась примерно до ~0.2°) при сохранении прежних лимитов памяти.

Что необходимо сделать художникам и разработчикам:

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

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

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

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

Улучшенная плавность кадров (Frame Pacing)

Некоторые пользователи жаловались на сильные подтормаживания (статтеры) даже при стабильно высоком показателе FPS. Эта проблема особенно остро проявлялась у тех, у кого была отключена функция аппаратного планирования графического процессора в Windows (HAGS). Мы переработали механизм вывода кадров, чтобы они поступали на экран равномернее, благодаря чему движение стало ощущаться гораздо плавнее.

Если вы всё еще сталкиваетесь с рывками изображения, пожалуйста, сообщите нам — возможно, специфика вашей аппаратной конфигурации требует дополнительной отладки.

Помимо этого, мы исправили работу эксклюзивного полноэкранного режима: теперь запрос к видеодрайверу отправляется корректно.

Навигация

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

Синтетические тесты показали впечатляющие результаты: обновление очереди поиска путей стало быстрее в 8,4 раза, а создание и расчет путей для 100 агентов требуют на 63% меньше памяти в вызывающем потоке. Кроме того, обновление логики агентов теперь способно распределяться по нескольким процессорным ядрам.

Вдобавок появился новый метод CalculatePathAsync, а также были устранены проблемы с застреванием агентов, прохождением линков и генерацией навимешей.

Улучшения в редактировании префабов

Внесение мелких правок в крупные префабы ранее приводило к копированию избыточных объемов данных. Мы ускорили расчет изменений (оверрайдов) и запись истории отмены действий (undo). В результате фиксация правок для свойств и компонентов стала быстрее примерно в 4–5 раз при сокращении числа выделений памяти (аллокаций) на 75% в синтетических течах.

Для префаба, содержащего 500 объектов и 1500 компонентов, время регистрации изменения компонента в истории отмен сократилось с 383 мс до 78 мс.

Мы также устранили баги, из-за которых при применении или сохранении префабов пропадали меши сцен, а также решили проблемы, связанные с вложенными экземплярами и нарушением порядка объектов.

Документация

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

Источник

Поделиться:

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

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

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

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