Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-05-2011, 13:43   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2010
Beiträge: 18
performance probleme

ich portiere momentan ein spiel, dass ursprünglich für pc geschrieben wurde für auf das blackberry playbook.
das bringt allerdings performance probleme mit sich, obwohl es ein recht kleines spiel ist.

der hintergrund ist ein riesiges bild (3010*600) und wird als png in ein bitmap geladen. es ist allerdings nicht einmal 400kb groß.

das spiel läuft flüssig, bis sich die kamera bewegt (also der hintergrund in eine richtung). dann ruckelt, was bei einem fummeligen jump&run spiel entsprechend nervig ist.

hat jemand eine idee, warum das playbook so schnell überfordert sein könnte?
oder eine idee was man anders machen könnte?

bzw gibt es generell iwo einen guide wie man in AS3 performance orientiert programmiert? das ihc bisher immer für pc kleinere dinge programmiert habe, habe ich mir noch nie gedanken um die performance gemacht und dementsprecht mit eventlistenern etc nur so um mich geworfen. dementsprechend habe ich keine ahnung was viel leistung frisst und was nicht.
z.B. bin ich jetzt mal auf den trichter gekommen, dass man anstelle von math.pow(x, 2) auch einfach x*x schreiben kann und das das viel schonender ist. aber ab wieviel berechnungen pro sekunde wirkt sich sowas aus?
ich arbeite im moment noch an einem größeren spiel und habe keine lust später feststellen zu müssen, dass ich von anfang an alles hätte anders angehen sollen

danke

EDIT: hier unser spiel das ich portiere (das laden dauert kurz). vllt sieht da jemand was das problem sein könnte, bzw wie es besser wäre.
http://rma.app-design.com/game/

Geändert von fancyoso (18-05-2011 um 13:45 Uhr)
fancyoso ist offline   Mit Zitat antworten
Alt 18-05-2011, 14:31   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von fancyoso Beitrag anzeigen
der hintergrund ist ein riesiges bild (3010*600) und wird als png in ein bitmap geladen. es ist allerdings nicht einmal 400kb groß.
Die Dateigrößes des Bildes ist für die Performance zur Laufzeit schlicht irrelevant, weil das Bild dann unkomprimiert im Arbeitspeicher liegt und pixelweise berechnet wird. Es kommt also allein auf die Pixelabmesssungen an und darauf, ob das Bild Transparenzen enthält, oder nicht.

Da es unwahrscheinlich ist, dass dieses Bild jemals ganz zu sehen ist, würde ich das Bild in mehrere Kachel aufteilen und von diesen nur die tatsächlich sichbaren anzeigen.

Zitat:
Zitat von fancyoso Beitrag anzeigen
bzw gibt es generell iwo einen guide wie man in AS3 performance orientiert programmiert? das ihc bisher immer für pc kleinere dinge programmiert habe, habe ich mir noch nie gedanken um die performance gemacht und dementsprecht mit eventlistenern etc nur so um mich geworfen.
Performance sollte immer ein Thema sein und nicht erst, wenn's um Tablets geht. IMHO sollte man daher bei jeder Funktion darüber nach denken, ob es irgendwie schlanker und performanter geht. Sowas im nachhinein zu impementieren, dürfte pschwierig sein...

Zitat:
Zitat von fancyoso Beitrag anzeigen
z.B. bin ich jetzt mal auf den trichter gekommen, dass man anstelle von math.pow(x, 2) auch einfach x*x schreiben kann und das das viel schonender ist. aber ab wieviel berechnungen pro sekunde wirkt sich sowas aus?
Natürlich gibt es sowas:
  • Funktionsaufrufe sind teuer
  • Literale schneller als Konstruktoren
  • identische dynamische Zugriffe sollten zwischengespeichert werden
  • usw.
Google spuckt zu diesem Thema einiges aus.

Allerdings dürften diese Codedetails in der Regel nicht kriegsentscheidend sein, weil die Performanceprobleme meistens im Aufbau der Anwendung selbst begründet sind:
  • zu große Bilder
  • zu viel Video
  • zu viele Transparenzen
  • zu viele Vektoren (die nicht als Bitmap gecached werden)
  • zu viele dauerhaft ausgeführte Befehle
  • zu kleinteilig verschachtelter Code
  • usw.

Hierfür gibt es nicht wirklich goldene Regeln. Man muss also selbst entscheiden, was wirklich notwendig ist, was weg kann und wie der Code trotzdem noch lesbar bleibt.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 18-05-2011, 15:44   #3 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Die Bereiche, die Martin genannt hat, solltest du als erstes optimieren.

Anschliessend noch etwas konkrete Lektüre zu dem Thema: Joa Ebert - ActionScriptWiki

Und zwei praktische Tipps:
1. ENTER_FRAME kann ein echter performance-killer sein, wenn jedes Objekt seinen eigenen Listener hat (oder sogar mehrere).
Dann besser versuchen zusammenzufassen: einen zentralen ENTER_FRAME-Handler anlegen, und darin alles ausführen (oder anstossen), wass in deisem Frame ausgeführt werden soll.


2. du wirst vermutlich Stellen haben, wo du Elemente wie Gegner, Schüsse, etc in einem Array || Vektor verwaltest, und dann in einer Schleife löscht und von der Bühne entfernst.
PHP-Code:
//statt
var items:Array = //...
for(var i:int items.length-1i>=0; --i){
    if( 
/* Bedingung */){
        
items.splice(i1);
    }
}

//besser
var items:Array = //...
var len:int items.length;
for(var 
i:int leni--; ){
    if( 
/* Bedingung */){
        
items[i] = items[--len];
//        items[len] = null;
    
}
}
items.length len
bei jedem splicen wird das Array auseinandergenommen, wieder zusammengebaut, und ein Array mit den entfernten Elementen zurückgegeben.
bei der zweiten Variante werden nur Referenzen ausgetauscht, und zum schluss das Array gekürzt.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Performance Probleme PEACE.HUL Flash CS3 Professional 2 14-08-2008 10:33
performance probleme franks ActionScript 2 3 09-11-2007 16:56
Performance-Probleme (mit *.flv) OliSchwarz Flash 8 2 14-06-2007 08:08
Performance Probleme Obsidian ActionScript 2 1 24-07-2006 18:42
swf performance probleme d-signs Flash MX 2 09-08-2005 20:30


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele