Automatische Level generieren [Game:Maker - Master Edition]

  • GM 8

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

  • Automatische Level generieren [Game:Maker - Master Edition]

    Guten Abend liebe Leute ;),

    ich habe eine Frage an euch, undzwar möchte ich gerne, dass mein Spiel automatisch das Level erweitert.
    Bei mir ist es so, man springt mit einer Figur immer weiter nach rechts, über Wolken.
    Da dies auf dauer allerdings lästig ist, ständig manuell neue Level zu erstellen, die auch funktioneren, möchte ich nun, dass sich die Wolken automatisch generieren, und der Hintergrund einfach gleich bleibt.
    Es soll auch "Fail"-"Angry"-Level geben, also ist es eigentlich egal, wo die Wolken generiert werden - Hauptsache im Sichtfeld und nicht zu weit von einander enfernt (auch auf unterschiedlichen Höhen!).
    Ich habe bereits einige Möglichkeiten durch probiert, allerdings ohne Erfolg.
    Dieser Thread hat mir ebenfalls nicht geholfen: gm-d.de/wbb/index.php/Thread/2…ghlight=unendliches+level
    Über Hilfe bin ich sehr dankbar, und am besten mit Erklärungen ;)

    Screenshot:



    Angenehmen Abend noch :)

    [HINWEIS: Ich weiß nicht genau, welche Version ich habe, mir ist nur bekannt, dass ich die Master Edition habe ~ also mit allen Extras(Screenshot von Start: img5.fotos-hochladen.net/uploa…ture2014061zs3wpo50l2.png]
  • Ganz wichtig ist zu verstehen, dass bei z.B. Doodle Jump der Spieler nicht nach oben springt, sondern die Plattformen sich nach unten bewegen. Das Leichteste, was du machen könntest, wäre mit einem Alarm immer wieder eine Wolke außerhalb des Sichtfeldes (bei dir rechts) zu erstellen (mit y = random(room_height)). Wenn du nun den Alarm verlängerst, sind die Abstände zwischen den Wolken größer, und so das Level schwerer.
    Vergiss dabei nicht, dass die Wolken sich nach links bewegen müssen, während sich der Spieler nur innerhalb des Sichtbereichs rumbewegt (oder gar nicht). Es sieht im Nachhinein nur so aus.
  • Du machst ein obj_spawner oder so ähnliches mit einem Alarm der dann immer die Wolke generiert:
    im Alarm

    GML-Quellcode

    1. instance_create(view_xview+view_wview,random(view_wview),obj_wolke)

    ich denke mal du machst das mit views
    ich würde aber eigentlich eine Variante Vorschlagen:
    die wolken bewegen sich nach links, der Background evtl. auch aber der spieler bleibt auf der selben X koordinate, die Wolken werden außerhalb des Rooms zerstört, dann müsste es so heißen um das zu erstellen:

    GML-Quellcode

    1. instance_create(room_width,random(room_height),obj_wolke)
    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:

    Du machst ein obj_spawner oder so ähnliches mit einem Alarm der dann immer die Wolke generiert:
    im Alarm

    GML-Quellcode

    1. instance_create(view_xview+view_wview,random(view_wview),obj_wolke)

    ich denke mal du machst das mit views
    ich würde aber eigentlich eine Variante Vorschlagen:
    die wolken bewegen sich nach links, der Background evtl. auch aber der spieler bleibt auf der selben X koordinate, die Wolken werden außerhalb des Rooms zerstört, dann müsste es so heißen um das zu erstellen:

    GML-Quellcode

    1. instance_create(room_width,random(room_height),obj_wolke)


    Ich bekomme beide Versionen nicht wirklich ans laufen, bei der ersten generieren sie sich nur untereinander & bei der 2. entstehen garkeine Wolken ;)
  • Hast du in den Wolken reingeschrieben dass sie sich nach links bewegen sollen?

    Du brauchst sie nur am rechten Bildschirmrand (am besten ein wenig ausserhalb der View) erstellen und sich auf den Spieler zubewegen lassen. Damit es nicht ganz random wird würde ich einmal ein paar wolken im untersten drittel erstellen lassen, dann im mittleren usw, dann sind es keine so großen höhenunterschiede in den einzelnen dritteln und nur ein beherzeter sprung von drittel zu drittel notwendig, wenn überhaupt.

    Husi hat dir eigtl schon alles nötige gesagt.
    Ich nehme an der origin deiner wolken links oben auf 0,0 liegt und nicht in der mitte und du deswegen bei der zweiten variante keine Wolken siehst. Die spawnen alle gerade ausserhalb des Rooms.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Aku_Ryou schrieb:

    Hast du in den Wolken reingeschrieben dass sie sich nach links bewegen sollen?

    Du brauchst sie nur am rechten Bildschirmrand (am besten ein wenig ausserhalb der View) erstellen und sich auf den Spieler zubewegen lassen. Damit es nicht ganz random wird würde ich einmal ein paar wolken im untersten drittel erstellen lassen, dann im mittleren usw, dann sind es keine so großen höhenunterschiede in den einzelnen dritteln und nur ein beherzeter sprung von drittel zu drittel notwendig, wenn überhaupt.

    Husi hat dir eigtl schon alles nötige gesagt.
    Ich nehme an der origin deiner wolken links oben auf 0,0 liegt und nicht in der mitte und du deswegen bei der zweiten variante keine Wolken siehst. Die spawnen alle gerade ausserhalb des Rooms.



    Es würde mich sehr freuen, wenn Du mir in einem persönlichen Gespräch einmal hilfen würdest - oder einmal per TeamViewer drüber schaust ;)
    Learning by Doing hat sich bei mir bis jetzt immer gut bewehrt :D
  • Hi

    Hier ist ein Tutorial vom dem Shooter 1945 auf You Tube. Vielleich hilft dir dieses Video. Es besteht aus 4 Parts.
    Daheim habe ich das, glaube ich noch als PDF-Format auf deutsch. Muss aber erst noch schauen heute Mittag.
    Das Scrolling geht zwar von oben nach unten, aknn man aber leicht von rechts nach links ändern.
    Aber hier erst mal den Link:
    youtube.com/watch?v=ppahVPHCwTE


    Gruss Drachen

    ===========================================================================================================================================0

    So wie versprochen hier das Tutorial 1945 mit deutscher Anleitung als PDF-Datei. Mit dabei auch die Game Maker-Datei sowie die Sprites als BMP-Datei.
    Viel Spass damit. Das Original stammt von Mark Overmars von 2003.

    GM Tuturial - Shooter 1945.rar

    Gruss Drachen

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

  • Lizard771 schrieb:

    Bilder sagen nicht mehr als Worte, ich kann nur interpretieren, dass deine Spielfigur Superman ist und höher als die Wolken fliegen kann.

    Wie dumm von mir, ich vergaß mein Problem zu schilden :D
    Die Figur bleibt an der Wolke hängen, soll jedoch abprallen, da er nicht auf der Wolke steht.
    Dies passiert nur, wenn man von der Seite kommt ?(
  • Aku_Ryou schrieb:

    Wie sieht denn die Collision Mask von deiner Wolke aus? Und der Code zum kollidieren?

    Welchen Teil meinst Du mit der Maske? Einen direkten Code für die Collision gibt es nicht, nur diesen:

    GML-Quellcode

    1. if place_free(x+hspeed,y) == false
    2. {
    3. if hspeed > 0
    4. move_contact_solid(0,-1);
    5. if hspeed < 0
    6. move_contact_solid(180,-1) ;
    7. hspeed = 0
    8. }
    9. vspeed += 0.5;
    10. if place_free(x,y+vspeed) == false
    11. {
    12. if vspeed > 0
    13. move_contact_solid(270,-1)
    14. if vspeed < 0
    15. move_contact_solid(90,-1)
    16. vspeed = 0
    17. }
    Alles anzeigen


    Ansonsten wäre es toll, wenn Du einfach mal per TeamViewer drüber schauen könntest ;)
  • Mit der Maske meint Aku Ryou das als mask ausgewählte Sprite des Objekts.
    Das kann man in den Objekt Einstellungen zuweisen und solltest du noch keines haben, ist die Kollisionsmaske die selbe wie eigentliche Sprite des Objekts.
    Am besten machst du als mask ein Quadrat mit den selben Maßen wie die Wolke.

    Hier nochmal besser erklärt was eine Kollisionsmakse macht:
    Wenn zwei Instanzen sich berühren wird ein "collision event" (Kollisionsereignis) ausgelöst. Um zu bestimmen, ob zwei Instanzen sich berühren, nimmt man die zugehörigen Sprites als Entscheidungsgrundlage. In den meisten Fällen ist das auch gut so, manchmal aber soll die Abfrage einen anderen Umriss als Grundlage nehmen. Zum Beispiel, wenn du ein isometrisches Spiel machst, haben Objekte typischerweise eine Höhe (um einen 3D-Effekt zu erzielen). Für die Kollisionserkennung willst du aber nur den "Bodenteil" des Sprites benutzen. Dies kannst du machen, indem du ein 2. Sprite erstellst (mit den benötigten Dimensionen) und es als Maske für die Kollisionserkennung einsetzt.

    Quelle: gamemaker.info/de/manual/205_00_objects

    -Sorm

    EDIT: Jetzt wurd das doch glatt 2x abgesendet.... Löschen bitte...^^
  • Mit der Maske meint Aku Ryou das als mask ausgewählte Sprite des Objekts.
    Das kann man in den Objekt Einstellungen zuweisen und solltest du noch keines haben, ist die Kollisionsmaske die selbe wie das eigentliche Sprite des Objekts.
    Am besten machst du als mask ein Quadrat mit den selben Maßen wie die Wolke.

    Hier nochmal besser erklärt was eine Kollisionsmakse macht:
    Wenn zwei Instanzen sich berühren wird ein "collision event" (Kollisionsereignis) ausgelöst. Um zu bestimmen, ob zwei Instanzen sich berühren, nimmt man die zugehörigen Sprites als Entscheidungsgrundlage. In den meisten Fällen ist das auch gut so, manchmal aber soll die Abfrage einen anderen Umriss als Grundlage nehmen. Zum Beispiel, wenn du ein isometrisches Spiel machst, haben Objekte typischerweise eine Höhe (um einen 3D-Effekt zu erzielen). Für die Kollisionserkennung willst du aber nur den "Bodenteil" des Sprites benutzen. Dies kannst du machen, indem du ein 2. Sprite erstellst (mit den benötigten Dimensionen) und es als Maske für die Kollisionserkennung einsetzt.

    Quelle: gamemaker.info/de/manual/205_00_objects

    -Sorm