¿Adobe Air es una buena opción para el desarrollo de juegos entre dispositivos / plataformas iOS, Android y Facebook? ¿Cuáles son los mayores desafíos para Android e iOS en el aire? ¿Hay problemas con los juegos móviles que se conectan a los servidores?

Así que ya sabes de dónde vengo, no solo hice desarrollo móvil en AIR, sino que también envié un juego en cocos2d-x y construí varios prototipos en Objective-C. Entonces mi respuesta no es de investigación sino de experiencia del mundo real.

Lo más importante que debe saber es que AIR tiene dos formas de renderizado, modo software y modo GPU. Muchas personas que probaron AIR hace un tiempo no tenían acceso al modo GPU, por lo que se vieron obligados a renderizar a través del software. Como resultado de eso, AIR obtuvo la reputación de ser lento. Una vez que llegó el acceso a la GPU, y salió Starling, las cosas cambiaron, y AIR ahora es tan rápido en el renderizado como cualquier solución nativa.

1) Los mayores obstáculos que enfrenta en este momento son:

a) El tamaño del paquete es de aproximadamente 7-8 MB más grande que un equivalente nativo

b) Si bien el simulador de escritorio es increíblemente rápido, llevar una compilación de calidad de lanzamiento a un dispositivo iOS lleva varios minutos. Sin embargo, el modo “empaquetador rápido”, que tiene problemas de rendimiento, es muy rápido de implementar. En mi experiencia

c) Problemas de rendimiento marginal. La mayoría de los cuellos de botella en el desarrollo de juegos están en la capa de renderizado, y ahora que AIR tiene soporte Stage3D para iOS y Droid, es tan rápido como el desarrollo nativo.

2) Ninguno que yo sepa. Se cubren casos de uso comunes como conexiones de socket y http / https.

3) Diría que el 80% del código es reutilizable, donde el 15% puede ser cubierto por Native Extensions. La buena noticia es que la mayoría de las extensiones nativas que posiblemente pueda desear (Facebook, compras en la aplicación, notificaciones push) se han convertido en código abierto por muchos desarrolladores virtuosos de AIR. Solo google para ellos. El 5% restante es la posibilidad de que tenga que escribir su propia extensión nativa para un dispositivo específico, lo cual es una probabilidad baja.

4) AIR tiene un marco más sofisticado para manejar inconsistencias entre dispositivos que otros marcos, como Cocos2D-X. Todavía tengo que ver algo equivalente a Adobe Native Extensions, donde otros marcos requieren que intente por su cuenta cada solución específica del dispositivo (notificaciones, compras en la aplicación, etc.). El más cercano son los complementos de Unity, pero su kilometraje puede variar. Las extensiones nativas le permiten abstraer características comunes que tienen implementaciones específicas del dispositivo y acceder a ellas a través de una API unificada. Y el hecho de que haya tantos gratuitos que cubren todos los casos de uso principales lo convierte en una propuesta muy atractiva.

Al igual que cualquier otra herramienta para producir juegos, esta herramienta también necesita varias consideraciones y planificación para optimizar el uso de recursos y tener una experiencia de usuario agradable con respecto al rendimiento.

1. Desafíos: para crear AIR, tiene varias opciones para IDE y el flujo de trabajo (Flash Pro, Flash Builder, Flash Develop, otras opciones nativas C ++ o Haxe para generar binarios). O eligió seguir el camino AS3 puro o mezclarlo con la creación rápida de prototipos con Flash Builder, que es muy similar al uso de eclipse para Java. o tome una ruta completamente diferente haciendo binarios swf usando Haxe y compilándolos en APK usando el ADT provisto por AIR. Flash Player se encarga de ejecutar su contenido en la web y eso requerirá un conjunto diferente de pautas de optimizaciones.

2. Conexión a servidores y otras redes: AIR tiene el soporte para comunicarse con dispositivos o instancias de su aplicación en la misma red (wifi / lan) creando así un juego lan local. He implementado esto en nuestro último juego (aplicación de Android en Google Play). El juego también se conecta a un servidor Java utilizando UDP a través de una conexión de socket y facilita un modo multijugador en línea. Esto funciona como es para todas las plataformas que admite (Android, iOS, Windows, Mac, navegador). Junto con todo esto, también puede conectarse a HTTP / S y también usar el sistema de archivos para leer, escribir y también descargar y guardar contenido sobre la marcha.

3. Reutilización del código: el único cambio que tendrá que hacer es el que ha agregado para una plataforma específica. El ejemplo clásico será, cuando tenga un juego de iOS y Android, necesitará una funcionalidad de conexión de Facebook para la que necesitará la extensión nativa de Facebook, pero si desea construir el juego también para Facebook, entonces obviamente tendrá que eliminar la extensión y agregue otro SWC o JS para manejar la funcionalidad. Del mismo modo, la extensión iAds / Game Center no funcionará para Android y la extensión de reconocimiento de voz no funcionará para iOS. Esto sigue y sigue. Aparte de eso, toda la lógica del juego, transiciones y animaciones, videos y audios permanecerán como están. Tendrá que atender el cambio de tamaños de pantalla y cómo manejarlos a medida que construye la aplicación.

4. Extensión: las extensiones son las tensiones mentales cuando trabajas con AIR. Mientras que AIR tiene la mayoría de las capacidades de almacenamiento local y asíncrono. redes, faltan algunas cosas como notificaciones y facebook. Sin embargo, se integran fácilmente y hay soporte disponible para hacerlo. La mayoría de las extensiones básicas como vibración, control de volumen, etc. estarán disponibles de forma gratuita y funcionarán de la manera que desee. Pero en algunos juegos, es posible que necesite un poco más o rastrear a los usuarios entrantes o usar un SDK de terceros, es entonces cuando tendrá que escribir la extensión por su cuenta. Y no es sencillo.

5. Debilidad: como cualquier otro asistente de desarrollo multiplataforma, siempre necesitará complementos para acceder a la funcionalidad nativa. todas las plataformas solo evolucionarán y las extensiones que seguimos usando necesitarán actualizaciones constantes para cumplir con las nuevas políticas o hacer frente a la tendencia cambiante. Para hacer eso, necesitará conocer los conceptos básicos de la creación de aplicaciones en la plataforma nativa.

A partir de ahora, AIR es una de las gemas ocultas en el mundo del desarrollo de juegos.

Es súper rápido (en línea + Stage3D), extensible (Extensiones nativas) y tiene muchas herramientas (Starling, Genome2D, etc.).

Utilizando el último SDK beta de AIR 17 en este momento, he implementado Lambi sin ningún problema.

En realidad, la implementación fue muy fácil y no tuve ningún problema para que pasara el proceso de revisión de la tienda de aplicaciones.

Lambi envía / recibe datos a un nodo php en mi propio servidor, para manejar el aspecto de puntajes altos. Esto se manejó utilizando solicitudes de URL básicas que AIR admite de fábrica.

La lógica y los datos del juego (los 2 aspectos más importantes) se pueden transferir fácilmente de una plataforma a otra (como AS3 -> Haxe o lo que sea), dependiendo de su experiencia con el desarrollo de software.

Utilicé algunas extensiones de MilkManGames y District para manejar la publicación en el muro de Facebook y la monetización de anuncios, casi todo lo que necesita está disponible (aunque a un pequeño precio £).

La principal debilidad de AIR es que tiene herramientas básicas de procesamiento de sonido que no son tan modernas como Digamos, Unity. Todo lo demás está realmente a la par o mejor (el rendimiento de renderizado 2D es mucho más rápido en AIR que Unity 5 2D).

Puedes jugar lambi en Android:
https://play.google.com/store/ap

Y también en iOS:
https://itunes.apple.com/us/app/

No dude en hacerme más preguntas.

Estaba navegando y encontré esta pregunta … parece que se hizo hace un tiempo, pero de todos modos agregaré mi opinión. Estoy en el lado UX / UI de la creación de aplicaciones, y también he usado AIR / Actionsript ampliamente en el pasado … primero cuando era más popular en la web, y ahora para aplicaciones aquí y allá.

Creo que es una buena opción si tienes algo muy personalizado y más creativo. Si desea crear una aplicación que se base en gran medida en componentes y animaciones nativas, no es una gran opción … de hecho, sería una elección terrible. Pero si su aplicación es algo así como un libro interactivo para niños, una aplicación de pintura, una aplicación de aprendizaje para niños o un juego simple … podría ser una buena opción. Especialmente con Stage3D y GPU, el rendimiento realmente está a la altura. Su IU y sus animaciones probablemente serán personalizadas en estos escenarios.

En estos días lo uso principalmente para la creación de prototipos de micro interacción junto con mis diseños. Es absolutamente perfecto para eso, y me permite refinar y crear algunas muestras interactivas altamente personalizadas con una biblioteca como TweenMax sin necesidad de crear código de calidad de producción en Swift u Objective-C. Una vez que se ha realizado el prototipo y se toma una decisión, el desarrollador de la aplicación puede hacer referencia a ella. Otros también han usado Javascript de esta manera.

He visto algunas aplicaciones que estaban basadas en AIR, y estaban altamente clasificadas en la tienda de aplicaciones … pero nuevamente, estas son experiencias realmente personalizadas, y no necesitaban el rendimiento de una biblioteca 3D de alta gama que algunos otros juegos necesitar. En resumen, por mucho que me guste ActionScript, creo que es mejor usarlo ahora como herramienta de creación de prototipos cuando se trata de aplicaciones.

Si está haciendo juegos y utiliza soporte de hardware, lo que puede hacer con el nuevo Stage3D, obtendrá 60 fps en su juego. Busque algunos videos en youtube que muestren la ejecución de stage3d en dispositivos móviles. De hecho, también puedes crear aplicaciones que no sean de juegos usando stage3d. Las cosas estan cambiando

Debes asegurarte de qué tipo de aplicaciones o juegos estás trabajando, si no hay una carga pesada de renderizado en este juego, entonces usar flash 10 API que se basa en el renderizado de software ya es adecuado, mientras que si necesitas renderizar un lote grande de avatar, partículas, etc., debe elegir starling, cuyo rendimiento no tiene problemas tanto en ios como en android. Tenga en cuenta que si está utilizando el marco de la interfaz de usuario de Flex, entonces podría ser bastante cauteloso, ya que es la representación de software, puede elegir un marco de interfaz de usuario de pluma u otro basado en 3DStage

Intentamos desarrollar un equipo para AIR, pero el mayor problema es el rendimiento. Al principio te limitan las limitaciones de la plataforma. Sin mencionar la falta de apoyo, fue un factor decisivo para nosotros.

More Interesting

¿Hay alguna forma de verificar si mi iPhone tiene alguna aplicación secreta, como si alguien me estuviera espiando, revisando mis llamadas y mensajes sin usar el teléfono?

¿Cuánto cobra un desarrollador de aplicaciones iOS por hora?

Cómo ejecutar una aplicación de iOS que hice en Xcode 8 en la demostración de modo minorista en un iPhone

¿Cómo puedo aprender a crear una aplicación con la API de Foursquare?

¿Cuánto ganan los desarrolladores independientes y las empresas de desarrollo de aplicaciones por una sola aplicación de Android o iOS?

¿Deberían los desarrolladores móviles pasar primero a iOS o Android?

¿Cómo es que muchas aplicaciones de gestión de tareas personales y GTD tienen casi las mismas características y todas tienen éxito?

Apple promueve que Swift es mucho más fácil que Objective-C, pero como desarrollador experimentado de Objective-C, descubrí que Swift es mucho más difícil de aprender debido a sus características más ricas y su estilo de programación orientado al protocolo. ¿Es verdad?

¿Qué software necesito como estudiante en mi segundo año de mi B.Tech 2nd para comenzar a hacer aplicaciones en Windows, Android o iPhone?

¿Qué es mejor, desarrollo de aplicaciones nativas versus aplicaciones multiplataforma?

No tengo conocimientos de codificación y quiero aprender a escribir aplicaciones para iOS y OS X. ¿Puedo desarrollar aplicaciones para iOS / OS X solo con Swift o tendré que saber otros idiomas?

Aplicaciones móviles: ¿Debo optar por el desarrollo nativo de iOS o el desarrollo multiplataforma con PhoneGap / Xamarin?

¿Existe una herramienta para generar capturas de pantalla de la App Store para iPhone y iPad de forma gratuita (como cualquier plantilla de Adobe Photoshop)?

¿Por qué la comunidad iOS es más abierta que la comunidad Android?

Quiero crear un widget simple del Centro de notificaciones de iOS usando Swift. ¿Es esto difícil?