Старший художник по окружению Микаэль Неллфорс показал инструменты, созданные 343 Industries, для работы над террейном в Halo Infinite.
#HaloInfinite
#HaloInfinite
Vimeo
Halo Infinite - Terrain Tools
I was workflow lead for the terrain toolset developed for Halo Infinite. Creating the spec, ux, planning, feedbacking etc. The goal was to create a WYSIWYG datadriven…
Часто вижу ехидные смешки про оптимизацию и техническое состояние Halo Infinite. Всем советую посмотреть недавнее видео с GDC от разработчиков. Станет всё понятно. Я в треде в твиттере про это написал.
Всё дело в том, что при разработке Halo 5 движок был заточен под Xbox One с их 8 ядрами и фиксированным фпс. Для Infinite нужно было переделать движок, чтобы он работал под кучей разного железа (особенно на ПК) с варьирующимся фреймрейтом при этом.
Раньше они задачи раскидывали ручками на конкретные ядра. Большая проблема онбординга из-за этого. Даже если человек пишет абсолютно новую подсистему, то ему нужно разобраться, что за работа в основном потоке и что во вспомогательных.
К тому же, сложно добавлять новые подсистемы, чтобы не возникло проблем с синхронизацией.
Переписали движок, разделив часть по использованию времени CPU на 2 части: Fixed update, Variable update. Дальше очевидным решением было завести систему рабочих потоков. При этом, старое легаси говно никуда не делось. Пришлось добавить синкПоинты, когда основной поток ожидал, пока выполнятся jobs'ы.
Система рабочих потоков помогла:
1. Нормально зависимости задать.
2. Выделить части систем, чтоб они работали чисто на джобсах. Весь рендер в итоге на них стал крутиться.
3. Новичкам было проще погрузиться, т. к. они могли посмотреть хайлевел представление системы.
В целом решение оказалось норм. Но из больших проблем, например, отсутствие нормальной настройки зависимостей между данными и воркерами. Особенно если используются общие ресурсы.
#GDC #HaloInfinite
Всё дело в том, что при разработке Halo 5 движок был заточен под Xbox One с их 8 ядрами и фиксированным фпс. Для Infinite нужно было переделать движок, чтобы он работал под кучей разного железа (особенно на ПК) с варьирующимся фреймрейтом при этом.
Раньше они задачи раскидывали ручками на конкретные ядра. Большая проблема онбординга из-за этого. Даже если человек пишет абсолютно новую подсистему, то ему нужно разобраться, что за работа в основном потоке и что во вспомогательных.
К тому же, сложно добавлять новые подсистемы, чтобы не возникло проблем с синхронизацией.
Переписали движок, разделив часть по использованию времени CPU на 2 части: Fixed update, Variable update. Дальше очевидным решением было завести систему рабочих потоков. При этом, старое легаси говно никуда не делось. Пришлось добавить синкПоинты, когда основной поток ожидал, пока выполнятся jobs'ы.
Система рабочих потоков помогла:
1. Нормально зависимости задать.
2. Выделить части систем, чтоб они работали чисто на джобсах. Весь рендер в итоге на них стал крутиться.
3. Новичкам было проще погрузиться, т. к. они могли посмотреть хайлевел представление системы.
В целом решение оказалось норм. Но из больших проблем, например, отсутствие нормальной настройки зависимостей между данными и воркерами. Особенно если используются общие ресурсы.
#GDC #HaloInfinite
YouTube
One Frame in 'Halo Infinite'
In this 2022 GDC session, 343 Industries - Microsoft’s Daniele Giannetti explores solutions built for efficient cross-platform execution in Halo Infinite and beyond.
Head to GDC Vault (http://www.gdcvault.com) for the latest video-on-demand sessions from…
Head to GDC Vault (http://www.gdcvault.com) for the latest video-on-demand sessions from…