Exe Dateien erstellen im spiel - machbar?

  • GM 8

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

  • Exe Dateien erstellen im spiel - machbar?

    Also ist das mit dem gamemaker realisirbar?
    Der Gm selber machts ja schon sonst könnte man ja kein spiel testen :rolleyes:
    Aber im spiel selber?
    Und wenn, wie wäre es dann machbar? was müsste man in die datei reinschreiben?
    Um das zu beantworten müsste man exe dateien wahrscheinlich auch verstehen - was ich nicht tue :(
    Also links zu aufschlussreichen tutorials sind auch erwünscht.

    P.s. ich kenne diesen link nur funktioniert es bei mir nicht und verstehs auch nicht recht.
  • Äh, ja. theoretisch ist es möglich.
    Aber Exen-machen heißt Programme schreiben und das geht in anderen programmen viel besser.
    Also lern erstmal ne Programmiersprache die windows versteht (z.b. C, C++ ...) bevor du irgendwas machst xD
    Zudem müsstest du im GM einen Compiler machen um draus ausführbare exen zu machen.


    O_o ich Dümmchen hab den Link übersehen xD, klingt interessant.
    Aber ich denke trotzdem sowas wär im GM ziemlich schwierig. Auf jedenfall brauchst du kentnisse einer richtigen Sprache.



    EDIT2: nochmal 'ich Dümmchen' das Tut da hat nichts mit exen machen zutun.
    Kurz zusammen gefasst. Er addiert einen GML-code zu einer bestehenden exe (die des Spiels selbst) und liest ihn dann im Spiel aus.
    Das ist aber irgendwie etwas, äh ja, nutzlos wie ich finde weil mann den Text auf jedenfall nicht während des Spiel verändern kann. so kann man ihn genauso gut ins Spiel integrieren.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • Danke für die vielen antworten :)
    blubbblupp(oder so ähnlich): Das weis ich ehrlich gesagt nicht so ganz. Wahrscheinlich ist es ehr eine Aufgabe die ich mir selber stelle ein Programm zu entwerfen das exen sinnvoll schreieben kann. Und ausserdem interessierts mich einfach wie mächtig der Gm ist ;)

    Andre Frage: wie sind denn nun exen aufgebaut. Ist da nur ein code in c++ binär drinnen oder...?
  • Exe's sind in bytecode geschrieben, aka maschinensprache. Um programmiercode in bytecode umzuwandeln, brauchts einen compiler.
    Und einen compiler zu erstellen ist viel zu schwierig. Da brauchst du ein Team von professionellen Leuten, die bytecode verstehen und auch richtig gut programmieren können. Das kann man nicht einfach mal so machen.
  • Die einfachste Variante wäre ganz einfach, Gml Code vom Gamemaker ausführen zu lassen.. gibt ja so Sachen wie execute_string oder object_add...
    Erstellst ne Textdatei und führst die einfach aus vom GM at Runtime. Bevor du die Datei ausführst, lässt sich noch eine automatische Überprüfung des Codes durchführen, ob er nicht gefährliche FUnktionen ausführt, die dem Benutzer schaden könnten(Wenn andere Leute ihre eigenen Skripts hinzufügen können). Hier sind Whitelists ganz hilfreich.
    Oder du fügst ne Extension/dll wie Lua zum GM-Projekt hinzu, und verwendest das fürs Skripting, auch über Textfiles.

    Eine echte Exe aus nix heraus zu erstellen, ist ein komplexer Akt. Die hier einfachste Methode wäre wohl einen leichtgewichtigen einfachen kleinen C++(oder sonst was) Compiler mit einzuschliessen und ihn vom Gm aus auszuführen. Allerdings kannst du natürlich auch nicht so einfach auf die Funktionen des Gms zugreifen.

    Oder du findest heraus, wie Gm-Exen und Gmks aussehen und erstellst bzw modifizierst deine Gm-Exen(So wie GearGod mit dem gm decompiler ;P)..
    Innerhalb von Microsoft .Net ist es mittels Reflection möglich, das laufende Programm selbst zur Laufzeit zu erweitern bzw eine ausführbare Datei zu erstellen. Projekt Mono macht .Net plattformunabhängig und dieses kann sogar eingebettet werden in eigene Programme, evtl sogar in Gamemaker?
    Du kannst auch einen eigenen Interpreter schreiben, was aber nicht unbedingt grossen Sinn macht, bis auf den Lerneffekt.
    "das war meine letzte flamewar PM an dich ."
  • Die Variante mit der Text datei da wäre ich selber auch drauf gekommen. Sie gefällt mir auch gar nicht so schlecht nur dann wär der code ja editierbar und das ist blöd :huh: . Also kann man txt files einfach in die exe includieren? Gibts da ne dll? Und was genau ist dieses Loa?


    Und ganz allgemein: Was ist ein Interpreter?
    Ich schätze mal er interpretiert ein Stück code so das es für window verarbeitbar ist.

    P.S.Ein bisschen viel fragen auf einmal, ich weis :rolleyes:
  • ok, 1. du kannst dateien in die exe einfach durch den GM 'includieren'. Schau dafür einfach in der Hilfe oder unter "Ressourcen" in der leiste das aller unterste: included files.

    Dabei gibt es aber einen nachteil, denn wenn man das Spiel startet werden diese dateien exportiert. Das heißt man kann die datei trotzdem editieren. Wenn man das Spiel beendet wird die datei wieder eingeladen.


    2. Lua (http://de.wikipedia.org/wiki/Lua):

    Es ist eine programmiersprache (edit: genau genommen ist es eine Skriptsprache genau wie GML) die eine gewissen Ähnlichkeit mit GML besitzt (Syntaxe) und es gibt eben interpreter bzw Kompiler dafür.


    3. Interpreter:

    Interpreter sind keine Kompiler, sie führen einfach den Code aus. das heißt der Interpreter muss immer laufen wenn dein programm laufen soll.
    Das könnte sozusagen auch dein Spiel sein. D.h. du gibst ihm (GML)-Code und er führt ihn sozusagen für die Maschine verständlich aus.



    Aber du kannst zu keinem zeitpunkt den Code allein ausführen.
    Ich bin mir nicht 100% sicher aber ich glaube der einzige code den man direkt ausführen kann ohne eine Zwischeninstanz (auser dem Betriebsystem) ist byte-code.
    Also 10001001010010101010 xD

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • Das mit dem interpreter versteh ich noch nicht ganz:
    Also ich habs so verstanden dass der interpreter ein extra programm ist der irgendeinen code ausführt.
    Und was ist denn nun die beste Variante?

    Zur Erinnerung: Ich möchte ein Programm in das der user einen stepcode eingeben kann (zum anfang, weiteres würde folgen) und dann mit einem knopfdruck eine exe mit dem code erstelln kann. Schwierig ich weis :pinch:
  • Hm, ne das ist schwierig. Äh was meinst du mit stepcode?

    Wenn es gml sein soll dann breäuchtest du einen GM compiler, und ich bezweifle das mark dir den aus GM geben wird.

    Du kannst den user aber z.b. Lua schreiben lassen.
    Dann gibt es glaub dlls die solch einen code kompilieren können.
    das ganze wäre aber sehr aufwändig.


    Was du sonst machen könntest wäre ein Interpreter in GM.
    Kurz:
    du erstell zwei Spiele im GM. Einmal das haupt programm das der user startet und Code eingibt und den interpreter.
    Dann wenn eine xe erstell werden soll wird der auszuführende GML-code in eine Datei gespeichert. dann wird mit file_copy der Kompiler dupliziert.
    dann brauchst du nurnoch eine Möglichkeit diesem Kompiler die Datei extern anzuheften oder wenigstens den Namen zu übermitteln (das wäre z.b mit diesem verfahren des addieren von text direkt in die exe (aus dem tut oben))
    Der Interpreter besteht im Grunde nur aus der Funktion execute_file() und 'interpetiert' beziehungsweise führt den code aus der datei aus.

    Dann kann der user einfach diese exe starten.


    Gedankenblitz: xD
    Du könntest auch den ganzen auszuführenden Code wie in dem tut oben in die Exe einfügen.
    Der Interpreter liest sich dann praktisch selbst aus und führt den Code aus.
    das sollte eine eher editiersichere Methode sein auch wenn der user natürlich die Exe mit Notepad aufmachen könnte, aber wer macht sowas schon.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Auf den gedankenblitz bin gestern auch drauf gekommen aber wenn ich zum testen etwas anfüge (mit notepad) an die exe und sie starte dann öffnet sich nur kurz ein Dos fentser mit irgendeinem satz und schliesst sich wieder.Wie kann ich der exe also einen code anfügen so das sie ihn nicht beachtet
    (like comments)
  • whiterock schrieb:

    Auf den gedankenblitz bin gestern auch drauf gekommen aber wenn ich zum testen etwas anfüge (mit notepad) an die exe und sie starte dann öffnet sich nur kurz ein Dos fentser mit irgendeinem satz und schliesst sich wieder.Wie kann ich der exe also einen code anfügen so das sie ihn nicht beachtet
    (like comments)

    Du kannst doch nicht einfach irgend ein exe mit notepad öffnen, irgendeinen schei** reinschreiben und hoffen dass es funktioniert!
    Schon klar öffnet sich ein DOS fenster das meldet dass das keine gültige applikation ist.

    DragonGamer schrieb:

    Ich bin mir nicht 100% sicher aber ich glaube der einzige code den man direkt ausführen kann ohne eine Zwischeninstanz (auser dem Betriebsystem) ist byte-code.
    Also 10001001010010101010 xD

    Ne. nicht binär sondern hexadezimal.
  • knuckles12 schrieb:

    whiterock schrieb:

    Auf den gedankenblitz bin gestern auch drauf gekommen aber wenn ich zum testen etwas anfüge (mit notepad) an die exe und sie starte dann öffnet sich nur kurz ein Dos fentser mit irgendeinem satz und schliesst sich wieder.Wie kann ich der exe also einen code anfügen so das sie ihn nicht beachtet
    (like comments)

    Du kannst doch nicht einfach irgend ein exe mit notepad öffnen, irgendeinen schei** reinschreiben und hoffen dass es funktioniert!
    Schon klar öffnet sich ein DOS fenster das meldet dass das keine gültige applikation ist.


    hab ich zunächst auch gedacht, aber laut dem macher des tuts da oben, geht es:
    -- Intro on creating EXEs
    So how do we create exe's in GM? Some time ago, I discovered that I could add text to the end of the GM exes without harming/corrupting them. So this opened the world of creating exe with GM but without extra files. This is done by having an exe that read itself (ie in the start of game) and check for the extra text, which could be simply GML code.
    The problem with finding the text is how to know it was found. So I built up a "header" system, were some text shows that the extra text is starting.
    Leider hab ich nur noch GM8 und hab keine ahnung welcher meiner alten exen noch in GM7 sind, darum kann ichs nicht ausprobieren ob es wirklich stimmt.

    Denke mal schon aber in GM8 ist wahrscheinlich ein Schutz drin.

    (hab auch schon in dem Tread mit dem Tut gefragt wies mit GM8 aussieht, vieleicht schaut der Macher dort mal wieder vorbei)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Dannlad ich mir mal den 7er runter und probiers nochmal :| :pinch:

    €dit: Funts nicht, er öffnet diesmal zwar kein Dosfenster aber er bleibt beim laden hängen :(

    Aber ich hab ne andre idee:
    gibt es eine dll mit der man eine txt datei in eine exe packen kann?
    wenn ja dann soll das programm einfach die erhaltene txdatei auslesen und ausführen :!:

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