GM.exe mit externen Dateien

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

  • GM.exe mit externen Dateien

    Ich wollte mal wissen wie man es schafft, dass man beispielsweise Levels eines Spiels extern Speichern kann.

    Ist es möglich? Kann man nach der fertigstellung diese externe Datei vom inhalt her veränder sodass beim laden etwas anderes geschieht?
    Ist es mit dem GM Lite realisierbar?

    würde ich gerne wissen ob das geht und wie man das macht. :)
  • Meinst du so eine Art Leveleditor?
    Dann könntest du die Koordinaten von jedem Object in eine Text- oder Inidatei speichern und beim laden des Levels die Daten wieder auslesen und die Objekte an den entsprechenden Stellen createn.
    Soweit ich weiß geht das mit der Lite
  • Ja der Leveleditor ist ein gutes Beispiel.^^ Aber es ging mir darum wie man jetzt praktisch ein Spiel in mehrere Dateien Teilen kann. (Also Levels sind extern beispielsweise.)

    Doch: Wie mache ich die Iso files?
    Und wie lade ich sie in das Spiel?
    (Und: Wie geht das mit dem Lite?)

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

  • Hier steht alles über inis: Hilfe

    Zum Beispiel kannst du so alle Objekte in die Datei schreiben:

    GML-Quellcode

    1. ini_open("level.ini")
    2. for (i=0;i<instance_number(object);i+=1)
    3. {
    4. ii=instance_find(object,i)
    5. ini_write_real(string(i),"x",ii.x)
    6. ini_write_real(string(i),"y",ii.y)
    7. }
    8. ini_write_real("General","sections",i)
    9. ini_close()


    Und so lädst du das Level dann:

    GML-Quellcode

    1. ini_open("level.ini")
    2. s=ini_read_real("General","sections",0)
    3. for(i=0;i<s;i+=1)
    4. instance_create(ini_read_real(string(i),"x",0),ini_read_real(string(i),"y",0),object)
    5. ini_close()

    (object jeweils mit deinem gewünschten Objekt ersetzen)


    Um andere Dateien extern zu laden (zb Sprites oder Sounds) brauchst du leider die reg. Version
  • Ja ganz einfacher Skript (GML, wird in D&D nicht funktionieren!)

    GML-Quellcode

    1. // Publik Variable erstellen
    2. code = "";
    3. // Datei öffnen und überprüfen
    4. filename = get_open_filename("Text Dateien| *.txt","");
    5. if (filename == "" || !file_exists(filename))
    6. game_end();
    7. // Datei öffnen, und Speichern (den Code)
    8. file_open_read(filename);
    9. while (!file_eof())
    10. {
    11. code = file_read_string();
    12. file_readln();
    13. }
    Alles anzeigen


    ... so, nun hast du den Code, um von externen (Text-)Dateien GML Code herrauszugriegen. Tut diesen am besten immer im Create Event des jeweiligen Objektes. Wenn du nun den Code ausführen willst, schreibe an dieser stelle folgende Zeile:

    GML-Quellcode

    1. execute_string(code);


    Edit:
    Meine meinung zu dem mit der Ini -> Für einen Level Editor (in diesem Beispiel), finde ich inis ehr nicht so gut, inis sollten dafür bleiben, Einstellungen zum Beispiel die gewählte Sprache etc. zu Speichern. Dreswegen rate ich dir Text Dateien zu nehemen, letzteres ist es deine Entscheidung...

    Edit 2:
    Rechtschreib Fehler ~.~

    Mfg.,
    Metalknight

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

  • Playa schrieb:

    Wieso sollte man keine inis für nen Leveleditor verwenden?
    Naja so genau kenn ich mich mit Inis auch net aus, abba habe sie einmal für ein Spiel gebraucht. Und ist es nicht nervend, wenn man dann immer diese zwei bereiche angeben muss? Ich stelle es mir auch ein bisschen komisch vor, wie man dort gut die änderungen an Level vornehmen will, wenn es dafür keine Funktion gibt (wie gesagt habe wenig damit am Hut). Falls ich mich irre, ist es vielleicht dann gut wenn man mehrere Level in einer Datei schreiben will, aber für jede Level eine eigene Ini, ist eigentlich nichts anderes als 2 - 3 Zeilen Code mehr *faul*.
  • Tschuldigung, das ich den Thread jetzt wieder ausgrabe, aber ich möchte mal zeigen, was ich für eine Methode zum Speichern und Laden von Levels verwende.
    Und zwar habe ich ein Script, welches sozusagen im 16er Takt durchgeführt wird ( Mehr ist nicht nötig, da ich Objekte nur im 16x16 Grid habe ).
    Nun überprüfe ich im Script mittels einer For-Schleife die Positionen der Objekte ( for (i = 0; i < room_width; i += 16) ) und Speichere sie in einer Datei.
    Und zwar so:

    Quellcode

    1. 11111
    2. 12131
    3. 10101
    4. 10001
    5. 11111

    Wobei 1 eine Wand, 2 ein Spieler und 3 das Levelende ist (0 ist nichts).
    Nun überprüfe ich wieder mittels einer For-Schleife die Zahlen in der Text-Datei und lasse je nach dem die verschiedenen Objekte erstellen.
    In der 2ten Reihe würde folgendes herauskommen
    0x16: Wand
    16x16: Spieler
    32x16: Wand
    48x16: Ziel
    64x16: Wand
    fabse64 -> haiyyu
  • Idee Idee ist nichtmal so schlecht!^^
    Auf jedenfall kommt eine frage wieder in mir hoch.

    Es ist ja bekannt dass MP3 Musikstücke die in einer GM.exe Datei beinhaltet sind, zu unmöglichen Ladezeiten der Datei führen.

    Ich habe mir gedacht: Wieso mach ich die MP3 Datei nicht extern?


    Aber wie mache ich das mit der Muski genau? Gibt es eien andere Lösung?

    Und eines habe ich nicht verstanden:

    Wie mache ich jetzt genau INIS? (Also eine MP3 Datei als ini, usw.) :)
  • LEWA schrieb:


    Ich habe mir gedacht: Wieso mach ich die MP3 Datei nicht extern?

    Das macht hier sogut wie jeder.. erstrecht werden Mp3 auf manchen Pc´s (über GM) nicht abgespielt (mehr dazu in der Hilfe)

    LEWA schrieb:


    Aber wie mache ich das mit der Muski genau? Gibt es eien andere Lösung?

    Hol dir am besten eine Dll (falls du lite hast gibts keine andere Möglichkeit
    Es geht auch mit sound_add() (mehr siehe Help)

    LEWA schrieb:


    Und eines habe ich nicht verstanden:

    Wie mache ich jetzt genau INIS? (Also eine MP3 Datei als ini, usw.) :)

    Mp3 als Ini? Sowas geht nicht.
    Mehr über inis erfährst du in der Help

    Inis sind Textdateien zum Speichern von Daten
    und Mp3s sind Musik Dateien


    mfg xxskxx

    P.s. fabse benutzt normale Textfiles und keine inis
    -

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

  • MP3 als inis?
    Noch nie gehört, was ich aber selber schonmal mit Inis gemacht habe ist, ein Wert ändern, der dann im Game ausgewertet wird, und somit immer wieder beim Laden das gleiche Lied anfängt ;)

    MP3's extern laden... mit der D&D Aktion auf jeden fall nur in Pro
    Da ich kein D&D benutzte, benutzte ich für mein momentanes AK Projekt folgenden Code:

    (Am besten im CREATE effekt, von dein aller ersten Objekt, was am besten auch nur einmal im Spiel (am anfang) Vorkommt... )

    GML-Quellcode

    1. // SOUND EINSTELLUNGEN
    2. global.snd = sound_add("jd-ft.mp3",0,true);
    3. if (global.snd == -1)
    4. {
    5. show_message("'jd-fk.mp3' wurde nicht gefunden! Das Spiel wird beendet.");
    6. game_end();
    7. }


    also, brauchst nur anstadt "jd-ft.mp3" Den Namen deiner mp3 ändern. Die Sound Datei ist global. Wenn du diesen Sound also abspielen willst, musst du soundplay(global.snd); als Code eingeben, da man bei der D&D Funktion keine eigenen sachen "eingeben" kann.

    Du kannst auch Ordner angeben, indem du "ordner/haha_ordneer/ui/nene/sound/snd/jd-fk.mp3" zum Beispiel eingeben würdest (ich weiß übertrieben,.... abba egal ^^)

    In der If Schleifen wird einfach nur überpfrüft ob das Laden erfolgreich war, wenn nicht, dann wird die Nacgricht ausgebene, und das Spiel beendet.

    Edit: xxskxx war schneller... naja meine Lösung finde ich aber praktischer as das mit sound_add dll's^^
    Habe ich wirklich 8 min geschrieben 8| omfg...

    Mfg.,
    Metalknight

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

  • Oh, ich meinte eigentlich die DLL's, naja habe es mal korrigiert.

    Noch was zu dem mit den Level Editor:
    DU solltest GML ein bisschen können, und wissen wie man mit der For-Schleife umgeht ... so mache ich das immer. Und switch, damit kann man dann die Zahlen auswerten, und die Instance erstellen.

    sry ich edit das jetzt mal!
    Edit:
    Also Inis sind dazu da, eigenschaft zu Speichern, die du auslesen kannst und in Variablen speichern kannst, wie Blubberblub ja unter mir sagt. Auch Level kannst du dort Speichern.
    Zu dem mit der Musik (Lewas beitrag unter mir), benutzte doch einfach mein Code, oder denn von xxskxx, dann brauchst du keine DLL, und das sollte auch im GM Lite gehen.
    Zu den Levels:
    Du kannst es sozumbeispiel machen, dass in eine Array, eine Variable, oder andere sachen die Reihen aus der Text / Ini Datei gespeichert werden. Dies kannst du aber mit einer while schleife (= while(!file_text_eof(file)) =), (ohne die (= und =)), und einer Array leicht machen.
    Mit einer for Schleife die nachheinander die Array durchgeht (zumbeispiel mit k, und den index der array mit k abfragen (array[k])) und die array wird in einer switch schleife ausgewertet (switch(array[k])). Die verschiedene cases erstellen dann die objekte.
    Auf jeden fall musst du dafür GML Verstehen, oder einen sehr leichten Code haben, der sich leicht pohne Kenntnise / wenig Kenntnise in dein Spiel implementieren lässt.

    Mfg.,
    Metalknight

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Metalknight ()

  • Ich dachte inis sind verschiedene Musikstücke, Videos, usw. Die für den GM konventiert wurden. Hab mich wohl geirrt.

    Eine Frage häte ich auch. Wie benutz ich eine DLL um eine MP3 Datei extern zu laden? (Mit DLL hab ich noch nie was gemacht, und ich weiss leider auch nicht genau was es ist. Werde mal genauer nachlesen müssen...)

    Edit:

    In der Hilfe steht dass man DLL nur in der Registrierten GM version benutzen kann. Ich habe aber nur den Lite...
  • dlls sind nur in der Pro Version verfügbar, da kommste nicht drum herum..
    Brauchst aber nicht unbedingt eine Dll zum Laden von MP3s...
    Inis können irgendwelche Daten speichern, was auch immer du willst... Gamemaker kann aber trotzdem einige Dateiformate lesen... Inis sind mehr zur Speicherung spielspezifischer Daten wie Name, Lebensenergie oder was auch immer.. Aber auch ganze Levels können gespeichert werden..
    "das war meine letzte flamewar PM an dich ."
  • Also kann man doch MP3 als Inis Speichern???

    Und wenn icn nicht DLL benutzen kann, wie soll ich dann MP3 extern laden können?

    Etwa so wie es vorhin Metalknight gesagt hat? (In GML...)

    (Entsuldigung für die vielleicht wiederholte Frage, aber ich bin schon ein bisschen verwirrt...)
  • Wenn ich mich recht erinnere, hab ich mal ganz normal ne mp3 in GM geladen... bietet halt keine gescheite Unterstützung, man kanns aber abspielen..

    Du musst verstehen, Dateien, egal was für welche, ob nun mp3,exe oder ini, alle sind sie nur text-files mit einer codierung. Dh, natürlich kannst du ne Mp3 in ne Ini laden, aber bringen tut dir das irgendwie auch nix...

    Öffne mal ne mp3 oder so mit dem Text Editor ;)
    "das war meine letzte flamewar PM an dich ."
  • OHA! Das ist ja ein hübscher haufen von Zahlen und zeichen.^^

    Naja, obs mir jetzt was bringen wird, weiss ich nicht.. Es geht mir hauptsächlich darum, dass wenn die MP3 extern sind, dass der lade, udn startvorgang schneller abläuft...

    Ich habe selbst versucht eine exe Datei mit einem MP§ Musikstück zu speichern und zu laden. Die LAde und Speicherzeiten sind erschreckend gigantisch!

    Da dachte ich mir: Weiso lade ich eine MP3 nicht extern ins Spiel ein?

    Jetzt bedenke ich aber auch: Die MP3 Textdatei ist gigantisch... Wird das einlesen in die GM.exe nicht auch lang dauern?

    Wie machen das die anderen dass sie so schöne Musikstücke in eine exe reinbekommen ohne solche großen Ladezeiten zu bekommen? ?(