Draw Event und Performance

  • iOS

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Draw Event und Performance

    Hallo Leute,

    die Performance meines Spiels auf älteren Geräten wie dem iPhone 4 ist leider nicht so gut. Ich dachte mir das liegt vielleicht daran dass ich viele Objekte mit draw events habe. Würde es die Performance verbessern wenn ich auf draw_events (weitestgehend) verzichte, und das sprite nur durch seinen sprite index anzeige? Oder macht das keinen Unterschied?

    Vielen Dank im Voraus!

    LG,
    Wolfgang
  • Sollte keinen Unterschied machen. Du solltest auf jeden Fall versuchen, möglichst wenig Pixel auf dem Bildschirm mehrfach zu zeichnen (also wenig Überlappungen). Wenn du den kompletten Hintergrund mit Grafiken abdeckst, dann schalte auf jeden Fall die Hintergrundfarbe im Room ab. Versuche die Grafiken, die du auf dem Bildschirm zeichnest, möglichst alle aus der selben Texture Page zu verwenden. Nur so können alle Draw-Befehle gleichzeitig (in einem Batch) verarbeitet werden. Falls das nicht geht, versuche Hintergrund und Vordergrund zu trennen (also zb. das Tileset und Spielfiguren trennen, anstatt die Spielfiguren auf verschiedene Gruppen aufzuteilen). So können immer noch alle Spielfiguren in einem Batch gezeichnet werden.
    Es gilt auch zu bedenken, dass das iPhone4 eines der performanceschwächsten Apple-Geräte ist. Als sie damals mit dem Retina-Display auf 4x so viele Pixel umgestiegen sind (960x640 statt vorher 480x320), haben sie die Grafikleistung nicht verbessert und den Arbeitsspeicher lediglich verdoppelt. Erst spätere iPhones haben das wieder ausgeglichen. Ein ähnliches Problem hatte auch das iPad3, während das iPad2 immer noch ein gutes Gerät ist (das iPad1 sollte man ganz vergessen...). Die iPods fallen von der Leistung her auch meist stark von den iPhones der selben Generation ab.
    Blöd bei iOS Spielen: man kann Geräte nicht so einfach für seine Apps ausschließen.
    Es gibt nur zwei Mittel:
    1. Unterschiedliche Apps für iPad und iPhone/iPod anstatt Universal Apps.
    2. Minimale iOS Version festlegen (so schließt man die meisten schlechten Geräte schon mal aus, die nicht mehr mit Updates versorgt werden.
    Alles andere (Erkennung des Geräts und Anpassung zur Laufzeit) ist ungeheuer aufwändig (aber oft die einzige Lösung).
    Einige meiner Spiele:
  • Danke schonmal für Deine ausführliche Antwort, da sind schonmal ein paar gute Tipps dabei!


    Ich habe noch zwei Fragen zur Performance:

    1. Was sollte ich hinsichtlich der Performance beim Code beachten? Was ist z.B. mit Variablen? Ich sollte möglichst wenig im Step Event stehen haben, oder? Und was ist mit collision events?

    2. Ich mache ein Jump N Run ohne Shader, Lightning oder Physics. Würde der YoYo Compiler trotzdem eine Verbesserung der Performance herbeiführen?