Wie groß Räume fürs Retina-iPad machen?

  • iOS
  • Wie groß Räume fürs Retina-iPad machen?

    Hallo Leute,

    mein Jump N Run soll unter anderem auch auf dem iPad 3 laufen. Natürlich will ich dabei das Retina-Display voll ausnutzen. Jetzt hab ich mich aber gefragt, ob dann die Levelräume nicht zu groß werden?

    Wenn der View, also der Levelauschnitt der angezeigt wird schon 2048 X 1536 Pixel groß ist dann muss so ein Levelraum ja mehrere 10.000 Pixel breit und hoch werden? Ist das nicht ein bisschen zu groß, leidet da nicht die Leistung des Spiels? Denn derselbe Raum muss ja auch auf dem iPhone 3GS flüssig laufen, und das hat ja nicht so viel Leistung. Oder muss ich etwa alle Sprites und Räume für die verschiedenen Devices in verschiedenen Größen anlegen? Das wäre ne Menge Arbeit... :S

    Wäre dankbar wenn mir da mal jemand helfen könnte.

    Gruß,
    Pascal
  • Da bleibt einem nicht viel übrig als mit Views zu arbeiten und zu skalieren.
    Man muss sich halt auch überlegen, dass der View zu den Abmessungen des Bildschirms passt und nicht verzerrt wird.
    Ich habe hier mal ein Beispiel, wie es funktionieren könnte:
    Ich habe einen Raum mit nur einem aktiven View.
    Bei den Werten, die man bei Views verwendet, ist mir nur die Höhe wichtig.
    Die anderen Werte setze ich später automatisch über ein Skript:

    GML-Quellcode

    1. //Skript: fix_view()
    2. view_wview[0] = view_hview[0] * global.aspect_ratio;
    3. view_hport[0] = display_get_height();
    4. view_wport[0] = display_get_width();

    Vorher müssen nur die Displaygröße und die globale Variable aspect_ratio richtig gesetzt werden.
    Das mache ich im ersten Raum mit einem persistenten Controller-Objekt:

    GML-Quellcode

    1. // Create Event
    2. global.aspect_ratio = display_get_width() / display_get_height();
    3. window_set_size(display_get_width(), display_get_height());
    4. fix_view();

    Und damit das auch nach jedem room-Wechsel angepasst wird, muss das Skript vom Controller-Objekt auch noch im Room Start Event aufgerufen werden:

    GML-Quellcode

    1. //Room Start
    2. fix_view();

    So, ich hoffe das funktioniert und/oder hilft weiter.
    Einige meiner Spiele: