Auflösung nachträglich anpassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Auflösung nachträglich anpassen

    Hallo zusammen,

    ich komme gerade schon wieder an meine Grenzen.
    Eingentlich ganz einfach, ich möchte gern zwischen zwei Auflösungen 800x600 und 1280x720 hin und her schalten können.
    Bis jetzt ist alles in 800x600 gehalten.

    Allerdings möchte ich sowohl Raumgröße wie auch view dabei anpassen und nicht meine Sprits und co. mit der größeren Auflösung skalieren.
    ich möchte quasi einfach mehr Platz in meinem Raum haben.

    Irgendwie bekomm ichs nicht hin.
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Was genau bekommst du nicht hin?
    Du kannst doch die room_width bzw. Height, sowie view_wview bzw. hview ändern.
    Die Objekte musst du dann relativ am Raum anpassen also mit Prozenten arbeiten.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ok also ich folgendes Problem.
    Wenn ich ich meinen Raum in den Raumeinstellungen verändere. Dann sieht das so aus wie es aussehen soll:

    bilder-upload.eu/show.php?file=4a0b0a-1515071557.png

    Für ändere ich die größe meines Raumes und passe die Views und den Port on Screen an.
    So sollte das erstmal aus aussehen.

    Wenn ich das jetzt per gml versuche kommt das dabei raus:
    bilder-upload.eu/show.php?file=87de29-1515071141.png


    Das Fenster wird zwar vergrößert aber sowohl Raum als auch der View bleiben gleich.
    Spoiler anzeigen

    Quellcode

    1. //Vergrößert das Fenster
    2. window_set_size(1280,720)
    3. //Vergrößert den Raum
    4. room_set_width(menu_0,1280)
    5. room_set_height(menu_0,720)
    6. //Vergrößert den view
    7. view_wview[0]=1280
    8. view_hview[0]=720
    9. view_wport[0]=1280
    10. view_hport[0]=720
    11. room_restart()
    Alles anzeigen

    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Ich kann mir denken, dass das room_restart deinen view zurück setzt.
    Soweit ich weiß reicht es, wenn du room_width und height änderst. Dann musst du den Raum nicht neu starten.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Hast du die Links vertauscht in der Reihenfolge?
    Nach den Screenshots sieht es bei mir nämlich auf dem zweiten aus wie ichs erwarten würde, und auf dem ersten nicht.

    Abgesehen davon, ist dein Problem doch recht logisch, weil sich die Koordinaten der einzelnen Objekte bzw die Koordinaten in den Draw Events nicht ändern.

    Wenn sich alles automatisch einfach so skalieren soll, musst du den Port gleich lassen und nur die View ändern. Dann wird reingezoomt.
    Aspect Ratio on the fly ändern ist extrem hässlich und mit einigem Aufwand verbunden.

    edit:
    Falls du dir den Aufwand antun willst, und dein Englisch gut genug ist, könntest du dir folgendes Tutorial anschaun:
    klick

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Stahlwolf ()

  • Ich werds mir morgen gleich mal anschauen vielen Dank.
    Die Bilder sind nicht vertauscht. Das ist schon so wie gedacht:D

    Mein Ziel ist es ja das nicht Reingezoomt wird, sondern das der angezeigte Bereich größer wird. Ohne irgend einen Zoom.

    Ich möchte den dargestellten Bereich quasi einfach erweitern:)
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Ok, dann macht das mit den Screenshots auch Sinn.

    Bei gleicher Aspect Ratio, müsstest du auch einfach nur den Port vergrößern können. Dann müsste eigentlich raus gezoomt werden.

    Was du probieren könntest:
    stell es in GM direkt auf die "erweiterte" Version. Dann scheint es ja zu funktionieren wie das soll.
    Und dann änderst du nur die Windows size beim Start auf die kleinere Auflösung. Dann sollte der Bereich eigentlich einfach abgeschnitten werden.
    Kannst du ja direkt ins Creation Event vom ersten Room packen, dann sollte man davon gar nichts mitkriegen.

    Falls du Größenänderung vom Fenster erlaubst, müsstest du dann natürlich noch schwarze Balken o.Ä. über den Bereich legen, den man noch nicht sehen dürfen soll.

    Edit:
    Hab's getestet. Funktioniert.

    800x600
    puu.sh/yXmC2/629ecbaa7f.png
    1280x720
    puu.sh/yXmDm/67e8efc584.png

    In den Globalen Einstellungen muss man noch unter Windows -> Graphics -> Scaling von "keep aspect ratio" auf "full scale" umstellen. Sonst hast du oben und unten schwarze Balken.

    Hier habe ich noch ein ein GM:S 1.4 Beispiel-Projekt hochgeladen:
    Download

    GM 8 Pro habe ich leider nicht zum testen da gehabt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Stahlwolf ()

  • Also erstmal viel Dank für die Antwort, aber so richtig will ich damit noch nicht zurechtkommen.
    Ich verstehe was du mir da gebastelt hat, aber im Gm8 will das noch nicht so wie ich will.

    Ich hab das auch alles einzeln versucht.
    - der Raum lässt sich ohne weiteres vergrößern,
    - das Fenster lässt sich ohne Probleme vergrößern
    - dann lässt sich der View sogar vergrößern und dann sieht es auch schon fast so aus wie auf meinem ersten Bild.
    - Aber sobald ich an den Port rangehe. Skalliert er es wieder hoch (Bild 2).

    beim umstellen auf full scale sind am Ende zwar die Balken weg. Allerdings wird alles einfach nur gestreckt.
    Irgendwie sehe ich gerade den Wald vor lauter Bäumen nicht
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Stahlwolf schrieb:

    Ok, dann macht das mit den Screenshots auch Sinn.

    Bei gleicher Aspect Ratio, müsstest du auch einfach nur den Port vergrößern können. Dann müsste eigentlich raus gezoomt werden.

    Was du probieren könntest:
    stell es in GM direkt auf die "erweiterte" Version. Dann scheint es ja zu funktionieren wie das soll.
    Und dann änderst du nur die Windows size beim Start auf die kleinere Auflösung. Dann sollte der Bereich eigentlich einfach abgeschnitten werden.
    Kannst du ja direkt ins Creation Event vom ersten Room packen, dann sollte man davon gar nichts mitkriegen.

    Falls du Größenänderung vom Fenster erlaubst, müsstest du dann natürlich noch schwarze Balken o.Ä. über den Bereich legen, den man noch nicht sehen dürfen soll.

    Edit:
    Hab's getestet. Funktioniert.

    800x600
    puu.sh/yXmC2/629ecbaa7f.png
    1280x720
    puu.sh/yXmDm/67e8efc584.png

    In den Globalen Einstellungen muss man noch unter Windows -> Graphics -> Scaling von "keep aspect ratio" auf "full scale" umstellen. Sonst hast du oben und unten schwarze Balken.

    Hier habe ich noch ein ein GM:S 1.4 Beispiel-Projekt hochgeladen:
    Download

    GM 8 Pro habe ich leider nicht zum testen da gehabt.



    Wenn ich ein mal reingrätschen dürfte.... wie löst ihr das den mit den Sprites? erstellt ihr die in hoher Auslösung und skalieren die dann runter?
  • In meinem Fall würden bis auf eine Menübar am oberen Rand alles so bleiben wie es ist.
    Die Hintergründe ggf. noch etwas skallieren bis die Höhe passt.

    Da mein Spiel (außerhalb von Menüs) auf einem 50x50 Pixel basiert und ein Raum min. 1200x1200 Pixel groß ist, wäre am Ende einfach mehr zu sehen. Das ist zumindest der Plan.
    Aus diesem Grund würde ich den Zoom beim verändern der Auflösung auch gern vermeiden
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • @DevFerox du musst dort, wo du auch den haken setzt bei start game in fullscreen mode, auch interpolation deaktivieren.
    oder so im code:

    GML-Quellcode

    1. ​texture_set_interpolation(false);

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • @Prayer90

    Was passiert denn ohne Full Scale? Ist es dann korrekt, nur halt + balken, oder auch gestreckt?
    Hast du mal versucht die Room Size ebenfalls zu ändern?

    Wenn das Bild dann gestreckt ist, muss er ja irgendwo noch die alten Auflösungen mit der alten Aspect Ratio haben.
    Neben Window, View und Port fiele mir da nur noch der Room ein.

    @DevFerox / AkuRyou
    Kommt darauf an, was man mit "verpixelt" meint. Gerade ohne Interpolation, sieht es dann herein gezoomt natürlich pixeliger aus. Wenn man den Pixelart Look mag, dann ist Aku_Ryous ansatz der richtige.
    Ansonsten müsste man dann genau den entgegensetzten Ansatz nehmen. Sprites in einer höheren Auflösung erstellen, Interpolation anschalten und dann raus zoomen.

    Andersrum ist aber definitiv einfacher. Wenn man dann eine Minimale Auflösung festlegt und alle anderen Zoom-Stufen darauf aufbaut, als Vielfache davon, ist gewährleistet, dass es wirklich immer exakt gleich aussieht.
  • @Stahlwolf

    Bin im Prinzip wie folgt vorgegangen
    -Raumgröße angepasst
    -Window angepasst
    -View angepasst
    -view Port angepasst

    nochmal zum Vergleich erstens Bild oben, konnte ich damit bis zum dritten Schritt fast erzeugen.
    Nur sobald ich den Port auf 1280x720 ändere zoomt er mir den View wieder so wie ich ihn nicht haben will und zieht alles breit.

    Ich habe beschlossen das Thema jetzt anders anzugehen.
    Dadurch das ich meine Level alle samt generiere habe ich nicht wirklich viele Räume.
    Ich werde für meine Menüs einfach noch einen zweiten Raum im 16:9 Format aufbauen und meine Raumbergänge so gestallten das einfach
    die entsprechende Auflösung ausgewählt wird.
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Darf ich mich hier mal mit einklinken?

    Ich komm hier auch nicht wirklich klar.
    Die Roomsettings sind 1024*768
    view x und y sind 640*480
    und die Ports genauso mit 640*480

    Soweit ist mir alles klar.
    Nun habe ich ein Objekt erstellt wo ein Create Event enthält.
    Hier ist:

    Quellcode

    1. h = window_get_height()
    2. w = window_get_width()
    3. window_set_size(w,h);
    4. view_wport[0]=w;
    5. view_hport[0]=h;

    eingetragen.
    Mit window_get_.... erhalte ich ja die Bildschirmauflösung.
    Das speicher ich in die Variablen h und w.
    Soweit ist alles iO.

    Aber das Gamefenster bleibt in der grösse wo im Room eingetragen ist.
    Sollte das sich nicht, bei mir ist die Auflösung auf 1920*1080, das Gamefenster auf meine Bildschirmauflösung einstellen und dementsprechent der Inhalt gezoomt werden?

    Hier das als Video
  • Was passiert denn, wenn du das create event oben nicht ausführst?
    Ich kann mir vorstellen, dass das window im create irgendwie noch größer ist.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe