Программирование игр под Android Программирование игр под Android Из данной книги вы узнаете все необходимое, чтобы стать успешным разработчиком под Android. Вы начнете обучение с фундаментальных вопросов проектирования игр и с основ программирования, а потом перейдете к созданию игрового движка и интересных игр. Этой информации вам будет достаточно, чтобы приступить к творческой работе и создавать собственные приложения для Android. В книге подробно описан весь процесс создания отличных игр для платформы Android. Вы узнаете, как настроить и использовать инструменты для разработки в Android, получите информацию о классическом программировании двухмерных игр и создании собственных завораживающих экшенов и игр-платформеров. В издании рассмотрены графика и аудио для Android, игровая механика (обнаружение соударений, физика и спрайтовая анимация), а также добавление в игры трехмерных эффектов. Кроме того, описано, как опубликовать игру, получать сообщения об отказах программы и организовать техническую поддержку для пользователей. Питер 978-5-459-01554-6
851 руб.
Russian
Каталог товаров

Программирование игр под Android

  • Автор: Марио Цехнер
  • Мягкий переплет. Крепление скрепкой или клеем
  • Издательство: Питер
  • Год выпуска: 2013
  • Кол. страниц: 688
  • ISBN: 978-5-459-01554-6
Временно отсутствует
?
  • Описание
  • Характеристики
  • Отзывы о товаре (1)
  • Отзывы ReadRate
