Überlappende Sprites ausschneiden / nicht drawen

    Überlappende Sprites ausschneiden / nicht drawen

    Mahlzeit!

    Stehe wieder vor einem Problem, das mich als perfektionisten was die Grafik angeht wieder mal zum verzweifeln bringt.
    Die Grafik meines Spiels ist für 16:9 Bildschirme mit der Aufösung 1920x1080 entwickelt. Auf einem solchem Bildschirm funktioniert auch alles einwandfrei.

    Nun habe ich aus Testzwecken das Spiel mal auf dem Laptop mit einer 1366x768 gespielt, sollte ja auch 16:9 sein.
    Jetzt ist das Problem, dass sich schwarze Sprites Sprites die eine Alpha von 0,5 haben überdecken, ich denke mal aufgrund der Stauchung.
    Nun kann man ahnen was passiert, ich habe einen schwarzen Strich.

    Folgendes funktioniert nicht:
    - Ein Sprite für alles nehmen, da ich zwangsweise eine komplettes Quadrat mit einzelnen schwarzen Sprites verdunkel muss
    - Die Auflösung feststellen, und dann ein Pixel bei bestimmten Auflösungen wegnehmen, denn ein Pixel ist zuviel und ich habe einen hellen Strich


    Was würdet ihr mir vorschlagen?

    (Auf dem Bild sieht man, dass es unter den A`s besonders auffällt.
    Eine Reihe darunter tritt der Effekt abgeschwächt, aber dennoch sichtbar auf.)

    Gruß,
    Shari
    Bilder
    • bild.jpg

      311,06 kB, 1.366×768, 73 mal angesehen
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
    Wenn ich das richtig verstehe hast du Skalierungsprobleme?
    Dann kann ich dir nur mein altbewährtes Skript auf den Weg geben, allerdings sollte klar sein, das bei einigen Auflösungen solche 1Pixel Abweichungen defakto nicht ausgeschlossen werden können. Dein Bildschirm kanns schlecht halbe Pixel anzeigen, ausser durch Interpolation.

    GML-Quellcode

    1. ///magic_scale(view, zoom)
    2. var ww = window_get_width();
    3. var hh = window_get_height();
    4. var xx = window_get_x();
    5. var yy = window_get_y();
    6. display_reset( 4 , true);
    7. window_set_rectangle( xx , yy , ww , hh );
    8. surface_resize( application_surface , ww , hh )
    9. view_wview[argument0] = ww/argument1;
    10. view_hview[argument0] = hh/argument1;
    11. view_wport[argument0] = ww;
    12. view_hport[argument0] = hh;
    13. display_set_gui_size(ww,hh);
    14. }
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: