Интернет. Компьютер. Помощь. Советы. Ремонт

BigWorld Engine - Игровые движки - Файлы для игроделов - Создание игр. BigWorld Engine - Игровые движки - Файлы для игроделов - Создание игр Игровой движок bigworld

У вас возникли проблемы с поиском определенного видеоролика? Тогда эта страничка поможет вам отыскать так необходимый вам ролик. Мы с легкостью обработаем ваши запросы и выдадим вам все результаты. Неважно чем вы интересуетесь и что вы ищете, мы запросто отыщем необходимый ролик, какой бы направленности он не был бы.


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


Впрочем, мировая экономика это тоже довольно интересная тема, которая волнует очень многих. От экономического состояния различных стран зависит довольно многое. Например, импорт и экспорт, каких либо продуктов питания или же техники. Тот же уровень жизни напрямую зависит от состояния страны, как и зарплаты и прочее. Чем же может быть полезна такая информация? Она поможет вам не только адаптироваться к последствиям, но и может предостеречь от поездки в ту или же иную страну. Если вы отъявленный путешественник, то обязательно воспользуйтесь нашим поиском.


Нынче очень сложно разобраться в политических интригах и для понимания ситуации нужно найти и сравнить очень много различной информации. А потому мы запросто найдем для вас различные выступления депутатов ГОСДУМЫ и их заявления за все прошедшие года. Вы сможете с легкостью разобраться в политике и в ситуации на политической арене. Политика различных стран станет вам ясна и вы запросто сможете подготовить себя к грядущим переменам или же адаптироваться уже в наших реалиях.


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


Если же вы просто хотите немного отдохнуть и находитесь в поиске смешных роликов, то мы можем утолить и тут вашу жажду. Мы найдем для вас миллион различных развлекательных видеороликов со всей планеты. Короткие приколы запросто поднимут вам настроение и еще целый день будут вас веселить. Пользуясь удобной системой поиска, вы сможете найти именно то, что рассмешит вас.


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

В данной публикации, мы продолжаем задавать вопросы разработчикам игр. На этот раз, интервью даёт Михаил Живец, технический директор проекта « », компания Wargaming.net .

«МИР NVIDIA»: Какой графический движок используется в вашем проекте? Каковы минимальные и рекомендуемые системные требования? Обусловлены ли они определенными фичами или вы ориентировались на некий уровень распространенности 3D-карт? Используете ли вы специальные возможности последних поколений графических карт или ориентируетесь на стандарт?

Проект World of Tanks использует графический движок BigWorld с собственными доработками, которые потребовалось внести в силу специфики проекта. Особенностью движка является ориентированность на открытые миры с динамически подгружаемыми частями карты, как, например, сделано в World of Warcraft. Мы стараемся использовать технологии, позволяющие создать на экране монитора картинку, близкую к эскизам наших художников и адаптируем их под системные требования.

«МИР NVIDIA»: Значительно ли отличаются, с точки зрения программирования, видеокарты от NVIDIA и ATI? Можно ли просто писать через DirectX или OpenGL и получать эффективный код для обоих вендоров или для каждого производителя нужно делать свои версии функций? Какой подход использовали вы?

М. Ж.: Видеокарты от различных производителей имеют свои специфические особенности. Это может быть поддержка специальных форматов текстур или доступ к текстурам из вертекстного шейдера. Вместе с тем, при использовании общего функционала, предоставляемого API DirectX или OpenGL , различия между GPU двух вендоров минимальны и, следствием разницы между видеокартами от ATI и NVIDIA, являются, скорее, дополнительные возможности, нежели какие-то ограничения. Что же касается «особого отношения» со стороны движка, BigWorld не обеспечивает решающего преимущества ни для одного из вендоров.

«МИР NVIDIA»: С чем связаны различия в скорости работы игр на картах NVIDIA и ATI? Является ли это свойством алгоритмов игрового движка или больше зависит от игровых сцен? То есть, например, в одной игре более высокополигональные сцены, а в другой большой показатель overdraw или много полупрозрачных текстур со сложным антиалиасингом, и по-этому видеокарты, которые имеют больший fillrate, справляются лучше? («Любила» ли ваша программа какую-нибудь архитектуру?).

М. Ж.: Различия, в основном, сводятся к аппаратным особенностям (различия в ширине шин памяти, количестве блоков растеризации, шейдерных блоков и т. д.), а также к реализации драйверов. Чем более сбалансированной является нагрузка на CPU и GPU и чем лучше организована сцена, тем менее особенности видеокарты должны сказываться на общей производительности. Сюда можно отнести бережливое отношение к количеству и разрешению текстур, низкий overdraw от частиц и прозрачных объектов, использование LOD -ов, группирование объектов в batches и так далее — все это, в равной степени, ложится на плечи разработчиков движка и дизайнеров игры.

«МИР NVIDIA»: При тестировании видеокарт, как правило, используются примерно одинаковые наборы игр. Насколько уместно подобное обобщение при выводе результатов тестов для таких разных жанров, как 3D-шутеры, RPG от третьего лица и стратегии. Показательны ли популярные тесты для производительности вашей игры?

М. Ж.: Я бы не делил приложения по жанрам. Все находится исключительно в руках разработчиков, используемых ими алгоритмов. В любом случае, разработчики стараются как можно более сбалансированно нагрузить систему пользователя и достичь, при этом, максимальной привлекательности продукта.

Глядя на показатели FPS в играх, наподобие Crysis или последней Need for Speed, можно примерно представить себе производительность в ряде других современных игр, так что здесь мы со всей уверенностью можем говорить, что эти тесты довольно показательны. Игры такого уровня можно использовать в качестве бенчмарков для видеокарт, поскольку на высоких установках качества они по-максимуму нагружают графическую подсистему.

«МИР NVIDIA»: С чем связан рост нагрузки на CPU при увеличении разрешения? Верно ли, что увеличение детализации моделей для минимизации их «угловатости» требует бoльших мощностей CPU для анимации, отсечения невидимых примитивов, построения теневых объемов и т. п.? Был ли в вашей игре такой эффект?

М. Ж.: Увеличение разрешения не должно напрямую влиять на загрузку CPU , если, конечно, в движке не предусмотрены автоматическое увеличение полигональности моделей, дополнительная тесселяция и большее количество кадров анимации моделей. Если с увеличением разрешения нагрузка на CPU растет без причины, проблема кроется либо в игровом коде, либо в драйвере видеокарты.

«МИР NVIDIA»: Может ли нагрузка на CPU увеличиться при включении анизотропной фильтрации? То же касается Full Scene Antialiasing. Если для этого требуется всю сцену прорисовать во вдвое большем разрешении, то теоретически увеличиться может и количество треугольников.

М. Ж.: Ответ на оба вопроса - нет. В случае включения анизотропной фильтрации, вырастет нагрузка на блоки текстурирования. При включенном FSAA , больше работы достанется пиксельному конвейеру. Что касается большего разрешения, то при удвоении количества пикселов вдвое, увеличится количество операций в пиксельном шейдере, блоках растеризации и TMU .

«МИР NVIDIA»: Уже очень долго идет процесс переноса расчетов на шейдеры GPU , сначала это было T&L, отсечение. Считается ли сейчас анимация моделей на GPU ? Что, в первую очередь, остается в плане 3D-движка для расчетов на CPU ? (Что вы считали на GPU , помимо T&L?).

М. Ж.: Движок, используемый в нашем проекте, не выполняет никаких расчетов на GPU . Теоретически, если бы нам, скажем, приходилось считать физику множества объектов в реальном времени, мы могли бы взять тот же PhysX , который замечательно выполняет вычисления на GPU NVIDIA, но в силу специфики проекта, нам хватает возможностей CPU .

«МИР NVIDIA»: В последние годы, видеоускорители стали «интеллектуальными», сами используют методы отсечения невидимых примитивов, как то: иерархический z-буфер. Насколько они эффективны? Можно ли сейчас просто запихнуть все треугольники в видеоускоритель, чтобы он нарисовал все сам? Во времена первых 3D-игр (серии Quake и Unreal) использовались изощренные методы уменьшения прорисовываемых треугольников, BSP-деревья и т. п. Насколько это теперь актуально?

М. Ж.: Конечно же, не стоит рассчитывать на то, что видеоускоритель самостоятельно определит, какие объекты стоит отрисовать, а какие не будут видны. Приходится применять методику раннего отсечения ненужного, так как передача избыточной информации на GPU приводит к падению быстродействия. Так что, проблема до сих пор актуальна, хоть и в значительно меньшей степени. Особенно в тех случаях, когда приходится прорисовывать большое число разнообразных объектов. Дело в том, что современные карточки заняты не только отсечением ненужного, их нагрузили еще и расчетами более сложных типов освещения и т.п. Соответственно, если есть возможность и ресурсы помочь видеокарте — это надо сделать.

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

«МИР NVIDIA»: Одно время была такая ситуация, примерно во время кризиса P4, что узким местом системы являлся процессор, который не мог «загрузить» видеоускоритель и для увеличения FPS в играх, прежде всего требовалась топовая модель CPU . Прослеживается ли сейчас подобная зависимость между CPU и GPU , или же процессоры перешагнули некий критический уровень производительности и можно взять недорогой процессор и мощную видеокарту? Имеются в виду игры с акцентом на графику, по стилю типа Quake и Doom.

М. Ж.: Слабый процессор при мощной видеокарте — узкое место системы, поскольку множество операций как низкого (формирование драйвером потока управляющих команд), так и высокого уровня (прикладная логика — игровой цикл, обновление частиц, анимация персонажей, физика, звук и т. д.) напрямую зависят от производительности CPU . Большую роль играет и объем кэш-памяти процессора, который на дешевых моделях довольно мал.

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

«МИР NVIDIA»: DirectX от версии к версии становится все больше похож на графический движок. Правда ли, что сейчас 3D-программа состоит практически из вызовов Direct3D API и основная часть вычислений производится в нем? Как вы оцениваете последнюю версию DirectX ? Стала ли она практически полноценным движком и сколько еще потребуется версий для этого?

М. Ж.: Direct3D нельзя рассматривать как отдельный графический движок и вряд ли, в обозримом будущем, Microsoft пойдет на такой шаг, как создание собственного игрового движка. Это нецелесообразно в силу ряда причин, в том числе ввиду множества отличий в требованиях к движку для разных игровых проектов. Например, автосимулятор, стратегия в реальном времени и 3D-шутер имеют отличительные особенности, не позволяющие один и тот же движок использовать одинаково эффективно во всех трех случаях.

В десятой версии Direct3D появились новые уровни абстракции при работе с ресурсами и дополнительные возможности при разработке шейдеров, стали доступны такие трюки, как Stream Output. Вместе с тем, D3D осталась тем же, чем и была — низкоуровневым API , используя который, разработчик может спроектировать игровой движок для конкретной задачи.

«МИР NVIDIA»: Вообще, последнее время происходит «глобализация» игровых и 3D-движков. Существует несколько наиболее популярных платформ, на которых изготавливается множество игр. Это объективный процесс? Имеет ли смысл сейчас фирме-разработчику писать собственный движок, когда можно лицензировать готовый полнофункциональный. Например, недавно вышла очередная версия Unreal Engine, который уже был скачан десятки тысяч раз. Долго ли осталось до момента, когда все игры будут использовать один-два 3D-движка?

М. Ж.: Мы используем BigWorld и пока что довольны им. Что касается «глобализации», вряд ли случится чудо и компании CryTek, Epic и ряд других решат отдать друг другу кусок рынка игровых движков. Не стоит забывать, что, как правило, игры, созданные на одном и том же движке, очень похожи, а это не всегда хорошо. Скорее всего, количество движков будет только расти, с уходом во все более узкую специализацию. В любом случае, уникальные движки будут всегда.

