Создаем продвинутую графику в World of Warplanes
world_of_kwg — 31.10.2012Перевод оригинальной статьи отсюда с сильными авторскими правками по ходу.
- Почему мы выбрали BigWorld
Первый выпуск дневников разработчиков мы решили посвятить технологиям, которые используем в разработке наших игр. И, разумеется, такой рассказ не может обойтись без упоминания BigWorld – нашего главного инструмента, движка для всех больших игр серии World of в компании Wargaming.net.
Если вы спросите, почему мы остановились именно на BigWorld, то здесь нужно отметить несколько ключевых моментов. В первую очередь – потому что это одно из немногих комплексных и завершенных, так сказать “под ключ”, решений для производства онлайн игр. BigWorld изначально был предназначен для создания массовых многопользовательских продуктов, доступных через мировую паутину. Эта цель и определила основные особенности движка:
- мощная и хорошо оптимизированная серверная составляющая
BigWorld обеспечивает эффективную и стабильную коммуникацию клиент-сервер, в том числе, с точки зрения потребления сетевого трафика и распределения нагрузки на серверное оборудование (hardware).
- масштабируемость и работа под высокими нагрузками
Сервера, работающие под BigWorld, способны эффективно справляться с высокими нагрузками. Так, в World of Tanks нам удалось достичь более 200.000 PCCU (peak concurrent users) в рамках одного кластера («фермы» серверов). И хотя при такой загрузке оборудования игроки могли испытывать некоторый дискомфорт, связанный с увеличением пинга и появлением задержек в работе (лагов), данное обстоятельство, как ни странно, было связано, в первую очередь, с перегруженностью сетевой инфраструктуры крупных интернет-провайдеров. А именно - из-за огромных объемов трафика, которые «генерились» игровым кластером, а не собственно техническими проблемами на стороне серверного оборудования вследствие нехватки мощности.
- лучшее серверное решение
BigWorld как серверная технология, безусловно, не идеален. Тем не менее, он значительно превосходит своих конкурентов, несмотря даже на то, что клиентская часть движка несколько отстает от серверной. В том числе это касается и графического рендера, о котором пойдет речь ниже.
Технология BigWorld обладает безусловными достоинствами, у нее нет существенных недостатков, а с учетом длительной и позитивной истории сотрудничества Wargaming.net и BigWorld, приобретение австралийских разработчиков движка и выведение сотрудничества на качественно новый уровень - это логичный и разумный шаг вперед.
- Оптимизация Big World middleware под нужды World of Warplanes
краткая справка по студии-разработчику WoWP
Студия-разработчик World of Warplanes (WoWP) – киевская Persha Studia – имеет давнюю историю сотрудничества с Wargaming.net и была включена в цикл производства контента (3d моделей) для World of Tanks. Наши киевские друзья были хорошо осведомлены о том, как именно выстроен development cycle игрового контента и налажены технические и организационные процессы (pipelines) в Минске, где и разрабатывались танки. Таким образом, решение о более тесном сотрудничестве Wargaming.net и Persha Studia имело, помимо прочих, огромный плюс – снижение технологического риска. Мы знали наверняка, что наши киевские коллеги могут делать красиво, качественно, и, что немаловажно, в срок.
Выбор «движка» является комплексным решением лежащим одновременно в технической и бизнес плоскостях. «Движок» определяет структуру всего производственного цикла и требует построения всех процессов непосредственно «под него».. Каждый «моторчик» требует построения новой, отдельной и независимой структуры, а работать с двумя разными производственными циклами для двух схожих, по сути, проектов (World of Tanks и World of Warplanes) - это достаточно рискованно, долго и, как следствие, дорого. Естественно, мы пришли к выводу, что применить наработки World of Tanks, организационные и технические – это самый разумный ход, поскольку проще использовать готовые схемы и многолетний опыт минского офиса: как построить проект, как раздавать задачи, какой work flow от дизайнера к художнику, от художника к арт-директору, от него – к программисту, от программиста – к тестеру, и т.д. Всё это «завязано» на движок и с точки зрения оптимизации процессов, конечно, проще использовать наработки и многолетний опыт минского офиса, разработавшего World of Tanks.
Во время preproduction WoWP рассматривалась возможность замены рендера (графической составляющей движка), т.е. покупки другого рендера и «встраивания» его в серверную часть BigWorld. На рынке в настоящее время имеется весьма богатый выбор клиентских решений (в отличие, кстати, от серверных), которые не имеют сервера, но могут предложить красивую картинку (solid graphics, eye candy). Однако, в конечном счете, от этой идеи мы отказались. Во-первых, пытаться совместить их код с нашим - означало пойти на достаточно серьезный риск. Во-вторых, такое решение было экономически нецелесообразно, поскольку долгосрочное привлечение сторонних ресурсов потребовало бы серьёзных инвестиций со стороны Wargaming в чужую, по сути, компанию и чужие технологии.
Исходя из всего вышесказанного, легко понять, почему мы (снова!) полностью остановились на решении, предлагаемом BigWorld, включая все клиентские его компоненты. Их, к слову, было решено дорабатывать самостоятельно, т.е. внутри компании.
Но, как и всегда бывает с бочкой меда и ложкой дегтя, в противовес к очевидным плюсам middleware от BigWorld есть один, но значимый минус – относительно слабая, в сравнении с монструозной серверной, клиентская часть. Для большей наглядности проделанных нами изменений давайте поподробнее остановимся на тех ее доработках, которые, в конечном счете, видимы невооруженному глазу - graphic enhancement and adjustment.
- технология работы с землёй (terrain): применение 3rd party middleware World Machine
Помимо качественной реализации боя на больших и средних высотах, мы также стремимся обеспечить насыщенный и динамичный тактический геймплей непосредственно у поверхности земли. Это требует от нас довольно необычного для большинства игр про авиацию подхода к созданию наземных объектов. Во-первых, мы стараемся сделать максимально «помятым» сам terrain: с множеством холмов, каньонов, и прочих складок местности. Все это предоставляет пилотам больше тактических возможностей для маневрирования. Во-вторых, мы стремимся создавать наземные цели с разным уровнем защищённости и сложности, у которых есть несколько стадий разрушения (например, поврежденный объект, полуразрушенный объект, разрушенный объект). Этот элемент в какой-то мере «роднит» нас с FPS games. Например, в World of Tanks, присутствуют разрушаемые здания. Что-то подобное есть и у нас.
В идеале, к релизу мы сделаем полностью «живые» карты. Многие наземные объекты перестанут быть статичными, вокруг них будет кипеть action: если это морская карта с кораблями, какие-то из них будут активно тонуть, другие – не менее активно стрелять, если это сухопутная карта – чем не повод воспроизвести танковое сражение на земле (привет World of Tanks). Мы хотим, чтобы для игрока это выглядело как имитация линиифронта и его не покидало ощущение, что вокруг него непрерывно что-нибудь да происходит.
Использование 3rd party middleware World Machine, по сравнению со «стоковым» (stock) решением BigWorld, позволило нам получить гораздо более детальные тени на текстуре, улучшенную генерацию масок геологических отложений, зон выветривания, потоков водяной эрозии, формирования береговой линии под действием океанов и морей, настройку крутизны склона и других подобных элементов. Все это, помимо визуального эффекта, помогло нам ускорить создание базовой текстуры.
Использование технологии
World Machine (before & after)
Кроме того, нам удалось увеличить плотность тесселяций – так называется метод разбиения полигонов на более мелкие части в 3d графике - нашего рендера почти на 30% по сравнению с «дефолтной» величиной. За счет этого гребни и вершины холмов и гор получаются более острыми.
Наш оптимизированный рендер террейна способен определять все текущие комбинации текстур и объединять их в пакеты (batch), что, в конечном счете, значительно улучшает производительность рендера. Была добавлена lightmap для деревьев и прочих статических объектов. Так, деревья в тени теперь не сияют и не дают «бликов», получая только отраженное освещение, а те объекты, что находятся непосредственно на солнце, освещаются еще и направленным источником света.
А вот как это выглядит непосредственно в игре на различных картах (before & after)
- делаем карты по-настоящему
большими
Самолеты любят простор! Стальным боевым птицам было бы совершенно негде развернуться на текущих танковых картах размера 1x1 км. Прибегнув к целому ряду инновационных технологических решений, нам удалось увеличить размер поля для воздушных баталий более чем в 200 раз.
Основной trick состоит в том, что мы убрали непрерывность текстуры (аналогично функции clone stamp в Photoshop). Суть этого решения состоит в следующем: на одной текстуре, например, рисуются все острова (пусть это будет морская карта), далее, в результате изменения координат объекта, остров переносится в другое место на уровне, а ранее нарисованный - закрашивается текстурой дна. Это позволило достичь отличного результата – при использовании такого же объема текстур площадь уровня удалось значительно увеличить!
Стоит отмеить, что скриншоты сделаны на старой версии без применения глобального освещения и прочих последних изменений. Рендер пилим непрерывно, чтобы было "как в танках" или даже лучше.
|
</> |