libGDX: Введение

Начиная с libGDX работать, уже тогда подумал над написанием туторила по этой библиотеке. Когда начал освещать процесс написания игры, то вопросы посыпались на мыло и в твиттер по некоторым аспектам разработки. Так что, начнём. Список всех статей (да и какие-нибудь другие материалы) буду размещать на странице о libGDX. В новом уроке будет использоваться исходник предыдущего и что-то дописываться.

Сама страница проекта code.google.com/p/libgdx/. Так же можно посмотреться список игр разработанных на libgdx.

Для связи и для поиска материалов:

Forum: http://badlogicgames.com/forum IRC: irc.freenode.net, #libgdx

Подготовка к разработке

Предполагается, что окружение у вас уже настроено. Если нет, почитайте о настройке связки Eclipse+ADT+JDK+Android SDK. Качаем с отсюда libgdx-nightly-latest.zip, распаковываем куда-нибудь. Создаём новый проект.

  1. Eclipse: File -> New -> Project -> Android Application Project. Имя проекта Libgdxtutorial. Package Name suvitruf.libgdxtutorial. SDK лучше выбирать поменьше. Я лично выбираю Android 2.1 с API 7.
  2. Дальше можно оставить всё по умолчанию. Тогда у вас главным Activity будет MainActivity.
  3. Если ещё нету в проекте папки libs, создайте её (правой кнопкой мыши по проекту -> New -> Folder.
  4. Открывайте папку, куда вы распаковали архив libgdx-nightly-latest.zip. Скопируйте файлы gdx.jar, gdx-backend-android.jar и папки armeabi-v7a, armeabi в нашу папку libs. Можно просто перетащить их в дерево проекта, Eclipse предложить их скопировать, жмите ОК.
  5. Дерево проекта обновится, если нет, то нажмите правую кнопку мыши -> Refresh. Затем жмите по проекту ПКМ и выбирайте Properties -> Java Build Path -> Libraries -> Add JARs, выбирайте gdx-backend-android.jar и gdx.jar.
  6. Java Build Path - Libraries - Add JARs
  7. В Properties -> Java Build Path -> Order and Export выберите эти два файла.
  8. Java Build Path - Libraries - Order and Export
  9. Добавьте новый класс, назовите MyGame. Замените содержание файла на:
  10. 01.package suvitruf.libgdxtutorial;
    02.import com.badlogic.gdx.Game;
    03.public class MyGame extends   Game  {
    04.     
    05.  @Override
    06.  public void create() {
    07. 
    08.  }
    09.}
  11. Откройте MainActivity. Заменяем весь код в файле на:
  12. 01.package suvitruf.libgdxtutorial;
    02.import com.badlogic.gdx.backends.android.AndroidApplication;
    03.import android.os.Bundle;
    04. 
    05.public class MainActivity extends AndroidApplication {
    06.     
    07.    /** Called when the activity is first created. */
    08.    @Override
    09.    public void onCreate(Bundle savedInstanceState) {
    10.        super.onCreate(savedInstanceState);
    11.        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    12.        config.useAccelerometer = false;
    13.    config.useCompass = false;
    14.    config.useWakelock = true;
    15.    config.useGL20 = true;
    16.     
    17.    initialize(new MyGame(), config);  
    18.    }
    19.          
    20.}
  13. Откройте файл манифеста и добавьте разрешение:
  14. 1.<uses-permission android:name="android.permission.WAKE_LOCK"/>

    Если не добавите, то получите ошибку java.lang.RuntimeException: Unable to resume activity. Это разрешение даёт доступ к PowerManager и ошибки не будет.

  15. Запускайте как Android Application. На экране будет просто чёрный экран.

Собственно всё. Для введения хватит. Можете скачать исходники урока Libgdxtutorial-introduction.rar. В следующей статье расскажу о жизненном цикле игры.

libGDX: Введение: 38 комментариев

  1. Уведомление: libGDX: Часть 1. Жизненный цикл игры | Suvitruf's Blog

  2. Уведомление: libGDX: Часть 2. Архитектура игры | Suvitruf's Blog

  3. Ali

    Создание игр будет для андроид, или для ПК(в смысле под винду линукс и т.п)

      1. Anon

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

      1. Тимофей

        я сам ошибся, если делать все как в видео то все отлично работает в Intellij Idea.

  4. avex

    Привет! Спасибо за уроки. У меня появились ошибки, хотя делаю все точно по уроку.
    Подчеркивает в MyGame — suvitruf.libgdxtutorial, пишет — The declared package «suvitruf.libgdxtutorial» does not match the expected package «»
    А MainActivity ругает AndroidApplicationConfiguration — пишет AndroidApplicationConfiguration cannot be resolved to a type. Здесь же в 17 строке подчеркивает MyGame — MyGame cannot be resolved to a type.
    Помогите разобраться. Не очень приятно — все ведь по уроку, а тут бьют по рукам.

        1. Suvitruf Автор записи

          Мой код работает на старой версии либы. А они в каждом новом билде что-нибудь всегда меняют.

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

    1. Suvitruf Автор записи

      Вообще, вроде можно и без AndroidApplicationConfiguration запустить:
      initialize(new MyGame(), false);

      А другая ошибка…У вас имя пакета и Application ID в манифесте какие?

      1. avex

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

  5. Сергей

    С текущей версией libgdx всё нормально собирается по инструкции, но на телефоне в момент запуска крешится.
    На сайте libgdx есть видео по созданию проектов. Следуйте ему и всё получится. Вот ссылка:
    http://libgdx.badlogicgames.com/documentation.html

    Большое спасибо за руководство! На днях буду изучать.

    1. Сергей

      И ещё такой момент. Когда создал проекты, как показано на видео, во время импорта их в Eclipse у меня были ошибки что-то вроде «… android-19».
      Для решения нужно в свойствах андроид-проекта (ПКМ->Properties) выбрать скаченную ранее версию Android SDK (выберите Android и там поставьте галочку возле имеющегося SDK).

  6. Ash

    Интересно вариант генерации проекта самим libgdx не рассмотрен из-за того что тогда его еще не было? если да, то будет ли актуальным дальнейшие статьи из этого цикла?

  7. Алекс

    Помогите плз, решить пробему —

    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    AndroidApplicationConfiguration cannot be resolved to a type

    все делал по инструкции.
    Хелп, плз.

  8. Жека

    Все сделал как вы описали! Eclips ругается на config.useGL20 = true; говорит что useGL20 вообще не существует(

    1. Suvitruf Автор записи

      А версия либы какая? Я уже писал, что в новых версиях они могли много чего поменять =/

      1. Жека

        да, они видимо полностью автоматизировали выбор GL без config.useGL20 = true; работает) но только на реальном устройстве, на эмуляторе завершает работу приложения, версия android 2.3.3

        1. Suvitruf Автор записи

          А с какой ошибкой? На 2.3 устройствах многие экстеншены из OpenGL 2.0 не работают. Из-за этого может падать.
          Многие старые устройства 2.0 вообще не поддерживают)

          1. Жека

            Куча всего, вот Caused by: java.lang.RuntimeException: Libgdx requires OpenGL ES 2.0 одна из всех, все я думаю не стоит в комментарии вставлять!

          2. Жека

            у вас есть более ранние версия Libgdx, с которыми у вас не возникали такие проблемы, если да оставите пожалуйста ссылку)

              1. Жека

                Спасибо, на старой версии все работает!)) работает и на эмуляторе!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *