Banner
Главная » Статьи » Мои статьи

Графические технологии в игре FlatOut 2
Как мы отметили выше, в Bugbear Entertainment всегда делали гоночные игры. Это может объясняться широким развитием автоспорта в Финляндии. Для своих гоночных проектов компания разработала собственный игровой движок Bugbear Game Engine, работы над которым идут в течение уже шести лет. Он предназначен для игр жанра автомобильных гонок (и симуляторов и аркад) и постоянно улучшает свои технологические показатели. На технологичность движка сильно повлияло решение компании делать кроссплатформенные игры, им пришлось делать версии движка для консолей. Так как предыдущие игры были ПК эксклюзивами, программистам компании пришлось хорошо поработать над кодом для PlayStation 2 и Xbox, архитектуры которых сильно отличаются от той, что есть в ПК. Но команда справилась и в FlatOut мы увидели современный и весьма эффектный физический движок. К сожалению, ориентация на Xbox и PlayStation 2 принесла не только увеличение объемов игровых тиражей, но и некоторую технологическую отсталость графической части. Остается надеяться, что в будущих проектах финны рассчитывают уже на консоли следующего поколения.

FlatOut 2 основан как раз на этом самом Bugbear Game Engine, включающим как сам движок, так и соответствующие утилиты для создания и модификации контента. Вторая часть игры использует последнюю на данный момент версию движка, которая несколько (не очень значительно) улучшена со времени, прошедшего с релиза оригинальной игры. Главные особенности движка: полная мультиплатформенность (правда, для устаревших уже консолей PlayStation 2 и Xbox), множество хитрых оптимизаций, позволивших добиться хорошего сочетания качества картинки и производительности даже на слабых старых консолях, мощный и быстрый физический движок, рассчитывающий физику гибких тел и столкновения тысяч объектов.

Основные технологические нововведения, появившиеся именно в FlatOut 2: оптимизации физического движка, новые и улучшенные физические алгоритмы, улучшенная система рендеринга, это касается освещения, текстурирования и постобработки, обновленные алгоритмы AI и другие оптимизации, нужные скорее для консолей, чем для ПК, мощности которых ушли далеко вперед со времен двухгодичной давности.

Авторы отмечают, что особенно гордятся оптимизациями физического движка на PlayStation 2, где это сделать было для них сложнее всего. Оптимизации позволили почти вдвое увеличить количество динамических объектов на трассах, но основные идеи не изменились, главной задачей были именно оптимизации для улучшения физического взаимодействия и увеличения количества рассчитываемых объектов. Программисты сделали много оптимизаций еще в первой части, а уж во второй выжали из старых консолей последние соки. В то же время, были введены новые виды взаимодействия, авторы отдельно отмечают взрывы и некие цепные реакции. В Bugbear считают, что их физический движок является одним из лучших движков для PlayStation 2 и Xbox, особенно в жанре гоночных симуляторов.

Что касается технологий 3D графики, то в движке второй части также немного значительных изменений. Хотя разработчики в многочисленных интервью говорят о "greatly improved visuals", по картинкам видно, что хотя улучшения есть, но они никак не greatly. Да, при рендеринге автомобилей используется до пяти проходов, чтобы эмулировать отражения, сложное освещение и подповерхностное рассеивание, но на ПК можно было бы обойтись меньшим количеством проходов и настоящим попиксельным освещением. Вот такие вот они, недостатки мультиплатформенных игр - из-за ориентации на самые слабые игровые системы страдают более мощные... По сути, единственным большим нововведением стало использование эффектов постобработки motion blur и bloom, без них разницу в картинках первой и второй частей пришлось бы искать с лупой.

Кстати, в интервью игровым сайтам авторам пришлось объяснить их решение о выпуске игры на консолях текущего поколения. Они считают, что количество консолей, уже имеющихся у пользователей, важнее технологических и скоростных преимуществ. Тем более что FlatOut 2 так хорошо оптимизирована, что по "физической" части может поспорить с любыми проектами для консолей нового поколения из первой волны. Главное, что старых консолей в мире в десятки раз больше, чем новых, и продать большее количество экземпляров игры на них пока что проще, чем на новых. В Bugbear считают, что время следующего поколения еще не пришло и нужно подождать хотя бы еще полгода-год.

Разработчики уверены, что правильнее добиваться улучшений не простым наращиванием аппаратной мощи, а применением оптимизаций, позволяющих выжать многое из текущего "железа". С другой стороны, если они из старых консолей такое выжали, то на что они были бы способны с новыми технологиями? У нынешних разработчиков есть два разных пути, и в Bugbear выбрали не самый популярный в последнее время. Примерно тот же, что и создатели Serious Sam 2, например. С единственным отличием - хорваты все же обратили особое внимание на ПК версию и дополнили ее технологическими новинками без особого ущерба производительности.

Итак, все в игре сделано на приемлемом уровне, если оценивать итоговое качество картинки. Ну а с технической точки зрения - движок устарел и не поддерживает множество современных эффектов. Даже возможности DirectX 8 используются не полностью, не говоря уже о старшей версии API, пиксельные и вершинные шейдеры очень просты, освещение по-старому делится на статическую и динамическую составляющие, не используется наложение карт нормалей, тени от всей геометрии, кроме автомобилей, заранее рассчитаны, а динамические карты теней есть лишь для моделей машин и людей. С другой стороны, карты теней используют формат хотя и давно известный, но с аппаратной фильтрацией на всех DX8 видеокартах, используется качественное предрассчитанное освещение с использованием вторичного освещения, добавлены постэффекты bloom и motion blur, а уж спецэффекты, основанные на системе частиц (дым, пыль, искры и т.п.) были хороши еще в первой части.

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

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

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

Несмотря на кажущийся бампмаппинг, его там нет. Зато есть очень неплохие текстуры, которые, похоже, в ПК версии отличаются от всех остальных в лучшую сторону. Разрешение большинства текстур достаточно высоко, лишь в некоторых случаях хотелось бы больше детализации, а особенно - применения нормалмаппинга, хотя бы для моделей автомобилей. Впрочем, в столь динамичной игре это не так важно. Кстати, для моделей автомобилей используются атласные текстуры разрешением с 1024x1024, основная масса текстур имеет формат DXT3, есть также и DXT1. Все текстуры предварительно сжаты.

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

Для рендеринга автомобилей и персонажей используются более сложные текстурные и пиксельные эффекты, рассчитываются и блики от одного источника света. И в том и в другом случае используется простенький расчет освещения, который годится разве что для сцен, подобных тем, что мы видим в обсуждаемой игре - с одним статическим источником света. Никакой динамики, только один источник света - это очень жесткие ограничения, не позволяющие применять подобное во многих играх. Зато в проектах, подобных FlatOut 2, он вполне применим. Кроме того, из-за того, что для основной части объектов уровня используется заранее рассчитанное освещение, главной задачей шейдеров является простое текстурирование и смешивание, поэтому пиксельные шейдеры в игре очень простые.


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

 


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


   


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

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

Тени рассчитываются от одного источника освещения. Тени от машин и персонажей рендерятся при помощи 16-битных карт теней с разрешением 256х256 (на максимальных настройках), куда рендерится малополигональная модель автомобиля. Также используются и банальные темные пятна под автомобилями, видимые по скриншотам и известные нам по очень старым играм. Рендерятся как эти пятна, так и динамические тени, рассчитанные при помощи карт теней. Для смягчения границ динамических теней используется и аппаратная текстурная фильтрация и определенная в шейдере на базе нескольких выборок. Самозатенения нет, равно как и затенения других динамических объектов, тень отбрасывается только на поверхность земли.

Во FlatOut 2 карты теней используются, но только для моделей автомобилей и вылетевших из них водителей, а для любых объектов окружения тени предрассчитаны и содержатся в той самой большой текстуре, которая растягивается на всю локацию. Поэтому, если объект сдвинулся с места (а в игре таких ситуаций предостаточно), тени от них остаются на месте, что смотрится весьма нереалистично. Спасает лишь высокая динамика игры, когда на тени не обращаешь особого внимания... Но на скриншотах видно, что заранее рассчитанные тени недостаточно детализированы из-за того, что большая текстура для всей локации имеет хоть и большое разрешение, но даже его не хватает. А вот тени от машин неплохи, их края мягкие, а тени не слишком интенсивные.

Не обошлось и без нескольких водных поверхностей, больших (озера) и мелких (лужи, бассейн). Нельзя сказать, что водные поверхности в игре сделаны хорошо или реалистично. Как и всё остальное, они не технологичны, у воды во FlatOut 2 нет ни реалистичных отражений, ни тем более преломлений. Волны кое-какие есть, и то хорошо.

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

 

