Seitenverhältnis (4:3/16:9) und Skalierung

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: Seitenverhältnis (4:3/16:9) und Skalierung

BeitragDi, Dez 15, 2009 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Spiel arbeitet mit einer festen Auflösung von 640x480. Das ist so gewollt da es eh einen Retro-Look hat.
Auf meinem Mac, der einen Widescreen hat, wird beim Wechsel zu 640x480 automatisch "alles richtig" gemacht. Ich habe rechts uns links schwarze Balken, also keine Verzerrung.
Da ich das Programm aber auch Windows und Linux Benutzern zur Verfügung stellen möchte ergibt sich jetzt natürlich das Problem, dass es auf anderen Rechnern nicht so einfach funktionieren wird. Im schlimmsten Fall wird die Auflösung breitgezogen, was dann nicht sehr schön aussieht.
Wie löst ihr dieses Problem? Skaliert ihr manuell, zeichnet ihr alles einfach mittig auf den Bildschirm oder funktionieren eure Spiele in beiden Auflösungen mit Vollbild?
Eine Frage die sich daraus ergibt: Was ist besser, kleine Auflösung belassen, also ggf nur das Seitenverhältnis anpassen oder hochskalieren, also der Benutzer darf die Auflösung wählen und das Programm sorgt auch dafür, dass alles wunderbar aussieht (SetVirtualResolution oder wie auch immer). Eine größere Auflösung macht allein von der Spielmechanik in diesem Fall aber auch keinen Sinn. Das Problem der Verzerrung von 4:3->16:9 bleibt beim Benutzen von SetVirtualResolution ja leider.
Würde mich freuen wenn ihr ein paar Anregungen hättet.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Midimaster

BeitragDi, Dez 15, 2009 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich biete meinen Usern immer an zwischen 4:3 (1024x768) oder 16:9 (1360x768) am Anfang des Spiels zu wählen.

Wählt der User ein Breitformat, entscheide ich je nach Spiel. Manchmal zentriere ich das Spiel und biete nur eine breitere Hintergrundgrafik.

Manchmal nutze ich die Breite noch für das Spiel:

z.B. Auswahlbuttons unten oder AuswahlButtons links, etc

Goodjee

BeitragDi, Dez 15, 2009 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
verleg doch einfach den origin je nach seitenverhältnis ein bissl weiter nach rechts, kombinier das für die skalierung mit virtualresolution und mal danach links und rechts nen schwarzes rechteck je nach seitenverhältniss
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Farbfinsternis

BeitragDi, Dez 15, 2009 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du 16:9 einplanst musst Du bei einem 2D Game alle Grafiken in diesem Format anlegen und damit leben dass die User anderer Formate Balken zu sehen bekommen. Ansonsten hilft nur das anlegen zweier Grafiksets.
Farbfinsternis.tv

Ratchet

BeitragMi, Dez 16, 2009 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein zweites Grafikset ist auf jeden Fall zu aufwändig. Ich denke ich muss einfach mal die Varianten testen. Am liebsten wäre mir ja das hochskalieren, nur mit schwarzen Balken links und rechts im Breitbild.
Allerdings wurde bei meinem Test das gesamte Bild wieder breitgezogen:

Richtige Auflösung 1920x1080
Virtuelle Auflösung: 640:480

Es wird zwar automatisch hochskaliert, aber eben ohne die gewünschten Balken an der Seite. Bekommt man das nicht irgendwie hin?
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Midimaster

BeitragMi, Dez 16, 2009 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
wie meinst Du das "hochgezogen"?. War Dein Graphics-Befehl...
Code: [AUSKLAPPEN]
Graphics 1920,1080,24,60


oder...
Code: [AUSKLAPPEN]
Graphics 640,480,24,60

...?


Um die Balken links und rechts zu bekommen, solltest Du auch eine "breite" Auflösung wählen.
Code: [AUSKLAPPEN]
Graphics 1360,768,24,0
Origin (1360-640)/2, (768-480)/2

D2006

Administrator

BeitragMi, Dez 16, 2009 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe die virtuellen Auflösungen noch nich ausprobiert, aber nachdem, was ich so gelesen habe, sind die Dinger recht witzlos. Sie ignorieren nämlich das Seitenverhältnis. Rolling Eyes

Du wirst also nicht umhin kommen, dir eine solche Funktionalität selbst zu schreiben. Mit SetOrigin kannst du wie von Midimaster angedeutet dafür sorgen, dass das Bild in der Mitte ist. Dann musst du die Skalierung so anpassen, dass es korrekt angezeigt wird. Sobald beide Parameter für SetScale gleich bleiben, wird nix verzerrt. Blöd wird's, wenn du im Spiel selbst auch SetScale benutzt, denn dann musst du bei jedem Aufruf nochmal die "globale" Skalierung multiplizieren. Ebenso darfst du beim umrechnen von Positionen zu Bildschirmkoordinaten und natürlich bei der Umrechnung von Maus- zu Spielkoordinaten die Skalierung nicht vergessen.

Oh, und über 16:9 allein würde ich mir keine Gedanken machen. Das ist noch gar nich so sehr verbreitet bei Monitoren. Sehr verbreitet hingegen ist 5:4 (z.B. 1280x1024). Dann gibt's auch noch 16:10 (z.B. 1280x800). Und dein Ausgangsformat 4:3 natürlich, was allerdings sogar an Bedeutung verliert.

Und am Ende darfst du dich fragen, zu welchem Preis du dir so viel Mühe gibst. Smile Ein 640x480 Spiel hochskaliert auf z.B. 1280x960 wird ziemlich kacke aussehen. Zumindest schonmal sichtbar verschwommen. Ist halt alles ein wenig tricky. Wink
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Midimaster

BeitragMi, Dez 16, 2009 10:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, nutzt Du schon die virtuelle Auflösung des neuen 1.36?

Dann müsstest Du wahrscheinlich für die virtuelle Auflösung so etwas vorgeben wie 848x480 pixel

Code: [AUSKLAPPEN]
Graphics 1920, 1080
SetVirtualResolution 848, 480
 

Pitje Puck

BeitragMi, Dez 16, 2009 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es mit einem Fenster Very Happy
Ich löse dein Problem in B3d immer folgendermaßen (vielleicht etwas umständlich):
Jede Grafik wird immer von der Mitte positioniert. Zusätzlich wird jede Position mit einem Screenfaktor multipliziert und jede Grafik ebenso skaliert. Den Screenfaktor errechnet sich von dem Idealseitenverhältnis der Grafiken. Das Idealverhältnis ist meistens 1024/756. Der Screenfaktor ist immer die Höhe/756. Im Ideal also 1. Jetzt kann man das Programm in jeder noch so abnormen Größe starten, es sieht immer gleich aus und hat dann halt schwarze Balken.
Wenn jemand ne komfortablere Lösung hat, würde ich die auch gern hören.

Nicdel

BeitragMi, Dez 16, 2009 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich ist die Standardauflösung ja 1024x768 und nicht 1024x756 Wink
Ich mache es in BlitzMax so, dass ich mit der DesktopExtension von Chaos Interactive das Bildschirmverhältnis hole und gegebenenfalls in die Mitte zeichne.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Ratchet

BeitragMi, Dez 16, 2009 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu euren vielen Ideen ist mir selber noch eine weitere eingefallen:
Ich benutze eh schon GrabImage um die ganze Spielszene spiegelverkehrt zu zeichnen. Dachte erst das geht in die Hose weil GrabImage glaube ich nicht das schnellste ist, aber es funktioniert. Also könnte ich ja auch einfach immer GrabImage benutzen und das Bild dann an die Höhe der gewählten Auflösung anpassen und die Breite im Aspekt dazu berechnen. Das ganze mittig gezeichnet - fertig.
Wie denkt ihr darüber? Ist GrabImage wirklich so langsam wie ich denke? Wie gesagt arbeite ich schon damit (jeden Hauptschleifen-Durchlauf GrabImage um dann alles spiegelverkehrt zu zeichen; konnte noch keine Probleme feststellen).
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Arrangemonk

BeitragMi, Dez 16, 2009 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ob das bild gestreckt wird oder nicht sagt die bildschirmfirmware /bios am laptop

jeder user kann das selber einstellen
ingeneur

Midimaster

BeitragMi, Dez 16, 2009 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Mich würde echt interessieren, was passiert, wenn Du die virtuelle Auflösung auf meine vorgeschlagenen 848x480 pixel veränderst. Ich kann es ja leider nicht ausprobieren, weil ich noch keine 1.36 installiert habe (sicherheit geht vor)

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group