Ich versuche herauszufinden, wie ich ein 2D-Spiel mit jeder Auflösung am besten rendern kann.
Ich rendere das Spiel derzeit mit 1920x1200. Ich versuche, das Spiel auf eine vom Benutzer ausgewählte Auflösung zu skalieren, ohne die Art und Weise, wie ich rendere, oder die Spielelogik zu ändern.
Was ist der beste Weg, um ein Spiel auf eine beliebige Auflösung zu skalieren?
Edit: Ich versuche dies zu erreichen:
http://www.david-amador.com/2010/03/xna-2d-independent-resolution-rendering/
Aber ich denke, der Code, den er hat, ist für eine andere Version von XNA, weil ich die von ihm verwendete Methodenüberladung nicht finden kann.
2d
xna-4.0
resolution
AttackingHobo
quelle
quelle
Antworten:
Bearbeiten:
Sie suchen nach dem SpriteBatch.Draw-Aufruf (Texture2D, Rectangle, Color) . Das Rechteck repräsentiert das skalierte Zeichenziel auf dem Bildschirm.
Ich gehe hier davon aus, dass Sie kein Rasterlayout verwenden - wurde in der Frage nicht angegeben, daher gehe ich davon aus, dass Assets an einem beliebigen Pixel anstatt in einem festgelegten Raster gezeichnet werden können.
Entscheiden Sie zuerst, was eine "native" Auflösung sein soll. Wahrscheinlich nur die Höhe, aber verschiedene Monitore haben unterschiedliche Seitenverhältnisse, so dass dies berücksichtigt werden muss. Wählen wir 1200 als native Höhe. Alle Skalierungen basieren auf dieser Zahl.
Angenommen, ich starte das Spiel auf meinem Fernseher mit nur 720p - 60% der Höhe. Alle Einheitskoordinaten und die Rechteckgrößen sollten dann mit 0,6 multipliziert werden. Eine hypothetische Ork-Einheit ist 20 Pixel groß und befindet sich bei (50,45) unter nativer Auflösung. Zum Zeitpunkt des Zeichnens würde das Zielrechteck 12 Pixel hoch und mit (30, 27) gezeichnet.
Wo genau Sie in der Skalierung rechnen, kann ein Problem sein. Sie können das Spiel vollständig so ausführen, als ob es mit nativer Auflösung ausgeführt würde. Dies würde keine zusätzliche Skalierung bei Entfernungsberechnungen, Animationsgeschwindigkeit und Interpolation usw. bedeuten. Führen Sie die Skalierung dann nur zum Zeitpunkt der Zeichnung oder mit Treffer-Tests durch Mausklicks. Wenn Sie alles skalieren möchten, müssen Sie diese Skalierung nur für alle Systeme weltweit zugänglich machen und daran denken, dies zu berücksichtigen.
Hoffe das beantwortet deine Frage besser.
quelle