que - programar en c++ para android
ProgramaciĆ³n para Android en un entorno 100% C++? (3)
He estado trabajando en un entorno de tiempo de ejecución de motor de juego en C ++ para mis futuros juegos, y he comenzado a considerar a Android como una plataforma. Noté que estaba estrechamente vinculado a Java y usa VM de Java en gran medida.
Pero, ¿es posible mantener un entorno de tiempo de ejecución de C ++ completo en Android NDK? No tengo nada en contra de Java y estoy preparado para usarlo si tengo que hacerlo, pero el rendimiento es una de mis principales preocupaciones (pretendo que mis juegos sean intensivos en recursos), especialmente en los teléfonos.
Y si es posible un entorno completo de C ++, ¿cómo exactamente lo implementaría en Eclipse Indigo CDT? ¿Sería capaz de crear un ejecutable de juego compilado para Android antes de tiempo para un rendimiento máximo? ¿Y habría complementos adicionales que necesitaría instalar en Eclipse? ¿Podría usar MinGW para compilar mis juegos, o necesitaría usar un compilador diferente? Si tuviera que usar Java de una forma u otra, ¿sería necesaria la compilación del código C ++? Estas son todas las preguntas que me gustaría responder para obtener un entorno de desarrollo sólido en Eclipse IDE.
Tenga en cuenta que todavía soy bastante nuevo en el desarrollo de Android y en la programación multiplataforma en general. Mi objetivo es crear un motor de juego que aproveche al máximo el nuevo hardware, ¡especialmente en los teléfonos!
Gracias por cualquier consejo que ustedes puedan dar!
He intentado con algunos de ellos, y uno de los mejores que he encontrado es que Cross se compila instantáneamente en un montón de otros dispositivos y te permite programar tus mejores combinaciones en HTML5 / C ++ (sweeeeet) es MoSync ( http: //www.mosync .com / ) y otro poco conocido que es un poco más amigable con la configuración es MotoDev de Motorola ( http://developer.motorola.com/tools/motodevstudio/?utm_campaign=mhp01092012&utm_source=mhp&utm_medium=mws )
Me he dado cuenta de que hay algunas imágenes de máquinas virtuales y tutoriales que puede usar para evitar problemas de configuración.
La respuesta a la que desea prestarle mucha atención es la de @ adamp. Ignora su respuesta bajo tu propio riesgo.
Para abordar un par de otros puntos en su pregunta, sin embargo:
¿Sería capaz de crear un ejecutable de juego compilado para Android antes de tiempo para un rendimiento máximo?
No, en la medida en que Android no usa "ejecutables de juegos compilados". Su código C / C ++ se compilará en un archivo de objetos compartidos de Linux (.so) y se empaqueta con otras cosas (como su manifiesto) en un archivo APK. Sin embargo, compilar el .so será anticipado.
¿Podría usar MinGW para compilar mis juegos? ¿Necesitaría usar un compilador diferente?
Tengo la clara impresión de que intentarás desarrollar NDK en Cygwin en Windows. Lo animo sinceramente a que haga su desarrollo de NDK en OS X o Linux. Al menos configure un VirtualBox con Ubuntu o algo para hacer sus compilaciones NDK.
De todos modos, el NDK viene con su propio compilador GCC. AFAIK, MinGW no es un compilador cruzado, y la mayoría de los dispositivos Android no se ejecutan en CPU x86.
Si tuviera que usar Java de una forma u otra, ¿sería necesaria la compilación del código C ++?
Sí. Ahora, para Honeycomb, tiene la opción de usar Renderscript para el trabajo OpenGL, eso equivale a un entorno C99 cuyo código no necesitará compilar con el NDK.
NativeActivity, agregado en Android 2.3 (API 9) puede ser lo que estás buscando en términos de escribir juegos de Android utilizando solo C ++. http://developer.android.com/reference/android/app/NativeActivity.html
Sin embargo, como dices que eres nuevo en esto, es posible que quieras comenzar con uno de los motores de juego de Android actualmente disponibles en lugar de escribir el tuyo de inmediato. Los dispositivos móviles tienen un conjunto muy diferente de restricciones que otras plataformas. Un teléfono no es muy útil si la batería se agota a media tarde, por lo que comenzar un proyecto con el objetivo declarado de ser "intensivo en recursos" ya está teniendo un mal comienzo. Pocas personas querrán jugar sus juegos durante 20 minutos aquí y allá si eso significa que no podrán hacer una llamada telefónica por la noche.
Si lo que quieres decir es que estás filmando para gráficos de alta gama, ten en cuenta que los dispositivos tienen una amplia gama de capacidades en esta área y que solo se dirigen a los límites más altos de tu audiencia. Las diferentes GPU tienen estrategias y características de rendimiento muy diferentes y todas tienen casos en los que brillan o se retrasan. Los juegos móviles más exitosos no son aquellos con los policontos más altos o los sombreadores de iluminación más complejos, son los juegos que logran una tasa de fotogramas uniforme y suave y tienen un estilo distintivo.
Eche un vistazo a algunos de los motores de juegos existentes para Android y pruébelos. Escribe un par de pequeños juegos para llevarlos a dar una vuelta de prueba y ver dónde están y qué no encajan con lo que intentas hacer. Si te sientes limitado con lo que está disponible, toma lo que has aprendido e intenta escribir tu propio motor que se adapte a los tipos de juegos que quieres hacer.
Aquí hay algunos enlaces para que comiences. Estos motores potencian algunos juegos muy populares en Android Market y muchos desarrolladores los han encontrado útiles:
http://www.andengine.org/ andengine está escrito en Java y es de código abierto.
http://unity3d.com/ Unity se basa en C # y Mono.
http://www.madewithmarmalade.com/ Marmalade, anteriormente Airplay SDK se basa en C ++.