Verzerrte Auflösung ab Game Maker:Studio v.1.3.1307

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

  • Verzerrte Auflösung ab Game Maker:Studio v.1.3.1307

    Hey! :)

    Ich arbeite derzeit an einer eigenen Version von dem Spiel "Minesweeper" und bin allerdings auf ein Problem gestoßen, das ich zu lösen leider nicht in der Lage bin.

    Ich habe das Projekt mit der Game Maker:Studio Version 1.2.1279 angefangen und es hat auch alles super funktioniert. Als ich dann aber vor einigen Tagen das Projekt wieder einmal ausgegraben habe und Game Maker:Studio auf eine neuere Version aktualisiert habe, erscheint das Spiel die ganze Zeit irgendwie verzerrt (siehe Anhang). Ich habe dann die ganzen Game Maker:Studio Version ausprobiert und festgestellt, dass der Fehler ab GM:S v.1.3 auftritt - davor allerdings gar nicht.

    Ich lasse mein Spiel im Fullscreen-Modus laufen, da ich Räume und Views verwende, die meist größer als der Bildschirm sind und die so normalerweise richtig skaliert werden, ohne das ich etwas anderes machen muss.
    Ich setzte die Raumgröße vor betreten des Raumes auf die gewünschte Größe (in dem Beispiel vom Anhang wäre das 1408x1408) und setzte dann mit der Funktion window_set_size() die Breite und Höhe des Fensters fest, welche immer genau der Größe des Raumes entsprechen sollten. Ich habe in den Global Game Settings "Keep ratio" ausgewählt. Aber ab der GM:S v.1.3 Version funktioniert das aus irgendeinem Grund nicht mehr und die Größe des Fensters passt nicht mehr, sondern ist verzerrt.
    Zwar habe ich in den Release-Notes von GM:S Version 1.3.1307 schon eine Funktion (application_surface) gefunden, die möglicherweise etwas mit meinem Problem zu tun haben könnte, allerdings blick ich überhaupt nicht durch, was diese Funktion macht, ob sie überhaupt der Grund für mein Problem ist und wie ich das Problem lösen könnte...

    Ich hoffe sehr, dass ihr mir helfen könnt, weil ich bin gerade echt ein wenig am verzweifeln!

    MfG NONO120.
    Bilder
    • v1.2.png

      67,39 kB, 1.600×900, 287 mal angesehen
    • v1.3.png

      98,71 kB, 1.600×900, 277 mal angesehen
  • application_surface ist für "sürfaces" nicht für die Auflösung
    Ich verstehe dein Problem irgendwie leider nicht 100%ig und auch nicht wieso du window_set_size() benutzen willst.
    Aber wieso lässt du die raumgröße nicht komplett unabhängig von deiner Auflösung, und benutzt views, die raumgröße
    ist doch nur eine raumgröße und wenn du versucht die ohne view dar zustellen so wird der raum quasi dein view,
    und wenn verschiedene Räume verschiedene views haben sieht das schonmal komisch aus da das Spiel dann auf
    dem Bildschirm versucht verschiedene w*h resolutions abzubilden. Benutz am besten immer views/auflösungen
    die Deckungsgleich sind, sonst wird die Bildwiedergabe gestrecht oder pixel werden übergangen, besonders wenn
    du versuchst auf deinen 1440*900 Bildschirm einen Raum/view von 960*789 zu stretchen, das funktioniert nicht
    ohne verlust :)
    Hilft dir das irgendwie oder verstehe ich dein Problem falsch :0 ? Also lass dein Raum so und mach einen View der sich
    gut stretchen lässt oder gar einem Bildschirmstandard entspricht (1440*900)
  • Danke für die Antwort! :D

    Ich habe den Code jetzt mal ein wenig umgeändert und mich ein bisschen mit den ganzen Funktionen gespielt und auch nochmal in den GM:S Release-Notes nachgelesen.
    Der Fehler lag scheinbar darin, dass die Funktion window_set_size() nicht mehr ganz so funktioniert wie früher...
    Hab das jetzt so gelöst, dass ich einfach statt window_set_size() die Funktion surface_resize(application_surface, view_wview[0], view_hview[0]) verwende.

    Ich weiß zwar nicht ganz genau, warum und wieso - aber jetzt funktioniert es!!! :D

    LG NONO120.
  • Die application_surface gabs quasi schon immer, wurde aber erst in der neuen Version freigegeben. Die ist quasi das "fertige Bild" was dann auf dem Screen zu sehen ist. Hatte auch in meinem großen Projekt elendig lange Probleme mit Skalierungen und will hier mal nicht so sein und einen meiner Goldschätze rausgeben :D

    GML-Quellcode

    1. ///magic_scale(view, zoom) by Rhazul
    2. if ( view_wview[ argument0 ] != window_get_width() or view_hview[ argument0 ] != window_get_height() ) {
    3. var ww = window_get_width();
    4. var hh = window_get_height();
    5. var xx = window_get_x();
    6. var yy = window_get_y();
    7. display_reset( 0 , true);
    8. window_set_rectangle( xx , yy , ww , hh );
    9. surface_resize( application_surface , ww , hh )
    10. view_wview[argument0] = ww/argument1;
    11. view_hview[argument0] = hh/argument1;
    12. view_wport[argument0] = ww;
    13. view_hport[argument0] = hh;
    14. display_set_gui_size( ww , hh );
    15. }
    Alles anzeigen


    Hoffe du weißt was das Teil wert ist ^^
    rufst du dann zB. einfach im room creation event wie folgt auf :

    GML-Quellcode

    1. magic_scale(view_current,1);
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: