Обновление от 26.08.19
Movie Maker: создание последовательностей из треков
Работа с внутриигровыми записями часто превращалась в головную боль из-за огромного количества дорожек в крупных сценах. Теперь эту проблему легко решить, объединив треки в отдельные вложенные ролики (последовательности) прямо через контекстное меню списка дорожек.
Movie Maker: доработка отмены и возврата действий
Использование комбинаций Ctrl+Z и Ctrl+Y при монтаже видео ранее работало нестабильно и порой приводило к потере результатов труда. Эта проблема наконец устранена: редактирование ключевых кадров теперь корректно записывается в историю проекта, а горячие клавиши отмены и повтора будут перенаправляться в редактор видео даже тогда, когда активна сцена (если только в самой сцене не производилось более свежих правок).
Привязка к поверхности для инструмента позиционирования
Мы переработали логику работы центрального манипулятора в инструменте перемещения. Раньше перетаскивание этой рукояти с зажатой кнопкой мыши сдвигало объект в плоскости экрана, что большинство разработчиков и художников находили малополезным.
Теперь этот элемент отвечает за привязку объектов к поверхности. Инструмент берет исходную точку объекта и размещает ее на ближайшей преграде прямо под курсором. Функция работает исключительно с моделями, обладающими коллайдерами.
Кроме того, вы можете удерживать клавишу Alt во время перетаскивания, чтобы выровнять поворот объекта по нормали к поверхности:
Создание единой модели из нескольких мешей
Раньше при выборе файлов можно было создавать только раздельные файлы формата .vmdl, однако теперь появилась опция для сборки цельной модели.
Система автоматически распознает и настроит геометрию коллайдера (или оболочки), а также уровни детализации (LOD). Это окажется полезным, если вы предпочитаете экспортировать каждый подмеш по отдельности, избавляя себя от лишней рутины благодаря автоназначению коллайдеров.
Для корректного распознавания файлы LOD-моделей должны содержать суффикс _lodX (где X — порядковый номер), меш коллайдера — _col, а оболочки коллизии — _hull. Все прочие элементы в ModelDoc будут обрабатываться как стандартные рендер-меши.
Исправления облачных адекватов (ресурсов)
Взаимодействие с облачным контентом нередко доставляло пользователям хлопоты. Мы исправили ряд ключевых нюансов для повышения надежности:
- При установке облачного актива обычно загружаются и сам ресурс, и его зависимости. Раньше очередность загрузки не контролировалась, из-за чего главный файл мог скачаться раньше зависимостей и завершиться с ошибкой. Теперь загрузка актива блокируется до тех пор, пока не будут получены все сопутствующие компоненты.
- Помимо этого, при запуске редактор порой пытался заново пересобрать облачные ресурсы, не имеющие исходных файлов для компиляции, что приводило к сбоям. Подобное поведение больше невозможно.
Отказ от VPC
Мы полностью отказались от генератора проектов Valve под названием VPC, заменив его собственной разработкой на базе C#. Теперь модули описываются в файлах .build.cs, аналогично тому, как это реализовано в Sharpmake или Unreal Build Tool.
Для конечных пользователей это изменение пройдет незаметно, но оно позволяет избавиться от еще одной зависимости от Valve и делает шаг к открытию исходного кода нашего C++. К тому же это открывает простой путь для поддержки новых платформ, объединив всё необходимое в рамках единой утилиты вместе со сборкой, загрузкой контента и этапами публикации.

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

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

Ранее отсечение (culling) рельефа корректно функционировало лишь для главного ракурса, тогда как дополнительные камеры могли перенимать параметры видимости, рассчитанные для другой точки обзора, что приводило к исчезновению участков земли.
Теперь мешлеты ландшафта отсекаются независимо для каждой активной камеры на основе ее актуального положения и усеченного конуса видимости (frustum). Это также избавило нас от задержки в один кадр, вызванной использованием устаревших данных о камерах.
Улучшения оверлея FPS
Команда overlay_fps стала значительно информативнее. Вдобавок к графику времени кадров на экран теперь выводятся показатели времени работы GPU, просадки кадров (1% lows), самые тяжелые этапы рендеринга, полная конфигурация мониторов, а также информация о том, какой из лимитов (fps_max, fps_max_menu, fps_max_inactive или вертикальная синхронизация) ограничивает кадровую частоту в данный момент.
Джеймс также добавил режим overlay_fps 2, который раз в секунду пускает по экрану бегущий маркер (по одному блоку за кадр). Это исключительно удобно для поиска проблем с плавной подачей кадров (frame pacing).
Обновление от 26.09.01
Обновление от 26.08.05
Обновление от 26.07.22
Обновление от 26.07.15
Обновление от 26.07.08
Обновление от 26.07.01
Обновление от 26.06.24