"Boden" auffüllen

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

  • "Boden" auffüllen

    Hi
    Ich habe ein Boden über eine Liste erstellt, das heißt index gleich x Koordinate und der Wert darin die y Koordinate. Das ganze sollte mit Boden aufgefüllt werden. Natürlich könnte ich einfach Linien pro X Koordinate herunter ziehen, dann habe ich aber zB. nur alles Grau. Gibt es eine performante Lösung ein Sprite darein zu bekommen?
    Den Boden ganz unten, kann man ja ohne Probleme auffüllen, aber wenn dann der unebene Boden kommt fällt mir keine Lösung ein.
    Hat jemand Rat?

    (Beachtet diese Türme im Bild nicht ^^)
    Bilder
    • Screenshot.png

      6,91 kB, 656×519, 620 mal angesehen
    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
  • @Chris987
    Ich habs mir mal in der Hilfe mal angeschaut. Sieht sehr nützlich aus. Ich wurde nur noch nicht ganz aus zB. pr_pointlist schlau. Gefüllt wird da irgendwie nichts ^^.
    Mit Dreiecken jetzt alles aufzufüllen wäre auch noch etwas Arbeit, dass das alles darein passt. (Hab mir auch noch kein Tutorial gesucht, um die Funktionsweise evtl. etwas in meinem Kopf zu erweitern) ^^

    @'Duftner'
    Danke für den Link, kann ich mir mal das ein oder andere etwas abschauen ^^
    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
  • Ich habe heute bzw. gestern, ist ja schon fast 2 Uhr morgen, mir das ganze nochmal angeschaut...
    Hab ichs geschafft? :D
    Ja :P

    Das ist nur eine Testtextur, was man so aufgesplittet sieht.

    Natürlich soll das nachher in Erde getauscht werden. Ich habe es aber noch nicht geschafft, dass ich die Textur mit texture_set_repeat nicht wiederholen kann. Mit Texturen in GM kenne ich mich auch noch nicht so ganz aus. Kann es damit zu tun haben, dass die Textur von einem Sprite ist?
    Edit: Wer kennt es nicht :D kaum fragt man, findet man die Lösung :)
    Edit2: Klappt doch nicht ganz...
    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

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

  • Sorry wegen dem DoppelDreifachpost. Ich wollte mal ein Beispielcode zeigen und dazu dann den Screenshot.

    GML-Quellcode

    1. draw_set_colour(c_white);
    2. texture_set_interpolation(false);
    3. texture_set_repeat(true);
    4. var tex = sprite_get_texture(spr_primitive_test,0);
    5. draw_primitive_begin_texture(pr_trianglestrip, tex);
    6. draw_vertex_texture(100,100,0,0);
    7. draw_vertex_texture(300,100,2,0);
    8. draw_vertex_texture(300,300,2,2);
    9. draw_vertex_texture(100,300,0,2);
    10. draw_vertex_texture(100,100,0,0);
    11. draw_primitive_end();
    Alles anzeigen

    Ich habe 2 Statt 1 genommen, weil das dann eigentlich wiederholt werden sollte, wie ich das verstanden habe.

    Man sieht hier ganz klar meine billig Grafiken, die dahinter auf der TexturePage sind.
    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
  • Als ich an dem Terraria ähnlichen Spiel gearbeitet habe (welches ich leider nicht fertig stelle), habe ich die Landschaft mit einem Trick generiert.
    Hab erst die Textur für den Boden auf ein Surface zeichnen lassen. Dann hab ich mit schwarzen Circles die Landschaft quasi aus dem Background rausgefräßt. Was dann schwarz wurde ließ ich dann mittels einen Shader transparent werden.
    Du hast ja jetzt schon eine Lösung gefunden, hab den Thread hier erst jetzt gesehen. Aber ich wollte nur sagen, dass man nicht unbedingt Primitves dazu braucht.
  • Ich habe auch schon dran gedacht das ganze mit Surfaces zu machen. Nur der Shader wäre unnötig. Du kannst den mit bm_subtract weg radieren, wenn du die Farbe auf Schwarz hast.
    Nur wenn man dann zb. sowas wie Höhlen hat, muss man das ganze irgendwie sehr oft und aufwendig ausstanzen
    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
  • Husi012 schrieb:

    Sorry wegen dem DoppelDreifachpost. Ich wollte mal ein Beispielcode zeigen und dazu dann den Screenshot.

    GML-Quellcode

    1. draw_set_colour(c_white);
    2. texture_set_interpolation(false);
    3. texture_set_repeat(true);
    4. var tex = sprite_get_texture(spr_primitive_test,0);
    5. draw_primitive_begin_texture(pr_trianglestrip, tex);
    6. draw_vertex_texture(100,100,0,0);
    7. draw_vertex_texture(300,100,2,0);
    8. draw_vertex_texture(300,300,2,2);
    9. draw_vertex_texture(100,300,0,2);
    10. draw_vertex_texture(100,100,0,0);
    11. draw_primitive_end();
    Alles anzeigen

    Ich habe 2 Statt 1 genommen, weil das dann eigentlich wiederholt werden sollte, wie ich das verstanden habe.

    Man sieht hier ganz klar meine billig Grafiken, die dahinter auf der TexturePage sind.


    Das problem an der Sache ist dass der default-shader nicht die UV koordinaten des Sprites auf der Texturepage miteinbezieht.
    Du wirst also die uv-koordinaten des Sprites an einen eigenst programmierten Shader senden müssen der die uv-koordinaten innerhalb des UV bereiches des Sprites repeatet. (die uv-koordinaten eines sprites kannst du glaub ich mit sprite_get_uvs() herausbekommen.)

    Wenn du das Terrain wirklich auf pixelgenauigkeit hoch auflösen möchtest, wirst du nicht drumherum kommen die einzelnen Pixel des terrains manuell (auf einer Surface oder ähnlichem) zu beschreiben.