Levelerstellung mit einem Leveleditor

  • GM 8

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

  • Levelerstellung mit einem Leveleditor

    So hi!
    Da ich aus einem studentischen Projekt noch einen Leveleditor habe (mit dem GM programmiert) dachte ich mir ich schreibe ihn ein wenig um, damit ich ihn für mein aktuelles GM-Projekt verwenden kann. Mein Ansatz wäre nun, dass ich die Koordinaten jedes Objektes, inklusive der Rotation, in einer Textdatei speichern lasse, sofern ich das Level/Die Welt im Editor speichere. Undzwar im Format:

    GML-Quellcode

    1. instance_create(233,50,o_baum)
    2. instance_create(10,300,o_haus)
    3. ...etc.



    Kann ich diesen Code dann einfach in das Creation Event des Rooms kopieren? Bei einer offenen Welt, bzw größeren Karte, erstellt er dann alle Objekte, auch die, die man nicht sieht? Wenn man etwas in den Room-Creation-Event schreibt.. ist das dann so, als hätte man das Level mit dem GM internen Editor erstellt? Berücksichtigt der GM interne Editor überhaupt, dass nur nahe Objekte gedrawt werden, um Rechenleistung zu sparen?

    Ich hoffe ihr versteht, was ich meine :D.
  • 1. Ja, er erstellt dann alle diese Objekte auch die man nicht "sieht".

    2.: "Berücksichtigt der GM interne Editor überhaupt, dass nur nahe Objekte gedrawt werden, um Rechenleistung zu sparen?"
    Der GM wird von sich selbst aus nichts machen, was in irgendeiner Weise Ressourcen spart. Das musst du schon selbst
    übernehmen. Was meinst du denn mit "nahe Objekte" und "Rechenleistung" im internen Editor ? Der Editor ist nicht zum Spaß gedacht,
    also auch nicht ressourcensparend. Das hat er allerdings auch nicht nötig, da er ja keine Events ausführt, sondern lediglich das Sprite
    anzeigt.
  • Ich glaube ich habe mich an einigen Stellen unklar ausgedrückt.

    Ich meine Objekte, die außerhalb des Views sind. Werden diese beim Ausführen der Executable auch "gedrawt"? In aufwändigen 3D Spielen werden diese ja nur gedrawt, falls sie sich im Viewfeld befinden (Stichwort Frustom Culling).

    Was ich also lediglich wissen wollte war: Ist es von der Performance her weniger effektiv sämtliche Objekte eines großen Levels im Creation Code dieses Levels zu erstellen oder macht dies keinen Unterschied?

    Falls der Game Maker keine Optimierungen während des Ausführens der Executable, betreffend gedrawter Objekte oder kreierter Instanzen die sich weit weg vom View befinden, durchführt: Kennt jemand ein Tutorial oder hat einen Tipp, wie man das bewerkstelligen könnte?
  • lordvanzed schrieb:

    Falls der Game Maker keine Optimierungen während des Ausführens der Executable, betreffend gedrawter Objekte oder kreierter Instanzen die sich weit weg vom View befinden, durchführt: Kennt jemand ein Tutorial oder hat einen Tipp, wie man das bewerkstelligen könnte?

    Der GM hat so gut wie garkeine automatischen Obtiemierung, AUßER den Tiles. Die werden scheinbar tatsächlich nur dann gedrawt wenn sie im View sichtbar sind. Objekte dagegen werden immer behandelt egal wo sie sich befinden.
    Es gibt dafür aber die instance_deactivate Funktionen. Schau dir dazu die Hilfe an, mit denen kannst du das bewerkstelligen was du willst.

    Die instance-create Funktion ist übrigens unabhängig davon in welchem Event es aufgeruft wird und auch wo sie Objekte erstellen lässt, von daher ist dies ein guter Ansatz für Karten :) (wenn auch ein etwas Speicher-verschwänderischer Weg aber das sollte nicht wirklich stören solange du nicht > 1000 Objekte im Raum hast)

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

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

  • famous schrieb:

    Du kannst Objekte manuell aktiv/inaktiv schalten.

    Folgender Code (im Step-Event) würde alle Objekte außerhalb der View deaktivieren.
    Hey danke dir! Das wird mir sicherlich weiterhelfen :).


    Zunächst muss ich aber erst einen sehr merkwürdigen Fehler beheben. Wenn ich in meinem Game einen neuen Account erstelle und mich einlogge funktioniert alles wunderbar. Doch wenn ich den Client neu starte und mich einlogge, dann wird kein Player-Objekt erstellt, obwohl eigentlich sollte.. und ein Teil der Variablen zum Player fehlt auch. Aber ich denke bei so einer Art von Fehler muss ich alleine suchen xD. :headtouch:
  • Ich meine Objekte, die außerhalb des Views sind. Werden diese beim
    Ausführen der Executable auch "gedrawt"? In aufwändigen 3D Spielen
    werden diese ja nur gedrawt, falls sie sich im Viewfeld befinden
    (Stichwort Frustom Culling).
    Ähm, der GM drawt alles, was zum drawen im Code festgelegt ist, auch wenn es außerhalb des Views ist.
    Selbst wenn es außerhalb der draw-distanz der 3D Kamera ist, wird es immernoch berechnet und gedrawt,
    es wird bloß nicht angezeigt. Rechenleistung wird trotzdem verbraucht.
    Was ich also lediglich wissen wollte war: Ist es von der Performance her
    weniger effektiv sämtliche Objekte eines großen Levels im Creation Code
    dieses Levels zu erstellen oder macht dies keinen Unterschied?
    Das macht keinen Unterschied.
    Zunächst muss ich aber erst einen sehr merkwürdigen Fehler beheben. Wenn
    ich in meinem Game einen neuen Account erstelle und mich einlogge
    funktioniert alles wunderbar. Doch wenn ich den Client neu starte und
    mich einlogge, dann wird kein Player-Objekt erstellt, obwohl eigentlich
    sollte.. und ein Teil der Variablen zum Player fehlt auch. Aber ich
    denke bei so einer Art von Fehler muss ich alleine suchen xD
    Solche Fehler kannst du am besten durch Debugging finden. Einfach Nachrichten an bestimmten Stellen einfpgen, die dann mitteilen,
    dass bis hierhin alles ausgeführt wurde.
  • Shapow schrieb:

    Solche Fehler kannst du am besten durch Debugging finden. Einfach Nachrichten an bestimmten Stellen einfpgen, die dann mitteilen,
    dass bis hierhin alles ausgeführt wurde.

    Das wäre jetzt mein nächster Schritt gewesen :). Ich habe schon ein paar Vermutungen. Der Fehler müsste auf Serverseite liegen, beim Abspeichern der Player Variablen.
  • Benutzer online 1

    1 Besucher