2009-07-27 11 views
0

Ich mache ein 2D-Spiel und verwende 64x64 Texturen, um meine Charaktere zu zeichnen. Es sieht im Grunde aus wie Super Mario Brüder, jeder Charakter hat etwa 10 Frames, die ihre gesamte Animationssequenz ausmachen.PVR-Komprimierung auf dem iPhone - Tipps für 2D-Sprites?

Das PVR-Tool klang vielversprechend, es zerkleinert meine Bilder bis zu 4kb jeder war großartig. Die Qualität ist jedoch sehr schlecht. Ich glaube nicht, dass ich irgendetwas dagegen tun kann, aber ich wollte es überprüfen. Jeder Frame ist das Zeichen in einer bestimmten Pose und transparente Pixel füllen den Rest des 64x64-Space. Ich bekomme irgendwie Pixel in den transparenten Regionen, seltsame Artefakte, die die Ausgabe pvr irgendwie nutzlos machen (das ist kein Fehler, ich denke, es ist einfach so, wie pvr funktioniert). Ich könnte wahrscheinlich mit etwas Matschigkeit in der Figur selbst durchkommen, aber nicht zufällige Pixel, die in transparenten Bereichen auftauchen.

Gibt es Tricks? Ich denke, wir haben nur etwa 10 MB Speicherkapazität für das iPhone. Wenn also jedes meiner Bilder 64 x 64 Pixel unkomprimiert ist, wird mir schnell der Speicherplatz ausgehen, da jeder eine erstaunliche 16k ergeben wird.

Dank

+0

@Mark 10Mb/(16 * 10Kb) = 62.5 einzigartige animierte Sprites, bist du sicher, dass du das überholst? – Stanislav

+0

werde ich wahrscheinlich, weil ich viele verschiedene AI-Charaktere habe, dann muss ich auch Texturen für den Bildhintergrund usw. verwenden. – Mark

+0

@Mark Ich nehme an, dass 15-20MB ziemlich sicher verwendet werden kann (zumindest, ich don ' Ich setze mich selbst in die Optimierung meiner Apps darüber ein, so dass weitere 5-10 MB für Hintergrund, BGM und SFX verwendet werden können (sogar mehr, wenn Sie 16 Bit Farbe verwenden). Außerdem sollten Sie für jede Ebene Zeichen neu laden. – Stanislav

Antwort

0

Zumindest sollten Sie Speicherhälfte benötigt um 16 Texturen Bit verwenden. In Cocos2D können Sie es

[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444]; // add this line at the very beginning 

Mehr über pixel format in Cocos2D

Check out Cocos2D sources mit tun, wenn Sie in rohen OpenGL Programmierung sind

+0

Cool, das wäre toll, aber was benutzt du, um die RGB4444-Bilder zu erstellen? In Photoshop kann ich nur volle 32-Bit-PNG-Dateien ausgeben, ohne die Möglichkeit, 16 Bit auszugeben, denke ich. – Mark

+0

Hmm, nach http://en.wikipedia.org/wiki/Portable_Network_Graphics PNG kann nur 24/32 Bit Farbe haben. Cocos2D führt zur Laufzeit eine Konvertierung durch. Siehe Zeile 264 und unten unter http://code.google.com/p/cocos2d-iphone/source/browse/trunk/cocos2d/Support/Texture2D.m – Stanislav

+0

Ich sehe, macht jetzt Sinn, danke! – Mark

0

Eine Sache, die ich verbesserte Dinge leicht war gefunden größer verwenden, um Bilder als sie sein mussten, und dann auf die tatsächliche Größe herunterskalieren. Dies versteckt einige der Artefakte, aber offensichtlich wird nicht so viel Speicher gespart.

Am Ende gaben wir mit der Verwendung von pvr-Texturen für 2D-Sprites auf, da wir einfach nicht die Bildqualität erreichen konnten, die wir brauchten, und egal wie sehr wir versuchten, waren immer einige Artefakte sichtbar.

Auch ich glaube, Sie haben tatsächlich 24 MB Videospeicher zu spielen, so dass Sie wahrscheinlich mehr Platz haben, als Sie für unkomprimierte Sprites denken.