Level Editor

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

  • Ja, das geht.
    Schreib' dir dazu einfach ein Script, welches alle Instanzen eines Raumes und deren Position in eine Textdatei speichert.
    Diese musst du dann wieder auslesen.
    Hier ein kleines Beispiel:

    GML-Quellcode

    1. // Speichern
    2. var i, j, f;
    3. f = file_text_open_write("level.txt");
    4. for (i = 0; i < room_width; i += 16) {
    5. for (j = 0; j < room_height; j += 16) {
    6. switch (instance_position(i, j, all)) {
    7. case obj_player:
    8. file_text_write_string(f, "1");
    9. break;
    10. case obj_wall:
    11. file_text_write_string(f, "2");
    12. break;
    13. default:
    14. file_text_write_string(f, "0");
    15. };
    16. };
    17. file_text_writeln(f);
    18. };
    19. file_text_close(f);
    Alles anzeigen

    GML-Quellcode

    1. // Laden
    2. var f, t, i, j;
    3. f = file_text_open_read("level.txt");
    4. t = file_text_read_string(f);
    5. j = 0;
    6. while (!(file_text_eof(f)) {
    7. for (i = 1; i <= string_length(t); i += 1) {
    8. switch (string_char_at(t, i)) {
    9. case "1":
    10. instance_create(i * 16 - 16, j, obj_player);
    11. break;
    12. case "2":
    13. instance_create(i * 16 - 16, j, obj_wall);
    14. break;
    15. };
    16. };
    17. j += 1;
    18. file_text_readln(f);
    19. t = file_text_read_string(f);
    20. };
    21. file_text_close(f);
    Alles anzeigen
  • Sollte für dich als GML Fortgeschrittener kein Problem sein;)
    Ich habs allerdings auch noch nie gemacht, würds aber hiermit versuchen:
    (Zum Speichern)

    GML-Quellcode

    1. file_text_open_write ( "lvl.txt" )
    2. with all
    3. {
    4. file_text_write_string ( "lvl.txt" , "instance_create ( " + string ( x ) + " , " + string ( y ) + " , " + string ( object_get_name ( id ) ) )
    5. }

    (Zum Öffnen)

    GML-Quellcode

    1. file_text_open_read ( "lvl.txt" )
    2. {
    3. execute_string ( file_text_read_string ( "lvl.txt" ) )
    4. }

    Keine Ahnung, obs klappt.
    Hoffe, es hat geholfen,
    Phoenix :3

    EDIT:Omfg, zu lahm^^
    Aber warum so viel Code, macht das ganze doch nur umständlich und verlangsamt bei vielen Objekten... ;)
  • Phoenixs Version ist aber sehr unsicher. Es könnten dritte beliebigen Code reinschmeißen und somit dein Spiel manipulieren!
    In meiner psychisch soziologischen Konstellation, manifestiert sich die absolute Dominanz positiver Impressionen meines Individuums.
    Kurz: Ich bin geil!

  • SubFritz hat recht. Ich mache es immer so, dass nicht direkt die Objekt IDs gespeichert werden
    oder die Befehle zum ausführen, sondern nur Platzhalter für die Objekte, die dann umgewandelt
    werden. Also z.B:

    GML-Quellcode

    1. maxobj=2;
    2. obj[0]=objekt1;
    3. obj[1]=objekt2;
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • F4LL0UT schrieb:

    Klar geht das - Du müsstest die Koordinaten aller Objekte eines Levels in einer Datei speichern und entsprechend auch später auslesen können. Wie man das genau umsetzen muss kann ich allerdings nicht sagen - hab noch keinen Editor gemacht. <.<
    Ich glaube schon, du könntest das ausm Ärmel zaubern... so schwer ists ja nicht ;)

    @Topic: Worauf du achten solltest, ist: Den Code nicht zu offensichtlich machen... am besten nur speichern was du brauchst, sonst fummeln die Leute dran rum.

    Wenn du den Code allerdings direkt da drin hast, dann wäre zumindest verschlüsseln angebracht.
    Dazu am besten nochmal woanders fragen, das is mir grad zu viel ;)

    (Der Vorteil von direkt Code ist, dass du die Datei im Gamemaker so ausführen kannst = Sehr einfach)
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Ansonsten könnte man ja eine "String-Verschlüsselungsmethode" eigens für das Game machen, aber dann müsste es sehr sehr groß sein, um es dem Aufwand gerecht zu werden...
    Ich meine evtl. so :

    GML-Quellcode

    1. var i;
    2. for ( i = 0 ; i < StringLänge ; i += 1 )
    3. {
    4. switch string_char_at ( String , i )
    5. case "a":
    6. String = string_delete ( String , i , i ) // oder wie man den Buchstaben rausfiltert^^
    7. String = string_insert ( "C" , String , i )
    8. break;
    9. }

    kA ob's klappt :P

    Naja, soviel dazu,
    Phoenix :)