Иконка LibGDX

Обзор игрового движка LibGDX

Сегодня мы рассмотрим движок LibGDX. Движок кроссплатформенный, быстрый, и достаточно популярный. Исходные коды движка открыты, сам движок доступен на github. Это очень хорошо. Когда движок раньше был сырой, автор статьи копался в исходниках, и фиксил баги под Андроид-версию.

Нажмите, чтобы перейти на официальный сайт движка.

Официальное видео

Сам движок написан на Java. Ну и писать игры на нем предлагается на Java. Хотя подходит любой язык, который можно запустить на Java-машине. Умельцы пишут на Groovy, Scala и Python. В сети можно найти примеры, как это сделать.

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

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

Некоторые особенности движка

  • Движок кросплатформенный. Работает на Windows, Linux, Mac OS X, Android. С некоторыми ограничениями заводится на iOS и HTML5.
  • Поддержка как 2D так и 3D.
  • Встроенная библиотека быстрой математики. Быстро посчитать синус-косинус по таблицам не проблема для этого движка.
  • Для 2D — поддержка графа сцены из трансформациями (повороты, масштабирование и т.д.). Очень удобная штука для всяких эффектов.
  • Поддержка большого количества сторонних инструментов. Движок работает с редактором карт Tiled, поддерживает физический движок box2d, умеет рисовать .ttf шрифты и не только.
  • Встроенная библиотека UI

Архитектура проекта на LibGDX

LibGDX — кросплатформенный движок. Но все же есть определенные различия, когда вы пишете под Андроид, и когда вы пишете под Linux. Какой-то код будет общим, а какой-то специфическим для того же Android. Например, работа с сенсором, акселерометром и т.д. Поэтому у вас есть один главный проект (core). В нем расположен основной код игры. А для каждой платформы создается отдельный проект. Например, вы делаете игру, которая называется coolgame. Ваша игра будет под ПК и для Андроид. Тогда у вас будут три проекта — coolgame-core, coolgame-desktop, coolgame-android. Если ваша игра не использует чего-то особенного на конкретной платформе (акселерометр, камера и т.д.), то вы не будете дописывать код в android и desktop частях. А если же вам нужна работа с специфичной аппаратной начинкой, то вы напишете этот код в проекте для нужной платформы.

В официальной вики, например, таким образом подключается AdMob реклама. А по факту вы можете таким образом доступиться до любой аппаратно-зависимой части нужной платформы.

Граф сцены в LibGDX

Граф сцены — не новое понятие для игровых движков. Вкратце — игровой экран представляется как определенная сцена (Scene), где располагаются и взаимодействуют актеры (Actor). Актерами можно управлять, меняя их положение, масштаб и т.д. Причем некоторые актеры могут содержать в себе других актеров — так называемые актеры-группы или родительськие актеры. И когда мы меняем положение группы-родителя, меняются и положения всех актеров-детей.

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

LibGDX имеет полноценную поддержку такого дела. Простой актер называется Actor. Группа называется Group. Вы можете комбинировать актеров как угодно, вкладывать их друг в друга. Поскольку движок хорошо оптимизирован, он будет пересчитывать координаты и делать прочие ресурсоемкие операции лишь тогда, когда нужно, а не каждый кадр. Это тоже приятно.

Встроенная библиотека UI

UI — это боль для игр. Часто в движках или нет UI библиотеки вообще, или же она убогая. Вспомним хотя бы Unity3D. Первые версии, до 4.6, имели убогий UI, которым никто не пользовался для серьезных проектов. Использовали сторонние библиотеки, такие как NGui.

В LibGDX в этом плане все хорошо. Есть довольно богатый набор встроенных UI-компонентов. Это кнопки, текстовые метки, просто картинки, диалоговые окошки, панели прокрутки, деревья, чекбоксы, списки и прочее. Все элементы можно настроить как из кода (например, выбрать шрифт, фоновые изображения, и т.д.), так и стилизировать с помощью json-файлов. Для тех, кто знаком с веб-разработкой, это напомнит ситуацию с CSS. Для тех, кто не в теме — в CSS-файлах настраивается внешний вид веб-страницы.

Так вот, в LibGDX вы создаете json-стили для элементов, где описываете внешний вид каждого элемента. Потом, в коде, вы применяете этот json-стиль к элементу. Опять-таки, это удобно для больших проектов. Отделение данных от кода, как-никак.

Поддержка расширений

Какой бы движок не был хороший, всегда есть моменты, когда не хватает базовой функциональности. Нужны расширения. LibGDX предлагает несколько расширений «из коробки». Это работа с физикой (Box2D), работа из .ttf шрифтами, поддержка компонентной системы (ECS) Ashley. Сторонние же разработчики сделали расширения для удобной работы из соцсетями (Facebook, Twitter), ненапряжной работы из системами внутриигровых покупок. Есть редактор UI — Overlap2D. Если поискать по GitHub, можно найти много чего интересного.

Что нужно для начала работы из движком?

Самое первое — вам нужна установленная JDK (Java-машина и Java-компилятор) не ниже версии 1.7. Углубляться в детали, как ее ставить, я не буду. Лишь скажу, что проще всего ее найти и скачать бесплатно на сайте Oracle.

Дальше из официального сайта вам нужно скачать генератор проектов. Это java-приложение в .jar-формате. Запустите его. Вам зададут несколько вопросов. Куда генерировать проект, какие расширения использовать. Заполнив эти поля, нажмите кнопку «Сгенерировать проект», и вы получите в указанной вами папке набор Gradle-проектов. Дальше вы можете открыть любимую вами среду разработки (Eclipse, Android Studio или что-то другое, что поддерживает Gradle), импортировать проект, и работать дальше с ним как с обычным Java-проектом.

Если возникнут какие-либо трудности или вопросы, посмотрите официальную вики и примеры кода из нее. Там все довольно доступно описано. Если у вас все же остались вопросы — отписывайте нам в комментариях

 

 

 

 

 

 

Оставить комментарий

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