Главная » Программирование игр под Android

Конвейер визуализации OpenGL – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 10 September, 2013 категория: Программирование игр под Android

OpenGL ES отслеживает эти три матрицы. Каждый раз, когда мы устанавливаем одну из них, она сохраняется в памяти до тех пор, пока мы снова ее не изменим. Говоря языком OpenGL ES, это называется состоянием. OpenGL не просто отслеживает состояние матрицы, а также следит за тем, хотим ли мы произвести альфа-смешивание, учитывать освещение, за тем, какая текстура должна быть применена к нашей геометрии и т. д. Фактически OpenGL ES представляет собой одну большую машину состояний. Мы устанавливаем текущее состояние, добавляем геометрию объектов и приказываем OpenGL ES визуализировать изображение. Рассмотрим, как треугольник проходит через механизм визуализации. На рис. 7.4 показан достаточно упрощенный вид конвейера OpenGL ES:

Читать »

СНОВА МАТРИЦЫ И ПРЕОБРАЗОВАНИЯ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 9 September, 2013 категория: Программирование игр под Android

 

Мы уже немного говорили о матрицах. Вспомним некоторые их свойства: матрица переносит точки (или в нашем случае – вершины) на новую позицию. Это достигается умножением матрицы на позицию точки; матрица может переносить точки на каждой оси на некоторое значение; матрица может масштабировать точки. Это означает, что каждая координата точки умножается на некоторую константу; матрица может повернуть точку вокруг оси; умножение единичной матрицы на точку не повлияет на эту точку; результатом умножения одной матрицы на другую является новая матрица. Умножение точки на эту новую матрицу приведет к применению к точке обоих преобразований, закодированных к оригинальной матрице;

Читать »

Программный запуск активностей – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 9 September, 2013 категория: Программирование игр под Android

Класс ListActivity содержит защищенный метод onListltemClickO, вызываемый при нажатии элемента списка. Нам нужно переопределить этот метод в нашем классе AndroidBasicsStarter. Именно это мы и делали в листинге 4.1.

Аргументами этого метода являются объект ListView (который ListActivity использует для отображения элементов), View (содержащийся в Li stView элемент, на который производится касание), position (позиция нажатого элемента в списке) и i d, который нас не слишком интересует. На самом деле главное для нас – это аргумент position.

Читать »

БОЛЬШОЙ ПРЫГУН:  ДВУХМЕРНАЯ ИГРА, НАПИСАННАЯ С ПОМОЩЬЮ OPENGL ES – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 9 September, 2013 категория: Программирование игр под Android

 

Пришло время использовать все, что вы узнали, для того, чтобы написать игру.

Однако для нашей следующей игры я решил выбрать что-нибудь более простое. Мы реализуем игру в жанре попрыгунчик (jump-em-up), подобную играм Abduction или Doodle Jump. Как и в случае с игрой Мистер Ном, мы начнем с определения игровой механики.

Читать »

СЮЖЕТ И ХУДОЖЕСТВЕННОЕ ОФОРМЛЕНИЕ DROID INVADERS

Добавлено Дата: 7 September, 2013 категория: Программирование игр под Android

 

Мы назовем игру Droid Invaders, что будет отсылкой как и игре Space Invaders, так и к ОС Android. Это довольно дешевый трюк, но мы пока не планируем создать гениальное название прямо сейчас. По традиции классических шутеров вроде Doom сюжет игры будет очень коротким. Например, таким: пришельцы из космоса атакуют Землю; вы являетесь единственным человеком, способным противостоять силам врага. Такой сюжет вполне подошел бы для игр Doom и Quake, поэтому он подойдет и для нашей игры. Художественное оформление пользовательского интерфейса будет иметь оттенок ретро, в частности, будет использоваться тот же старомодный шрифт, который мы применяли для игры Большой прыгун. Сам по себе игровой мир будет отображаться в 3D, он будет содержать текстурированные и освещенные 3D -модели. Рисунок 12.3 показывает, на что будет похож игровой экран.

Читать »

Нормализованное пространство устройства и область просмотра OpenGL  – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 6 September, 2013 категория: Программирование игр под Android

Когда OpenGL ES уже известны проецируемые на ближнюю плоскость отсечения точки треугольника, мы наконец-то можем перевести их в пиксельные координаты фреймбуфера. Для этого необходимо трансформировать точки в так называемое нормализированное пространство устройства. Оно соответствует системе координат, показанной на рис. 7.2. Основываясь на координатах нормализованного пространства устройства, OpenGL ES подсчитывает конечные пиксельные координаты фреймбуфера с помощью следующей простой формулы:

Читать »

ТРЮКИ  ПРИ РАЗРАБОТКЕ 3D ИГР – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 6 September, 2013 категория: Программирование игр под Android

 

3D -программирование – это очень сложное и широкое поле деятельности. Рассматриваются темы, являющиеся минимальными требованиями к программисту, который желает написать простую 3D-Hrpy.

Мы снова рассмотрим наш знакомый вектор и присоединим к нему еще одну координату.

Читать »

ЗАГРУЗКА МОДЕЛЕЙ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 6 September, 2013 категория: Программирование игр под Android

 

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

Читать »

Почему OpenGL ES-рендеринг такой медленный? – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 5 September, 2013 категория: Программирование игр под Android

То, что НТС Него медленнее, чем устройства второго поколения, не секрет. Тем не менее чип PowerVR в Droid чуть-чуть быстрее, чем чип Adreno в Nexus One, так что предыдущие результаты на первый взгляд достаточно странные. При дальнейшем исследовании мы можем, наверное, объяснить разницу не различной мощностью графического процессора, а тем, что вызываем множество методов OpenGL ES в каждом фрейме и эти методы занимают очень много памяти. Это значит, что они фактически вызывают С-код, который требует больше памяти, чем вызов метода Java на Dalvik. У Nexus One есть динамический компилятор, так что он имеет некоторое пространство для оптимизации. Поэтому давайте будем считать, что разница обусловлена динамическим компилятором, (что, возможно, не совсем правильно).

Читать »

ЗАПУСК И ОТЛАДКА ПРИЛОЖЕНИЙ ANDROID

Добавлено Дата: 5 September, 2013 категория: Программирование игр под Android

 

После написания первой версии кода нашей программы мы, конечно, захотим запустить и протестировать его для обнаружения потенциальных проблем (или чтобы просто похвастаться). Сделать это можно двумя способами: запустить приложение на реальном устройстве, подключенном к компьютеру с помощью USB-кабеля; вызвать эмулятор, включенный в SDK, и протестировать приложение на нем.

Читать »

Основы программирования графики – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 3 September, 2013 категория: Программирование игр под Android

Android предлагает нам два больших API для прорисовки экрана. Один из них используется в основном для программирования 20-графики, второй – для аппаратно ускоренного 3D. В этой и следующей главах мы сфокусируемся на разработке 20-графики с помощью Canvas API, являющегося, по сути, качественной оберткой для библиотеки Skia и подходящего для большинства сложных 2D-nrp. Однако прежде чем этим заняться, нам необходимо прояснить для себя два аспекта: переход в полноэкранный режим и защиту от блокировки.

Читать »

СООБЩЕСТВО РАЗРАБОТЧИКОВ ANDROID

Добавлено Дата: 2 September, 2013 категория: Программирование игр под Android

 

Одна из слагаемых успеха Android – ее сообщество разработчиков, объединяющее программистов по всему миру. Место наиболее массового скопления энтузиастов – группа Android Developers, расположенная по адресу http://groups.google.com/group/ android-developers. Это место номер один для того, чтобы задавать вопросы или искать помощи в случае возникновения не решаемой (как вы думаете) проблемы. Группу посещают различные разработчики Android, от системных программистов до создателей приложений и игр. Иногда ценные советы дают даже инженеры Google, отвечающие за соответствующие части Android. Регистрация на ресурсе бесплатна, и я очень рекомендую начать чтение этой группы прямо сейчас. Помимо предоставления площадки для задавания вопросов это также прекрасное место для поиска уже готовых решений проблем и ответов. Поэтому прежде, чем задать вопрос, проверьте, не был ли уже дан на него ответ.

Читать »

Пространственная сетка – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 31 August, 2013 категория: Программирование игр под Android

Наша пушка будет ограничена прямоугольником размером 1 х 1 м; ограничивающий прямоугольник пушечного ядра будет размером 0,2 х 0,2 м, а у мишеней будут ограничивающие прямоугольники по 0,5 х 0,5 м каждый. Чтобы все стало немного проще, ограничивающие прямоугольники центрированы относительно позиции каждого объекта.

Читать »

Формат Wavefront OBJ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 31 August, 2013 категория: Программирование игр под Android

Мы реализуем загрузчик для подмножества, представленного в таком формате. Он будет поддерживать модели, состоящие только из треугольников и, возможно, содержащие координаты текстур и нормали. Формат OBJ также поддерживает хранение произвольных выпуклых полигонов, но мы не будем рассматривать этот параметр. Если вы найдете или создадите модель OBJ, просто убедитесь в том, что она состоит исключительно из треугольников.

Читать »

КЛАССЫ ЭМУЛЯЦИИ DROID INVADERS

Добавлено Дата: 29 August, 2013 категория: Программирование игр под Android

 

Как обычно, создаем классы для каждого объекта нашего мира. У нас в игре есть следующие объекты: корабль; захватчики; выстрелы; щиты.

Управление осуществляется всезнающим классом World. Как вы видели при представлении объектов нет особой разницы между 2D и 3D. Вместо классов GameObject и DynamicObject мы теперь будем использовать классы Game0bject3D и Dynamic0bject3D. Единственное различие заключается в том, что мы теперь для хранения позиций, скоростей и ускорений применяем экземпляры класса Vector3 вместо экземпляров класса Vector2, а форму объектов представляют ограничивающие сферы вместо ограничивающих прямоугольников. Все, что нам осталось сделать, – реализовать поведение различных объектов нашего мира.

Читать »