Из данной книги вы узнаете все необходимое, чтобы стать успешным разработчиком под Android. Вы начнете обучение с фундаментальных вопросов проектирования игр и с основ программирования, а потом перейдете к созданию игрового движка и интересных игр. Этой информации вам будет достаточно, чтобы приступить к творческой работе и создавать собственные приложения для Android.
В книге подробно описан весь процесс создания отличных игр для платформы Android. Вы узнаете, как настроить и использовать инструменты для разработки в Android, получите информацию о классическом программировании двухмерных игр и создании собственных завораживающих экшенов и игр-платформеров. В издании рассмотрены графика и аудио для Android, игровая механика (обнаружение соударений, физика и спрайтовая анимация), а также добавление в игры трехмерных эффектов. Кроме того, описано, как опубликовать игру, получать сообщения об отказах программы и организовать техническую поддержку для пользователей.
Содержание
Оглавление
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Целевая аудитория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Как построена эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Как получить исходные коды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
О техническом редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Глава 1. Android: новенький в классе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Краткая история Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Разделение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Роль Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Android Open Source Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Android Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Соревнования, распространение устройств и Google I/O . . . . . . . . . . . 26
Возможности и архитектура Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Ядро . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Среда выполнения и Dalvik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Системные библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Фреймворк приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Software Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Сообщество разработчиков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Устройства, устройства, устройства! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Аппаратная составляющая . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Первое поколение, второе поколение, следующее поколение . . . . . . 33
Игры для мобильников — особая штука . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Игровая консоль в каждом кармане . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Всегда на связи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Оглавление 7
Простые и крутые . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Крупный рынок, мелкие разработчики . . . . . . . . . . . . . . . . . . . . . . . . 40
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Глава 2. Первые шаги с Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Настройка среды разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Настройка JDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Настройка Android SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Установка Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Установка плагина ADT для Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Краткий обзор среды Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hello World в стиле Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Создание проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Исследование проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Написание кода приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Запуск и отладка приложений Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Подключение устройства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Создание виртуального устройства Android . . . . . . . . . . . . . . . . . . . . 55
Запуск приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Отладка приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LogCat и DDMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Использование ADB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Глава 3. Разработка игр 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Жанры: на любой вкус . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Казуальные игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Головоломки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Аркады и активные игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
«Защита башни» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Что-то новенькое . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Дизайн игры: карандаш сильнее кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Основная механика игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Сюжет и оформление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Экраны и трансформации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Код: скучная рутина . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Управление приложением и окнами . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Ввод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Файловый ввод-вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8 Оглавление
Звук . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Графика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Игровая среда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Глава 4. Android для разработчиков игр . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Определение приложения Android: файл манифеста . . . . . . . . . . . . . . . . . . .116
Элемент <manifest> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Элемент <application> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Элемент <activity> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Элемент <uses-permission> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Элемент <uses-feature> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Элемент <uses-sdk> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Настройка проекта игры на Android за 10 простых шагов . . . . . . . . . .125
Назначение значка для вашей игры . . . . . . . . . . . . . . . . . . . . . . . . . .127
Основы Android API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Создание тестового проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Жизненный цикл активности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Поддержка устройств ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
Поддержка файловой системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
Обработка звука . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Потоковая музыка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Основы программирования графики . . . . . . . . . . . . . . . . . . . . . . . . . .172
Полезные советы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
Глава 5. Android Game Development Framework . . . . . . . . . . . . . . . . . . . . .199
План атаки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
Класс AndroidFileIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
AndroidAudio, AndroidSound и AndroidMusic — все о звуке! . . . . . . . . . . . . . . .201
AndroidInput и AccelerometerHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
AccelerometerHandler: что сверху? . . . . . . . . . . . . . . . . . . . . . . . . . . .207
Класс Pool: используем повторно! . . . . . . . . . . . . . . . . . . . . . . . . . . .209
KeyboardHandler: вверх, вверх, вниз, вниз, влево, вправо… . . . . . . . .211
Обработчики касаний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
AndroidInput: отличный координатор . . . . . . . . . . . . . . . . . . . . . . . . .223
AndroidGraphics и AndroidPixmap: двойная радуга . . . . . . . . . . . . . . . . . . . . . .226
Обработка различных размеров экрана и разрешений . . . . . . . . . . . .226
AndroidPixmap: пикселы для каждого . . . . . . . . . . . . . . . . . . . . . . . . .232
Оглавление 9
AndroidGraphics: то, что нужно для рисования . . . . . . . . . . . . . . . . . .233
AndroidFastRenderView: собрать-растянуть, собрать-растянуть . . . . . .237
AndroidGame: свяжем все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
Глава 6. «Мистер Ном» покоряет Android . . . . . . . . . . . . . . . . . . . . . . . . . .246
Создание ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Настройка проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
MrNomGame: основная активность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
Ресурсы: удобное хранилище ресурсов . . . . . . . . . . . . . . . . . . . . . . .249
Настройки: сохранение пользовательских настроек
и таблицы рекордов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
LoadingScreen: получение ресурсов с накопителя . . . . . . . . . . . . . . . .253
Главное меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Класс(ы) HelpScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
Экран рекордов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
Отрисовка чисел: краткое введение . . . . . . . . . . . . . . . . . . . . . . . . . .261
Реализация экрана . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Абстрагирование… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Абстрагирование мира мистера Нома: модель, вид, контроллер . . . . .266
Класс GameScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
Глава 7. OpenGL ES: первое представление . . . . . . . . . . . . . . . . . . . . . . . .288
Что такое OpenGL ES и почему об этом стоит задуматься . . . . . . . . . . . . . . . .288
Модель разработки: аналогия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289
Проекции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291
Нормализованное пространство устройства и область просмотра . . . .293
Матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294
Конвейер визуализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
Перед стартом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296
GLSurfaceView: облегчает жизнь с 2008 года . . . . . . . . . . . . . . . . . . . . . . . . .297
GLGame: реализация игрового интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . .300
Мама, смотри: я нарисовал красный треугольник! . . . . . . . . . . . . . . . . . . . . .308
Определение области просмотра . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Определение матрицы проекции . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Определение треугольников . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
Все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Определение цвета вершины. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
10 Оглавление
Обработка текстур: легкая работа с фоновыми рисунками . . . . . . . . . . . . . . .325
Координаты текстур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .325
Загрузка растровых изображений . . . . . . . . . . . . . . . . . . . . . . . . . . .327
Фильтрация текстур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
Удаление текстур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
Полезный фрагмент кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
Активация текстурирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
Все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
Класс Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334
Индексированные вершины: используем повторно . . . . . . . . . . . . . . . . . . . . .336
Все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
Класс Vertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340
Альфа-смешивание: я вижу тебя насквозь . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Другие примитивы: точки, линии, полоски и конусы . . . . . . . . . . . . . . . . . . .347
2D-преобразования: матрица «Модель — представление» . . . . . . . . . . . . . . .349
Пространство мира и модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349
Снова матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
Первый пример с использованием переноса . . . . . . . . . . . . . . . . . . . .352
Другие преобразования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357
Оптимизация производительности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
Измерение частоты кадров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .361
Любопытный случай с Hero на Android 1.5 . . . . . . . . . . . . . . . . . . . . .363
Почему OpenGL ES-рендеринг такой медленный? . . . . . . . . . . . . . . . .363
Убираем ненужные изменения состояний . . . . . . . . . . . . . . . . . . . . . .365
Уменьшение размера текстуры — выбираем меньше пикселов . . . . . .367
Уменьшаем количество вызовов методов OpenGL ES/JNI . . . . . . . . . .368
Концепция связывания вершин . . . . . . . . . . . . . . . . . . . . . . . . . . . . .369
В заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .373
Глава 8. Трюки при разработке 2D-игр . . . . . . . . . . . . . . . . . . . . . . . . . . . .375
Перед стартом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375
Сначала был вектор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Работа с векторами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377
Немного тригонометрии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Реализация класса Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
Простой пример использования . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
Оглавление 11
Немного 2D-физики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
Ньютон и Эйлер — друзья навек . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
Сила и масса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392
Манипулируем теоретически . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392
Манипулируем на практике . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .393
Определение столкновений и представление объектов в 2D . . . . . . . . . . . . .398
Ограничивающие фигуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398
Создание ограничивающих фигур . . . . . . . . . . . . . . . . . . . . . . . . . . .401
Атрибуты игровых объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404
Широкая и узкая фазы определения столкновений . . . . . . . . . . . . . .405
Усложненный пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
Камера в 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
Класс Camera2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431
Атлас текстур: не ленись — поделись . . . . . . . . . . . . . . . . . . . . . . . .433
Фрагменты текстур, спрайты и пакеты: скрываем OpenGL ES . . . . . . . . . . . . .439
Класс TextureRegion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .440
Класс SpriteBatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .441
Используем класс SpriteBatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Спрайт-анимация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451
Класс Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .452
Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457
Глава 9. «Большой прыгун»: двухмерная игра, написанная
с помощью OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458
Основная игровая механика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458
Предыстория и стиль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
Экраны и переходы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
Определение игрового мира . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .462
Создание ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
Элементы пользовательского интерфейса . . . . . . . . . . . . . . . . . . . . .465
Обработка текста с помощью растровых шрифтов . . . . . . . . . . . . . . .467
Элементы игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
Атлас текстур спешит на помощь . . . . . . . . . . . . . . . . . . . . . . . . . . . .472
Музыка и звук . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473
Реализация «Большого прыгуна» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473
Класс Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .473
Класс Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .477
12 Оглавление
Основная активность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .478
Класс Font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
Экран GL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .481
Экран главного меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
Экраны помощи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
Экран лучших результатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488
Классы эмуляции игрового мира . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
Игровой экран . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
Класс WorldRenderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .516
Оптимизировать или не оптимизировать? . . . . . . . . . . . . . . . . . . . . . . . . . . .520
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .521
Глава 10. OpenGL ES: займемся 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522
Перед стартом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522
Вершины в 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .523
Vertices3: сохраняем 3D-координаты . . . . . . . . . . . . . . . . . . . . . . . . .523
Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .526
Перспективная проекция: ближе, больше . . . . . . . . . . . . . . . . . . . . . . . . . . .529
Z-буфер: наводим порядок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .532
Исправляем последний пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . .533
Смешиваем: за вами ничего нет . . . . . . . . . . . . . . . . . . . . . . . . . . . . .535
Точность z-буфера и z-схватка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .538
Определяем 3D-ячейки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
Куб: Hello World в 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .543
Снова матрицы и преобразования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .547
Матричный стек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .547
Иерархическая структура матричного стека . . . . . . . . . . . . . . . . . . . .550
Простая система камер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .562
Глава 11. Трюки при разработке 3D-игр . . . . . . . . . . . . . . . . . . . . . . . . . . .563
Перед стартом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .563
Векторы в 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .564
Освещение в OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .569
Как работает освещение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .569
Источники освещения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .571
Материалы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .572
Оглавление 13
Как OpenGL ES рассчитывает освещение: нормали вершин. . . . . . . . .573
На практике . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .574
Несколько примечаний к освещению в OpenGL ES . . . . . . . . . . . . . . .589
Mip-текстурирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .590
Простые камеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .595
Камера с видом от первого лица (Эйлерова камера) . . . . . . . . . . . . . .595
Пример работы с Эйлеровой камерой . . . . . . . . . . . . . . . . . . . . . . . . .599
Камера с видом от третьего лица . . . . . . . . . . . . . . . . . . . . . . . . . . . .605
Загрузка моделей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607
Формат Wavefront OBJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .608
Реализация загрузчика файлов формата OBJ . . . . . . . . . . . . . . . . . . .609
Использование класса OBJ Loader . . . . . . . . . . . . . . . . . . . . . . . . . . .614
Несколько замечаний по загрузке моделей . . . . . . . . . . . . . . . . . . . .615
Немного физики в 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .615
Определение столкновений и представление объектов в 3D . . . . . . . . . . . . .616
Ограничивающие фигуры в 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .617
Проверка пересечения ограничивающих сфер . . . . . . . . . . . . . . . . . .617
Классы GameObject3D и DynamicGameObject3D . . . . . . . . . . . . . . . . .619
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .620
Глава 12. Droid Invaders: большой финал . . . . . . . . . . . . . . . . . . . . . . . . . .622
Основы игровой механики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .622
Сюжет и художественное оформление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .624
Экраны и переходы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .624
Определение игрового мира . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .626
Создание ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .627
Активы пользовательского интерфейса . . . . . . . . . . . . . . . . . . . . . . .627
Игровые ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .629
Звук и музыка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .631
План разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .631
Класс Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .631
Класс Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .635
Основная активность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .636
Экран главного меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .637
Экран настроек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .640
Классы эмуляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .643
Класс Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .644
Класс Shot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .644
14 Оглавление
Класс Ship . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .645
Класс Invader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .647
Класс World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .651
Класс GameScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .657
Класс WorldRenderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .665
Оптимизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .671
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .672
Глава 13. Публикуем вашу игру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .673
Несколько слов о тестировании . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .673
Становимся зарегистрированным разработчиком . . . . . . . . . . . . . . . . . . . . . .674
Подписываем APK-файл вашей игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .675
Размещение игры на Android Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .679
Загрузка ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .680
Описание деталей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .680
Настройки публикации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .681
Публикуем! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .681
Маркетинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .682
Консоль разработчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .682
Подводя итог. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .683
Глава 14. Что дальше? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .684
Становимся социальными . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .684
Определение местоположения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .684
Многопользовательская функциональность . . . . . . . . . . . . . . . . . . . . . . . . . .685
OpenGL ES 2.0 и выше . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .685
Фреймворки и движки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .685
Ресурсы в сети Интернет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .687
Завершающие слова . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .687
Штрихкод:   9785459015546
Аудитория:   Для специалистов
Бумага:   Офсет
Масса:   500 г
Размеры:   240x 170x 34 мм
Оформление:   Лакировка
Тираж:   1 500
Литературная форма:   Учебно-практическое пособие
Сведения об издании:   Переводное издание
Тип иллюстраций:   Черно-белые
Редактор:   Каляева Е.
Художник-иллюстратор:   Радзевич К.
Переводчик:   Сидорович Е., Зазноба Е.
Отзывы Рид.ру — Программирование игр под Android
5 - на основе 1 оценки Написать отзыв
1 покупатель оставил отзыв
По полезности
  • По полезности
  • По дате публикации
  • По рейтингу
