native Auflösung + festes Seitenverhältnis

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

native Auflösung + festes Seitenverhältnis

Beitrag von Lebostein »

Hallo,

mein Spiel soll mit den verschiedensten Auflösungen klar kommen. Dank ZoomSprite() und relativ hochauflösenden Sprites klappt das auch ganz gut, egal ob mit 2880 × 1800 oder 1280 x 800 Pixel Bildschirmgröße.

Einziges Problem ist das Seitenverhältnis. Es soll unabhängig von der Auflösung stets 16:10 sein, schließlich sollen alle Spieler immer den selben Ausschnitt der Spielwelt sehen. Bei Auflösungen von 4:3 sollen demzufolge oben und unten und bei Auflösungen größer 16:9 links und rechts schwarze Balken zu sehen sein.

Wie könnte man das am besten anstellen? Tatsächlich mit einem schwarzen Sprite als Balken links und rechts bzw. oben und unten den Bildschirm abdecken und ein entsprechendes Offset bei DisplaySprite() angeben?

Cool wäre natürlich, wenn man bei OpenScreen noch so eine Art Viewport angeben könnte, der nur einen Ausschnitt des Bildschirmes sichtbar macht.
Zuletzt geändert von Lebostein am 26.08.2013 07:22, insgesamt 2-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: native Auflösung + festes Seitenverhältnis

Beitrag von STARGÅTE »

Lebostein hat geschrieben:Tatsächlich mit einem schwarzen Sprite als Balken links und rechts bzw. oben und unten den Bildschirm abdecken und ein entsprechendes Offset bei DisplaySprite() angeben?
Jo, erscheint mir als einfachste Möglichkeit.
Eine andere wäre ein WindowedScreen zu nehmen (welcher immer 16:10 hat) und ihn in eine maximiertes schwarzes Trägerfenster einzubetten. Die Position kannst du ja dann angeben.

Ein zusätzlichen Offset bei DisplaySprite() brauchst du aber meiner Meinung nach nicht, da die CameraPosition ja schon der Offset ist, und den kannst du ja zB direkt auf die Mitte legen, statt oben links.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: native Auflösung + festes Seitenverhältnis

Beitrag von northstarex »

bin auch grad an dem Problem hängen geblieben... Gibt es den keinen Befehl für "Aspect Ratio/Seitenverhältnis einhalten" oder so?

Ich schraube hier an ein Eingabemenü für einen Spielautomaten, da ist zwar eine 4:3 Röhre drin, aber wenn da ein 16:9 Screen(oder schlimmeres) drin wäre, würde die 800x600 Auflösung doch sehr "breit" aussehen.


Bissel unschön, oder?
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: native Auflösung + festes Seitenverhältnis

Beitrag von STARGÅTE »

Da gibt es kein "Befehl", dass ist n Knopf auf deinem Bildschirm, wie er Auflösungen behandeln soll:
Voll, Seitenverhältnis beibehalten, Zentrieren
ggf. auch in den Grafikkartentreibern einstellbar: GPU-Skalierung

Denn wenn du einen 800x600 FullScreen auf einem nativem 1920x1080 Bildschirm öffnest, dann hängt es von deinem Bildschirm ab, wie es am ende aussieht.
Ansonsten gibt immer noch den WindowedScreen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: native Auflösung + festes Seitenverhältnis

Beitrag von PMV »

Der einzige Grund für ein "echtes" Fullscreen (OpenScreen()) anstelle
vom Fenster ist der "exclusiv" Modus. Das heißt die tastache, das
die Grafikkarte tatsächlich nur das Spiel rendern muss und nicht das
ganze sich mit anderen Fenstern teilt (Multimonitor natürlich abgesehen).
Bei den meisten 2D-Spielen ist das aber eh irrelevant, weshalb ich
persönlich mir dann den WindowedScreen in jedem Fall bevorzugen
würde. PB hat probleme mit dem Fullscreen, weshalb Fred nun AreoGlass
bzw DWM abschaltet, wenn Fullscreen aktiviert ist. Was ziemlich
unschön wirkt, zumindest ich hab schon seit Jahren kein Spiel mehr
gehabt, dass das machen musste. Fällt aber auch nur bei Usern auf,
die mehrere Monitore haben. Beim WindowedScreen nicht notwendig.
Außerdem gibt es nach wie vor das Problem beim minimieren des
Fullscreens. Wobei letzteres wohl inzwischen nur noch beim aktivieren
von Multi-Threading der Fall ist. /:->

Da ich allerdings die 3D-Eninge verwende und nur dort FSAA vorhanden ist,
hab ich bisher abgesehen, mir eine kleine Include zu schreiben. Der exklusiv
Modus ist denke ich schon vorteilhaft bei 3D ... Aber der simulierte
Vollbildmodus wäre gar nicht so viel Aufwand, zumindest für Windows
kann man per WinAPI die Auflösung des Desktopmonitors beliebig einstellen.
Darauf dann ein Rahmenloses Fenster + WindowedScreen und der Benutzer
merkt garnicht, das es nur ein Fenster ist. Mit IsScreenActive() kann man
leicht raus finden, ob das Fenster noch den Focus hat und entsprechend
agieren. Es müssen auch keine Grafiken neu geladen werden, nachdem der
Screen mal nicht den Fokus hatte. <)

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: native Auflösung + festes Seitenverhältnis

Beitrag von northstarex »

ja... so ist das mit den fullscreen. Egal, ist mir eben nur so aufgefallen, weil ich eben mein Programm aufn 16:9 schlepptop bearbeitet hatte^^

bis denne...
north
Bild
Antworten