Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Научился сам? Помоги начинающему.

Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Syberex 29 мар 2012, 23:14

ShadowGun: Optimizing for Mobile Sample Level

ShadowGun: оптимизация уровня под мобильные устройства
by Will Goldstone

Изображение

Здесь, на Unity, мы хотим поделиться с Вами опытом создания фантастической игры. Одной из важнейших частей нашей работы является то, что Unity является высоко производительной платформой для запуска на мобильных устройствах, но когда дело дойдет до получения лучшей производительности вашей игры - это будет то место, где вы сядите. Поэтому чтобы вам не сгнить в этой тьме, когда дело дойдет до оптимизации вашей игры, мы вместе с MadFinger Games, разработчиками блокбастера 'ShadowGun', решили предложить вам образец уровня их проекта, созданный с применением инновационных методов, чтобы помочь вам узнать о техниках, которые они использовали при создании своей игры.

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

Демо уровень

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

Основные особенности

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

Альфа-смешивание убивает (Alpha blending)

Количество фейсов с применением Альфа-смешивания (Alpha blending), особенно, когда они заполняют большую часть экрана, резко снижает производительность мобильных устройств. Когда группы таких фейсов перекрывают друг друга, тогда увеличивается перерисовка (increase overdraw) и это полностью убивает производительность на медленных устройствах.

Сложные, по-пиксельные шейдеры снижают число кадров (Complex, per-pixel shaders)

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

Шейдеры в ShadowGun

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

Specular карты окружения (Shader Virtual Gloss Per Vertex Additive)

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

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

Оптимизированное динамическое освещение и затенение персонажа (Lightprobes и BRDF Shader)

Традиционной проблемой со статическим освещением (картами освещения (Lightmaps)) является не возможность получить соответствующее освещение на динамических объектах (т.е. игровых персонажах и NPC).

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

Unity также содержит великолепный шейдер для персонажей (superb character shader), который хорошо оптимизирован под мобильные устройства (смотрите нашего Мутанта в демо сцене). Этот шейдер поддерживает Diffuse, Specular and Normal карты и использует специальный скрипт, который генерирует текстуру, использующуюся при оценке освещения в BRDF-функции (in BRDF-like fashion). Персонажи с такими эффектами, приближаются к супер современным персонажам на консолях самых известных брендов.

Туман и объемный свет (Shader Blinking Godrays)

После того как вы включите глобальной туман в 3d-движке, частота кадров опустится ниже играбельного уровня, особенно на старых мобильных устройствах.

Однако, с графической точки зрения, туман значительно улучшает вид окружающей среды, особенно помогает воспринимать глубину и пространство сцены. Мы нашли решение с помощью простой сетки с прозрачной текстурой (Fog planes) вместо глобального тумана. Когда игрок приходит слишком близко к сетке тумана, она исчезает, и более того, вершины сетки тумана расстягиваются на расстонии (pulled away)(даже с полностью прозрачными Альфа каналами поверхности требуют много времени на рендеринг).

Подготовка сетки в 3D приложении для корректной работы с шейдером

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

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

Плотный анимированный дым от крушения (Shader Scroll 2 Layers Sine Alpha-blended)

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

В нашем случае, мы анимируем дым путем смешивания двух текстур и перемещаем их друг относительно друга. Есть также альфа вершин, участвующих в целях сглаживания краев сетки. Сетка также подкрашивается в цвет вершин (The mesh is also colored with vertex colors) (оранжевый, чтобы имитировать огонь на земле, и светло серый, где дым сливается с небом).

Движение облаков (Skybox) (Shadow Scroll 2 Layers Multiplicative)

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

Ткани флагов на ветру (Shader Lightmap + Wind)

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

Юридические уведомления

Все пользовательские шейдеры в демо уровне SHADOWGUN, являются интеллектуальной собственностью MADFINGER Games, и они доступны для свободного пользования (кроме BRDF шейдера, который был создан Unity Technologies, но его также можно использовать бесплатно).
Сетки и текстуры в уровне остается собственностью MADFINGER Games, и не могут использоваться для каких-либо коммерческих целей без разрешения MADFINGER Games.

--------------------------------------------------------------------------------
Это мой первый перевод. Переводил с помощью Яндекс переводчика и своих скромных знаний английского.
То, что выделил курсивом разобрать не смог. Надеюсь на помощь сообщества!
Видео смотрите в оригинальной статье, сюда вставить не получается...
Последний раз редактировалось Syberex 04 апр 2012, 14:20, всего редактировалось 4 раз(а).
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2291
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение burlak 30 мар 2012, 02:35

Круто! Спасибо за перепост!
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение VitaMin00 04 апр 2012, 13:43

круто)) сяду за комп распатрашу демку)))
VitaMin00
UNITрон
 
Сообщения: 187
Зарегистрирован: 12 мар 2012, 19:54

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение vetcat 09 апр 2012, 20:39

Спасибо!
vetcat
UNIт
 
Сообщения: 60
Зарегистрирован: 06 фев 2010, 14:07
Откуда: Пенза

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение alexsilent 12 апр 2012, 15:15

Спасибо большое! Тоже интересно заценить дему и скрипты.
alexsilent
UNIверсал
 
Сообщения: 437
Зарегистрирован: 21 май 2011, 10:30

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение akkelman 16 апр 2012, 09:06

Извините, а вот не пойму, решил перенести небо в свой проект на андроиде. А шейдер не работает. Текстуры не отображаются всё розовое и компилировать не хочет. Оно не для мобильников что-ли тут в примере? Если собираю под писишной платформой то всё в норме
akkelman
UNIт
 
Сообщения: 67
Зарегистрирован: 10 мар 2012, 17:21

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Syberex 16 апр 2012, 10:56

Уровень смотрел, но шейдеры применять на практике еще не пробовал.
На самом деле они для мобильников и оптимизированы. Но чем помочь не знаю :(
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2291
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Acolit 26 май 2012, 19:10

Добрый вечер, такой вопрос: открыл проект, но он почти пуст, нет ни скриптов, ничего)
Аватара пользователя
Acolit
UNIверсал
 
Сообщения: 431
Зарегистрирован: 08 мар 2012, 11:15

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение eligma 26 май 2012, 19:31

Сверяйте версию исходников которые открываете. В данном случае здесь версия юнити не ниже 3.5 а винда XP. За винду отвечаю - сам пробовал. Потому что некоторые исходники даже зависят от версии винды. Буржуи же делают на семерке и вообще ни о чем не думают. (было что на старшей версии винды работает а на младшей нет)
Gleeko Multiplayer Gameplay------Знаете ли вы что протокол IPV6 в 1 000 000 раз превышает по возможностям протокол IPV4? А также протокол IPV6 официально был запущен в прошлом году 6.06 числа в 6 часов утра. Это событие отмечали во всем мире.
Аватара пользователя
eligma
Старожил
 
Сообщения: 778
Зарегистрирован: 29 фев 2012, 03:35
  • Сайт

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Acolit 26 май 2012, 19:34

у меня 3.5 последняя самая.
Аватара пользователя
Acolit
UNIверсал
 
Сообщения: 431
Зарегистрирован: 08 мар 2012, 11:15

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Acolit 16 июн 2012, 11:27

У кого еще такая проблема - пишите, помогу решить.
Аватара пользователя
Acolit
UNIверсал
 
Сообщения: 431
Зарегистрирован: 08 мар 2012, 11:15

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Belfegnar_ 19 июн 2012, 18:20

Acolit писал(а):У кого еще такая проблема - пишите, помогу решить.

Помогай (popcorn1)
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Acolit 19 июн 2012, 19:02

1. Вырезаем папку library оттуда, запускаем проект, должно получится все розовое.
2. Вырезаем папку assets/shaders.
3. Сохраняем проект.
4. Не закрывая, копируем опять туда же папку assets/shaders.
Вот и все.
Аватара пользователя
Acolit
UNIверсал
 
Сообщения: 431
Зарегистрирован: 08 мар 2012, 11:15

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Belfegnar_ 20 июн 2012, 23:31

Спасибо. Не помогло, к сожалению.
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Перевод "ShadowGun: Optimizing for Mobile Sample Level"

Сообщение Acolit 20 июн 2012, 23:59

Что именно?
Аватара пользователя
Acolit
UNIверсал
 
Сообщения: 431
Зарегистрирован: 08 мар 2012, 11:15

След.

Вернуться в Уроки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3