Сравнение SDL2 и Cocos2d
Для разработки используется кросплатформенный движок Cocos2d.
Так совпало что этой осенью я тоже занялся изучением компиляции программ под Андроид.
В частности я пробовал скомпилировать Qt4 и SDL2 для своего телефона.
С SDL все прошло более-менее, а вот Qt в этом плане еще очень сырая, никакой поддержки нет, компиляция Qt, видимо, для гиков еще более усердных чем я.
Собственно мне хотелось бы пообщаться с программистом, который работает сейчас на Cocos2d. Мне интересно сравнить производительность SDL2 и Cocos2d.
Wins Vega Wins
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

На деле SDL не движок а API, сравнение их не совсем полит коректно. В целом мое мнение - Cocos2d хорош для простеньких игр, в то время как SDL лучше для сложных игр (к примеру для которых надо делать частичную прорисовку), хотя с кривыми руками никакой движок не спасет... Так же тут все зависит от платформы, в целом кокос по синтетическим тестам показал далеко не лучшие показатели хотя и обошел многие другие мобильные кроссплатформеные свободные аналоги (хотя то что та же XNA и даже LibGDX обогнали его с большим отрывом, говорит о нем явно не лучшим образом). Показательным является и падение быстродействия почти на 1\4 у MonoGames по сравнению с XNA. MonoGames - по сути является высокоуровневой имитацией XNA, примерно тоже самое твориться и коксом:
Конечно куда интереснее результаты на андройдах и айфонах, но думаю там примерно таже тенденция как на убунте. Так что в синтетических тестах SDL наверняка обойдет кокс с большим отрывом (если нет, то разработчики SDL полные лошары xD). Главные плюсы кокса - активное развитие, большое сообщество, поддержка большого числа платформ, лицензия из серии "делайте что хотите с ним". Но честно говоря я разочаровался в коксе - поддержка винды через одно место, не вставили даже Sleep(1), что бы не грузить CPU, для звука/музыки не работает управление громкости - пришлось даже такие вещи допиливать\переписывать. Так что в целом я склоняюсь к переходу в следующем проекте на SDL.
Если интересно то давайте сравним, только нужно определиться с алгоритмом для сравнения...
PS А вообще меня сейчас куда больше интересует производительность .Net на андройде, все таки скорость и удобство работы мне кажутся куда важнее....
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
:lol: :woohoo: я даже не обратил внимания сначала... Кто у нас тут такие слухи распускает????AnnTenna пишет: и само сообщение тоже не совсем тактично сформулировано, так что подправила.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
:blush: Нууу... :pinch: да, немного рассказывала, но каждый понимает по-своему :laugh: :side: я не так выражалась :silly: Да и кстати уже шло обсуждение движка и в блоге тоже немножкоя даже не обратил внимания сначала... Кто у нас тут такие слухи распускает????
Но явно правильнее было бы выражаться не "новый проект Анны", а новый проект Локатора, а то складывается впечатление, что это какая-то моя личная игра :pinch:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если делать .Net кросплатформенное приложение, надо использовать Unity3D.
Это пожалуй лучший инструмент сейчас для разработки кросплатформенных игр.
Я с ним не много работал.
Unity3D
+IDE
+не надо париться с компиляцией под платформы. просто ставим галочку, остальное за нас делает IDE
+большое сообщество
+Активно разрабатывается большой командой
-Коммерческий
-Студия частенько падает (терпимо)
Что касается просто набора кода для доступа к графике, звуку, ввода.
Поработав с этим делом я выделил для себя следующие критерии сравнения.
!) Сколько придется париться прежде чем настроить проект (скажем в Visual Studio 2012) чтобы он нормально компилировался под нужную платформу
2) JavaActivity Сколько багов нужно отследить и устранить при работе на андроид. (SDL например у меня так и крашиться если во время работы приложения включить блокировку экрана / либо сменить ориентацию экрана)
3) Сколько нужно допиливать самому.
Вот что могу сказать про SDL
-По первому пункту:
Шаблонный проект открылся Visual Studio и нормально скомпилировался со всеми расширениями с помощью Tegra Android
-Второй
Код надо писать очень аккуратно. Любая не объявленная переменная или неочищенная память или динамический указатель могут привести к падению приложения.
Ряд глюков так и остался (приложение зависает при смене ориентации экрана или включения блокировки экрана. Вероятно это связано с работой JavaActivity, который управляет главным потоком приложения и общается с андроидом.
-Третий
Очень сыро все. Нужно закодить самому:
*Отрисовка Анимации
*Вывод динамического текста (оптимизация отсутствует)
С остальным проблем вроде нет. Звук/Сеть должны работать.
Для выполнения программ по универу я закодил систему интерфейса на SDL. (Формочки/Кнопочки)
Вывод:
Для больших и масштабных кросплатформенных приложений подойдет Unity3D. (С#/Java)
Но надо учитывать что и работы с ними будет больше. (Найти необходимые пакеты для юнити, разобраться как с ними работать)
SDL (С++) годится для быстрой компиляции маленького приложения. Основной проблемой однако является отсутствие каких-либо классов/библиотек для организации работы с воспроизведением звука/анимацией/интерфейса и так далее. Практически все нужно писать на С/С++ самому. Ряд багов при работе на Андроиде я так и не профиксил.
Wins Vega Wins
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что касается пунктов:
1) Настройка проекта - дело разовое, на общем фоне сил и времени затраченных на разработку это мелочь.
2) Не занимался, но опять же один раз разобраться и все.
3) Естественно, как я уже сказал SDL это не движок, а посути кроссплатформеный врапер OpenGL\DirectX и иже с ними. Если нужен движок используйте кокс, там навалом готовых средств и по работе с текстом и с спрайтами и анимацией и тд и тп.
Что касается выводов, то они у Вас совсем не верные, SDL как раз хорош для работы с сложными проектами, так как там стандартные возможности движков общего назначения типа кокса сильно мешаются. К примеру рендинг большой карты с большой плотностью тайлов ни один движок общего назначения не потянет - там не оптимизирован рендинг под это дело, тут проще написать самому к примеру на том же SDL, чем переписывать ядро чужого движка. А вот для простых проектов движки общего назначения как раз отлично подходят.
Другое дело что написание кода на С\С++ требует куда больше сил и времени на отладку и багофиксы (про возню с ошибками линковки я уж молчу - это настоящий кошмар). Использование C# сильно ускоряет и упрощает работу, позволяя по сути целиком сосредоточиться на разработки логики приложения, да и работать в нем одно удовольствие. Так что для следующего проекта я активно ищу способы перейти на C#. Пока остановился на связке dot42 + SDL. dot42 - C# для Dalvik Runtime, главным его преимуществом является, то что он пропускает компиляцию в промежуточный IL код, сразу компилируя Dex код, тем самым убирая лишнии задержки и потери проксирования и маршаллинга вызовов между средами CLR и Dalvik. Честно говоря лично сам пока не тестировал, но согласитесь звучит крайне заманчиво - .Net приложение посути будет на андройде плавать как рыба в воде безо всяких там сред Mono. Использование SDL как раз позволит абстрагироваться от платформо зависимого кода по работе с аппаратной частью. Так что данная связка будет работать в Windows, Linux, MacOs, Android, Windows Phone 8+, последний имеет родную поддержку C#. Конечно dot42 - тоже коммерческий продукт, но покупка пожизненной лицензии за 399$ того стоит. За бортом к сожалению остается iOs, ну да и фиг с ним, в принципе при большом желании можно скомпилировать под iOs через Xamarin, но имхо оно того не стоит....
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Собственно что мы хотим обсудить конкретно.
Мы ищем среду/способ разработки приложений под андроид.
Не совсем понял как SDL будет сочетаться с dot42.
Но если dot42 покажет высокую производительность конкретно на андроид, стоит к нему присмотреться.
Как я понял у нас выбор следующий
dot42 cocs2d SDL2
Wins Vega Wins
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
SDL - дллка, зацепить ее через C# не сложно, ну а дальше все что остается это лишь создать контекст устройства на хендле форточки и можно приступать ее юзать. По хорошему для андройда и винфона конечно надо будет избавиться от нее, но это лишь в самом конце если не будет хватать тяги у двигла. dot42 - это посути компилятор C# т.е. код под андройд компилируем в нем, а под остальные платформы в студии (ну он тоже цепляется к ней на самом деле так что вылезать из студии не придется, что вообщем то для меня большой плюс). Ну а дальше надо лишь писать C# код совместимый с компилятором dot42.
Что касается кокса, то лично я в нем разочаровался, но так как уже начал на нем писать - этот проект закончу. Но опять же тут все зависит от целей и задач у меня они немного специфичные
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Главная его проблема - экономическая неэффективность, мало того что он сам по себе стоит не мало, так еще компиляция под Android и/или iOs требуют сторонних библиотек Xamarian, лицензирование которых тоже стоит не мало. Дело еще усугубляется тем, что все они имеют очень дурную систему лицензирования - т.е. лицензия приобретается не на сам продукт а лишь на его использование в течении года. Доход от не больших игрушек даже не окупит затрат на оплату всего этого. Так что мое мнение - применение его не имеет никакого смысла до тех пор пока в основе разработки вашего проекта не будет лежать рабочий бизнес-план. Очевидно, что подобный подход не наш случай.
Можно пруф пожалуйста?
Wins Vega Wins
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