«МИР NVIDIA»: Верно ли, что последние видеокарты стали очень мощным по raw power и, не отличаясь от прежних моделей в плане эффектов, могут раскрыть свой потенциал, в первую очередь, на системах с большими мониторами (от 1920x1200) в режимах с антиалиасингом и полной анизотропной фильтрацией? Имеет ли смысл человеку с монитором, например, 1280x1024, не будучи фанатом фильтрации и AA, покупать новую видеокарту, такую как GTX285 и Radeon на новом техпроцессе?

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

«МИР NVIDIA»: Раньше, разработчики игр были консервативны в использовании возможностей и эффектов самых новых видеокарт, так как ориентировались на наиболее распространенные на текущий момент карты. То есть, выходит, к примеру, условный DirectX n, а игры все еще пишутся под DirectX n-2. Изменилась ли ситуация в последнее время? Легко ли в игре использовать возможности по новым эффектам для недавно вышедших видеоускорителей?

М. Ж.: Если бы Windows 7 вышла на пару лет раньше или Microsoft отказалась от идеи привязать DirectX 10 к Windows Vista, разработчики игр уже давно бы перешли как минимум на десятую версию API . Однако сейчас мы имеем то, что имеем: все хиты последних лет используют DX9, а поддержка DX10 — зачастую маркетинговый ход.

«МИР NVIDIA»: Насколько интенсивно обычно игры используют мощности самых новых, на момент выхода, видеоускорителей? Например, используются ли сейчас все возможности архитектуры GT200? Типична ли ситуация, когда на момент выхода, новый GPU просто немного лучше исполняет существующие игры, но с течением времени с оптимизацией игр для новой архитектуры и применению новых фич его ценность как бы растет? Насколько ваша игра использует новые фичи?

М. Ж.: В случае с новой архитектурой и ее унифицированной шейдерной моделью, выиграли практически все. Загруженность вершинного и пиксельного конвейеров GPU выровнялась там, где были большие перекосы в ту или иную сторону. Что касается новых возможностей, то чем больше процент видеокарт с поддержкой той или иной фичи, тем охотнее разработчики игр будут использовать их в своих проектах. Используемый нами BigWorld ориентируется на возможности DirectX 9 и SM 3.0.

«МИР NVIDIA»: Сейчас большую популярность приобрели онлайн-игры. Наложило ли это отпечаток на индустрию видеоускорителей? Поскольку движки подобных игр ориентированы на базовый набор фич, присутствующий у большого количества пользователей, а показатели FPS все равно лимитированы интернет-соединением, для онлайн-игр выглядит бессмысленным покупать топовый видеоускоритель. Не является ли это тормозом развития игровой графики? Увеличили популярность браузерные игры в «полном 2D», для которых ускоритель не нужен.

М. Ж.: Если посмотреть на число подписчиков World of Warcraft и сравнить его, скажем, с Aion или Age of Conan, ответ очевиден: для онлайн-игр, в первую очередь важны геймплей, проработка игрового мира, захватывающая PvP-составляющая и другие моменты, не относящиеся напрямую к графике. Тормозом для развития графики это не является, ведь не MMORPG единым живут игроки. Новые шутеры, автосимуляторы и RPG неизбежно будут и дальше поднимать планку качества 3D-графики в играх. MMO-игры медленно, но верно идут тем же путем, стремясь привлечь бoльшую игровую аудиторию. К слову, та же Blizzard сейчас, по слухам, работает над новой MMOG и вряд ли они будут использовать движок 8-летней выдержки в своем новом проекте.

«МИР NVIDIA»: Насколько технологии SLI и Crossfire требуют поддержки от разработчика игры? С чем связана различная эффективность этих технологий для различных игр? С особенностями игрового движка или с игровыми сценами? Насколько ваша игра выигрывает от использования SLI и Crossfire?

