2012-08-25 18 views
5

Estoy haciendo mi primer juego con la aplicaciónMobi después de crear algunos juegos para Android con Java. Básicamente tengo la intención de crear un juego de arcade de corredor sin fin, 2d, vista superior.Problemas de rendimiento en el juego de iPhone con HTML y JS, con la aplicaciónMobi

Estoy usando appMobi con JS y CSS3 simples (sin ninguna otra biblioteca como Impact).

Empecé haciendo algunas pruebas con lienzo y creé una demostración muy simple en la que controlas una bola (básicamente un círculo renderizado con lienzo) con el acelerómetro y necesitas recolectar otras bolas. Lo probé con mi Galaxy S2 y un iPhone 4 y parecía que el iPhone funcionaba mucho mejor, así que comencé a escribir un motor simple para usar elementos dom. Básicamente creé un objeto que se conecta a una etiqueta, y contiene un vector de posición, también se agregó una función de dibujar que básicamente hace lo siguiente: this.element.style.left = x + 'px' (y lo mismo para top y y) .

En mi bucle principal He llamado a la función de drenaje en los objetos y actualizado su ubicación según mi lógica del juego, y re-llamado el Mainloop usar este window.requestAnimationFrame envoltorio:

window.requestAnimFrame = (function(){ 
     return window.requestAnimationFrame  || 
       window.webkitRequestAnimationFrame || 
       window.mozRequestAnimationFrame || 
       window.oRequestAnimationFrame  || 
       window.msRequestAnimationFrame  || 
       function(callback){ 
       window.setTimeout(callback, 1000/60); 
       }; 
    })(); 

Entonces pasó a crear un objeto de cámara para controlar el posicionamiento de la pantalla e hizo que desplazara con éxito el fondo usando la propiedad css background-position. Lo probé con mi nuevo Galaxy s3 y con un s2 con algunos gráficos (2 200x200 pngs, y un fondo) y todo funcionó sin problemas a ~ 60 fps. Estaba muy contento con los resultados y realmente me emocionó probar en un iPhone 4 iOS 4.x, ¡pero para mi decepción corría a 2-3 FPS! 30 veces más lento que mi android. Empecé a hacer muchos cambios (actualmente estoy usando una ventana gráfica de 720x1280), así que traté de usar 320 * 480, utilizando lienzo, eliminando el fondo de desplazamiento, redimensionando las imágenes, pero fue en vano, mientras que el android se desempeñó bien en todas las variaciones

Lo mejor que obtuve fue 5 FPS. Obtuve otro iPhone para probar, un iPhone 4S con iOS5 y obtuve FPS muy muy inestable. tenía un rango de 3 a 50 pero no se podía reproducir, no había posibilidades de que alguien lo tocara, y ni siquiera comencé a empacarlo con contenido.

Realmente quiero aprovechar la plataforma cruzada y sería una pena para mí renunciar al mercado de Apple, por lo que cualquier consejo o consejo será bien recibido.

Gracias, Gabriel

Respuesta

1

Esta es la respuesta que obtuve en los foros de appMobi, si alguien tiene este problema:

uso directo lienzo

JS/CSS 3 realizará horrible en todos los dispositivos , no importa qué. El explorador de stock en iOS (Safari) tiene habilitado NitroJS, pero no en el UIWebView ... pero si tiene tiempo, lea y verá que no puede escribir un juego JS sin tocar el hardware aceleración como Lona directa.

Cuestiones relacionadas