Zwei Versionen im App Store?

  • iOS

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

  • Zwei Versionen im App Store?

    Hallo Leute,

    ich würde gerne mein Spiel für alle aktuellen iOS Devices anbieten, also iPhone 4 und höher, iPod 5 und höher, iPad 2 und höher und iPad Mini 1 und höher.

    Eine Universal App zu machen scheint nicht möglich zu sein, da ich die großen iPad Retina Grafiken auf den Devices mit nur 512 MB Ram aus Speicherplatzgründen nicht verwenden kann. Zwei verschiedene Spriteassests für Low Res und High Res würden keinen Sinn machen, da dies zu viele Texture Pages generieren würde welche wiederum Speicherplatz benötigen.

    Daher hatte ich die Idee zwei App Versionen zu machen mit jeweils unterschiedlich großen Grafiken, eine für iPad Retina und eine für alle anderen Geräte (iPhone, iPod und iPad non-retina). Dies würde im Appstore dann so aussehen:

    1. Game Name (for iPad Retina)
    2. Game Name (for iPhone, iPod and iPad non-retina)

    Haltet ihr das für eine gute Lösung? Ich denke das würde funktionieren, allerdings habe ich diese Lösung so noch nicht im Appstore gesehen. Es gibt zwar Apps mit zwei Versionen für iPad und iPhone, allerdings ist dann die iPad Version auch für non-retina iPads geeignet. Dies wäre ja bei mir nicht der Fall.

    Oder hättet ihr vielleicht eine bessere Lösung?

    Ich hoffe ihr habt mein Problem verstanden und könnt mir helfen. Vielen Dank im Voraus!
  • Halte ich für keinen guten Ansatz. Was, wenn das Spiel gefeatured werden soll? Welche Version soll genommen werden? Welchen Link sollen Leute ihren Freunden weiterempfehlen? Da würde ich eher versuchen mit 2 Texturgrößen zu arbeiten. Vielleicht musst du ja nicht alles doppelt haben, konzentrier dich auf die größten Grafiken wie Hintergründe und lade auf schwächeren Geräten dafür nur die kleineren Texturpages.
    Einige meiner Spiele:
  • interceptor schrieb:

    Halte ich für keinen guten Ansatz. Was, wenn das Spiel gefeatured werden soll? Welche Version soll genommen werden? Welchen Link sollen Leute ihren Freunden weiterempfehlen? Da würde ich eher versuchen mit 2 Texturgrößen zu arbeiten. Vielleicht musst du ja nicht alles doppelt haben, konzentrier dich auf die größten Grafiken wie Hintergründe und lade auf schwächeren Geräten dafür nur die kleineren Texturpages.


    Danke für den Hinweis! Das ist ein Punkt über den ich noch garnicht nachgedacht habe.

    Das Problem mit den zwei Versionen ist nur, das mein Spiel bereits jetzt 150 MB im Ram verbraucht, und das nur beim Starten, also wenn noch garkeine Texture Pages geladen wurden. Wenn nun noch mehr Grafiken hinzukommen und dann noch die low res texturpages kann es bei Devices mit 512 MB (iphone4/4s, iPad 2, iPad mini 1, iPod 5) knapp werden mit dem Platz, da die glaub ich nur die Hälfte, also 256 MB, zur Verfügung stehen haben.

    Ich habe mal andere Spiele getestet welche einen ähnlichen Umfang besitzen, und die kommen gerade mal auf 50 MB im Ram während des Spiels. Woran kann das liegen das mein Spiel so Platzintensiv ist, was verbraucht noch Speicherplatz außer die Textur Pages?

  • Woran kann das liegen das mein Spiel so Platzintensiv ist, was verbraucht noch Speicherplatz außer die Textur Pages?

    Das liegt am GM... wie immer :D

    ich würd außer auf die texturen noch auf die sounds achten und besonders auf musik, da ist GM auch empfindlich.
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Jaja, man kann dem GM immer die Schuld zuschieben,
    das habe ich auch hin und wieder gemacht.
    Ich bin mir sicher, dass es nicht die effizienteste Entwicklungsumgebung ist (von der Performance),
    aber mit ein paar Kniffen, und notfalls externen DLL's kann man schon ziemlich viel ausrichten.

    Achte zum Beispiel darauf, dass du alle Ressourcen die du nicht mehr brauchst auch löscht, Arrays nicht größer sind als unbedingt notwendig,
    Ressourcen (wenn es nicht unbedingt sein muss) nicht zur Laufzeit des Spiels geladen werden, etc.
    Ja, und man kann die Texturen den Texture Pages auch manuell zuweisen.

    draw_texture_flush() kannst du in einem Create-Event aufrufen um alle ungebrauchten Texture Pages aus dem Speicher zu löschen,
    oder auch am Ende eines Rooms.
    Wenn du also den Inhalt der Texture Pages nicht dem Zufall überlässt, werden auch nicht so viele benötigt in den meisten Fällen und man kann Speicher sparen.

    interceptor schrieb:

    konzentrier dich auf die größten Grafiken wie Hintergründe und lade auf schwächeren Geräten dafür nur die kleineren Texturpages.

    Was interceptor vermutlich meint ist, dass du z.B. eine Texture Page für Retina-Grafiken verwenden könntest und eine andere Texture Page für alle Low-Res-Grafiken.
    Dann wird immer die Texture Page angesteuert die gerade gebraucht wird, und die andere landet auch nicht im RAM, weil kein Zugriff auf eine Textur darauf stattfindet.

    Hier sind noch weitere Performancetricks aufgelistet.
  • wolfgangkampfgarten schrieb:

    Was genau für DLLs könnten das sein? Hast Du ein Beispiel? Wo finde ich solche DLLs?

    Dazu muss ich aber zunächst sagen, dass man sich auf DLLs oder andere Extensions nicht zu 100% verlassen kann,
    man geht immer das Risiko ein, dass irgendetwas nicht ganz zum Projekt passt, oder die DLL sogar fehlerhaft ist.

    Als Quelle spuckt eine einfache Google-Suche mit den Schlagworten die dein Problem betreffen +DLL z.B.
    oft schon das aus was du haben willst.
    Wenn du dir einen Überblick verschaffen willst, findest du hier in der GMC eine Sammlung.

    Hier ist übrigens eine DLL die den Arbeitsspeicher aufräumt: Klick

    Oft ist es aber so, dass man ohne DLL's und Erweiterungen besser klarkommt,
    und man irgendwann Methoden findet etwas Speicher einzusparen und die Performance zu verbessern.
    Momentan kann man die auch nur für Windows verwenden, ab Version 1.4 soll man Extensions auch für andere Plattformen verwenden können.

    Überlege bei deinen Sprites und Backgrounds zum Beispiel, ob du wirklich alle brauchst,
    oder ob du manche nicht vielleicht auch durch die Drawing-Funktionen vom Gamemaker ersetzen,
    oder einen Ausschnitt davon nehmen kannst und mit draw_sprite_part zeichnen lässt.
    Oder mit image_blend ein Sprite einfärben, etwas strecken, rotieren, etc.

    Es gibt sooo viele Möglichkeiten, und man entdeckt sie erst im Laufe der Zeit.^^
  • RLP schrieb:

    wolfgangkampfgarten schrieb:

    Was genau für DLLs könnten das sein? Hast Du ein Beispiel? Wo finde ich solche DLLs?

    Dazu muss ich aber zunächst sagen, dass man sich auf DLLs oder andere Extensions nicht zu 100% verlassen kann,
    man geht immer das Risiko ein, dass irgendetwas nicht ganz zum Projekt passt, oder die DLL sogar fehlerhaft ist.

    Als Quelle spuckt eine einfache Google-Suche mit den Schlagworten die dein Problem betreffen +DLL z.B.
    oft schon das aus was du haben willst.
    Wenn du dir einen Überblick verschaffen willst, findest du hier in der GMC eine Sammlung.

    Hier ist übrigens eine DLL die den Arbeitsspeicher aufräumt: Klick

    Oft ist es aber so, dass man ohne DLL's und Erweiterungen besser klarkommt,
    und man irgendwann Methoden findet etwas Speicher einzusparen und die Performance zu verbessern.
    Momentan kann man die auch nur für Windows verwenden, ab Version 1.4 soll man Extensions auch für andere Plattformen verwenden können.

    Überlege bei deinen Sprites und Backgrounds zum Beispiel, ob du wirklich alle brauchst,
    oder ob du manche nicht vielleicht auch durch die Drawing-Funktionen vom Gamemaker ersetzen,
    oder einen Ausschnitt davon nehmen kannst und mit draw_sprite_part zeichnen lässt.
    Oder mit image_blend ein Sprite einfärben, etwas strecken, rotieren, etc.

    Es gibt sooo viele Möglichkeiten, und man entdeckt sie erst im Laufe der Zeit.^^


    Ok, vielen Dank!

    Da ich vorerst nur für iOS Devices entwickle, machen DLLs dann erstmal keinen Sinn für mich.

    Ja Du hast recht, ich werde mal meine Grafiken optimieren, dann läuft es vielleicht auch auf älteren Geräten.
  • interceptor schrieb:

    Da würde ich eher versuchen mit 2 Texturgrößen zu arbeiten. Vielleicht musst du ja nicht alles doppelt haben, konzentrier dich auf die größten Grafiken wie Hintergründe und lade auf schwächeren Geräten dafür nur die kleineren Texturpages.


    Das ist glaube ich eine sehr gute Idee!

    Aber wie genau mache ich das?

    Wenn ich es so mache:

    GML-Quellcode

    1. // Create Event
    2. if (os_device=device_ios_iphone)
    3. sprite_index=spr_player_low_res


    aber im objekt-fenster das high-res Sprite ausgewählt habe (um es im room editor richtig platzieren zu können), lädt er dann nicht erst die high-res texture page und dann im create event die low res texture page hinterher? Dann hätte ich ja beide im Ram, was ja noch mehr Speicherplatz verbrauchen würde. Oder lädt er nur das low res Sprite?

    Oder sollte ich es im Draw Event machen?

    GML-Quellcode

    1. if (os_device=device_ios_iphone)
    2. draw_sprite...low_res
    3. else
    4. draw_sprite...high_res



    Hoffe Du/Ihr versteht was ich meine und könnt mir helfen ;)

    Vielen Dank im Voraus!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wolfgangkampfgarten ()