5
07.02.2013 21:53
Хороший справочник для Вашей первой игры под андроид! Краткий обзор основных возможностей платформы.
Написано доступным понятным языком, что способствует быстрому усвоению материала. Для более глубоко изучение отдельных тем ссылается на сайт с документацией. Исходный код содержит незначительные ошибки, для неопытного программиста может создать проблему в не понимании работы платформы, но исправляются быстрыми правками. Общее впечатление, очень хорошая книга, но направлена на написание исключительно на создание игр.
Содержит материалы воспроизведение звуков, музыки. Работа с аккселерометром, сенсорным дисплеем, отрисовкой через Canvas, OpenGL ES.
Нет 0
Да 1
Полезен ли отзыв?
Отзывов на странице: 20. Всего: 1
Ваша оценка
Ваша рецензия
Проверить орфографию
0 / 3 000
Как Вас зовут?
 
Откуда Вы?
 
E-mail
?
 
Reader's код
?
 
Введите код
с картинки
 
Принять пользовательское соглашение
Ваш отзыв опубликован!
Ваш отзыв на товар «Программирование игр под Android» опубликован. Редактировать его и проследить за оценкой Вы можете
в Вашем Профиле во вкладке Отзывы


Ваш Reader's код: (отправлен на указанный Вами e-mail)
Сохраните его и используйте для авторизации на сайте, подписок, рецензий и при заказах для получения скидки.
Отзывы
Найти пункт
 Выбрать станцию:
жирным выделены станции, где есть пункты самовывоза
Выбрать пункт:
Поиск по названию улиц:
Подписка 
Введите Reader's код или e-mail
Периодичность
При каждом поступлении товара
Не чаще 1 раза в неделю
Не чаще 1 раза в месяц
Мы перезвоним

Возникли сложности с дозвоном? Оформите заявку, и в течение часа мы перезвоним Вам сами!

Captcha
Обновить
Сообщение об ошибке

Обрамите звездочками (*) место ошибки или опишите саму ошибку.

Скриншот ошибки:

Введите код:*

Captcha
Обновить