Como arriba realmente,
Estoy escribiendo un juego basado en Android en mi tiempo libre (Android porque es gratis y no tengo aspiraciones reales de hacer nada comercial).
La lógica del juego proviene de un modelo basado en componentes muy típico por el cual las entidades existen y tienen componentes unidos a ellas y se envían mensajes de un lado a otro para que las cosas sucedan.
Obviamente, la capa para el rendimiento real es delgada, y si tuviera que escribir una versión para iPhone de esta aplicación, tendría que volver a escribir el renderizador y el controlador central (de este sistema basado en componentes) en el Objetivo C.
Las entidades son solo archivos planos que determinan los nombres de los componentes que se agregarán, y los componentes en sí mismos son objetos simples de un solo propósito que contienen la lógica de la entidad.
Ahora, si escribo toda la lógica para esos componentes en Java, entonces tendría que volver a escribirlos en el Objetivo C si decidiera hacer un puerto para iPhone. Como la mayor parte de la lógica de la aplicación está contenida dentro de estos componentes, en un mundo ideal, se escribirían en un lenguaje / script / DSL independiente de la plataforma que luego podría cargarse en la aplicación en cualquier plataforma.
Sin embargo, me han hecho creer que este no es un mundo ideal, y que el rendimiento de Lua, etc. en dispositivos móviles todavía no está a la altura, que la sobrecarga es demasiado y que me vería en problemas más tarde si fue por esa ruta?
¿Es este realmente el caso? Obviamente, esta es solo una pregunta hipotética, estoy feliz de escribirlos todos en Java, ya que es simple y fácil despegar, pero digamos que realmente disfruto haciendo este juego (poco probable, dado lo mucho que no me gusta tener que lidiar actualmente) con todos esos dispositivos móviles diferentes) y quería hacer un juego comercialmente viable: ¿usaría Lua o simplemente recibiría el golpe cuando se trata de portar y volver a escribir todo el código?
La implementación de C de Lua está específicamente diseñada para ejecutarse en dispositivos integrados. Es pequeño y rápido (para un lenguaje de script). Hubiera pensado que estaba bien para al menos tareas ligeras.
fuente
Seguro. La lógica de secuencias de comandos es muy poco probable que sea su cuello de botella (en realidad se perfila con Shark o Instruments, ¿verdad?). Trabajé en la versión para iPhone de Marooned, que usaba mucho Lua para la lógica del juego. Hice mucho ajuste de rendimiento, y básicamente Lua fue 0%.
(Lua era un área gris cuando lanzamos Marooned, pero desde entonces ha sido bendecida oficialmente para el desarrollo de iOS).
fuente
Consulte http://code.google.com/p/android-scripting/ para conocer la forma recomendada de realizar scripts en Android. Lua todavía no encaja muy bien en la plataforma Android, ya que requiere C. Por supuesto, podría usar el NDK, pero eso no es una bala de plata.
fuente
Depende un poco de qué parte de la lógica de tu juego esté integrada en los scripts. En general, LUA se usa como pegamento de alto nivel, pero gran parte del trabajo duro ocurre a través de C (++). Sí, LUA es rápido en lo que respecta a los lenguajes de secuencias de comandos: aún observa una desaceleración en comparación con los idiomas nativos de aproximadamente 30 a 50 veces, por lo que realmente depende de cuánto esté sucediendo en LUA.
fuente
En realidad, puedes escribir todo tu juego en Lua y evitar Java / ObjectiveC / C / C ++ por completo.
Para el desarrollo multiplataforma, utilice Corona . Es de uso gratuito hasta que planee enviar a App Store o Android Marketplace.
Si desea apuntar al iPhone / Pad / Touch, eche un vistazo a la cera .
Solo como una nota al margen @Sean Edwards: He estado involucrado en el envío de cinco títulos dirigidos a Nintendo DS, Wii, Sony PSP y Xbox360, todos los cuales usaron el mismo motor y fueron escritos en Lua. Es ampliamente utilizado en consolas y móviles.
fuente