Level Editor?

  • GM 7

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

  • Level Editor?

    Hi!

    Ich glaube dieses Thema gibt es öfters aber ich würde es gerne mal erklärkt bekommen... :)

    Wie macht man ein Level Editor?
    Und man soll den Namen des Levels selber bestimmen können.
    (Also das erstellen , speichern und laden-Prinzip)

    !!!Danke für jede Antwort!!!

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

  • Ich hab mal einen Editor in meinem Spiel verwendet. Man muss einfach: 1. Eine Datei öffnen. Jedes Objekt mit seinen Koordinaten speichern und wenn man dasnn das LVL startet, werden einfach die Objekte mit ihren Koordinaten erstellt. Einfach googlen, ich glaub da findet man genug. ;)
  • Also ich hab bei Google das hier gefunden.
    Such da mal nach Level Editor und downloade das mal. Habs aber nicht getestet.

    Edit: Es funktioniert laut Beschreibung nach Afroman's Methode: "How to make a separate level editor for your game. Writes the position of the objects to a file in the level editor, then reads the file in the level reader."

    ____
    Adventskalender 2010: Blue Smiley

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

  • Speichern:

    GML-Quellcode

    1. var file,i_;
    2. i_=0
    3. file=file_text_open_write(get_string("Name:",""))
    4. repeat(room_width)
    5. {
    6. for(i=0;i<=room_height;i+=1;)
    7. {
    8. if not (instance_place(i,i_,all)==noone)
    9. {
    10. file_text_write_string(file,"instance_create("+string(i)+","+string(i_)+","+string(instance_place(i,i_,all).object_index))
    11. }
    12. }
    13. i_+=1
    14. }
    Alles anzeigen

    Laden:

    GML-Quellcode

    1. execute_file(get_string("Name:",""))

    MfG Henrik1235
    Fragen? Pn mich.
    #edit
    Mhh, mein Skript wird wohl nicht gehen.
    Naja ich ich ein Example. Wer den Fehler findet...
    Dateien
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

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

  • GML-Quellcode

    1. var file,i_;
    2. i_=0
    3. file=file_text_open_write(get_string("Name:",""))
    4. repeat(room_width)
    5. {
    6. for(i=0;i<=room_height;i+=1;)
    7. {
    8. if not (instance_place(i,i_,all)==noone)
    9. {
    10. file_text_write_string(file,"instance_create("+string(i)+","+string(i_)+","+string(instance_place(i,i_,all).object_index))
    11. }
    12. }
    13. i_+=1
    14. }
    Alles anzeigen


    Das ist eine sehr ineffiziente und unlogische Lösung, da du jeden Pixel nach Instanzen abcheckst, es geht viel einfacher:

    GML-Quellcode

    1. var inst, i;
    2. for (i=0 ; i<instance_number(obj_enemy); i+=1)
    3. {
    4. inst = instance_find(obj_enemy,i)
    5. file_text_write_string(file,"instance_create("+string(inst.x)+","+string(inst.y)+","+string(obj_enemy))
    6. }


    Das kannst du mit allen Objekten machen, die du speichern möchtest.
    Dabei würde ich dir unbedingt empfehlen, mit Parents zu arbeiten.
    Am besten erstellst du sogar ein Parent Objekt, zB oGameObject und lässt alle Objekte, die vom Editor gespeichert werden sollen, den Parent oGameObject zuweisen, und statt für jedes Objekt einmal durchzuloopen, kannst du die for-Schleife mit oGameObject statt o_enemy, o_player, o_wall_links_oben_level47 etc.
    Eine andere Optimierung wäre, wenn du für jedes Objekt ein user defined Event definierst, welches die eigenen gebrauchten zu speichernden Daten in einen globalen String schreibt:

    GML-Quellcode

    1. oGameObject
    2. user defined event0
    3. global.saveString = "x="+string(x)+"; y="+string(y)
    4. oInheritedObject Parent: oGameObject
    5. user def 0
    6. event_inherited();
    7. global.saveString += "speed="+string(speed)+"; whatever="+string(whatever)
    Alles anzeigen


    und beim Speichern:

    GML-Quellcode

    1. var inst, i;
    2. for (i=0 ; i<instance_number(oGameObject); i+=1)
    3. {
    4. inst = instance_find(oGameObject,i)
    5. file_text_write_string(file,"temp=instance_create("+string(inst.x)+","+string(inst.y)+","+string(inst.object_index) +"; with(temp) { "+global.saveString+"}")
    6. }
    "das war meine letzte flamewar PM an dich ."
  • Einfach mal guggen xD

    Naja...
    Guckt einfach mal selbst...
    Ich weiß nicht wo der Fehler liegt -.-
    Bitte nennt die Mauern nicht um ja??

    Edit: @Mr. GM : Guck erstmal welche Version die Datei benötigt und welche ich hab :)
    Edit2: Es geht nun!!!
    Danke an allen! Und: Special Thanks an: Gimero!!!!!!! :) :) :) :) :) :) :)

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