Во второй части игры появились эффекты постобработки, применяются наиболее распространенные в гоночных играх фильтры: bloom - фильтр, увеличивающий яркость светлых участков изображения и motion blur - размытие картинки в движении, призванное подчеркнуть высокую скорость движения автомобиля при использовании ускорения. Также, со времен первой части есть и эффект sun flare, все их можно увидеть на скриншотах:

                                                                                                    Postprocessing (bloom)

                                            
  Postprocessing (flare)

 

                                              
 Postprocessing (motion blur)

                                                                                


Эффекты применяются по делу и к месту, такая веселая игра должна радовать веселыми красками и ярким солнцем. Интересно, что motion blur делается не полноэкранно, смазываются только края экрана. Это позволяет не отвлекать внимание игрока, так как во FlatOut 2 это чревато "дорогими" вылетами и столкновениями.

Постобработка в игре делается в несколько этапов. Изначальная отрендеренная картинка содержит не особенно привлекательный результат, блеклый и ничем не выделяющийся среди других игр. Поэтому сначала делается цветовая коррекция изображения во внеэкранном буфере (render target), в итоге получается слегка более насыщенная и контрастная картинка.

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

Затем, при смешивании оригинального изображения и итогового уменьшенного и отфильтрованного получается bloom эффект. Для создания же эффекта motion blur, используемого на больших скоростях при ускорении, применяется еще один буфер с проходами фильтра radial blur вместо blur.

Далее игра смешивает три разных буфера: оригинального, полученного в результате цветокоррекции, и двух уменьшенных и отфильтрованных, причем, для motion blur используется не вся площадь картинки, а только её края. Получаем одновременное применение bloom и motion blur. Разница в итоге очень велика:

   

Правда, на мой взгляд, bloom у авторов получился излишне насыщенным и ярким, но это уже дело вкуса. Все применяемые форматы render targets - 32-битные, никаким представлением цвета в широком динамическом диапазоне (HDR) тут и не пахнет, к сожалению. А ведь в игре сделали имитацию разного времени суток и при разных условиях освещения HDR рендеринг и tone mapping были бы весьма полезны, как для улучшения качества эффектов постфильтрации, так и имитации эффекта адаптации человеческого зрения к изменению условий освещения.

В общем, по 3D технологиям, примененным в игре, можно сделать такой вывод: FlatOut 2 не использует никаких современных графических технологий: освещение, пиксельная и вершинная обработка в игре по современным меркам примитивны. Но в том и штука, что само по себе применение технологий не дает ничего. Хорошего результата не добиться без наличия грамотных дизайнеров, создающих отличный контент, а также без грамотных программистов, которые понимают, что мультиплатформенной игре действительно нужно, а без чего можно обойтись, и которые способны выполнить оптимизацию так, что хорошо выглядящая игра приемлемо работает даже на устаревших консолях. Да, ПК-шникам может быть немного обидно, что их ограничивают старые консоли, но судить ведь нужно по результату, то есть по итоговой картинке, а она у FlatOut 2 даст фору и некоторым более технологичным конкурентам.

Игра хорошо выглядит и не тормозит именно из-за того, что ничего технологичного в ней нет, но текстуры, модели и прочий арт сделан очень хорошо. Также можно отметить хорошую оптимизацию под мультиплатформенный релиз на ПК и консолях. С другой стороны, по своим возможностям графический движок не ушел далеко от того, который мы видели еще в игре Rally Trophy целых пять лет назад! Да, во FlatOut 2 есть примитивные вершинные и пиксельные шейдеры версий 1.1, но этого уже недостаточно. И даже при том, что игра выглядит очень хорошо, на мой взгляд, можно было сделать специальную версию для ПК, с большими возможностями и использованием хотя бы некоторых современных графических технологий.

В игре есть лишь примитивные динамические тени только для автомобилей, простые пиксельные эффекты на всех поверхностях, отсутствие динамических отражений и т.п. Но это же дает возможность рендеринга очень большого количества динамических объектов в кадре. Так как на рендеринг каждого объекта тратится малое количество вызовов отрисовки, появилась возможность увеличить их количество, при том, что производительность осталась отличной. Так что игра FlatOut 2 красивая, но совсем не технологичная, нужно учиться отличать эти моменты. Лично мое мнение - игра неплохо сбалансирована с учетом консольных версий, но чуть-чуть отстает по технологиям по меркам средних ПК проектов. Хотелось бы видеть динамические тени от всей геометрии вообще, более сложные пиксельные расчеты (освещение, прежде всего) и чуть больше текстур и полигонов в сцене. В остальном игра весьма хороша.

Категория: Мои статьи | Добавил: BOT (03.12.2010)
Просмотров: 2099 | Рейтинг: 0.0/0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Форма входа

Поиск

Мини-чат

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0