Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Урок по AndEngine No1: Введение и знакомство



Урок по AndEngine №1: Введение и знакомство
2013-06-09 18:00 rem1x

Приветствую всех моих читателей! Начинаю выкладывать вольный перевод уроков по разработке приложений на AndEngine. Сам в данный момент перешел с  libGDX на AndEngine, поэтому, мои статьи и переводы обеспечены.

 

Введение в AndEngine:

AndEngine является игровым OpenGL 2D движком с открытым исходным кодом, разработанным Николосом Гремлихом.  Даже если вы не имеете опыта программирования под OpenGL, это не помешает вам создавать 2D приложения под Android с использованием OpenGL. Самое главное — иметь опыт программирования на Java. Без этого никуда.

logo Урок по AndEngine №1: Введение и знакомство

Особенности движка:

  • ∙ масштабирование приложения в различных устройствах (разных разрешениях)
  • ∙ Поддержка мультитач.
  • ∙ Физический движок Box2D (в виде расширения) (которая используется, например AngryBirds)
  • ∙ Поддержка Tiled Maps
  • ∙ Системы частиц
  • ∙ Живые обои (в виде расширения)

________________________________________

2. Преимущества использования AndEngine:

  • ∙ Свободный и открытый исходный код.
  • ∙ Вам действительно не нужен опыт OpenGL программирования, (но бывает желательно)
  • ∙ Быстрый, хорошо проработанный движок
  • ∙ Относительно большие, активные и полезные сообщества.
  • ∙ Много расширений под движок
  • ∙ Множество примеров c демонстрацией возможностей движка

________________________________________

3. Основные недостатки:

  • ∙Почти нет нормальной документации (особенно на русском).
  • ∙ Иногда работает медленнее, чем другие движки
  • ∙ Отсутствие документации является основной трудностью на начальных этапах, (трудно понять параметры, функции, методы и т.д.)

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

 
 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



Урок по AndEngine №2: Как установить AndEngine?
2013-06-09 18:11 rem1x

Установка AndEngine.

Я сам долго заморачивался над установкой, в конце концов, получилось найти видео, сделанное пользователем  RealMayo.

Это детальный видеоурок, состоящий из 2 частей, о том, как правильно установить AndEngine GLES2 (есть еще GLES1).

Перед установкой вам необходим уже установленная связка Eclipse+JDK+Android SDK (в Рунете полно уроков о том, как это сделать, поэтому проблем с этим возникнуть не должно).

Для просмотра видео урока на Ютубе — кликните Далее.

logo Урок по AndEngine №2: Как установить AndEngine?

Часть 1.

 

Часть 2.

Если вам нужен урок по установке GLES1, просмотрите видео этого же пользователя, там есть.

 

 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



Урок по AndEngine №3: Основные и важные понятия движка
2013-06-09 19:01 rem1x

В этом уроке я постараюсь дать краткое описание самых часто используемых терминов и определений игрового движка AndEngine.

Описание и термины составлены самим Николосом Гремлихом

Engine (движок):

Engine (движок) составляет игровой процесс из маленьких шагов. Так Engine, синхронизирует отрисовку объектов на сцене и обновления экрана, обработку событий, обработку различных данных, которые содержит активная в данный момент времени ваша Activity. Имеются различные подклассы, например:

  • LimitedFPSEngine - этот класс старается достичь определенного значения обновлений и отрисовки в секунду.

logo Урок по AndEngine №3: Основные и важные понятия движка

IResolutionPolicy:

IResolutionPolicy является частью EngineOptions. Этот класс указывает AndEngine как бороться с различными размерами экранов различных устройств. То есть метод RatioResolutionPolicy будет максимально увеличивать SurfaceView к предельному размеру, сохраняя при этом определенное соотношение. Это означает, что объекты не будут искажены в то время как SurfaceView будет иметь максимально возможный размер.

  • RatioResolutionPolicy — масштабировать всё в правильном соотношении (недостаток — могут образоваться черные линии)
  • FillResolutionPolicy  - растягивать изображения по размера экрана (недостаток — изображения могут быть растянуты)

Camera:

Camera определяет прямоугольник сцены, которая рисуется на экране. Обычно, в одной сцене используется одна Camera. Есть подклассы с большим количеством функций, например:

  • BoundCamera — камера, с указанием размеров отрисовываемой части.
  • ZoomCamera — можно разрешить масштабирование, прокрутку камеры.

Scene:

Класс Scene — корневой контейнер для всех объектов, которые можно отрисовать на экране. Сцена имеет определенное количество слоев, которые сами по себе могут содержать (фиксированное или динамическое) количество элементов. Есть подклассы, такие как CameraScene / HUD / MenuScene, которые занимают одно и то же положение вне зависимости от позиционирования камеры.Например:

  • HUD — используется для очков, карты, радара и т.д. (этот подкласс следует за изменениями камеры, поэтому находится всё время в одном месте, вне зависимости от перемещения камеры)

Entity:
Entitiy это объекты, такие как спрайты, прямоугольники, текст или линий. У объектов есть свойства, такие как: положение/ориентация / шкала / цвет / и т.д.

  • Sprite — объекты с текстурой
  • TiledSprite — объекты с Tiled текстурами.
  • AnimatedSprite — расширение TiledSprite, анимированные спрайты.

Textures:

Текстура это «изображение» в памяти графического чипа. На Android`e ширина и высота текстуры должны быть степенью 2 (в последнем GLES2 это правило не требуется, что может быть действительно полезным для экономии памяти).  AndEngine собирает текстуры от нескольких ITextureSources, поэтому пространство может использоваться эффективнее.

TextureRegion:
TextureRegion определяет прямоугольник на текстуре. TextureRegion используют спрайты, чтобы дать системе знать, какая часть большой текстуры Sprite показывает.
 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



Урок по AndEngine №4: Спрайты
2013-06-11 01:08 rem1x

Спрайты (Sprites)

Если вы новичок в разработках 2D игр, вы наверное не совсем ясно понимаете, что такое спрайт. Давайте дадим короткое определение спрайта.

Спрайт это 2D Bitmap (растровое изображение), которая позиционируется в сцене с помощью [X,Y] координат

В AndEngine, спрайты это подкласс (расширение) Объектов (Entity). Существуют и подклассы (расширения) спрайтов — TiledSprite и AnimationSprite, которые позволяют использовать Tiled текстуры или анимировать спрайты.

logo Урок по AndEngine №4: Спрайты

1. Создание спрайтов.

Есть различные способы создания и инициализации спрайтов, вот один из наиболее удобных и коротких способов:

Sprite yourSprite = new Sprite(x, y, textureRegion, vertexBufferObjectManager);

 

  • Первый и второй параметр — x и y, координаты создания спрайта
  • Третий параметр — ITextureRegion для спрайта. (Прямоугольник, который указывает какую текстуру использовать)
  • Четвертый параметр — vertexBufferObjectManager (Без понятия пока что это значит, добавлю описание попозже)

 

2. Привязка спрайтов (Attaching)

Вы можете привязывать спрайты к различным объектам. Например спрайт привязать к спрайту, или спрайт привязать к какой нибудь конкретной сцене. Для этого, вам нужно вызвать метод attachChild.

anyEntity.attachChild(yourSprite);

3. Другое

Отсоединить объект (Detach):

yourEntity.detachSelf();

Регулировка видимости:

yourSprite.setVisible(boolean);

Вращение:

yourSprite.setRotation(float);

Безопасное удаление спрайта:

yourEntity.detachSelf();
yourEntity.dispose();

Tiled спрайт:

Чтобы лучше понять что такое ТайледСпрайт, приведем пример с обычной кнопкой. Обычно, кнопка имеет несколько текстур — текстура нажатой кнопки, наведенной, зажатой, отпущенной и др. В зависимости от состояния кнопки, показывается та или иная текстура. Чтобы не использовать несколько отдельных текстур, можно регулировать индекс Tiled, и тем самым выбирать,  какую текстуру нужно показывать в данный момент.

yourTiledSprite.setCurrentTileIndex(index);

Анимированный спрайт:

Это подкласс (расширение) TiledSprite, обладающий дополнительными методами и функциями. Например, возможность анимации спрайта. Создать AnimatedSprite действительно очень легко, используя TiledTextureRegion

private void createTiledSprite()
{
        AnimatedSprite as = new AnimatedSprite(0, 0, tiledTextureRegion, vbo);
        long[] frameDurration = {100, 100, 100};
        as.animate(frameDurration);
        scene.attachChild(as);
}

Создаем AnimatedSprite с именем as, указываем координаты, текстуры. Далее создаем массив frameDuration, с тремя значениями 100, т.к. подразумевается что якобы в примере TiledTexture обладает тремя тайлами, текстурами. Вызываем у нашего спрайта с именем as метод animate() и указываем frameDuration.

 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



Урок по AndEngine №5: Использование слоев — Layers
2013-06-26 21:12 rem1x

Приветствую всех моих читателей и гостей! Извините за небольшую задержку, но всё таки на улице лето и жара, пора отпусков, работы в огороде, на даче, отдыха на пляже, шашлычки и другие развлечения. Поэтому могут быть некоторые задержки с выходами постов, прошу меня понять и простить icon smile Урок по AndEngine №5: Использование слоев   Layers

logo Урок по AndEngine №5: Использование слоев   Layers

Слои (Layers) — действительно полезная вещь при разработке любой игры. К счастью, движок AndEngine дает нам возможность легко создавать слои и также легко ими управлять.

Что такое слои вообще? Это легко можно объяснить вот такой картинкой:

layers 1 300x139 Урок по AndEngine №5: Использование слоев   Layers

 

Я даже не знаю как точнее можно дать определение слоев. Например, может быть слой с фоновым изображением, слой с элементами меню, слой с элементами HUD, слой с элементами управления и другие. К слоям можно прикреплять разные спрайты, элементы управления и т.д. и это будут как бы отдельные группы элементов.

Надеюсь, вы поняли.

Чтобы создать слой и привязать его к сцене, нужно всего лишь создать объект (Entity) и соответственно привязать его, всё, после этого наш первый слой готов.

Вот как это делается:

final int FIRST_LAYER = 0; 
 final int SECOND_LAYER = 1;

Это обычные числовые переменные для того чтобы именовать слои и обращаться к ним по индексу. Очень удобно, если не поняли — дальше станет понятнее.

private void createLayers() {
 scene.attachChild(new Entity()); // First Layer
 scene.attachChild(new Entity()); // Second Layer
 }

Как видно из кода, мы обращаемся к Scene, вызываем метод attachChild и в качестве параметра передаем новый объект Entity. Эти объекты не имеют уникального имени, поэтому к ним мы можем обращаться по уникальному ID, который начинается с 0, 1, 2…. и т.д. То есть результатом первой команды будет объект с индексом 0, результатом второй команды будет объект с индексом 1 и так далее.

Как вы помните, вначале мы заранее инициализировали две числовые переменные, FIRST_LAYER и SECOND_LAYER задав им значение 0 и 1. Это мы сделали для удобства, чтобы обращаться к ним вот так:

scene.getChildByIndex(FIRST_LAYER).attachChild(yourEntity);

Чтобы не запоминать индексы слоев icon smile Урок по AndEngine №5: Использование слоев   Layers Как видите, мы обратились к First Layer, использовав те переменные которые сделали вначале и привязали к этому слою какой-то свой объект. Теперь yourEntity принадлежит и связан с First Layer.
Если Вам всё равно не понятно, постарайтесь внимательно прочитать код и вникнуть в него, станет понятно и легко.



Урок по AndEngine №6: Entity Modifiers — модификаторы объектов
2013-06-29 02:28 rem1x

Приветствую всех читателей и гостей!

В этом уроке проливается свет на такие вещи как модификаторы объектов (Entity Modifiers).

Модификаторы объектов это полезные классы, которые могут придавать некие «эффекты» вашим спрайтам или каким либо объектам, такие как вращение, масштабирование, смена прозрачности и др.

В AndEngine, вы можете открыть пак org.andengine.entity.modifiers, там можно найти какие-нибудь полезные модификаторы, ну или добавить свои, если руки из правильного места растут icon smile Урок по AndEngine №6: Entity Modifiers   модификаторы объектов

logo Урок по AndEngine №6: Entity Modifiers   модификаторы объектов

 

1.Регистрация нового модификатора

Все что вам нужно сделать, это использовать следующую строку для регистрации нового модификатора объекта (пример)

yourEntity.registerEntityModifier(new RotationModifier(3, 0, 360));

В этом примере был зарегистрирован новый RotationModifier, он имеет 3 основных параметра:

  • Длительность модификатора — 3 секунды в этом примере
  • Начало вращения (от градусов) — в ​​нашем примере 0 градусов
  • Конец вращения — в ​​нашем примере на 360 градусов — полный оборот.

2. Бесконечные модификаторы.

Вы также можете зарегистрировать бесконечный модификатор (который будет проигрываться постоянно).

Для этого вам нужно использовать вот такую строчку, используя LoopEntityModifier:

yourEntity.registerEntityModifier(new LoopEntityModifier(yourModifier));

3. Слушатели модификаторов (Modifiers Listeners)

Иногда вам нужно запустить какой-то определенный код в какой-то определенный момент времени. Например во время запуска модификатора, или по его завершению. Для этого вам нужно переопределить некоторые методы при созданий нового модификатора. Вот как это делается:

RotationModifier yourModifier = new RotationModifier(3, 0, 360)
{
 @Override
 protected void onModifierStarted(IEntity pItem)
 {
 super.onModifierStarted(pItem);
 // Your action after starting modifier
 }

 @Override
 protected void onModifierFinished(IEntity pItem)
 {
 super.onModifierFinished(pItem);
 // Your action after finishing modifier
 }
};

yourEntity.registerEntityModifier(yourModifier);

Первой строчкой, создается модификатор. После, в методе onModifierStarted пишется код который нужно выполнить после запуска модификатора, после в onModifierFinished пишется код который нужно выполнить после выполнения модификатора, последней строчкой уже регистрируется и применяется этот новый модификатор. Всё просто и понятно, никаких сложностей возникнуть не должно.

 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



Урок по AndEngine №7: Создание бэкграунда (Background Creating)
2013-06-30 01:31 rem1x

Здравствуйте мои дорогие читатели!

Создание фона или по другому бэкграунда.

Многих новичков, в первую очередь интересует вопрос, как вставить на фон картинку, чтобы фон не был тупо одноцветным.

Так вот, AndEngine позволяет нам создать несколько типов бэкграундов без особых усилий. Итак, простой цветной бэкграунд делается так:

logo Урок по AndEngine №7: Создание бэкграунда (Background Creating)

 

private void createBackground()
{
scene.setBackground(new Background(Color.RED));
}

В данном примере, создается статичный бэкграунд красного цвета.

2. Создание Parallax Background`а.

Чтобы вставить изображение на фон, нам нужно создать Parallax Backgorund. Это изображение будет видно всегда и оно будет следовать за камерой, куда бы вы не повернули его (камеру, тобишь). Но напрямую изображение указать не получится, нужно сначала создать спрайт с нужным изображением и этот спрайт применить уже к PB (Parallax Background), через Parallax Entity. Но не пугайтесь, это не сложно:

private void createBackground()
{
ParallaxBackground background = new ParallaxBackground(0, 0, 0); //новый PB фон
background.attachParallaxEntity(new ParallaxEntity(0, new Sprite(0, 0, background_region, vbo))); //аттачим к нему паралахэнтити передав ему спрайт с изображением
scene.setBackground(background); //ставим бэкграунд
}

Вот и всё в принципе, ничего сложного.

 

Проявляйте вашу любовь, подписывайтесь на RSS, буду рад вашим подпискам! :]



А надо ли?
2013-06-30 01:48 rem1x

Друзья мои!

Вот пока переводил уроки по AndEngine, как вы можете видеть внизу, возник такой вопрос: А НУЖНО ЛИ ЭТО КОМУ ТО?

Просто что то даже просмотров мало этих постов, комментариев нет, складывается ощущение что никому не нужно. Так ли это?

Если нужно, тыкните по кнопочке «ДАЛЕЕ» и по количеству просмотров этой записи, я определю нужны или нет. Если просмотров будет много — буду дальше переводить, если мало — заброшу перевод и буду изучать для себя, что учитывая пока мой устойчивый интерес к AndEngine, приведет к снижению частоты постов в блоге. Или голосуйте сбоку, там тоже есть голосовалка. Или отпишитесь в комментах, надо, нет?

Объясняю почему нужно обязательно нажать кнопочку «Далее». WordPress не считает просмотры поста, если не тыкать кнопку «Далее», спасибо за понимание.


logo А надо ли?

Если Вы читаете это, значит вам мои переводы нужны и вы только что внесли свой вклад в ответе на вышепоставленный вопрос, спасибо icon smile А надо ли? Вот вам няшка ^^

images55 А надо ли?



В избранное