Empfehlen sprite-Größe für Spiele (XNA)?
Was ist die beste Größe für eine einzelne Kachel in einer 2D-sprite-sheet?
Ich bin erstellen Sie ein sprite sheet und versuche herauszufinden, was die beste Auflösung ist für jedes sprite. Ist es eine standard-Größe, ich sollte nicht gehen, oben oder unten?
ex. 64px X 64px, 512px X 512px, etc.
Ich versuche, Holen Sie sich HD-Qualität sprites. Denke, Alien Hominid, Castle Crashers, oder World of Goo. Einige Beispiele wären auch schön, also, wenn Sie die sprite-sheet-Beispiel bitte hochladen.
InformationsquelleAutor Khalid Abuhakmeh | 2009-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese hängt davon ab, wie der sprite wiedergegeben wird, als auch, was Sie gehen, um mit Ihnen tun, wenn Sie Sie Rendern.
Wenn Sie gehen, um zu vermeiden, das skalieren des sprites, so dass Sie die gleichen wie Ihre endgültige gerenderte Auflösung wie möglich wird helfen, die Qualität höher. Ich würde auf jeden Fall stick zu power of two textur Größen, da scheint es zu helfen, im Allgemeinen.
Jedoch, wenn du gehst zu tun eine Menge von Transformationen auf Ihre sprites, besonders bei Drehungen oder Skalierung, möchten Sie vielleicht zu gehen, etwas größer als die Auflösung, die Sie machen wird, da das resampling kann eine leicht bessere Qualität. Sie wollen überlegen, wie viele sprites sind zusammengesetzt und angezeigt werden zu jeder Zeit, und welche hardware Sie laufen auf (xbox, pc, beides?), zur Ermittlung der besten Optionen für eine ausgeglichene Leistung mit textur-Qualität.
Wenn Sie nicht gehen zu verrückt mit der Anzahl der sprites, obwohl, können Sie wahrscheinlich gehen mit einer höheren Qualität, und es ermöglichen, das system zu verkleinern Sie Sie bei Bedarf, um gute Ergebnisse zu erzielen.
Nein - es ist abhängig von der Nutzung und Notwendigkeit. Ideal sprite-textur Größen hängt davon ab, wie (und wie groß) Sie werden machen Sie.
okay, ich verstehe. So gibt es nicht eine "Richtige" Größe? Ich habe nur zu spielen, um und Holen, was für mich richtig ist.
Yeah 🙂 Das ist Teil des Spaßes. "Recht" ist ein balance - höhere Auflösung == mehr Flexibilität in der Qualität, auf Kosten der Ressourcen, so dass es immer eine balance, die ist eindeutig pro Anwendung.
InformationsquelleAutor Reed Copsey
Kann dies nicht direkt Ihre Frage zu beantworten, aber ich wollte zu werfen, in dem, was ich gelernt habe, bei der Verwendung von sprite-sheets. Sprite Blätter sind groß, weil die weniger Texturen, dass die GPU Umschalten zwischen als Zeichnung auf dem Bildschirm, die bessere Leistung.
Ich würde empfehlen, dass Sie werfen Sie einen Blick auf die XNA sprite sheet Beispiel, wenn Sie nicht bereits getan haben. Es bietet ein paar große Vorteile:
Automatisch packs deine sprites (in verschiedenen Dateien) in eine große textur. Ich dachte, dass meine von Bildmaterial in separaten Dateien, dass er das eine riesige sprite-sheet automatisch generiert wäre besser, als zu halten alle meine Kunst in einer Datei.
Was zum Beispiel, wenn ich entscheiden, ich will meine Animationen ein extra frame in der Mitte? Dann habe ich die Verschiebung um ein paar Sachen in der sprite-sheet, um Platz für den neuen frame. Wenn ich mit einer Datei pro frame, es ist nur eine Zeile ändern, um die XML-Datei mit der Auflistung was in das sprite-Blatt, wenn ich Sie hinzufügen möchten, ein neues Bild in der Mitte.
Es kann ein Schmerz, um die Liste jedes frame-Datei getrennt, so kann ich sehen, warum dies möglicherweise nicht für einige Leute arbeiten, aber es war toll für mein Projekt. Auch fand ich, dass der Gewinn, in der Lage, swap-Texturen in die und aus meiner sprite-Blatt leicht war es mehr als Wert, die Ihnen helfen, wie Sie bestimmen, welche Größe von sprites zu verwenden.
Liefen wir in einen problem beim skalieren von sprites. Ich glaube, der link beschreibt das Problem Recht gut. In jedem Fall wird das sprite sheet Beispiel wird automatisch ein 1-pixel-Grenze (mit der Farbe der pixel, die ursprünglich am Rande) um jedes sprite in der sprite-Blatt, das schützt Sie vor zu sehen, seltsam farbige Ränder rund um die sprites bei der Skalierung, da es immer noch nur zeichnet das sprite mit der original Größe. Es verwendet einfach die zusätzliche Grenze für die interpolation anstelle einer in der Nähe des sprite-Pixel oder ein Leerzeichen.
Reed ist richtig, dass es wirklich keinen standard-sprite-Größe, die Sie verwenden sollten. Es hängt größtenteils davon ab, welche Art von Spiel Sie machen, welche Art von Skalierung und drehen Sie Sie tun, etc. Allerdings gibt es bestimmte Größen, die Sie brauchen, um zu sehen, wenn die Verwendung von Spritesheets. Spritesheets sind nur eine riesige textur, aber es gibt ein limit, wie groß eine textur GPU ' s können halten Sie in Ihrer Erinnerung. Die XBOX360 unterstützt bis zu 4096x4096 (glaube ich) Texturen. Wenn Sie die Programmierung für Windows, dann kommt es auf die Nutzer-Grafikkarte. Von dem, was ich gesehen habe, ist es wahrscheinlich am besten stick mit einer Auflösung von 2048x2048 auf Windows, weil die meisten Grafikkarten unterstützen kann mindestens so viel.
Einen letzten Hinweis auf das sprite sheet Beispiel. Ich glaube nicht, dass es die Uhr für eine maximale sprite-Blatt-Größe, so dass, wenn Sie es verwenden, möchten Sie vielleicht fügen Sie ein paar Zeilen zu fangen, wenn die Größe der textur generieren, die größer ist als Sie wollen, zu unterstützen.
Lassen Sie uns sagen, Sie hatte einige Animationen für verschiedene Charaktere in einem Spiel. Wenn jeder sprite war 64x64 und jeder Charakter hatte 4 verschiedene Animationen mit bis zu 10 Bildern jeden. Das wäre schon 2560x64 (wenn Sie hatte Sie alle in einer Zeile). Wenn Sie hatte 32 verschiedene Zeichen, Sie könnte füllen das Blatt.
Ich zog diese zahlen aus der Luft. Es hängt wirklich davon ab, wie groß Ihr Spiel ist, wie viele verschiedene Animationen, Objekte, etc. und die Größe dieser Objekte. Wichtig ist nur zu erkennen, Sie nicht wollen, zu gehen über diese max-Größen oder-Schalter Texturen zu oft beim zeichnen mit SpriteBatch
InformationsquelleAutor Venesectrix
Shawn Hargreaves hat vor kurzem eine Reihe von blog-posts auf die textur resampling und aliasing. Siehe die oben in der Liste der Beiträge für April und die Beiträge für Kann. Das Schlüsselwort hier ist "Nyquist-Frequenz" (wikipedia).
Insbesondere nehmen Sie einen Blick auf dieser Beitrag auf textur-aliasing. Es hat nette Grafiken wie diese:
http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-70-20-metablogapi/6518.image_5F00_1B896E07.png
Die sehr, sehr kurze Antwort darauf ist dies:
Vermeiden rendering-mehr als 2x, kleiner als Ihre Quelle für die Struktur (dh: 50% des Quell-Größe oder kleiner). Wenn Sie brauchen, um zu Rendern kleiner, dann verwenden Sie mipmaps. Und wenn Sie drehen, Sie haben weniger Spielraum für die Skalierung nach unten. Vermeiden Sie die Skalierung nach oben.
Gibt es keinen Vorteil der Verwendung von power-of-two Größe von Texturen in XNA. Verwenden Sie einfach Texturen auf dein Ziel-Auflösung und lassen XNA Griff es unter der Haube.
Als Beispiel: Wenn man ein Spiel für 1080p-Auflösung, und das herunterskalieren auf 720p skaliert nach unten zu 66.66% der Größe, die ist durchaus akzeptabel.
InformationsquelleAutor Andrew Russell