Gamedev suffering
6.8K subscribers
765 photos
60 videos
13 files
2.11K links
Авторский блог Андрея Апанасика о разработке игр и индустрии.

Разрабытываю сервис для оперирования LiveOps: https://balancy.co

Мысли про другие вещи мне интересные: @apanasik_jobless

Реклама: https://t.me/gamedev_suffering/2202
Админ @Suvitruf
Download Telegram
Старший художник по окружению Микаэль Неллфорс показал инструменты, созданные 343 Industries, для работы над террейном в Halo Infinite.

#HaloInfinite
Часто вижу ехидные смешки про оптимизацию и техническое состояние Halo Infinite. Всем советую посмотреть недавнее видео с GDC от разработчиков. Станет всё понятно. Я в треде в твиттере про это написал.

Всё дело в том, что при разработке Halo 5 движок был заточен под Xbox One с их 8 ядрами и фиксированным фпс. Для Infinite нужно было переделать движок, чтобы он работал под кучей разного железа (особенно на ПК) с варьирующимся фреймрейтом при этом.

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

Переписали движок, разделив часть по использованию времени CPU на 2 части: Fixed update, Variable update. Дальше очевидным решением было завести систему рабочих потоков. При этом, старое легаси говно никуда не делось. Пришлось добавить синкПоинты, когда основной поток ожидал, пока выполнятся jobs'ы.

Система рабочих потоков помогла:
1. Нормально зависимости задать.
2. Выделить части систем, чтоб они работали чисто на джобсах. Весь рендер в итоге на них стал крутиться.
3. Новичкам было проще погрузиться, т. к. они могли посмотреть хайлевел представление системы.

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

#GDC #HaloInfinite