Первые вречатления от LibGDX
Опубликовано 23 November 2015 в Java
Мой первый проект на 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 вообще выглядит заброшенным.
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev