Обзор libGDX модулей

Введение

libGDX включает в себя несколько модулей, которые предоставляют сервисы для каждой ступени в архитектуре игры.

  • Ввод – предоставляет унифицированную модель ввода и обработчик для всех платформ. Поддерживает клавиатуру, сенсорный экран и где доступно акселерометр и мышь.
  • Графика – позволяет отображать изображения на экране, используя аппаратную реализацию OpenGL ES.
  • Файлы – предоставляет удобные методы для операций чтения и записи данных, посредством абстрактного файлового доступа на всех платформах.
  • Аудио – облегчает запись и воспроизведение звука на всех платформах.
  • Сеть – предоставляет методы для выполнения сетевых операций, таких как HTTP GET/POST запросы, и коммуникации между TCP сокетами сервера и клиента.

Следующая диаграмма показывает модули в архитектуре простой libGDX игры:

Диаграмма libGDX модулей

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

Модули

Ввод

Модуль ввода в libGDX дает возможность делать опрос различных состояний ввода на каждой платформе. Модуль позволяет делать опрос состояния каждой клавиши, сенсорного экрана и акселерометра. На desktop сенсорный экран заменяется мышью, в то время как акселерометр не доступен.

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

Следующий фрагмент кода получает текущие координаты прикосновения или курсора мыши, если было соответствующее событие.

if (Gdx.input.isTouched()) {
    System.out.println("Input occurred at x=" + Gdx.input.getX() + ", y=" + Gdx.input.getY());
}

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

Графика

Модуль графики в libGDX абстрагирует взаимодействие с графическим процессором и предоставляет удобные методы для получения обертку экземпляра OpenGL ES. Модуль заботится обо всем коде, необходимом для получения OpenGL экземпляра и обработки всех реализаций, предоставляемых производителями.

В зависимости от используемого оборудования, OpenGL ES обертки могут быть доступны или нет.

Модуль графики также предоставляет методы для генерации изображений и текстур.

Например, следующий код получает OpenGL API 1.0 экземпляр:

GL10 gl = Gdx.graphics.getGL10();

Метод getGL10() вернет экземпляр, который можно использовать для рисования на экране. В случае если аппаратная конфигурация не поддерживает OpenGL ES v1.0, то метод возвратит ноль.

Следующий фрагмент очищает экран и закрашивает его красным цветом.

gl.glClearColor(0.1f, 0.0f, 0.0f, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

Метод всегда вызывает конкретную реализацию API (LWJGL, JOGL или Android), поэтому приложению не нужно знать о каких либо особенностях, и такие методы будут работать на всех поддерживающихся платформах.

Поддерживаются следующие версии OpenGL API:

Чтобы узнать больше о модуле графики, смотрите документацию его модуля libGDX фреймворка.

Файлы

Модуль файлов в libGDX предоставляет единый доступ к файлам, независимо от платформы. Он делает чтение и запись файлов легким. Запись файлов имеет некоторые ограничения, связанные с безопасностью платформы.

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

Следующий пример загружает текстуру из файла, расположенного в $APP_DIR/assets/textures директории.

Texture myTexture = new Texture(Gdx.files.internal(“assets/texture/brick.png”));

Модуль файлов представляет мощный абстрактный слой, так он работает на Windows, Linux, Mac OS и Android.

Аудио

Модуль аудио в libGDX делает загрузку и воспроизведение аудио файлов предельно простыми. Так же дает возможность прямого доступа к звуковому оборудованию.

Он обрабатывает два типа звуковых файлов, музыку и звуки. Поддерживаются WAV, MP3 и OGG форматы.

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

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

Следующий фрагмент кода воспроизводит звуковой файл myMusicFile.mp3 с диска, в половину максимальной громкости.

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);