2012-08-25 4 views
5

Ich mache mein erstes Spiel mit appMobi nach dem Erstellen einiger Spiele für Android mit Java. Ich beabsichtige grundsätzlich, ein endloses Läufer Arcade-Spiel, 2d, Draufsicht zu erstellen.Leistungsprobleme in iPhone-Spiel mit HTML und JS, mit appMobi

Ich benutze appMobi mit plain JS und CSS3 (ohne irgendeine andere Bibliothek wie Impact).

Ich begann mit einigen Tests mit Leinwand und erstellte eine sehr einfache Demo, in der man einen Ball (im Grunde einen mit Leinwand gerenderten Kreis) mit dem Beschleunigungsmesser kontrolliert und andere Kugeln sammeln muss. Ich habe es mit meinem Galaxy S2 und einem iPhone 4 getestet und es sieht so aus, als ob das iPhone es viel besser laufen ließe. Also begann ich eine einfache Engine zu schreiben, um stattdessen dom-Elemente zu verwenden. Ich habe im Grunde ein Objekt erstellt, die Verbindung zu einem Tag, und hält einen Positionsvektor, auch eine Zeichenfunktion hinzugefügt, die im Wesentlichen Folgendes tut: this.element.style.left = x + 'px' (und das gleiche für top und y) .

Auf meiner Hauptschleife ich die Zeichenfunktion auf den Objekten und aktualisierte ihre Lage nach meinem Spiel Logik genannt habe, und wieder rief die MainLoop mit dieser window.requestAnimationFrame Wrapper:

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

ich dann weiter zum Erstellen eines Kameraobjekts, um die Positionierung des Bildschirms zu steuern, und um erfolgreich den Hintergrund mit der Eigenschaft css background-position zu scrollen. Ich habe es mit meinem neuen Galaxy s3 und mit einem s2 mit einigen Grafiken (2 200x200 png, und ein Hintergrund) getestet und alles lief glatt bei ~ 60 fps. Ich war sehr zufrieden mit den Ergebnissen und freute mich wirklich, auf einem iPhone 4 iOS 4.x zu testen, aber zu meiner Enttäuschung lief es bei 2-3 FPS! 30 mal langsamer als mein Android. Ich fing an, viele Änderungen vorzunehmen (derzeit benutze ich ein Ansichtsfenster von 720x1280), also habe ich versucht, 320 * 480 zu verwenden, anstatt Leinwand zu verwenden, scrollenden Hintergrund zu entfernen, Bilder zu verkleinern, aber ohne Erfolg, während der Android gut lief auf allen Variationen.

Beste, die ich bekam, war 5 FPS. Ich habe ein anderes iPhone getestet, ein iPhone 4S mit iOS5 und habe sehr sehr instabile FPS bekommen. reichte von 3 - 50, war aber unspielbar - keine Chancen, dass irgendjemand es spielen würde, und ich habe nicht einmal angefangen, es mit Inhalt zu packen.

Ich möchte wirklich Cross-Plattforming nutzen und es wäre eine Schande für mich, auf dem Apple-Markt aufgeben, so dass alle Tipps oder Ratschläge werden herzlich empfangen werden!

Danke, Gabriel

Antwort

1

Dies ist die Antwort, die ich auf appMobi Foren bekam, wenn jemand dieses Problem hat:

Verwenden Direkt Leinwand

JS/CSS3 auf jedem Gerät durchführen schrecklich , egal was. Der Aktien-Browser in iOS (Safari) hat NitroJS aktiviert, aber nicht in UIWebView ... aber wenn Sie Zeit haben, lesen Sie, und Sie werden sehen, dass Sie kein JS-Spiel schreiben können, ohne in Hardware zu tippen Beschleunigung wie Direct Canvas.