2012-05-18 8 views
3

Я планирую построить игру для мобильных устройств. Мои целевые платформы - iOS и Android. Я надеюсь, что смогу провести тестирование на windows и/или linux. Я немного переусердствовал в этом, поскольку помимо общего опыта разработки игр все технологии для меня совершенно новы. Я провел приличное количество исследований и пришел к выводу, что игра должна быть написана/перенесена на C++, чтобы гарантировать, что большая часть моего движка может быть легко перенесена на несколько устройств.Разработка мобильных игр 2d: OpenGL ES 2.0 или cocos2d-x?

Еще одна вещь, которую я бы предпочел - сначала написать игру в java и порт на C++, так как именно там я наиболее комфортен и сделаю это быстрее всего.

Теперь у меня есть вопрос о том, следует ли использовать движок игры, такой как cocos2d-x, или написать движок с нуля и использовать OpenGL ES 2.0 для рендеринга. Первоначально я думал, что лучше использовать cocos2d-x, так как у меня нет большого опыта работы с OpenGL. Моя проблема с использованием cocos2d-x заключается в том, что, поскольку я хочу сначала написать игру в java, мне будет трудно переносить движок, чтобы он соответствовал cocos2d-x (или мне пришлось бы учиться все о двигателе cocos2d-x, чтобы начать с, а затем написать мой движок, чтобы имитировать движок cocos2d-x .. кажется избыточным).

При дальнейшем рассмотрении я думал, что написание собственного двигателя с использованием OpenGL на самом деле будет лучшим вариантом. Я могу использовать PowerVR SDK вместе с JOGL для эмуляции среды GLES. Также мне показалось приятным, так как я мог бы позволить GL выполнять большую часть работы для меня с точки зрения обнаружения столкновений и трансформаций. Моя единственная проблема с этим состоит в том, что, так как игра будет иметь многопользовательскую поддержку, а также, обнаружение столкновений GL и такие, в основном спорным, так как я буду иметь, чтобы сделать столкновение проверки на стороне сервера в любом случае, чтобы предотвратить игру от быть легко взломан , Конечно, для игры с одним игроком этот метод жизнеспособен.

Очевидно, что это решение субъективно и зависит от моих личных предпочтений, хотя я надеюсь, что предоставил достаточно опыта для более опытных людей, чтобы выразить свое мнение.

Это, как говорится, мой вопрос: учитывая эти параметры - было бы лучше, если бы я использовал cocos2d-x и страдал головной травмой от создания игры с нуля на C++, или было бы лучше писать мой собственный движок изначально в java и борьба через его OpenGL-аспект?

+1

У вас есть http://code.google.com/p/cocos2d-android/? – Till

+2

В настоящее время я изучаю OpenGL, и я тоже работаю над программированием на игру, и я могу сказать, что писать свой собственный движок игры - это целая работа! Я бы полностью полагался на проверенную и хорошо оптимизированную работу других людей здесь! Если вы хотите больше заниматься программированием на игру, вы можете взглянуть на UDK, который может скомпилировать двоичные файлы для всех основных мобильных операционных систем без дополнительной «стоимости» – guitarflow

+0

@ Поверните, ничего себе, я не уверен, как это проскользнуло я .. Спасибо, я проверю это. И спасибо за ваш интуитивный гитарный поток. – blend

ответ

0

Я решил написать его с нуля в C++ с использованием cocos2d-x. Это было не так плохо, как я ожидал.

+1

Вы на самом деле не пишете движок с нуля, если используете Cocos2d-x, так как он сам по себе является движком 2D-игр. Если вы сказали, что пишете это с нуля, используя SDL, тогда это будет иметь смысл. – nenchev

0

Создание собственного двигателя с нуля было бы слишком большим количеством работы и привлекло бы множество ошибок, чтобы проникнуть в них. Проверенные и проверенные двигатели - лучший выбор на мой взгляд. Портирование будет намного проще, поскольку у вас будет рабочая игра.
В настоящее время я использую двигатель Marmalade, и я вполне доволен его производительностью. Это дает вам прямой доступ к библиотекам OpenGL, хотя я никогда не пробовал. Вы тоже должны попробовать, хотя это не бесплатно, но 90-дневная оценочная лицензия бесплатна для проверки.