Введение Целевая аудитория Как построена эта книга Как получить исходные коды Об авторе О техническом редакторе Благодарности От издательства 1. Android: новенький в классе Краткая история Android Разделение Роль Google Android Open Source Project Android Market Соревнования, распространение устройств и Google I/O Возможности и архитектура Android Ядро Среда выполнения и Dalvik Системные библиотеки Фреймворк приложения Software Development Kit Сообщество разработчиков Устройства, устройства, устройства! Аппаратная составляющая Первое поколение, второе поколение, следующее поколение Игры для мобильников — особая штука Игровая консоль в каждом кармане Всегда на связи Простые и крутые Крупный рынок, мелкие разработчики Подводя итог 2. Первые шаги с Android SDK Настройка среды разработки Настройка JDK Настройка Android SDK Установка Eclipse Установка плагина ADT для Eclipse Краткий обзор среды Eclipse Hello World в стиле Android Создание проекта Исследование проекта Написание кода приложения Запуск и отладка приложений Android Подключение устройства Создание виртуального устройства Android Запуск приложения Отладка приложения LogCat и DDMS Использование ADB Подводя итог 3. Разработка игр 101 Жанры: на любой вкус Казуальные игры Головоломки Аркады и активные игры «Защита башни» Что-то новенькое Дизайн игры: карандаш сильнее кода Основная механика игры Сюжет и оформление Экраны и трансформации Код: скучная рутина Управление приложением и окнами Ввод Файловый ввод-вывод Звук Графика Игровая среда Подводя итог 4. Android для разработчиков игр Определение приложения Android: файл манифеста Элемент Элемент Элемент Элемент Элемент Элемент Настройка проекта игры на Android за 10 простых шагов Назначение значка для вашей игры Основы Android API Создание тестового проекта Жизненный цикл активности Поддержка устройств ввода Поддержка файловой системы Обработка звука Потоковая музыка Основы программирования графики Полезные советы Подводя итог 5. Android Game Development Framework План атаки Класс AndroidFileIO AndroidAudio, AndroidSound и AndroidMusic — все о звуке! AndroidInput и AccelerometerHandler AccelerometerHandler: что сверху? Класс Pool: используем повторно! KeyboardHandler: вверх, вверх, вниз, вниз, влево, вправо… Обработчики касаний AndroidInput: отличный координатор AndroidGraphics и AndroidPixmap: двойная радуга Обработка различных размеров экрана и разрешений AndroidPixmap: пикселы для каждого AndroidGraphics: то, что нужно для рисования AndroidFastRenderView: собрать-растянуть, собрать-растянуть AndroidGame: свяжем все вместе Подводя итог 6. «Мистер Ном» покоряет Android Создание ресурсов Настройка проекта MrNomGame: основная активность Ресурсы: удобное хранилище ресурсов Настройки: сохранение пользовательских настроек и таблицы рекордов LoadingScreen: получение ресурсов с накопителя Главное меню Класс(ы) HelpScreen Экран рекордов Отрисовка чисел: краткое введение Реализация экрана Абстрагирование… Абстрагирование мира мистера Нома: модель, вид, контроллер Класс GameScreen Подводя итог 7. OpenGL ES: первое представление Что такое OpenGL ES и почему об этом стоит задуматься Модель разработки: аналогия Проекции Нормализованное пространство устройства и область просмотра Матрицы Конвейер визуализации Перед стартом GLSurfaceView: облегчает жизнь с 2008 года GLGame: реализация игрового интерфейса Мама, смотри: я нарисовал красный треугольник! Определение области просмотра Определение матрицы проекции Определение треугольников Все вместе Определение цвета вершины Обработка текстур: легкая работа с фоновыми рисунками Координаты текстур Загрузка растровых изображений Фильтрация текстур Удаление текстур Полезный фрагмент кода Активация текстурирования Все вместе Класс Texture Индексированные вершины: используем повторно Все вместе Класс Vertices Альфа-смешивание: я вижу тебя насквозь Другие примитивы: точки, линии, полоски и конусы 2D-преобразования: матрица «Модель — представление» Пространство мира и модели Снова матрицы Первый пример с использованием переноса Другие преобразования Оптимизация производительности Измерение частоты кадров Любопытный случай с Hero на Android 1.5 Почему OpenGL ES-рендеринг такой медленный? Убираем ненужные изменения состояний Уменьшение размера текстуры — выбираем меньше пикселов Уменьшаем количество вызовов методов OpenGL ES/JNI Концепция связывания вершин В заключение Подводя итог 8. Трюки при разработке 2D-игр Перед стартом Сначала был вектор Работа с векторами Немного тригонометрии Реализация класса Vector Простой пример использования Немного 2D-физики Ньютон и Эйлер — друзья навек Сила и масса Манипулируем теоретически Манипулируем на практике Определение столкновений и представление объектов в 2D Ограничивающие фигуры Создание ограничивающих фигур Атрибуты игровых объектов Широкая и узкая фазы определения столкновений Усложненный пример Камера в 2D Класс Camera2D Пример Атлас текстур: не ленись — поделись Фрагменты текстур, спрайты и пакеты: скрываем OpenGL ES Класс TextureRegion Класс SpriteBatcher Используем класс SpriteBatcher Спрайт-анимация Класс Animation Пример Подводя итог 9. «Большой прыгун»: двухмерная игра, написанная с помощью OpenGL ES Основная игровая механика Предыстория и стиль Экраны и переходы Определение игрового мира Создание ресурсов Элементы пользовательского интерфейса Обработка текста с помощью растровых шрифтов Элементы игры Атлас текстур спешит на помощь Музыка и звук Реализация «Большого Прыгуна» Класс Assets Класс Settings Основная активность Класс Font Экран GL Экран главного меню Экраны помощи Экран лучших результатов Классы эмуляции игрового мира Игровой экран Класс WorldRenderer Оптимизировать или не оптимизировать? Подводя итог 10. OpenGL ES: займемся 3D Перед стартом Вершины в 3D Vertices3: сохраняем 3D-координаты Пример Перспективная проекция: ближе, больше Z-буфер: наводим порядок Исправляем последний пример Смешиваем: за вами ничего нет Точность z-буфера и z-схватка Определяем 3D-ячейки Куб: Hello World в 3D Пример Снова матрицы и преобразования Матричный стек Иерархическая структура матричного стека Простая система камер Подводя итог 11. Трюки при разработке 3D-игр Перед стартом Векторы в 3D Освещение в OpenGL ES Как работает освещение Источники освещения Материалы Как OpenGL ES рассчитывает освещение: нормали вершин На практике Несколько примечаний к освещению в OpenGL ES Mip-текстурирование Простые камеры Камера с видом от первого лица (Эйлерова камера) Пример работы с Эйлеровой камерой Камера с видом от третьего лица Загрузка моделей Формат Wavefront OBJ Реализация загрузчика файлов формата OBJ Использование класса OBJ Loader Несколько замечаний по загрузке моделей Немного физики в 3D Определение столкновений и представление объектов в 3D Ограничивающие фигуры в 3D Проверка пересечения ограничивающих сфер Классы GameObject3D и DynamicGameObject3D Подводя итог 12. Droid Invaders: большой финал Основы игровой механики Сюжет и художественное оформление Экраны и переходы Определение игрового мира Создание ресурсов Активы пользовательского интерфейса Игровые ресурсы Звук и музыка План разработки Класс Assets Класс Settings Основная активность Экран главного меню Экран настроек Классы эмуляции Класс Shield Класс Shot Класс Ship Класс Invader Класс World Класс GameScreen Класс WorldRenderer Оптимизация Подводя итог 13. Публикуем вашу игру Несколько слов о тестировании Становимся зарегистрированным разработчиком Подписываем APK-файл вашей игры Размещение игры на Android Market Загрузка ресурсов Описание деталей Настройки публикации Публикуем! Маркетинг Консоль разработчика Подводя итог Что дальше? Становимся социальными Определение местоположения Многопользовательская функциональность OpenGL ES 2.0 и выше Фреймворки и движки Ресурсы в сети Интернет Завершающие слова Beginning Android Games offers everything you need to join the ranks of successful Android game developers. You'll start with game design fundamentals and programming basics, and then progress towards creating your own basic game engine and playable games. This will give you everything you need to branch out and write your own Android games. The potential user base and the wide array of available high-performance devices makes Android an attractive target for aspiring game developers. Do you have an awesome idea for the next break-through mobile gaming title? Beginning Android Games will help you kick-start your project. The book will guide you through the process of making several example games for the Android platform, and involves a wide range of topics: The fundamentals of game development The Android platform basics to apply those fundamentals in the context of making a game The design of 2D and 3D games and their successful implementation on the Android platform For those looking to learn about Android tablet game app development or want Android 4 SDK specific coverage, check out Beginning Android 4 Games Development, now available from Apress. Android, The New Kid On The Block -- First Steps With The Android Sdk -- Game Development 101 -- Android For Game Developers -- An Android Game Development Framework -- Mr. Nom Invades Android -- Opengl Es : A Gentle Introduction -- 2d Game Programming Tricks -- Super Jumper : A 2d Opengl Es Game -- Opengl Es : Going 3d -- Programming Tricks -- Droid Invaders : The Grand Finale -- Publishing Your Game -- What's Next? Mario Zechner. Includes Index. Provides information on creating a variety of game applications for the Android platform.