Ф1 2015 — последняя игра в серии «Формула-1».
Он был выпущен Codemasters и основан на специальной версии их игрового движка EGO. Игра создана практически полностью с нуля, новый движок значительно улучшил как качество картинки, так и возможности искусственного интеллекта.
EGO — первая разработка Codemasters, ориентированная на игровые консоли восьмого поколения (PS4 и Xbox One) и платформу ПК.
Архитектура нового движка была рассчитана на работу с многоядерными процессорами, которые используются в вышеупомянутых консолях.
Кроме того, компания стремилась создать масштабируемую платформу, которая позволила бы эффективно использовать ресурсы современных компьютеров.
В ноябре 2015 года был выпущен пакет патчей, который добавил в EGO обновленную звуковую подсистему и лучшую поддержку системы частиц, обрабатываемой микропроцессором.
В результате игра смогла использовать возможности лучших игровых компьютеров в полной мере.
В этой статье мы поговорим о том, как компания Codemasters улучшила свой игровой движок и чего им удалось достичь.
Ф1 2015
Адаптация к железу ПК
Современные микропроцессоры для компьютеров предлагают в первом приближении широкий диапазон тактовых частот и различное количество ядер.Одной из составляющих успеха игры является возможность адаптации к различным аппаратным характеристикам систем.
Игры разрабатывались в то время, когда в компьютерах обычно использовались процессоры с одним или двумя ядрами, предназначенные для работы с ограниченным количеством потоков.
То же самое касалось и игр для игровых консолей предыдущих поколений.
Основные темы были посвящены рендерингу и расчетам, связанным с игровой логикой.
Остальные системные ресурсы использовались для решения более мелких задач.
На ПК такой подход к проектированию отдавал предпочтение процессорам с очень высокой однопоточной производительностью.
В настоящее время все изменилось.
Таким образом, консоли восьмого поколения, как PS4, так и Xbox One, теперь оснащены процессорами с восемью ядрами.
Каждый из них представляет собой высокопроизводительную вычислительную единицу с относительно невысокой производительностью.
В игре используется шесть или семь таких ядер.
Остается только операционная система.
Та же история и с современными компьютерами.
Устанавливают процессоры с количеством ядер от двух до восьми.
Более того, если ядро, использующее такую технологию, как Intel Hyper-Threading (Intel HT), поддерживает технологию одновременной многопоточности, оно представляется ОС как два логических процессора.
Автомобиль РедБулл 2016 года выпуска.
Это означает, что игра на ПК может использовать до 16 логических процессоров, часть ресурсов которых достается операционной системе.
Поэтому старый подход не применим к новому оборудованию, и хотя код консоли можно оптимизировать под конкретную конфигурацию, игры для ПК должны иметь возможность адаптироваться к имеющимся ресурсам.
Первые тесты на ПК
По мере приближения даты выпуска игры 10 июля 2015 года стало ясно, что новый движок эффективно использует многоядерные процессоры и что его показатели производительности значительно отличаются от более ранних версий F1, которые были разработаны для консолей предыдущего поколения..
Вот сравнение рабочих нагрузок процессора и графического процессора для F1 2014 (слева) и F1 2015 (справа) при максимальных настройках качества и неограниченной частоте кадров.
Анализ F1 2014 (слева) и F1 2015 (справа) в GPUView
Изображения, снятые с помощью Microsoft GPUView (этот инструмент включен в Windows Performance Toolkit как часть
Это показывает, насколько хорошо распределяется работа между процессором и видеоядром.
GPUView также можно использовать для поиска проблем с синхронизацией и недостаточной загрузкой видеокарты.
Это можно увидеть вверху изображения и показано в увеличенном виде ниже.
Загрузка графического процессора в F1 2014 и F1 2015
Прерывистая фиолетовая линия в левом верхнем углу изображения указывает на перебои в работе графического процессора в F1 2014. Это означает, что видеокарта простаивает и не делает ничего полезного.
При этом производительность F1 2014 на исследованных высокопроизводительных системах не ограничивается возможностями графического процессора.
В разрешении 1080p игра была ограничена только производительностью процессора.
Автомобиль Феррари 2016 года.
Соответствующая линия справа (синяя) не содержит разрывов.
Это означает, что в F1 2015 графический процессор постоянно находится под нагрузкой.
На рисунке, показывающем полную картину загрузки системы, линии под желтым разделителем показывают нагрузку на потоки процессора.
В F1 2014 (слева) один поток почти всегда занят, что ограничивает производительность.
Давайте внимательно посмотрим на эту часть изображения.
Распределение нагрузки по потокам
Различные цвета, используемые для окраски полос, обозначают логические процессоры системы.
Изменение цвета потока означает, что он периодически выполняется на разных логических процессорах в пределах одного и того же кадра.
Еще один поток, загруженный вычислениями, можно увидеть внизу левого изображения, связанного с F1 2014. Этот поток отвечает за обработку команд графического драйвера.
В то же время на изображении справа (для F1 2015) все потоки имеют некоторое время простоя, то есть заметной зависимости между потоками нет. Если объединить анализ CPU и GPU, то можно увидеть, что F1 2014 был ограничен критическим путем через движок, который готовит данные для графического API, загружая один поток.
Таким образом, F1 2014 — классический пример движка, предназначенного для работы на игровых консолях предыдущих поколений, где рабочая нагрузка оптимизирована для хорошей работы на быстрых двухъядерных процессорах, с некоторыми улучшениями при переходе на четырехъядерные процессоры.
Но добавление большего количества ядер не дает ощутимых преимуществ, поскольку ограничивающим фактором является единственный основной поток рендеринга.
Новый движок, напротив, значительно снижает чрезмерную нагрузку на процессор, связанную с подготовкой данных для видеокарты, используя все преимущества технологии Intel HT и равномерно распределяя нагрузку между логическими процессорами.
Анализ F1 2015 в GPUView при 60 FPS
Программисты компании быстро обнаружили, что компьютеры значительно быстрее консолей, для которых они выполняли большую часть оптимизации.
Достижение привычной частоты кадров в 60 FPS (16 мс, отведенных на расчеты) на консолях потребовало немалых усилий.
А при тестировании на процессорах Intel Core 4-го поколения (например, Intel Core i5-4670) оказалось, что всю необходимую работу процессор выполняет за меньшее время, чем требуется для создания кадра.
Во многих случаях быстрее 10 мс.
На рисунке выше показан анализ игры с помощью GPUView с ограничением частоты обновления экрана, установленным на 60 Гц.
Более быстрые процессоры, такие как Intel Core i7-6900K 6-го поколения, делают дисбаланс еще более заметным.
Вот как выглядит анализ игры при разблокированной частоте кадров в системе с процессором Intel Core i7-5960x 5-го поколения и установленной видеокартой NVIDIA GTX980.
Игра с разблокированной частотой кадров, работающая на процессоре Intel Core i7-5960x с 8 ядрами (16 потоков) в GPUView
По сравнению с четырехъядерным процессором (самый первый рисунок, на котором сравниваются F1 2014 и 2015 годов), в системе на базе Intel Core i7-5960x с 16 логическими процессорами значительную часть времени, необходимого для выполнения операций, ЦП простаивает. подготовить каркас.
Все это означает, что новый движок не только выигрывает от увеличения однопоточной производительности, но, что наиболее важно, может получить выгоду от дополнительных процессорных ядер.
Результат показывает, что Intel Core i7-5960x с включенными шестью ядрами может превзойти четырехъядерный i7-6700k, имеющий более высокую тактовую частоту.
Эти первоначальные тесты, показавшие, что графический процессор уже полностью загружен, изменили приоритеты оптимизации на ПК.
Усовершенствования видеокарты продолжались, но вместо того, чтобы тратить ресурсы разработки на оптимизацию подсистемы рендеринга ЦП (например, перенесение части работы на графический процессор), студия начала изучать другие способы оптимизации использования ЦП для улучшения пользовательского опыта и производительности.
игра.
реализм.
Улучшение реализма
Перед разработчиками стояла непростая и интересная задача.Целью было повысить реалистичность игры, сделав ее более привлекательной, не влияя при этом на игровой процесс (из-за требований сетевой многопользовательской игры) и не добавляя значительно больше работы со стороны графического процессора.
В связи с этим от изменений в искусственном интеллекте и повышении точности игровой физики сразу отказались, поскольку подобные улучшения должны быть достижимы на железе любого ПК, соответствующего минимальным требованиям игры.
Это необходимо для того, чтобы не ставить в невыгодное положение игроков, использующих разные компьютеры в многопользовательском режиме.
Гибридный автомобиль Mercedes-Benz F1 W07, представленный в 2016 году.
Даже в одиночном режиме любые изменения поведения машин могут быть затруднены, так как требуют очень тщательной перебалансировки системы управления автомобилем.
Вместо этого Codemasters сосредоточились на двух областях повышения реализма.
В частности, это улучшения в области игрового озвучивания с использованием обновленной звуковой подсистемы и увеличение количества динамических элементов визуального оформления благодаря обновленной системе частиц.
Эти подсистемы были выбраны из-за того, что они уже основаны на процессорах и ранее были ограничены возможностями консолей.
Архитектура ПК дала разработчикам возможность улучшить погружение, используя методы, от которых изначально отказались из-за аппаратных ограничений.
Дубляж игры
Улучшение игрового звука стало первым направлением оптимизации.Такой подход, с одной стороны, может масштабироваться в зависимости от доступного оборудования, с другой — позволяет улучшить игровой процесс, не влияя на игровой процесс.
Поддержка звука в F1 2015 реализована с помощью промежуточной подсистемы, создающей собственный поток микширования звука с помощью процессора.
Ранее компания Codemasters обнаружила, что если этот поток будет перегружен или его выполнение будет задержано, это приведет к заметным перебоям в звуке.
Чтобы не было перебоев на консолях, «звуковому» потоку было выделено отдельное ядро.
Это обеспечивало бесперебойную обработку звука.
Компьютер имеет собственный логический процессор звуковой подсистемы.
Остальные игровые задачи используют оставшиеся ресурсы.
На консолях такие потоки привязаны к ядру процессора, а на компьютерах используется команда SetThreadIdealProcessor(), которая помогает операционной системе расставлять приоритеты.
Даже если потоку выделено отдельное ядро или логический процессор, важно перемешивать его на достаточной скорости.
В результате максимальное количество источников звука было ограничено количеством, с которым можно было справиться в наихудшем сценарии, например в случае аварии.
Изначально лимит на источники звука был установлен следующий: 5 машин плюс машина игрока.
Учитывая значительно более мощный процессор с потенциально большим количеством вычислительных ядер для выполнения задач микширования, операционная система вряд ли попытается запланировать какие-либо дополнительные задачи на логическом процессоре, назначенном потоку обработки звука.
Соответственно, в ПК-версию игры появилась возможность добавить поддержку качественного звука.
А именно, речь идет о следующих улучшениях.
- Увеличение количества автомобилей, способствующих звуковой картине, складывающейся вокруг игрока.
А именно от 6 (5 машин, управляемых искусственным интеллектом, и одна машина игрока) до 11 (соответственно 10 противников и один игрок).
- Снятие некоторых ограничений на количество объектов, в результате чего воспроизводится больше источников звука при переходе от одного объекта к другому, избегая резких «обрывов» звука.
- Замена некоторых эффектов реверберации из используемой подсистемы обработки звука на более продвинутые.
Использование более сложных алгоритмов, обработка большего количества звуковых отражений.
Используйте предварительно созданные файлы импульсов для надежного моделирования различных условий окружающей среды.
Например, это езда возле трибун, проезд по мостам и тоннелям.
Кроме того, звуковой картине способствуют барьеры вокруг трассы и проезжающие мимо машины.
Система частиц и моделирование погоды
Еще одно улучшение игры — обновленная система частиц.Предыдущая версия этой системы была ограничена доступными ресурсами процессора и графического процессора игровых консолей.
Визуальная составляющая была построена с учетом этих ограничений.
Система частиц уже была основана на процессоре.
Вот что говорит об этом графический программист из Codemasters Эндрю Райт. «Мы предполагали (правильно, надо сказать), что будем более ограничены ресурсами GPU, чем CPU, поэтому к разработке системы частиц всегда подходили с точки зрения ее эффективной параллельной обработки на CPU. » Это означает, что команда программистов начала работу с улучшения системы, которая может масштабироваться в зависимости от количества доступных процессорных ресурсов.
Причём могли сделать это так, чтобы улучшения при этом не обязательно приводили к увеличению нагрузки на видеоядро.
Есть и другие преимущества передачи поддержки системы частиц процессору, которые объяснил Эндрю: «Система на базе ЦП очень гибкая.
Он занимается обработкой столкновений с трассой определенных типов частиц, специально предназначенных для этого — в основном что-то вроде гравия и травы.
Это работает и для частиц, которые не видны, то есть быстрое перемещение камеры покажет ранее невидимые частицы в какой-то промежуточной фазе движения.
Столкновения могут вызвать звуковые эффекты.
«Эту часть работы очень сложно реализовать на графическом процессоре».
Первая часть задачи заключалась в увеличении количества создаваемых частиц путем небольших и почти незаметных изменений их графического оформления.
В частности, уменьшился размер частиц и увеличилась их плотность на единицу пространства.
Эти изменения дают тот же видимый эффект на некотором расстоянии, но вблизи картинка становится гораздо детальнее.
Это было сделано для различных эффектов, создаваемых при взаимодействии шин автомобиля с дорогой (как на дорогах с твердым покрытием, так и вне их).
Вот как это выглядит.
Улучшенное воздействие на внетрассовый гравий.
Аналогичным образом был улучшен эффект курения шин.
Здесь относительно крупные частицы были заменены на гораздо более мелкие, что позволило лучше передать форму облака дыма.
Это улучшило объемное освещение, используемое для дыма, поскольку более мелкие частицы позволяют лучше математически представить, как свет проходит через задымленное пространство.
Вот как это выглядит.
Улучшено представление дымящихся шин.
Хотя описанные выше улучшения системы частиц значительны, они заметны только в течение коротких периодов времени, например, когда игрок или ИИ теряет контроль над автомобилем и он вылетает за пределы трассы.
Разработчики быстро поняли, что обновленную систему частиц можно использовать для существенного улучшения симуляции погодных условий, а именно дождя.
Погода не зависит от умения игрока держать трассу, поэтому улучшенные визуальные эффекты можно будет увидеть не только в особые моменты игры.
Одним из главных улучшений игры, на которое Codemasters уделяет особое внимание в рекламных материалах, является улучшенное управление транспортным средством.
В частности, значительно улучшено поведение автомобилей на мокром дорожном покрытии.
Вождение под дождем — важная часть реальных гонок Формулы-1. Многие трассы известны экстремальными погодными условиями, которые могут повлиять на ход гонки.
В таблице указана вероятность осадков во время гонки в режимах игры «Чемпион» и «Про».
В среднем в 34% игровых гонок на протяжении хотя бы некоторой части гонки идет дождь, продолжающийся до четырех часов.
Вероятность осадков
Австралия (Мельбурн) | Малайзия (Куала-Лумпур) | Бахрейн (Сахир) | Китай (Шанхай) | Испания (Каталония) | Монако (Монте-Карло) | Канада (Монреаль) | Япония (Сузука) | Россия (Сочи) | США (Остин) |
26.00% | 55.00% | 0.00% | 48.00% | 36.00% | 38.00% | 53.00% | 33.00% | 34.00% | 24.00% |
Австрия (Ред Булл Ринг) | Великобритания (Сильверстоун) | Германия (Хоккенхайм) | Венгрия (Будапешт) | Бельгия (Спа-Франкоршам) | Италия (Монца) | Сингапур | Бразилия (Сан-Паулу) | Абу-Даби (Яс Марина) | Мексика |
43.00% | 31.00% | 37.00% | 39.00% | 47.00% | 26.00% | 39.00% | 40.00% | 3.00% | 28.00% |
Система частиц обрабатывает нелинейные изменения свойств частиц в течение их жизни, таких как цвет, прозрачность, возмущение поверхности, угловое сопротивление, линейное сопротивление и гравитация.
Все это также согласовывается с системой моделирования ветра, которая используется для имитации дождя.
Макларен МП4-31 2016 г.
На рисунках ниже вы можете увидеть отладочные изображения, показывающие поведение мелких брызг воды от колес автомобиля и их взаимодействие с воздухом, проходящим через кожух.
В результате возникают спиралевидные вихри, исходящие из задней части автомобиля.
Отладочное изображение водоворотов, показывающих движение водяных брызг.
Отладочное изображение завитков, вид сзади
Использование более мелких частиц также означает, что существующая модель освещения намного лучше работает с каплями воды.
Свет от источников света, таких как определенные части автомобилей, можно смоделировать гораздо точнее на мелких частицах, чем на крупных частицах, которые представляют собой большие объемы капель.
На рисунке ниже показано освещение следов брызг воды.
Улучшенное освещение
Еще одна область, где были внесены улучшения, — это взаимодействие автомобиля с водой на поверхности дороги.
К ним относятся водяные вихри за автомобилем, подбирающие воду с земли, и брызги от колес на залитой дождем дороге.
Все это позволяет улучшить визуальную связь автомобиля с дорогой, добиваясь того же эффекта, который достигается благодаря теням в солнечный день.
Вот как выглядит вождение по мокрой дороге до и после улучшений.
Взаимодействие с водой на дороге
А вот капли воды, образующие след за проезжающей машиной в игре (слева) и при отладке Анализатор производительности графики Intel INDE для DirectX .
След капель воды
Последним улучшением является улучшенная симуляция дождя.
Изначально в игре использовался простой алгоритм с использованием ресурсов видеокарты, который выдавал несколько тысяч частиц дождя в каждом кадре, применяя гравитацию к каждой капле, заставляя их падать.
В новой симуляции дождя большая часть обновленной подсистемы была перенесена на ЦП, что позволило ему лучше взаимодействовать с данными о воздушном потоке, используемыми в других частях игры.
Количество капель дождя увеличено в десять раз, а количество отдельных капель уменьшено, чтобы обеспечить примерно одинаковое покрытие пикселей.
На рисунке ниже показаны отладочные изображения дождя, сделанные с той же позиции.
На нижнем изображении 217 тысяч выпадений, на верхнем изображении, представляющем предыдущую версию игры, всего 21 тысяча.
Несмотря на увеличение количества примитивов, реальное количество пикселей, затронутых улучшением, увеличилось незначительно — с 72 тысяч до 119.
Отладка моделирования дождя
Увеличив количество капель дождя и тумана, разработчики скорректировали прозрачность, используемую в системе частиц, чтобы итоговый эффект запотевания, видимый на расстоянии, был таким же, как и раньше.
Это необходимо для того, чтобы настройки графики не меняли игровой процесс.
Балансировка загрузки процессора в новых условиях
Обычно ограничивающим фактором производительности ПК в Формуле 1 2015 была видеокарта.Особенно высока была нагрузка на недорогие устройства.
Самой важной частью разработки и реализации новых эффектов было обеспечение того, чтобы дополнительные частицы не увеличивали нагрузку на графический процессор.
Вторым важным фактором, касающимся вычислительных ресурсов, было достижение хорошего распределения вычислений, выполняемых на процессоре.
Требовалась правильная балансировка нагрузки между доступными ресурсами ЦП, при этом нельзя было допустить увеличения нагрузки в последовательности операций движка, отвечающих за рендеринг.
Контроль над нагрузкой на графический процессор достигается за счет двух подходов.
Во-первых, обработка вершин была перенесена из вершинного шейдера в ЦП.
Это уменьшило объём работы над вершинами на видеокарте.
Такой подход не привел к полному снятию нагрузки с видеоядра, но снизился вдвое.
Таким образом, обработка в десять раз большего количества частиц означала пятикратное увеличение стоимости выполнения вершинных операций.
Вторым важным изменением было снижение стоимости заполнения кадра, например, при рендеринге дождя.
Количество капель увеличилось в десять раз, но количество затронутых пикселей увеличилось только в 1,65 раза.
В случае с водоворотами водяной пыли, оставшимися позади автомобиля, изменения оказались еще более значительными.
Таким образом, увеличение количества вершин с 3 тысяч до 70 фактически привело к уменьшению количества обрабатываемых пикселей с 5800 тысяч до 2500 тысяч, то есть скорость заполнения пикселей, необходимая для реализации данного эффекта, снизилась вдвое.
В результате эффект, для создания которого используется в 20 раз больше частиц, не потребовал значительного увеличения нагрузки на видеокарту при выводе изображения.
Балансировка нагрузки на ЦП осуществлялась путем распределения вычислений, связанных с частицами, между максимально возможным количеством доступных логических процессоров.
На рисунке ниже показано распределение нагрузки на системах с четырьмя и шестью ядрами (как в первом, так и во втором случае с включенной технологией Intel HT).
Фиолетовый и красный блоки показывают системы обработки частиц и моделирования погоды во время очень сильного дождя на шестиядерном процессоре (12 логических процессоров).
На таком процессоре 6 процессоров из 12 выполняют вычисления для системы частиц.
На четырехъядернике используются пять ядер из восьми, но их ресурсы приходится делить с другими задачами в движке.
Балансировка нагрузки ЦП для 6-ядерной системы (слева) и 4-ядерной системы (справа)
В игровом движке F1 2015 используется система задач для распределения нагрузки.
Имеются предустановки для 2, 4, 8, 12 и 16 логических процессоров.
Система пытается планировать задачи таким образом, чтобы уменьшить любые зависимости и не перегружать один из процессоров.
Как изменился внешний вид игры
На изображении ниже показано сравнение исходной (слева) и значительно улучшенной (справа) системы частиц.Обратите внимание, что во втором случае водяная пыль более четко привязана к машине, поднимающей ее в воздух.
Водные вихри, которые вызывают автомобили
Улучшения в борьбе с брызгами, которые автомобили собирают с дороги, когда теряют сцепление с дорогой, показаны на рисунке ниже.
При этом отдельные капли видны на фоне логотипа F1 2015 при высоких настройках качества.
Кроме того, можно увидеть улучшения во взаимодействии шин с трассой.
Занос
Масштабирование производительности
F1 2015 имеет встроенный тест производительности, который использует текущие настройки графики и может быть настроен для работы в различных погодных условиях.На рисунке показаны данные, полученные при запуске встроенного теста на системе с процессором Intel Core i7-5960x с фиксированной частотой 3,0 ГГц (это его базовая частота) и видеокартой NVIDIA TitanX. Там же вы можете увидеть список используемых настроек.
Показанные здесь данные представляют собой среднее количество кадров в секунду, полученное после полного выполнения теста.
Теги: #оптимизация игры #Formula One #EGO Engine #F1 2015 #Высокая производительность #Разработка игр
-
Мечты Детства Создать Игру На Zx-Spectrum
19 Oct, 24 -
Цель C. Практика. События
19 Oct, 24