GM:S 1.2.1130 Skalierungsprobleme im Fullscreen

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

    • GM:S 1.2.1130 Skalierungsprobleme im Fullscreen

      Abend Community,
      bei meinem momentanen Projekt "What Would You Do?", zu finden unter den Steam Greenlight Konzepten bin ich auf folgendes Problem gestoßen, welches allerdings nicht Projektbezogen ist, daher die Expertenrunde :

      Beim Skalieren im Fullscreenmodus entstehen 1Pixel differenzen auf dem Display, also ein PixelartPixel der bspw. als 3x3 Pixel auf dem Dispay dargestellt wird, wird als 3x4 angezeigt(siehe Screenshots auf Greenlight, Link in meiner Signatur, zB. bei der Palme im Menü oder beim Spielersprite im Spiel). Das Problem steht nur im Fullscreen an, unabhängig ob Fullscale oder Keep Aspect Ratio aktiviert sind, laut meines Teampartners sah alles auf seinem 1080p 19:9 Display in Ordnung aus, ich selber nutze im Moment mein Laptop (Geforce GT 320M, falls das entscheidend ist) mit einer recht ungewöhnlichen Auflösung von 1366x768, da ich im Moment noch im Urlaub bin und schlecht meinen Desktop PC mitnehmen kann, auf dem ich es also auch noch nicht testen konnte. Ich muss also irgendwie hinbekommen, dass das Spiel auf jeder Auflösung ohne Verzerrungen skaliert, dabei würde ich gerne auf die Verwendung von Surfaces verzichten, da mein Spiel bis jetzt ohne diese auskommt, es auf älteren PCs immer wieder Probleme damit gibt und ich persönlich kein Fan dieser bin.

      Jetzt zu meinem Script, mit welchem ich das Spiel skaliere, es errechnet die Aspect Ratio des Screens und benutzt diese um die Breite des angezeigten Bereiches zu bestimmen, es bekommt als Argument eine gefixte Viewhöhe übergeben(360 im Intro, 240 im Menü und In-Game). Ich gehe hier von Rundungsfehlern aus, welche ich allerdings nicht beheben konnte:

      GML-Quellcode

      1. //scr_advanced_scaling(height)
      2. var aspect_ratio;
      3. update_display_size();
      4. static_height = argument0;
      5. aspect_ratio = global.ds_width/global.ds_height;
      6. view_hview = static_height;
      7. view_hport = static_height;
      8. view_wview = view_hview*aspect_ratio;
      9. view_wport = view_hview*aspect_ratio;
      10. xport = global.ds_width/display_get_gui_width();
      11. yport = global.ds_height/display_get_gui_height();
      12. display_set_gui_size(global.ds_width,global.ds_height);
      Alles anzeigen

      Und hier noch das Script update_display_size() :

      GML-Quellcode

      1. global.ds_width = display_get_width();
      2. global.ds_height = display_get_height();


      Ich bin für jede Hilfe dankbar, sorry wenn ich was wichtiges vergessem habe, ist schon spät^^
      132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
    • Das Script sieht gut aus Rhazul, ich werde es auch gerade mal testen. Husi, room_height und width werden hier nicht helfen weil es sich am Display orientieren soll und man sowieso nur über Umwege und Dummyrooms, diese ändern kann.

      Ich editiere wenn ichs erfolgreich implementiert habe, ich habe allerdings auch ein 16:9 1920/1080 Bildschirm.

      ancient-pixel.com
      youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    • @husi
      Das ist nett gemeint, aber wäre es so einfach, dann wär ich auchschon draufgekommen ^^ Das Spiel ist ja kein 0 8 15 Puzzlegame etc. wo der ganze Raum gedrawed werden würde. Du kannst ja auf den Screenshots bei Greenlight gucken, es handelt sich um einen Open World 2D Sidescroller, aslo hat die Raumgröße nichts mit dem zu tun, was auf dem Screen ausgegeben wird, hier arbeite ich mit Views die dem Spieler via

      GML-Quellcode

      1. view_xview[0] += round( ((x -(view_wview[0]/2)) - view_xview[0]) * 0.3);
      2. view_yview[0] += round( ((y -(view_hview[0]/2)) - view_yview[0]) * 0.2);

      folgen. Das Script arbeitet mit einer festen Viewhöhe, die bei allen Monitoren gleich ist, die Breite des Views wird dann angepasst.

      @Aku_Ryou
      Danke für deine Bemühungen. Bei meinem Script ist mir noch aufgefallen, dass xport und yport ganz unten überflüssig sind, das waren nur Überbleibsel von der Vorherigen GUI Skalierung.

      Ich habe schon überlegt das Script umzuschreiben, dass an Stelle einer fixen Höhe lieber eine Breite übergeben wird und die Höhe angepasst wird, also je nachdem mehr in der vertikalen zu sehen ist oder halt schwarze streifen oben/unten bei 4:3 Auflösungen oder ähnliches. Das sähe wesentlich besser aus, das Problem wird aber nach wie vor das selbe sein.

      zu der Sache mit deinem Bildschirm, teste es einfach mal, ich kann mich da nur auf den Test meines Kollegen berufen dass alles in Ordnung wäre, sicher sein kann ich mir da nicht, eventuell hat er die Pixelfehler auch einfach übersehen :huh:

      Mfg Rhazul

      lé edit:
      Ok, habe das ganze mal versucht umzuwandeln, das Script schluckt jetzt keine Höhe mehr sondern Breite, das Ergebnis ist nur leider das Gleiche, nur das diesmal ab und an ein Pixel Breite fehlt anstatt zu viel ist :

      GML-Quellcode

      1. //scr_advanced_scaling(width)
      2. var aspect_ratio;
      3. update_display_size();
      4. static_width = argument0;
      5. aspect_ratio = global.ds_height/global.ds_width;
      6. view_wview = static_width;
      7. view_wport = static_width;
      8. view_hview = view_wview*aspect_ratio;
      9. view_hport = view_wview*aspect_ratio;
      10. display_set_gui_size(global.ds_width,global.ds_height);
      Alles anzeigen
      132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:

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