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

  • На каких принципах будет построен игровой мир?
  • Можно ли обойтись без физического движка, самостоятельно создав простую симуляцию?
  • Кто и как будет жить в этом игровом мире и как всё это будет отображаться на экране?

И ещё необходимо подумать о дизайне. Будет ли в игре приветственный экран? Во что он будет переходить? Что игрок увидит на главном экране игры? Какие элементы будут доступны ему на основном игровом экране? Что произойдёт при нажатии кнопки пауза?  Какие параметры будут доступны в экране настроек? Как пользовательский интерфейс будет выглядеть на экранах с различным разрешением и соотношением сторон?

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

Допустим дизайн нашей игры можно считать созданным. Осталось всего
ничего — реализовать его в виде исполняемого приложения.
  Любая игра требует некоей базовой среды, позволяющей абстрагироваться от
низкоуровневого взаимодействия с операционной системой. Обычно эта среда
разбивается на несколько модулей.
    Управление окнами. Отвечает за создание окна и берет на себя такие вещи, как его
закрытие или приостановка/возобновление работы приложения.
    Ввод. Этот модуль связан с предыдущим и отвечает за отслеживание пользовательского ввода (касаний, клавиатурного ввода и движений акселерометра).
    Файловый ввод/вывод. Позволяет приложению получать ресурсы, расположенных на внешнем носителе.
    Графика. Пожалуй, наиболее сложная часть, если не считать собственно игру. Этот модуль ответственен за загрузку графики и прорисовку ее на экране.
    Звук. Загрузка и воспроизведение всего, что способно достичь наших ушей.
Игровой фреймворк. Соединяет в себе все вышеперечисленное и предлагает удобную основу для написания игр.
Каждый из этих модулей состоит из одного или нескольких интерфейсов, каждый из
которых должен иметь как минимум одну реализацию, использующую
семантику основообразующей платформы (например Android).

Libgdx (https://libgdx.badlogicgames.com) — открытый фреймворк
Марио Цихнера и его команды из BadLogicGames, основанный на Java и пригодный для
написания 2D- и 3D-игр. Работает на Windows, Linux, Mac OS X и, конечно же, на
Android без модификаций кода.  Последняя версия 1.9.10(от 19.07.2019 года)

Код можно загрузить с  https://github.com/libgdx/libgdx и использовать самостоятельно, но при наличии соответствующей квалификации. Хотя проще использовать стандартный установщик gdx-setup.jar с сайта https://libgdx.badlogicgames.com/download.html

 

 

После нажатия клавиши Generate.

 

Дальше открываем проект gradle в Android Studio и продолжаем разрабатывать приложение с использованием LibGDX.

При обновления gradle возможно появится ошибка в настройках. Надо подредактировать предложенный файл. Заменить classesDir на classesDirs и провести ресинхронизацию нажав try. 

Открываем проект и добавляем к android разработку desktop, чтобы тестировать приложение без использования эмуляторов.

 

После добавления desktop запускаем приложение и получаем тестовый экран.