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

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

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

 

Когда мы писали Мистера Нома, мы загрузили ряд растровых изображений и напрямую отправили их в фреймбуфер – без поворотов, только слегка изменив масштабы, что было весьма несложно. В OpenGL ES нас в основном интересуют треугольники, которые могут иметь любую ориентацию и размер в зависимости от поставленной задачи. Как же визуализировать изображения с помощью OpenGL ES?

Читать »

Небольшая тестовая активность, демонстрирующая все методы вывода графики  – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

Напишем небольшую тестовую активность, демонстрирующую все вышеперечисленные методы. Я хочу, чтобы вы сначала проанализировали код в листинге 4.13. Представьте, что мы используем экран с разрешением 480 х 800 в портретном режиме, на котором будут рисоваться разные фигуры. При программировании графики очень важно представлять себе результат выполнения команд. Это требует некоторой практики, но оно того стоит.

Читать »

НЕСКОЛЬКО СЛОВ О ТЕСТИРОВАНИИ DROID INVADERS

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

 

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

Читать »

Keyboard Handler: вверх, вверх, вниз, вниз, влево, вправо…

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

Обработчик событий клавиатуры KeyboardHandler используется для выполнения целого ряда задач. Прежде всего он должен быть связан с View, так как от него KeyboardHandlег получает информацию о событиях клавиатуры. Далее ему необходимо сохранить текущее состояние каждой клавиши для предъявления этого состояния в ходе опроса. Ему также понадобится список экземпляров класса KeyEvent. И наконец, все это нужно правильно синхронизировать, так как он будет принимать события из потока пользовательского интерфейса, которые будут обрабатываться в главном игровом цикле, запущенном в другом потоке. Достаточно много работы. В качестве небольшого напоминания еще раз посмотрим на класс KeyEvent, который мы определили как часть интерфейса ввода Input:

Читать »

ЧТО ТАКОЕ OPENGL ES И ПОЧЕМУ ОБ ЭТОМ СТОИТ ЗАДУМАТЬСЯ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

 

OpenGL ES – это промышленный стандарт для графического программирования (3D), предназначенный для мобильных и встраиваемых устройств. Он обслуживается Khronos Group – объединением.таких компаний, как ATI, NVIDIA, и Intel, которые вместе определяют и расширяют этот стандарт.

Читать »

КЛАСС GAMESCREEN DROID INVADERS

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

 

Как только игра переходит к классу GameScreen, игрок может мгновенно начать играть, при этом не используется никакая проверка его готовности. Единственные состояния, о которых надо заботиться, следующие.

Запущенная игра – в этом случае необходимо отрисовывать фоновое изображение, игровой мир и элементы пользовательского интерфейса так, как это показано на рис. 12.4.

Читать »

Атлас текстур: не ленись – поделись – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

До этого момента мы использовали в наших программах только по одной текстуре. Что если мы захотим отобразить не только Боба, но и других супергероев, врагов, взрывы или монетки? У нас может быть несколько текстур, каждая из которых содержит изображение одного типа объектов. Но OpenGL вряд ли это понравится, поскольку нам надо будет переключать текстуры для каждого объекта, который мы отображаем (например, привязываем текстуру Боба, отображаем Боба, привязываем текстуру монетки, отображаем монетку и т. д.). Процесс может стать проще, если поместить различные изображения в одну текстуру. Это и будет атлас текстур: одна текстура, содержащая разные изображения. Мы должны сделать эту текстуру текущей (привязать) только один раз и тогда сможем отображать объекты любых типов, изображение которых есть в атласе. Так мы избавляемся от переизбытка смен состояния и ускоряем реализацию. Такой атлас текстур показан на рис. 8.23.

Читать »

Непрерывная визуализация в потоке пользовательского интерфейса – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

Все, что мы сделали до этого момента, – обеспечили изменение текста в TextView при необходимости. Перерисовка осуществляется самим TextView. Создадим наш собственный View, единственной задачей которого будет предоставление нам возможности рисовать на экране. Нам необходимо, чтобы этот View обновлялся как можно чаще. Нам также нужен простой способ выполнять рисование каким-нибудь волшебным способом.

Читать »

Точность z-буфера и z-схватка – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

Всегда есть желание злоупотребить использованием ближней и дальней плоскостей отсечения так, чтобы они показывали как можно больше нашей замечательной сцены. Мы приложили большие усилия для того, чтобы создать множество объектов для игрового мира, и хотели бы, чтобы от них была польза. Единственная проблема заключается в том, что z-буфер имеет ограниченную точность. На большинстве устройств с ОС Android каждое значение глубины, хранящееся в z-буфере, может иметь размер не более 16 бит, в общей сложности получается 65 535 различных значений глубины. Поэтому вместо того, чтобы установить значения ближней и дальней плоскостей отсечения равными 0,00001 и 1 000 000 соответственно, выберите более обдуманные значения. В противном случае вы увидите артефакты, которые будет производить неверно сконфигурированная область видимости в комбинации с z-буфером.

Читать »

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

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

 

Android (или, скорее, Dalvik) иногда имеет некоторые странные показатели производительности. Я дам вам некоторые полезные и важные подсказки, которым стоит следовать, чтобы сделать ваши игры удобными.

Сборщик мусора – ваш злейший враг. Когда он получает процессорное время для выполнения своей грязной работы, все другие процессы останавливаются на 600 миллисекунд. В течение этой половины секунды наша игра не будет обновляться и прорисовываться. Пользователям это не понравится. Избегайте создания объектов везде, где это возможно (особенно во внутренних циклах).

Читать »

MRNOMGAME: ОСНОВНАЯ АКТИВНОСТЬ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

 

Нашему приложению необходима точка входа, которая также именуется в Android активностью, задаваемой по умолчанию. Мы назовем эту активность MrNomGame и унаследуемся от Androi dGame, класса, который мы реализовали для того, чтобы написать игру. Этот класс необходим для создания и запуска нашего первого экрана. В листинге 6.1 показан класс MrNomGame.

Читать »

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

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

 

В предыдущем примере мы установили глобальный цвет но умолчанию для всех вершин, которые мы рисуем с помощью gl Col or4f . Иногда нам требуется более тонкий контроль (например, возможность устанавливать цвет для каждой из вершин). OpenGL ES предлагает нам данный функционал, который по-настоящему легок в использовании. Все, что нам надо сделать, – добавить float-компоненты RGB А к каждой вершине и сообщить OpenGL ES, где можно найти цвет для всех вершин так же, как мы сообщали, где можно найти расположение каждой вершины.   Начнем с того, что присвоим цвет каждой вершине:

Читать »

АЛЬФА-СМЕШИВАНИЕ: Я ВИЖУ ТЕБЯ НАСКВОЗЬ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

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

 

Реализовать альфа-смешивание в OpenGL ES достаточно просто. Нужно вызвать всего два метода:

Вызов первого метода должен быть вам уже знаком: он просто сообщает OpenGL ES, что тот должен применить альфа-смешивание ко всем треугольникам, которые мы визуализируем с данного момента. Второй метод немного сложнее. Он определяет, как должны сочетаться исходный и конечный цвета. Метод gl BIendFunc  просто сообщает OpenGL ES, какой тип уравнения использовать.

Читать »

РАЗДЕЛЕНИЕ – ИСТОРИЯ ANDROID

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

 

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

Читать »

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

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

 

До настоящего времени наш код для примера с пушкой включал в себя шаблоны, без некоторых из них можно обойтись. В частности, это касается определения экземпляров класса Vertices. Утомительно постоянно писать семь строк кода только для того, чтобы определить один текстурированный прямоугольник. Еще одна область, в которой можно поработать, – ручное вычисление текстурных координат для изображений в атласах текстур. И наконец, очень много лишнего и повторяющегося кода употребляется для отображения наших 20-прямоугольников. Я также упоминал об удобном способе отображения нескольких объектов вместо выполнения отрисовки для каждого объекта в отдельности. Мы можем решить все эти проблемы, для чего применим несколько новых концепций.

Читать »