CodeFest 2011. Коротецкий М. — Особенности разработки игр...
Transcript of CodeFest 2011. Коротецкий М. — Особенности разработки игр...
Особенности разработки игр для iOS, Android, PSP
Коротецкий Михаил,Ведущий разработчик Alawar Friday’s Games
О чем пойдет речь?
• Отличия разработки игр от разработки прикладного ПО
• Краткое сравнение iOS, Android и PSP• Подготовка графики под разные
разрешения/платформы• Особенности оптимизации игр для каждой
платформы
2
Игры vs прикладное ПО
• Ограниченные ресурсы• Память• Процессор (CPU)• Графический процессор (GPU)
• Рисованный интерфейс• Много разных разрешений экрана
• Набор графики под каждое разрешение
3
Примеры казуальных игр
4
5
Игры vs прикладное ПО
5
DeEn Es
Шрифты
Игры vs прикладное ПО
− API платформы для вывода графики и меню− Не удовлетворяет с точки зрения дизайна− Слишком медленно− Не кроссплатформенно
+ Использование низкоуровневых интерфейсов+ OpenGL ES (iOS, Android) для работы с графикой+ OpenAL (iOS), Java (Android) для работы со звуком
6
iOS, Android, PSP
7
Сравнительные характеристики устройств
iOS Android PSP
Разрешения экранов:
3 варианта множество(4 основных)
1 вариант
Аппаратных конфигураций:
несколько множество 1 вариант
Программных прошивок:
2 основных Огромное множество
Не имеет значения
8
Сравнительные характеристики устройств
iOS (iPod 2, iPhone 2G)
Android (Google G1)
PSP
CPU 400MHz ARM 528MHz ARM 222 Mhz
GPU tris/sec 572K 470K 33000K
GPU fillrate 26M 33M 664M
Memory 128mb 192mb 32mb
9
Аппаратные характеристики
Подготовка графики
• Исходная графика в «большом» формате• Разрешение экрана• Формат текстур• Формат звука• Специфика платформы (наличие тач-скрина
или джойстика)
10
Разрешения экранов iOS устройств
• 3 набора графики• 480x320 – iPhone: 1–3GS;
iPod touch: 1, 2, 3• 960x640 – iPhone 4, iPod touch 4• 1024x768 – iPad
• 2 дистрибутива (1 в случае Universal версии)• 480x320, 960x640 – iPhone, iPod touch• 1024x768 – iPad
11
Разрешения экранов Android устройств
• 4 набора графики• 480x320• 800x480• 854x480• 1024x600
• 1 дистрибутив• Подходящий набор графики загружается при
старте приложения• Для некоторых store’ов нужен отдельный
дистрибутив под каждое разрешение
12
Разрешения экрана PSP
• 1 набор графики• 480x272
• 1 дистрибутив
• Big-endian архитектура
13
Почему оптимизация важна?
Оптимизация
14
«Тормозит» «Вылетает»
Общие принципы оптимизации
• Экономить память (ее постоянно не хватает, сильно не хватает)
• По возможности использовать сжатые форматы текстур
• Ничего не загружать во время геймплея• Ничего не создавать во время геймплея
(кэшировать на этапе загрузки)• Минимизировать обращение к flash памяти
• Загружать короткие звуки в оперативную память
15
Общие принципы оптимизации
• Простые способы ускорить приложение• Отключить RTTI• Отключить C++ Exceptions
• Самая главная ошибка• Принудительная синхронизация CPU и GPU ведет
к потере производительности до 50 %
Оптимизация игр для iOS и Android
• Минимизация количества полигонов на сцене• Минимизация количества объектов на сцене• Использование сжатых форматов текстур
• ETC1 (Android)• стандарт на OpenGL ES 2.0• нет поддержки альфа-канала -> использование двух
текстур с последующей распаковкой в шейдере
• PVRTC (iPhone, Android)• ATITC (Android)• S3TC (DXT) (Android)
17
Оптимизация игр для iOS и Android
• Минимизация OpenGL ES вызовов• Упаковка текстур в одну – две большие• Упаковка геометрии в один вертексный буфер
и отрисовка за один DIP (iOS prooved)• Минимизация использования альфа-блендинга
и альфа-теста (на gpu PowerVR MBX, SGX)
18
19
Особенности PSP
• Один экран, одно железо• Слишком мало памяти – 32 mb, реально 19mb• Слабый CPU• Мощный, но устаревший GPU
• Нет поддержки шейдеров, только FFP• Нет поддержки мультитекстуринга
20
Оптимизация игр для PSP
• Использование сжатых форматов текстур (S3TC) - обязательно
• Минимизация использования ОП• Оптимизация в целом(слабый процессор)
21
Спасибо за внимание
Коротецкий Михаил [email protected]
Ирина Подчернина: [email protected]
Ольга Плехова: [email protected]
22