М. Ж.: Оптимизировать движок под две видеокарты — очень непростой процесс. Необходимо аккуратно организовать компактную передачу данных на GPU и сбалансировать движок по нагрузке между GPU и CPU . Если приложение, при работе на одной карте, уже упирается в CPU или передачу данных по шине, о SLI или Crossfire придется забыть. Этим, собственно, и отличаются те или иные игры при работе на спаренных ускорителях. Наша игра пока дает прирост производительности около 10% на SLI , но сейчас мы оптимизируем ряд модулей, в целях улучшения работы в подобных режимах.

«МИР NVIDIA»: Уже давно, много говорится о кризисе рынка для PC и постепенного перехода игр на приставки. Но этого пока не произошло. Можно ли ожидать этого в будущем? Правда ли, что по причине стандартного «железа», программировать графику для приставок гораздо легче? Или же извечное отставание приставок по уровню «железа» нивелирует унифицированность?

М. Ж.: Игровые консоли обладают рядом преимуществ для разработчика (одна платформа, один набор возможностей и, как следствие, одинаковая производительность у всех игроков), но рынок PC-игр и, в частности, онлайн-игр постоянно растет, так что ожидать повального перехода на консоли не стоит. Не стоит забывать и о том, что выход игровых приставок с более мощным железом сдерживают сами производители консолей, стремясь возместить затраты на выпуск приставок предыдущего поколения за счет продаж текущих игр. Поэтому, прежде чем выпускать Playstation 4 или Xbox 720, пройдет еще немало времени и выйдет множество проектов, ориентированных на текущее поколение приставок. В отдельных случаях, таких как Nintendo Wii, передовое «железо» оказывается и вовсе ненужным, для достижения отличного результата.

«МИР NVIDIA»: Правда ли, что сейчас в играх почти повально используется сочетание проекционного метода для построения теней от моделей и метода теневых объемов с динамически или статически просчитанными объёмами для теней на движущиеся объекты, модели и оружие, и от движущихся частей моделей на самих себя?

М. Ж.: Вместо теневых объемов часто используется та же проекционная техника, с модификациями (каскадные карты теней, отдельная теневая карта для самозатенения и др.). Теневые объемы дают четкую границу тени, но страдают из-за высокого показателя fillrate, дополнительных расчетов на CPU и сложной реализации мягких краев теней.

«МИР NVIDIA»: Есть ли у существующих методов построения теней перспектива, с точки зрения построения динамического освещения всей сцены? То есть, с постепенным ростом мощности видеоускорителей их можно будет использовать для расчета всего освещения в динамике? Или потребуется применение каких-то новых методов?

М. Ж.: Проективные тени прошли довольно долгий путь в современных играх и те или иные их модификации будут использоваться еще долгое время, сочетаясь с дополнительными эффектами, вроде SSAO . Конечно, если будет бесплатный рейтрейсинг на GPU , то ни у проективных, ни у волюметрических теней нет никаких шансов.

«МИР NVIDIA»: Как вы оцениваете технологию Precomputed Radiance Transfer, с точки зрения применения в играх? Собираетесь ли вы ее использовать в будущем?

М. Ж.: PRT требует длительных расчетов, не сочетается с анимированными моделями и в принципе не дает больших преимуществ в визуальном плане, по сравнению с той же Ambient Occlusion. Как пример, можно взять Halo 3, которая использует PRT, но не выделяется качеством освещения на фоне тех же Gears of War или Crysis.

«МИР NVIDIA»: DirectX 11 и архитектура Fermi, стоит ли ждать DirectX 11 ускорителей и игр, или это проходная версия API ? Может ли младшая модель Direct X 11 ускорителя, уступая по абсолютной мощности, fill rate, быть лучше старой, но более мощной модели с поддержкой DirectX 10? Можно ли ожидать, с выходом архитектуры Fermi, какого-то качественного скачка в игровой графике, или это будет экстенсивный рост, больше треугольников, больше скорость в высоких разрешениях и т. п.? Если бы в момент разработки вашей игры была доступна Fermi, насколько другой игра была бы, с точки зрения графики?

М. Ж.: Одиннадцатая версия DirectX предлагает больше возможностей для вычислений на GPU , при этом, если сравнивать с DX10, никаких коренных улучшений для 3D-графики не несет. Что касается Fermi, самой интересной особенностью, на мой взгляд, является полностью управляемая тесселяция для 3D-моделей.

Михаил Живец, технический директор проекта World of Tanks, компания Wargaming.net

После премьерных закрытых показов World of Warships на gamescom и «ИгроМире» официальный запуск игры все ближе и ближе. Сейчас в разгаре закрытое альфа-тестирование, и нам, разработчикам Lesta Studio , питерского подразделения Wargaming, еще предстоит решить целую кучу вопросов. При этом немало препятствий все-таки удалось оставить позади. Ниже - рассказ о том, как мы адаптировали экспортер нашего движка под нужды «Кораблей» и выстраивали процесс верификации контента.

Стандартная поставка движка

Любой движок включает в комплект поставки инструментарий для экспортера 3D-моделей из 3D-редакторов в свой собственный формат данных. Наш BigWorld, на основе которого сделан и World of Tanks, не является исключением. Он поддерживает экспорт из 3D Max и Maya. Практически любой игровой проект требует адаптации стандартных экспортеров под специфику проекта. В нашем проекте спецификой являются модели кораблей.

Первая версия адаптированного экспортера из Maya просто «дообучила» его распознавать более сложную структуру сцены кораблей. К существовавшему C++ коду добавилось немного управляющего кода на Python, а также плагин для Maya с UI на wxWidget. Выглядело это примерно так:


UI адаптированного экспортера

Получившийся инструмент обладал массой недостатков.

Экспорт можно было осуществлять только с участием пользователя, который должен был «сказать» экспортеру, что содержит сцена. Об использовании данного инструмента в автоматизации различных процессов, например, автоматической верификации контента на этапе сборки дистрибутива, не могло быть и речи.

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

Архитектура являлась основной проблемой для расширения функциональности в будущем. Экспорт являлся фактически атомарной операцией (набор спагетти-функций), которая транслировала данные из одной структуры (загруженной сцены Maya) в другую структуру (BigWorld) напрямую в физические файлы. Когда сериализаторы и бизнес-логика реализованы «в монолите», а модель данных просто отсутствует, то невозможно добавлять обработку данных (pre/post-processing), а также повторно использовать (code reuse) сериализаторы и модель данных в других инструментах, реализующих собственную бизнес-логику. Строить более сложные процессы производства контента было невозможно.

Со временем наращивать новую функциональность в существующем коде стало практически невозможно. Было принято решение переписать экспортер «с нуля», заложив в него новую архитектуру.

Суровые будни

Уровень нашего проекта повысил требования к качеству, сложности и объему контента. За последние пару лет наша студия сильно выросла. У нас появились возможность выделять достаточное количество ресурсов на задачи, связанные с производством контента. К нам пришли профессионалы, имеющие большой бэкграунд в разработке архитектуры, технологиях на C++/C#. При этом для разработчиков экспортера это был первый опыт использования Python и Maya API. Это внесло дополнительные риски, которые требовалось учитывать.

Рефакторинг экспортера мы оценили в два-три человеко-месяца. Без оптимизма в геймдеве никак нельзя.

К рискам мы отнесли:

Отсутствие формальных требований;
уровень владения Python;
сложность Maya API;
рефакторинг алгоритмов обработки примитивов.

Много фактического времени ушло на сбор требований из неформализованных источников, таких как разработчики, ставшие менеджерами, «старожилы», торсионные поля и код существовавшего экспортера. Эти крупицы знаний были формализованы и записаны в виде требований, спецификаций и UML-диаграмм в Confluence.

Первые прототипы показали необходимость использования концепции namespaces и модулей Python (__init__.py). Также был проработан механизм, позволяющий «прозрачно» использовать функциональность из C++ библиотек (.pyd).

О сложности и запутанности Maya API можно написать отдельную книгу. Любая функциональность требовала прототипирования, консультаций с 3D-художниками и с разработчиками движка (rendering).

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

К законам Мерфи давно пора дописать правило, что любой задуманный вами проект обязательно будет реализован за время не более чем «x3” от запланированного, если вы его не бросите.

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

Заглянем под капот

В нашей студии активно используются скрипты на Python. Мы пытались реализовать на нем и весь экспортер. Естественно, Python не подходит для обработки больших бинарных данных - таких, как контейнеры вершин (vertex buffer), контейнеры индексов вершин (index buffer) и т. д. Модель данных и сериализаторы подобных контейнеров были реализованы на C++ в виде библиотеки (.pyd), которая естественным образом «вписались» в модель данных на Python. Вся бизнес-логика была реализована на Python.

Фреймворк экспортера планировалось применять не только для задачи «ручного» экспорта из Maya, но и для любых задач, где его функциональность можно было бы повторно использовать, например, для автоматизации верификации контента. От любого разрабатываемого инструментария мы требуем наличие интерфейсов (API) для Python, командной строки (command line) и UI инструментов.

Архитектура

Архитектура фреймворка экспортера модульная, послойная. Существуют физический и логический слои, а также слой предметной области. Каждый слой содержит отдельные модули: модель данных, бизнес-логика, сериализаторы, а также конверторы, умеющие преобразовывать модель данных одного слоя в модель данных другого слоя. Физический и логический слои фактически реализуют аналог ORM-архитектуры.

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


Послойная архитектура экспортера

Процесс экспорта

Послойная архитектура вносит определенные особенности процесса экспорта. Фактически мы десериализуем две (или более) моделей из различных источников (Maya и BigWorld Engine). После этого происходит объединение (merge) этих моделей в одну новую. Далее новая модель сериализуется в BigWorld-Engine-формат.


Процесс экспорта

Гибкость процесса производства контента

Реализованная архитектура позволяет достаточно просто выстраивать сложные процессы производства контента. Например, первичная модель корабля у нас технологически состоит из трех отдельных сцен Maya, каждую из которых одновременно разрабатывают разные отделы:

Первая сцена содержит визуальную модель (visual model) и модель коллизий (collision model).
Вторая сцена содержит баллистическую модель (ballistic model).
Третья содержит порты эффектов (effects ports).

Вдобавок к этому инструментарий движка (редакторы) добавляет (редактирует) собственные данные в производной модели формата движка (четвертая сцена).

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

Верификация контента

Система верификации контента позволяет нам искать ошибки контента как в каждом слое (источнике) по-отдельности, так и в результирующем контенте. Число верификаторов сейчас достигает нескольких десятков. Автоматическая верификация контента встроена в процесс сборки дистрибутива (build), что позволяет максимально исключить человеческий фактор и гарантировать целостность и техническую чистоту контента.


Пример верификации модели корабля в Maya

Бюджеты контента и уточка в ванной

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


UI-плагина Maya

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

На практике очень трудно соблюдать бюджетное значение. Множество моделей объективно являются исключениями. Задание бюджетного значения в виде диапазона также не решает проблему, так как со временем полигонаж моделей просто начинает стремиться к верхнему значению диапазона. В нашем случае, мы планируем изменять персональные бюджеты тех моделей, которые не соответствуют стандартному бюджету данного типа моделей.

Обработка контента

На каждом этапе экспорта требуется производить обработку (pre/post-processing). Например, перед конвертацией логической модели данных слоя Maya в модель данных предметной области для пушек ПВО требуется предварительное вращение скелета пушки на 45 градусов по оси Y и удаление скелета. Наша архитектура позволила прозрачно встраивать различные обработки на любом этапе экспорта.




Пример модели до и после pre-processing

Поддержка x64

Достаточно недавно наши художники в массовом порядке перешли с 32-битной Maya 2012 на 64-битную Maya 2014. Так как экспортер почти полностью написан на Python, у нас практически не возникло проблем с поддержкой x64. Лишь библиотека (.pyd), реализованная на C++, потребовала небольшого «шаманства».

