Verschiedene Bildschirmauflösungen

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

  • Verschiedene Bildschirmauflösungen

    Hallo,
    ich experimentiere gerade ein bisschen und stehe vor einem Problem. Ich versuche mehrere Fensterauflösungen hinzukriegen, woran ich aber scheitere. Ich habe mir überlegt einfach die Größe des Fensters und des Views zu ändern, damit alle Objekte zwar nicht skaliert werden, aber man sozusagen mehr von dem Raum sieht. Das ganze soll natürlich möglich sein, ohne den Raum neuzustarten.
    Wenn ich allerdings den unteren Code verwende, dann wird die Größe des Fensters wie gewollt verändert. Die Objekte und deren Sprites werden allerdings skaliert, was ich nicht möchte. Was mache ich falsch?

    GML-Quellcode

    1. ​if (res == 1) {
    2. view_wview[0] = 1280;
    3. view_hview[0] = 720;
    4. view_wport[0] = 1280;
    5. view_hport[0] = 720;
    6. window_set_size(1280,720);
    7. res = 0;
    8. }
    9. else {
    10. view_wview[0] = 640;
    11. view_hview[0] = 480;
    12. view_wport[0] = 640;
    13. view_hport[0] = 480;
    14. window_set_size(640,480);
    15. res = 1;
    16. }
    Alles anzeigen
    Grüße Stupe
  • Na mal anbgesehen davon das dein Code das Fenster 30x mal pro Sekunde ständig größer und kleiner skaliert.

    Vielleicht solltest du erst das Fenster anpassen und anschließen den View und Port


    GML-Quellcode

    1. ...
    2. else {
    3. window_set_size(640,480);
    4. view_wview[0] = 640;
    5. view_hview[0] = 480;
    6. view_wport[0] = 640;
    7. view_hport[0] = 480;
    8. res = 1;
    9. }




    Wäre so meine Idee

    Grüßle Blayde

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

  • Keine Sorge, das ist nicht das Step-Event, also nicht 30 mal pro Sekunde :)

    Ich habe mal verschiedene Sortierungen des Codes ausprobiert, allerdings ändert nichts etwas an der Tatsache, dass die Sprites skaliert werden.

    Trotzdem danke.
    Gibt es noch andere Ideen?

    EDIT: Habe auch ewig im Internet gesucht aber nichts gefunden. Es kann doch nicht sein, dass sich bis jetzt noch niemand damit beschäftigt hat, oder?
    Grüße Stupe
  • Hoffe ich komm nicht zu spät,
    die richtige Skalierung ist in GM ja bekanntlich immer ein Krampf.
    Habe ein eigenes kleines Script geschrieben was ich auch in "What would you do?" benutze, nenn es einfach "magic_scale" :

    GML-Quellcode

    1. ///magic_scale(view, zoom)
    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 , 0);
    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


    Dem Script übergibst du einfach den zu Skalierenden View, zB. mit view_current . Als zweites Argument musst du noch den Vergrößerungsfaktor angeben. Eine 1 wäre hierbei = Bildschirmgröße.
    Das Spiel sollte im Vollbildmodus gestartet werden, ich denke aspect ratio sollte auf full scale gesetzt werden in den globalen spieleigenschaften.

    Sag bescheid obs dir hilft.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: