Erstellen eines Spiels für Telefone mit unterschiedlicher Auflösung

7

Ich beginne einige Tests zum Erstellen eines Spiels mit dem Android-Programm. Bisher funktioniert alles und scheint nett zu sein.

Ich verstehe jedoch nicht, wie ich sicherstellen kann, dass mein Spiel auf allen Handys korrekt aussieht, da alle leicht unterschiedliche Bildschirmverhältnisse haben (und auf einigen ungeraden Handys sogar sehr unterschiedlich).

Was ich gerade mache, ist ein Ansichtsstumpf (könnte auch ortho sein), den ich so eingestellt habe, dass er vom Verhältnis -verhältnis zu + wechselt (wie ich in vielen Beispielen gesehen habe). Dies führt jedoch dazu, dass meine Testform gedehnt und manchmal abgeschnitten wird am Rand des Bildschirms.

Ich neige mein Telefon in den Querformat, um meine Tests durchzuführen (etwas extrem), aber es sollte trotzdem korrekt gerendert werden, wenn ich die Dinge richtig gemacht habe.

Sollte ich vor dem Zeichnen um ein bestimmtes Verhältnis skalieren oder so?

Ein Beispiel wäre sehr dankbar.

PS. Ich mache ein 2D-Spiel.

Jason
quelle

Antworten:

4

Aus einer übergeordneten Perspektive gibt es nur eine Handvoll Optionen, je nachdem, welche wichtiger sind, ein konsistentes Seitenverhältnis beizubehalten oder sicherzustellen, dass niemand mehr sieht als jemand anderes, nur weil er einen breiteren oder größeren Bildschirm hat.

Ihre Optionen sind:

  1. Beschneiden der Teile, die nicht passen.
  2. Dehnen Sie den Bildschirm passend, was das Problem mit gestreckten Bildern darstellt.
  3. " Letterboxing ", das beide Seitenverhältnisse beibehält und sicherstellt, dass kein Spieler aufgrund seiner Bildschirmgröße mehr sieht als jeder andere Spieler.
Davy8
quelle
Vielen Dank. Es macht mir nichts aus zu beschneiden. Können Sie mir einen Ausgangspunkt dafür geben? (in Bezug auf die Projektion auf die Leinwand)
Jason
@Jason Ich bin noch ziemlich neu in der Spieleentwicklung und die wenigen Spiele, die ich gemacht habe, mussten sich nicht damit befassen, daher kann ich keine nützlichen Implementierungshinweise zum Rendern geben, aber die allgemeine Idee ist, dass Sie entweder eine haben Rendering-Engine, die sich nicht darum kümmert, wie groß der Bildschirm ist (dh etwas, in dem Sie sich immer in einer Art "vergrößerter" Ansicht befinden, in der Sie nur einen Teil einer Karte sehen) oder Sie haben eine "native" Bildschirmgröße, die Sie ' Wenn Sie darauf basieren, verkleinern oder vergrößern Sie dies, sodass Sie keinen freien Platz auf dem Bildschirm haben, das Seitenverhältnis beibehalten und zentriert halten (stellen Sie sicher, dass keine wichtigen Informationen abgeschnitten werden)
Davy8
3

Die 3 Optionen aus Davy8s Antwort sind:

  • Beschneiden der Teile, die nicht passen.
  • Dehnen Sie den Bildschirm passend, was das Problem mit gestreckten Bildern darstellt.
  • "Letterboxing", das beide Seitenverhältnisse beibehält und sicherstellt, dass kein Spieler aufgrund seiner Bildschirmgröße mehr als jeder andere Spieler sieht

Ich würde eine vierte Option hinzufügen, die mein bevorzugter Ansatz ist. Es ist wirklich eine Variation des Briefkastens; traditionelles Letterboxing füllt den zusätzlichen Raum mit Schwarz, während dieser Ansatz den zusätzlichen Raum mit zusätzlichen Grafiken ausfüllt. Sie können einfach die Hintergrundfarbe / das Hintergrundbild erweitern und möglicherweise ein zusätzliches Logo anzeigen.

Eine andere Möglichkeit, darüber nachzudenken, besteht darin, dass ich immer den Bildschirm für jedes Display beschneide und das gesamte Display absichtlich so gestaltet ist, dass es größer ist als alle mobilen Displays / Seitenverhältnisse. Somit gibt es immer zusätzliche Grafiken, um den Briefkastenbereich auszufüllen.

Abhängig von der Art Ihres Spiels (dh würde diese Änderung bestimmten Spielern einen unfairen Vorteil verschaffen?) Und dem Design Ihrer Benutzeroberfläche können Sie sogar einige Elemente der Benutzeroberfläche verschieben, um den zusätzlichen Platz zu füllen. Stellen Sie sich das wie ein flüssiges Website-Design vor, bei dem das richtige Menü rechts bleibt, egal wie breit das Fenster ist.

jhocking
quelle
Die vierte Option, die Sie erwähnen, ist die genaue Methode, die ich in meinen Spielen verwende. Es erfordert ein wenig Berechnung, um es richtig zu machen, wenn Sie "hochskalierte" pixelgenaue Grafiken erstellen (dh den Spielbereich bei höheren Auflösungen zoomen), aber wenn es richtig gemacht wird, sieht es unabhängig von der Auflösung und / oder dem Seitenverhältnis wirklich gut aus .
Goshki
Ich bevorzuge auch deine 4. Methode. Für Android-Handys verwende ich die folgenden Richtlinien: bigosaur.com/blog/31-android-resolutions-definite-answer
Milan Babuškov
0

Das Verhältnis, auf das Sie sich beziehen, wird als "Seitenverhältnis" bezeichnet. Es wird normalerweise als "Breite / Höhe" berechnet (obwohl, wenn Sie Ihr Ansichtsfenster anders angeordnet haben, dies "Höhe / Breite" sein könnte)

Denken Sie daran, den Teiler in einen Schwimmer zu werfen!

float aspect_ratio = width / (float) height;

HTH

Luther
quelle
1
Danke, aber das war nicht meine Frage. Ich bin mir bewusst, dass ich durch diese Aufteilung das unterschiedliche Seitenverhältnis erhalten kann. Meine Frage ist, wie ich es verwende, um richtig zu rendern.
Jason