Сейчас экспортер можно легко использовать как в x32, так и в x64 процессах, поскольку он сам определяет и подгружает требуемую сборку C++ библиотеки (.pyd).

Верификация карт

Разрабатывая архитектуру экспортера, мы не могли предположить заранее, в каких еще инструментах и автоматизациях удастся его повторно использовать. Автоматизация верификации карт является примером того, как «правильная» архитектура экспортера нашла свое применение в другом инструменте.

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

Особенность верификатора карт заключается в том, что он может верифицировать не просто наличие файлов этих визуальных моделей, но и сами модели, используя фреймворк экспортера. Это позволило исключить человеческий фактор, когда отделу разработки карт (LA) приходится «верить на слово» отделу разработки 3D-моделей (3D Art), что используются технически корректные модели.

Сборка дистрибутива

Фреймворк экспортера нашел свое применение и в процессе подготовки пакета контента (content pack) для дистрибутива. В дистрибутив не должны попасть модели, которые:

Уже не используются;
находятся еще на стадии разработки;
предназначены для последующих версий продукта.

По базовому списку игровых объектов (root game objects) требуется построить граф зависимостей, по которому будет сформирован полный список требуемого контента. Нет ничего проще, чем десериализовать модель при помощи фреймворка экспортера и «узнать», какие еще модели потребуются (content references).

Итоги

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

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

  • Жанровая направленность: 3D MMO любого жанра;
  • Платформа: PC, PS3, Xbox 360, iOS (iPad), Web;
  • Язык программирования: C++, Python;
  • Лицензия: инди и коммерческая;
  • Открытый исходный код: не предоставляется или предоставляется за повышенную оплату;
  • Мультиплеер: клиент-сервер;
  • Достоинства: мощный, поддержка всех самых современных технологий, оптимизированный, поддержка iOS, дешёвый для таких возможностей;
  • Недостатки: бесплатно не предоставляется;
  • Разработчики движка: BigWorld Tech, Inc.

    BigWorld Engine - это самый передовой 3D движок для создания MMO-игр. На нём сделаны такие игры как "World of Tanks", "Pealm of the Titans" от Wargaming.net и прочие игры других мировых компаний-разработчиков игр. На этом движке сделано больше 15 MMO-игр. Разрабатывается он компанией BigWorld Technology.

    Оптимизированность движка позволяет создавать низкотребовательные игры с потрясающей графикой. Движок позволяет портировать игры на iOS. Написан на языке программирования C++, реализация же игровой логики в нём производится на удобном скриптовом ЯП Python. Имеются мощные инструменты и движок клиент-сервер. Для звука поддерживается библиотека FMOD, а также подключаются любые другие библиотеки посредством плагин-системы. Работает с XML и MySQL базами. В составе инструментария есть мощные World Editor, Model Editor и Particle Editor.

    Он очень доступен в цене. Сборка BigWorld: Indie Edition стоит всего $299; BigWorld: Indie Source Edition - $2,999; BigWorld: Commercial Edition – оговаривается индивидуально.

    Этот передовой движок не уступает по возможностям другим мировым движкам своего типа. Движок доступен на русском, корейском, американском и японском языках. Есть документация, может работать на браузерах. Вообщем, можете приступать к работе, если есть знания и усердие.

    Уже недоступен для стороннего лицензирования, т.к. Wargaming решила отказаться от распространения своего движка.

    Официальный сайт: http://www.bigworldtech.com





    The BigWorld Technology tool chain provides a complete, end-to-end MMOG content creation system that will enhance the quality and timeliness of your game. All tools are designed for cooperative production of game assets in a large team environment, ensuring effective use of resources and a smooth content pipeline.

  • Понравилась статья? Поделитесь с друзьями!
    Была ли эта статья полезной?
    Да
    Нет
    Спасибо, за Ваш отзыв!
    Что-то пошло не так и Ваш голос не был учтен.
    Спасибо. Ваше сообщение отправлено
    Нашли в тексте ошибку?
    Выделите её, нажмите Ctrl + Enter и мы всё исправим!