LINUX.ORG.RU

Android выбор движка/библиотеки для игр

 , , , ,


1

2

Добрый день. Решено написать хрен знает какую по счету игру-платформер для андроид. Определяюсь с выбором основной библиотеки/движка. Критерии: язык разработки c++, ну и поменьше геморроя в процессе сборки. Собственно пробовал пока только Sfml и Cocos2d-x. Sfml привлекает тем, что он достаточно минималистичен, но при этом сборка под ведроид прошла не без нюансов(пришлось брать предпоследнюю версию андроид ndk, т.к. на последней были проблемы, кроме того на примитивной программе-примере из состава исходников мой андроид телефон как-то уж очень тормозил, после того, как программа осталксь в фоне). Cocos2d-x напротив монср еще тот, хренова туча библиотек в комплекте, этим и отталкивает, но тем не менее сборка почти без проблем прошла и запуск на ведре без ошибок. Так вот, товарищи, может пг вашему еще что лучше взять? Тот же SDL вроде поддерживает андроид, но я не пробовал. Вообще мне больше нравится минималистичный подход, когда берешь одну библиотеку для одного, потом при необходимости берешь еще и т.д. Но cocos все таки понравился, три команды и готово. Короче говоря, посоветуйте пожалуйста, как бы вы делали.

★★★★★

По моему SDL достаточно минималистичен. Почему не он? ЗЫ: Поддерживает. Не ну если надо совсем мини-мини, то OpenGL + свой движок под игру.

chuppa ()

Тот же SDL вроде поддерживает андроид, но я не пробовал.

Я пробовал. Разных нюансов там вагон и маленькая тележка, как и в случае с SFML.

Но cocos все таки понравился, три команды и готово. Короче говоря, посоветуйте пожалуйста, как бы вы делали.

Выбрал бы Cocos — большое комьюнити, удобный деплой и библиотека давно уже зарекомендовала себя в играх. К тому же более адекватная кросс-платформа, в отличие от того же SDL2.

EXL ★★★★★ ()

Критерии: язык разработки c++

Я проглядел критерий, но думаю ты можешь попробовать love2d, хоть там и lua. Сабж мне очень понравился, по началу входишь легко, lua очень удобна, редактор тоже без проблем можно настроить, если взять atom. Правда, чем ты дальше, тем сложней, примеры в интернетах есть, но не все конечно будут применимы к твоему проекту, но возможно ты разберешься. Особенно учитывая, что платформеры и астеройды сплошные все в примерах делают.
Хотя если ты собираешься продавать, то наверно все-равно unity.
А еще есть Buildbox, который стоит прилично, но если верить тому что про него говорят, то можно вообще делать игры, не слишком сложней чем в Inkscape фигуры расставлять.

anonymous_sama ★★★★★ ()

Unity 5
Лучший выбор для разработчика, позволяет создавать игры как 2D, так и 3D.

Deathstalker ★★★★★ ()

Android выбор движка/библиотеки для игр

пиши свой обязательно @ ни в коем случае не пиши

slackwarrior ★★★★★ ()
Ответ на: комментарий от EXL

К тому же более адекватная кросс-платформа, в отличие от того же SDL2.

В-на андроиде монопенисуально — один фиг за картинкаме в жабку ходить, через SDL или так :)

slackwarrior ★★★★★ ()
Ответ на: комментарий от chuppa

«свой движок» — это обычно тупо цикл с кашкой из gl-колов внутри, который как всегда «вот-вот» начнет уметь что-то больше, чем вертеть кубик :)

slackwarrior ★★★★★ ()

И чуть не забыл Godot, редактор продвинутый, но сложно с ним разобраться. Хотя люди, кто смог разобраться, говорят, что для 2d лучше чем коммерческие решения даже. Но примеров не много, и там долго читать надо документацию, и после этого еще и не ясно сможешь ли ты, что-то сделать. Там Python, встроенный редактор не умеет в «автоидентацию», но есть возможность тормозные куски писать на других языках.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от slackwarrior

В-на андроиде монопенисуально

В Android — да. А вот когда ТС захочет сделать версию под iOS, то тут благодаря использованию Cocos2d-x уже будет очевидное преимущество.

EXL ★★★★★ ()
Ответ на: комментарий от anonymous_sama

В годоте не питон, а свое питонообразное убогое поделие. Из «других языков» из коробки там только кресты (с пересборкой редактора), но для 2Д действительно годная штука.

anonymous ()

А кто-нибудь пробовал unreal engine?

rumgot ★★★★★ ()

Вообще мне больше нравится минималистичный подход,

Тогда берете gles2 и пишете рендерер, с абстракцией. Дальше берете любой проигрыватель сцен / анимаций, например spine.
Дальше берете дизайнера, художника. И можно начинать писать игру.

andreyu ★★★★★ ()
Ответ на: комментарий от Deathstalker

Лучший выбор для разработчика, позволяет создавать игры как 2D, так и 3D.

По версии маркетологов Unity.

andreyu ★★★★★ ()
Ответ на: комментарий от slackwarrior

В-на андроиде монопенисуально — один фиг за картинкаме в жабку ходить

За какими картинками и зачем ходить в яву?

andreyu ★★★★★ ()

миллиарды китайцев выбирают кокос, труъ парни делают в годот

Thero ★★★★★ ()
Ответ на: комментарий от Deathstalker

очень толстые бинари у юньки для простых платформеров выходят.. очень.

Thero ★★★★★ ()

кокос маляха устарел по-моему, но если вы игру из 2000 делаете то как-раз. я бы взял libgdx, кресты фанатизм

anonymous ()
Ответ на: комментарий от peregrine

Я использовал SDL2 в качестве прослойки для OpenGL|ES в нескольких игрушек-портах. Там были довольно странные баги с инициализацией GL-контекста. Под эмулятором, к примеру, вообще был чёрный экран. Выкидывал SDL2, переписывал на нативный OpenGL|ES — всё работало. Кроме того, на старых Android'ах контекст не разворачивался на весь экран. Ещё были траблы с выводом звука (треск) WAV, пришлось задействовать SDL_mixer, который нужно было ещё правильно сконфигурировать и собрать. Помимо этого, помню довольно странные баги в Android-специфичных функциях, вроде доступа к assets'ам. Кроме каких-то странных пропусков файлов, доступ к ним был уж очень медленный. На устройствах, работающих под Tegra 2, SDL2 почему-то вообще не работал, эта проблема так и осталась нерешённой. Потом были проблемы с физической клавиатурой. В SDL2 2.0.3 тот же D-PAD не работал вообще, в SDL2 2.0.4 он внезапно стал работать, в SDL2 2.0.5 он начал определяться как ещё один подключенный джойстик. Иногда приходилось залезать в код самой SDL2 и жутко патчить её подпорками и костылями. Это ещё то, что я так, вспомнил сразу навскидку. Там ещё куча всяких разных траблов была. На iOS с SDL2 в целом ситуация была по-лучше, но тоже приключений хватало.

В общем, потом проект был переписан на Cocos2d-x, стало куда как проще.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

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

a1batross ★★★★★ ()
Ответ на: комментарий от gavlig

Интересно выглядит. Но последний коммит на github.com 23 Марта 2016, непонятно, заглох проект или нет.

rumgot ★★★★★ ()
Ответ на: комментарий от rumgot

Да, и правда, давно на него не смотрел, сейчас чёт выглядит глухо. Тогда «Охрана, отмена»!

gavlig ★★★ ()
Ответ на: комментарий от EXL

Я SDL на компах юзал (Linux, Windows), вроде не плохо, хотя честно говоря, со звуком не работал.

peregrine ★★★★★ ()
Ответ на: комментарий от andreyu

За любыми :) SDL-ные SDL_RWops под андроидом обращаются к андроидному AssetManager.

slackwarrior ★★★★★ ()
Ответ на: комментарий от slackwarrior

За любыми :) SDL-ные SDL_RWops под андроидом обращаются к андроидному AssetManager.

Кто заставляет использовать SDL вообще и SDL_RWops / AssetManager в частности?

andreyu ★★★★★ ()
Ответ на: комментарий от anonymous

Thero А полностью на плюсах в нем можно работать? Без ихнего встроенного языка?

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от andreyu

Кто заставляет

Кто вообще об этом говорит? Ты еще спроси, «кто заставляет пользоваться NDK»(crystax жы есть у тебя в профиле:)), «кто заставляет упаковывать в APK» или «кто заставляет кодить под андроид». «Почему день, почему солнца свет». Мяукала шаурма или гавкала... Или вопросы шибко умные задавала. А вопрос вообще не так стоял. А примерно «как живется в-на кроссплатформе, в частности под андроедом, например, с SDL», если уж пользоваться ей (а чо-чо, выбор-то большой). SDL_RWops тупо лежит в основе любых действий SDL с файлами. Под андроедом оно тупо обращается к ассет манагеру. Это просто факты :) Альтарнатива? Ну не обращается твоя либа к ассет манагеру... И вообще не знает про APK и платформные заморочки — и будешь ты руками распаковывать ассеты zlib/libzip и грузить ресурсы велосипедами, если «никакфсе» и заняться больше нечем: некоторые любят сами обмазываться несвежими JNI обертками на каждый чих (а кодить под конкретную платформу и совсем заигнорить ее особенности — это немношк хрень собачья: именно так некоторые пишут логи внутрь бандла под яблоподелями :)

Так что «кто заставляет» — речь вообще не об этом — а о том, как оно по факту устроено под андроедом и для пользователей NDK в частности. В SDL это прост. понимают и соответствуют. «Кто заставляет» — это вообще не по теме обсуждения :) Ну если хочется риторических ответов, то ок: политега андоедостроителей заставляет: они линукс обмазали жабкой, и сказали что это хорошо, а на все остальные языки положили с прибором (включая скалу, котлины и проч — у них спрашивали, они ответили «Не. Не в этой жызни»). Итого, поддержка NDK — по остаточному принципу. Или crystax в твоем профиле появилась от хорошей жизни и высокого качества хотя бы плюсовых рантаймов? :) Или для тебя секрет, что платиновые вопросы StackOverflow про загрузку ресурсов какбэ нативной проги под андроид из шаред либ или там при помощи тупо fopen/fread или откуда еще адресуются... куда? Правильно, в раздел хелпа с андроидоугодным жабным ассет манагером (не считая конечно извратов с инпутстримом и выгрузкой в tmp, которые убивают весь смысл зашивания в шаред либу, что не вызывает никаких превозмоганий при переносе между десктопными осями).

tl;dr «Потому что ассеты лежат в APK», даже если автор никаквсе и вшил в шаред либу... которую тоже положил в APK, а как же :) Велосипеды на zlib/libzip ничем не лучше, да и JNI никуда не денется. Так что хочешь распространять какбэ проги на плюсах через плей-маркет (и не зависеть от судьбы crystax, например :)) — пользуйся ихним жабным ассет манагером и не жужжи. Он суппортится, поддерживается и прямо рекомендуется к использоваанию андроедостроителями. Не хочешь? Грузи с sdcard или из другого нестандартного места... вшитыми в либнейм колами к ассет манагеру, с тем же маршаллингом туда-сюда, в жабу и обратно, либо трахайся с велосипедами, только про плей-маркет забудь: он ничо кроме APK с /res и /assets не знает (видел уникумов, которые советуют пользователям ставить ресурсы с их сайта adb push'ем, но дураков нету :)) — эрго, траханье с велосипедами смысла не имеет (ну разве из любви к сексу не с людьми противоположного пола... или вообще не с людьми:)) Crystax претендует на улучшеный NDK? Ну ок. Она будет все время бежать за этим поездом — по факту отсутствия рычагов влияния на развитие платформы :) и там ничо в этом плане к лучшему не изменится, потому что «жаба фёст», а NDK ни разу не в приоритете.

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)

С NDK всё не очень хорошо

С нативными приложениями для Android есть некоторые проблемы. Если есть желание поддерживать версии ОС ниже 5 (а таких устройств ещё очень много), то придется использовать для сборки SDK не новее 19, которое не умеет в некоторые фичи новых версий ОС.

Если в комплекте с NDK использовать более новые версии SDK, то получится нерабочий бинарник для старых версий ОС, который будет пытаться брать, например, rand в libc, которого там нет. И всё будет падать.

Есть вот такая штука UnifiedHeaders, но оно ещё неюзабельно.

leonid ()
Ответ на: комментарий от slackwarrior

Похоже вы перебрали со спиртным, либо взгляд ваш слишком узок и однобок.

Так что хочешь распространять какбэ проги на плюсах через плей-маркет (и не зависеть от судьбы crystax, например :)) — пользуйся ихним жабным ассет манагером и не жужжи.

Apk - это zip-файл, доступеный для чтения. Прочитать содержимое assets для получения offset на свой ресурс-пак не является хоть сколько-нибудь значимой проблемой. Ресурс-пак - это простейшая VFS, на которой лежат ресурсы приложения в формате, который понятен вашему движку. Приложение просто «грузит» ресурс-пак и получает из него нужный ресурс.

Если вы считаете, что это проблема - то да, вам остается родной ассет-менеджер и куча jni. Меня же для инициализации платформы под андроедом устраивает nativeactivity и небольшая обертка на яве (ради поддержки всякой социальщины и прочего новомодного говна). Если приложению достаточно гугло_плей_сервисов, то для них есть плюсовая реализация от гугеля (пусть внутри там и jni), а разработчику в этом случае не нужно знать о яве вообще.

И зачем вы постоянно упоминаете crystax? Я его никогда не использовал и не вижу ни единой причины использовать его в дальнейшем.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Похоже вы перебрали со спиртным, либо взгляд ваш слишком узок и однобок.

Похоже мсье неистово проецирует, или влез в дискуссию с вопросами, не относящимися к обсуждаемому предмету, либо относящимися весьма косвенно — а в ответ на банальности, начал отвечать банальностями :) Повторяю специально для... прояснения оставшихся неясностей в устройстве физики вещей: обсуждались не предпочтения, изначально, а «опыт использования» SDL. Дела в ней обстоят так-то и так-то. Причем тут вопросы «зачем использовать SDL»?

Apk - это zip-файл

«Веревка — вервие простое» (с) Кэп сегодня в ударе. Про костыли со zlib не, не слышал? «Простейшая VFS» эта — гольный велосипед, который не нужен. Никакая это не проблема — никто, кроме мсьей, не почешется просто, морочиться с ее написанием, когда уже есть ассет менеджер, «древний и принятый», как говорят «масоны шотландского обряду», которые пилят андроед ос. Вот и все :)

то для них есть плюсовая реализация от гугеля (пусть внутри там и jni)

и чем она отличается от обращений к asset managerу из кода SDL, кроме агностического подхода своих пользователей, которые пришли на праздник, когда «уже есть нативная реализация» и «можно не думать об обращениях к ассет менеджеру, нехай они там внутре»? :) Ничем. Алсо, «есть» — это хорошо что она теперь есть. А в SDL она была, когда андроедожабисты еще не почесались ее запилить, более того, на вопросы общественности отвечали «а пользуйтесь жабой». Были только жабные колы жабного АПИ. И фсьё. И «нейтив-активити» пилить приходилось самим. Более того... Недалеко ушло то время, свежо предание, когда андроедостроители выдавали как достижение сырую альфу плугина к идееАндроид Студии, в которой с поддержкой NDK было все не просто плохо, а очень плохо, гордо отрапортовав, что «плугин эклипса больше не поддерживается, зато у нас есть новая ливарюционная система сборки — мы называем ее грабли».

И зачем вы постоянно упоминаете crystax? Я его никогда не использовал и не вижу ни единой причины использовать его в дальнейшем.

«для них есть плюсовая реализация от гугеля» (с) NDK тоже «плюсовая реализация от гугеля». Ток ему вот мсьи пилят дроп-ин замену — этот самый crystax. Как, почему? А так-то, зачем оно у мсье в профиле, если мсье не использовал? Для пародий? Или... Зачем мсье задавал вопрос «зачем использовать SDL», если никто не обсуждал именно этот вопрос в дискуссии, в которую мсье изволил влезть с ценным мнением? Не было вопроса «зачем». Это для себя все решают сами, как-нибудь. (Valve зачем-то использует. Вот дураки...) Был вопрос «как оно в целом в кроссплатформе». Мсьи поделились опытами. А даже если его и задать так, как его иволил задать мсье, «зачем?»... Ну да — выкидывайте весь уже имеющийся кроссплатформенный код, потому что модные хипсторы с их новой Андроид Студией (которая лучше не стала) так решили (у них там наконец-то «есть нативная реализация» :) Алсо, если бы мсье читал чего они чаще всего пишут про свои «нативные реализации» — этих бы вопросов не задавал. NDK и поддержка нативного всего для них не приоритет, не был приоритетом и не будет, а так довесок «в пользу бедных», поэтому все их «нативные реализации» приходится принимать со щепоткой соли. Так уж сложилось исторически.

slackwarrior ★★★★★ ()

Раз Godot уже предлагали, предложу ещё Urho3D.

slapin ★★★★★ ()
Ответ на: комментарий от deep-purple

slapin Еще раз повторю свой вопрос, заданный выше. Можно ли в годоте писать полностью на плюсах, не используя их встроенный язык?

