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

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

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

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

  • Поддерживает интересующие меня платформы: Android и десктоп. С помощью костылей можно делать iOS (с помощью RoboVM) и WebGL.
  • Основной язык разработки - Java. В общем-то, работает любой JVM язык. К примеру, я быстро пересел на Kotlin.
  • Хорошая поддержка 2d. И хорошая библиотека для UI.
  • Полный контроль на кодом.

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

  • UI разрабатывается быстрее и проще, чем на Unity, но шкурку для него сделать сложнее. Я несколько дней мучился, пока не нашел статью от Pimentoso, где они советуют делать только минимально необходимое. Может это просто я такой тормоз, но мне помогло.
  • Местами очень странная документация. Одни куски API документированы прекрасно, другие - никак. Хорошо, что у библиотеки большое коммьюнити и найти ответы на большую часть вопросов не проблема.
  • У библиотеки нет встроенного редактора сцен. Нужно пользоваться внешними инструментами вроде Overlap2d.
  • На форумах часто жалуются, что с обновлениями библиотеки может отвалиться то, что работало. Но это же пишут про Unity и UE, так что можно этот пункт игнорировать.

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



c