Мой первый проект на LibGDX вышел на завершающую стадию. Ещё осталось сделать достаточно много для подготовки к запуску, но я уже могу сравнить эту библиотеку с Unity и Unreal Engine.

Пару месяцев назад, когда я выбирал, на чём делать маленькую 2D‑игру, я очень долго колебался между Unity и Unreal Engine. С Unity у меня уже был опыт работы: пару проектов я на нём завершил. Основная проблема — отсутствие нормальной поддержки 2D. Она есть, но какая‑то несовершенная. Когда‑нибудь я обязательно про это напишу, но сегодня оставлю этот тезис без доказательств.

Unreal Engine я попробовал, но он жутко тормозил и буквально переводил электричество в тепло на моём не самом слабом MacBook Pro. А работа на моём домашнем ноутбуке и вовсе превращалась в муку. Да и проблема та же, что и с Unity: слабая поддержка 2D.

Тогда мне на глаза попалась библиотека LibGDX:

  • поддерживает интересующие меня платформы: Android и десктоп; с помощью костылей можно делать iOS (с помощью RoboVM) и WebGL;
  • основной язык разработки — Java; в общем‑то, работает любой JVM‑язык — к примеру, я быстро пересел на Kotlin;
  • хорошая поддержка 2D и хорошая библиотека для UI;
  • полный контроль над кодом.

Одни плюсы и никаких минусов… Пока не начнёшь работать. В ходе работы выяснилось:

  • UI разрабатывается быстрее и проще, чем на Unity, но «шкурку» для него сделать сложнее. Я несколько дней мучился, пока не нашёл статью от Pimentoso, где советуют делать только минимально необходимое. Может, это просто я такой тормоз, но мне помогло;
  • местами очень странная документация: одни куски API документированы прекрасно, другие — никак. Хорошо, что у библиотеки большое коммьюнити и найти ответы на большую часть вопросов не проблема;
  • у библиотеки нет встроенного редактора сцен — нужно пользоваться внешними инструментами вроде Overlap2D;
  • на форумах часто жалуются, что с обновлениями библиотеки может перестать работать то, что функционировало раньше. Но то же пишут про Unity и Unreal Engine, так что можно этот пункт игнорировать.

P. S. Отвечаю на вопрос, почему не Kivy и не PyGame. При поиске они практически не появлялись в результатах. Коммьюнити у этих библиотек более чем скромное по сравнению с LibGDX. PyGame вообще выглядит заброшенным.