rumgot ★★★★★ ()
Ответ на: комментарий от slackwarrior

Про костыли со zlib не, не слышал?

Не слышал. Может их просто нет?

«Простейшая VFS» эта — гольный велосипед, который не нужен.

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

А в SDL она была, когда андроедожабисты

SDL не дружил с андроедом вообще. SDL2 ничего не знает про гугло_плей_сервисы. Видимо вы тоже не знаете что это такое.

И «нейтив-активити» пилить приходилось самим.

Приходилось. Только это было много лет назад. А этот топик датируется 2017 годом.

Андроид Студии, в которой с поддержкой NDK было все не просто плохо

Там и сейчас все плохо, только к чему вы это? Как 90% вашего сообщения вообще относится к Android выбор движка/библиотеки для игр (комментарий)

А так-то, зачем оно у мсье в профиле, если мсье не использовал?

Что у меня в профиле? Вы на выходных без остановки спиртное употребляете или это действие каких-то веществ?

andreyu ★★★★★ ()

Использовал LibGDX - могу только порекомендовать (iOS с вопросом). После него Cocos2d-x недокументированный треш какой-то. То, что в первом я сделал за пару дней, во втором я бы минимум неделю педалил. Не надо зацикливаться на языке.

UE4 - очень крутой, сложный и ресурсоемкий. Я бы сказал, одному годится разве что в учебных целях. И там всего два способа писать логику - на C++ и с помощью диаграмм.

Unity3D - де-факто стандарт для мобильных игр и очень популярен на десктоп. Лучшая кроссплатформенность, наибольшее количество модулей и готовый решений. Angry Birds, Boom Beach и все остальные крупнобюджетные мобильные игры делают на юнити. Но тоже, если хочется качественный результат, надо и знать дохрена. На одну нормальную игру приходится 100 мусорных, вот и складывается имидж движка, который не может хорошо работать.

Мелкие библиотеки - ну если любишь собирать велосипеды, зачем совета спрашивать?

anonymous ()
Ответ на: комментарий от slackwarrior

под виндой

У них есть неофициальные сборки редактора под линукс, которые вполне нормально работают.
Для новичка в гейм-деве Юнити очень хорошо подходит. А не-новичок не задавал бы таких вопросов.

ddos3 ()
Ответ на: комментарий от rumgot

На нём как раз на C++ все и пишут, на скриптах тоже можно, но интерес сообщества ниже, поэтому даже баги никто не ищет. Еденицы, пишущие на скриптах, могут быть разочарованы. Да и сообщество маленькое и элитарное. Главный разраб очень адекватный, поэтому если за засабмиченный баг сообщество начало клевать, нужно это игнорировать, если баг есть, его будут чинить (если это не что-то странное и трудновоспроизводимое). Может я сужу со своей колокольни системного разработчика, возможно в геймдевовских сообществах это нормально. С геймдевом до Godot'а и Urho3D не сталкивался.

slapin ★★★★★ ()
Последнее исправление: slapin (всего исправлений: 1)
Ответ на: комментарий от andreyu

Видимо вы считаете

Видимо вы продолжаете пронзать между строк и проецировать

Что у меня в профиле?

Избранные теги: 3d, android, android sdk, ansi c, blender, c++, crystax, development, firefox, gamedev, game development, game engine, gentoo, gimp, gles, gpu, gvim, i3, ion3, mozilla, ndk, notion, opengl, opengl es, spectrum, vi, vim, viml, vimrc, vimscript, wm, zx spectrum, графика, игры, программирование

Мсье в глаза долбится и продолжает обсуждать не тему обсуждения, переходя на личности без повода? А не ПНХ, ли, мсье?

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от andreyu

Как 90% вашего сообщения вообще относится к

Как ваш изначальный вопрос не по теме относится к теме? Проценты вам измерять не лень, а читать риторические банальности в ответ на ваши не связаные с темой вопросы лень.

А этот топик датируется 2017 годом.

2017-й год, к вашему сведенью, наступил 2 месяца назад. В 2015 все было плохо, год назад в лучшем случае терпимо, а щас прям все хорошо? Но вы продолжайте разговаривать сам с собой, замечая веско но мимо и не по теме, у вас хорошо получается. Упарываетесь тяжелыми наркотиками непрерывно, не только на выходных?

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 2)
Ответ на: комментарий от andreyu

SDL2 ничего не знает про гугло_плей_сервисы. Видимо вы тоже не знаете что это такое.

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

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.