Я работал некоторое время с Unity3d и нашел его 2D-часть с OnGUI() или GUITextures слишком неуклюжей. Кроме того, даже самая маленькая игра, выполненная на Unity3d, - это, по крайней мере, 10 МБ скачать, что слишком много для 2D-игры.
Итак, я сейчас ищу двигатель для 2D. Я пробовал Cocos2D, но это только iOS, и я бы не хотел переписывать все на другой язык для Android (так, например, порт Java Cocos2d для Android не является вариантом). Вместо этого я хочу написать код один раз и с наименьшими проблемами развернуть его на iOS, Android и, возможно, на Windows Phone 7. У меня есть как Mac, так и Windows.
Чтобы быть более подробным, вот мои требования к движку:
- должен быть кросс-платформенным
- должен быть эффективным
- должен быть С++, Java, С# или Objective C, так как мне с ними удобно, а НЕ Flash, Javascript, HTML5, поскольку я не являюсь веб-разработчиком.
- должен иметь большое сообщество, учебные пособия, дополнительные библиотеки, которые охватывают большинство вещей, которые у вас есть при разработке на iOS или Android напрямую (оплата через приложение, facebook и т.д.).
- окончательный пакет должен быть не слишком большим
- двигатель может быть бесплатным, но я также не прочь заплатить разумную цену.
Я нашел следующие движки:
- Marmalade (и механизм IwGame вверху из этого) - С++, нашел общие очень положительные отзывы о Marmalade, но не уверен в IwGame. EDIT (март 2013 г.). Похоже, что SDK Marmalade теперь включает Cocos2Dx и некоторую встроенную среду IDE, которая делает ее намного лучше (и стоит 150 долларов в год для инди-разработчика, которая со мной обойдется).
- Corona SDK - Lua (эффективность сомнительна), также требуется подключение к Интернету для компиляции кода.
- Cocos2d-x - С++, получил множество обзоров от разработчиков, в основном положительных, и многие считают это лучшим для 2D
- Код частица - Java + Eclipse, не найдены отзывы и комментарии
- Moai - Lua, coudn't найти отзывы/мнения о нем
- Monkey engine - кажется, слишком мало функций
- Haxenme - это Flash, я никогда не использовал его и не хочу
- используйте Unity3d, но с 2D-пакетами, такими как 2D Toolkit
- порты SDL в Android (также здесь) и iOS - не посмотрите на поддержку или текущую разработку (?)
- GLBasic - Базовый язык мне не нравится
- playN - похоже, рано развивается (?)
- Gamvas - HTML5 не похож на зрелый движок для меня.
- Ignifuga - Python также не выглядит зрелым.
- ORX - не уверен, что он все еще развивается (?)
- Construct 2 - напоминает GameMaker, может быть хорошо для быстрых прототипов, но определенно не для игр в отраслевом уровне.
- XNA, а затем портируйте игру, используя ExEn (понадобится Mono Touch в порт для iOS и Моно для Android to to to to Android to Android) - С#, и, вероятно, больше внимания уделяется людям из продуктов Microsoft, таких как xBox (я пришел с Android). Кроме того, эти инструменты Mono стоят всего $800 для небольших разработчиков.
- Impact - JavaScript использует HTML5. Я не очень люблю JavaScript (например, предпочтительный С# на Unity3d), также не уверен в эффективности, поскольку он работает в браузере (?)
- GameMaker - собственный язык сценариев GML, и я действительно помню это как инструмент для не-программистов. Действительно ли это превратилось в настоящий двигатель, я имею в виду серьезное развитие?
- AppGameKit - С++, но, похоже, все еще довольно новый. Нет отзывов об этом.
- используйте Cocos2D и Objective C для разработки только для iOS, а затем внедрите APK для Android с помощью Stella SDK, Кто-нибудь сделал это? Я уверен, что будут ограничения, и как насчет биллинга Google для приложений, AdMob и Facebook на Android?
- Moscrif - JavaScript, похоже, больше для бывших веб-разработчиков
- Starling - Flash 11, я не сильно во Flash
- ND2D - еще не 1.0, есть ли у него много функций?
Итак, я был бы рад, если бы вы могли прокомментировать ваш опыт работы с двигателями и предложить, какой из них в списке (или что-то еще, что я пропустил) является лучшим для описанных требований. Я также ошибаюсь в своих первых впечатлениях о некоторых из двигателей.
В настоящее время я думаю о Marmalade + IwGame как о лучшем варианте, но так как у меня мало информации о кодеке Cocos2d-x и Particle, я не уверен в этом.
Спасибо!
EDIT (июнь 2013 г.). Пока я сделал 2 кросс-платформенных 2D-игры и использовал Unity3D с плагином 2D Toolkit для обоих. Для игры с простым графическим интерфейсом я использовал простую самодельную GUI-систему, основанную на Unity. Для более сложного (например, когда элементы GUI могут перекрываться) я использовал плагин NGUI. Недавно 2D Toolkit добавил еще несколько классов для графического интерфейса, что очень удобно, поскольку для объединения текстурных атласов при объединении NGUI с 2D Toolkit нужно было использовать две разные системы. Я определенно попробую это в следующей 2D-игре. Основной причиной выбора Unity3D для 2D-игр было то, что я уже был глубоко в Unity3D как с точки зрения опыта, так и с накоплением фрагментов кода для повторного использования. Кроме того, я купил Unity3D pro (с Android Pro и iOS Pro) для 3D-игр, и было вполне разумно просто заплатить дополнительные 60 долларов за 2D Toolkit, чтобы также получить 2D-игры. Я до сих пор не сожалею о своем решении, это, кажется, было оптимальным для моего дела. Единственное, что дало мне головную боль, - это добавить социальные функции с плагинами Prime31 (социальные плагины для Android и iOS), но я предполагаю, что их ошибки не являются ошибкой Prime31, а вместо Twitter/Facebook, поэтому я, вероятно, увижу те же ошибки на любой другой движок или плагин.
EDIT (январь 2014 г.). Я думаю, что с Unity 4.3 ответ на мой вопрос сейчас довольно очевиден: новая система спрайтов Unity и, возможно, 2DToolkit полностью избили что-то еще, особенно для людей, которые (как и я) некоторое время был на Unity и купил версию Pro с надстройками.