Программирование для Android в среде C ++ на 100%? - PullRequest
11 голосов
/ 01 октября 2011

Я работал над средой исполнения игрового движка на C ++ для моих будущих игр и начал рассматривать Android как платформу. Я заметил, что он тесно связан с Java и интенсивно использует виртуальные машины Java.

Но возможно ли поддерживать полноценную среду выполнения C ++ в Android NDK? Я ничего не имею против Java и готов использовать его, если придется, но производительность - одна из моих главных задач (я намерен сделать мои игры ресурсоемкими), особенно на телефонах.

И если возможна полноценная среда C ++, как именно я реализовал бы ее в Eclipse Indigo CDT? Смогу ли я заранее создать скомпилированный исполняемый файл игры для Android для максимальной производительности? И будут ли какие-нибудь дополнительные плагины, которые мне нужно будет установить в Eclipse? Могу ли я использовать MinGW для компиляции своих игр или мне нужно использовать другой компилятор? Если бы мне пришлось использовать Java тем или иным образом, потребовалась бы компиляция кода C ++? На все эти вопросы я бы хотел ответить, чтобы в Eclipse IDE появилась надежная среда разработки.

Пожалуйста, знайте, что я все еще довольно плохо знаком с разработкой Android и программированием на нескольких платформах в целом. Моя цель - создать игровой движок, который будет максимально использовать преимущества нового оборудования, особенно на телефонах!

Спасибо за любой совет, который вы, ребята, можете дать!

Ответы [ 3 ]

9 голосов
/ 01 октября 2011

NativeActivity, добавленная в Android 2.3 (API 9), может быть тем, что вам нужно для написания игр для Android с использованием только C ++.http://developer.android.com/reference/android/app/NativeActivity.html

Однако, поскольку вы говорите, что вы новичок в этом, вы можете начать с одного из доступных на данный момент игровых движков для Android, а не писать свой собственный прямо сейчас.Мобильные устройства имеют совсем другой набор ограничений, чем другие платформы.Телефон не очень полезен, если батарея разряжается в середине дня, поэтому запуск проекта с заявленной целью «ресурсоемкости» уже приводит к неудачному началу.Мало кто захочет играть в ваши игры по 20 минут тут и там, если это означает, что они не смогут позвонить вечером.

Если вы имели в виду, что вы стреляете по высокойНе забывайте о графике, имейте в виду, что устройства обладают широкими возможностями в этой области, а ориентация только на верхний предел ограничивает вашу аудиторию.Разные графические процессоры имеют очень разные стратегии и характеристики производительности, и у всех есть случаи, когда они блистают или отстают.Самые успешные мобильные игры - это не те, у которых самые высокие показатели в поликонтах или самые сложные шейдеры освещения, это игры, которые достигают стабильно плавной частоты кадров и имеют характерный стиль.

Посмотрите на некоторые изсуществующие игровые движки для Android и опробуйте их.Напишите пару небольших игр, чтобы взять их на тест-драйв и посмотреть, что они делают, и не мешайте тому, что вы пытаетесь сделать.Если вы чувствуете себя ограниченным из-за того, что доступно, возьмите то, что вы узнали, и попробуйте написать свой собственный движок, который подходит для типов игр, которые вы хотите создать.

Вот несколько ссылок, с которых можно начать.Эти движки работают на некоторых очень популярных играх на Android Market, и многие разработчики сочли их полезными:

http://www.andengine.org/ Андроид написан на Java и имеет открытый исходный код.

http://unity3d.com/ Unity основан на C # и Mono.

http://www.madewithmarmalade.com/ Marmalade, ранее Airplay SDK основан на C ++.

2 голосов
/ 01 октября 2011

Ответ, на который вы хотите обратить пристальное внимание, - @ adamp's. Игнорируйте его ответ на свой страх и риск.

Чтобы ответить на пару других вопросов в вашем вопросе:

Смогу ли я заранее создать скомпилированный исполняемый файл игры для Android для максимальной производительности?

Нет, поскольку Android не использует "скомпилированные исполняемые файлы". Ваш код C / C ++ будет скомпилирован в файл общего объекта Linux (.so) и упакован с другими компонентами (такими как ваш манифест) в файл APK. Хотя компиляция .so будет заблаговременной.

Могу ли я использовать MinGW для компиляции своих игр, нужно ли мне использовать другой компилятор?

У меня сложилось четкое впечатление, что вы будете стараться изо всех сил пытаться делать разработку NDK в Cygwin для Windows. От всей души призываю вас заняться разработкой NDK под OS X или Linux. По крайней мере, установите VirtualBox с Ubuntu или чем-то в нем для компиляции NDK.

Несмотря на это, NDK поставляется с собственным компилятором GCC. AFAIK, MinGW не является кросс-компилятором, и большинство устройств Android не работают на процессорах x86.

Если бы мне пришлось использовать Java тем или иным образом, потребовалась бы компиляция кода C ++?

Да. Теперь для Honeycomb у вас есть возможность использовать Renderscript для работы с OpenGL - это равносильно среде C99, код которой вам не нужно будет компилировать с NDK.

0 голосов
/ 12 июня 2012

Я попробовал несколько из них, и одним из лучших, который я нашел, является кросс-компиляция мгновенно на кучу других устройств, и давайте вам запрограммировать свои вкусности в комбинированном HTML5 / C ++ (sweeeeet) - MoSync (http://www.mosync.com/) и еще один малоизвестный, который немного удобнее в настройке, - это MotoDev от Motorola (http://developer.motorola.com/tools/motodevstudio/?utm_campaign=mhp01092012&utm_source=mhp&utm_medium=mws)

). Я заметил, что есть некоторые образы виртуальных машин и учебные пособия, которые вы можете использовать, чтобы избежать проблем с настройкой.

...