Level-Editor



  • Hi!

    Ich bin bei meinem kleinem Spiel mittlreweile so weit, dass ich einen level-editor bräuchte.
    In einem Level gibt es eine Hinergrundkarte aus Tiles (den editro dazu hab ich shcon) und auf dieser Karte stehen dann, nicht tile-genau, sondern irgendwie, meine Objekte, wie Häuser, Tanks, Raketenwerfer usw. Jedes Gebäude hat in meinem Programm eine eigene Klasse (CRocketLauncher, CComputerstation etc.). Auf der Karte im Spiel sind dann also lauter Objekte dieser Klassen, und die zeichnen sich auch selber und bewegen sich selber usw.
    Bei meinem Level-Editor muss ich sie nur zeichen lassen, bewegen brauchen sie sich nicht. Das Problem ist, dass ich nicht weiß, wie ich die Klassen aus dem Spiel in den Map-editro bringen soll (oder ob das überhaupt sinnvoll ist), denn die Klassen greifen auch auf Spiel-interne dinge dzu, die im Map-editor nicht vorhanden sind. Ich hab mir überlegt die Dateien mit#ifdef INGAME #endif oder so zu kompilieren, aber das find ich eigentlich total hässlich.
    Meine Frage ist jetzt, wie man das nun am besten machen kann, dass man zwra die Objekte aus dem SPiel im Map-editor verwenden kann. Eine Möglichkeit wäre, die klassen im mapeditor neu zu schreiben, nur mit weniger funktionalität, aber da müsste ich viel code doppeklt schreiben und doppelt schreiben ist nicht gut. Also, was soll ich tun?

    Gruß, Maxi


  • Mod

    Maxi schrieb:

    Meine Frage ist jetzt, wie man das nun am besten machen kann, dass man zwra die Objekte aus dem SPiel im Map-editor verwenden kann.

    irgendwie kann ich dir nicht folgen... bzw. wo soll das problem sein?

    rapso->greets();



  • hm, nochmal kurz und knapp:

    Ich will im Level-editor die Gebäude auf das Spielfeld platzieren. Ich möchte aber auch, dass sie genau wie im Spiel aussehen, dafür ist es denk ich m günstigsten, die selben Klassen wie aus dem Spiel zu nehmen, aber diese Klassen kann ich nicht verwenden, weil die auch spiel-spezifische Sachen machn müssen. Wie kann ichs nun trotzdem elegant lösen, dass die gebäude genauso aussehen, die selben eigentschaften haben usw. ich aber nicht die klassen neu schreiben muss für den level-editor?


  • Mod

    indem du den leveleditor ins spiel einbaust, gibt mittlerweile einige spiele mit "in-game editoren". oft muss man nur wenig gui einbauen, weil die meisten funktionen sich auf tasten legen lassen und im gegensatz zu spielern, kann man von leveldesignern verlangen sich ein paar tasten zu merken.

    ansonsten muss man von anfang an einen editor in das design der module mit aufnehmen, sodass die gamelogic nur auf die daten/klassen aus der "engine" aufsetzt und nicht mit denen verankert ist.

    rapso->greets();



  • hm, bock auf leveleditor im spiel hab ich nicht, ma sehen was ich da noch machen kann...



  • Alle spielrelevanten Sachen über Interfaces machen und in den Klassen für den Editor nicht implementieren.

    Bye, TGGC (Demo or Die)



  • Wozu benötigst du die Klassen für die Einheiten, wenn es nur um das Platzieren der Grafiken geht?



  • na es müssen nicht genau die klassen der einheiten sein, sie sollen nur geau so aussehen, und damit ich nich den code neu schreiben muss, würdeich gerne di spiel-klassen verwenden



  • naja aber wenn se nur gleich aussehen sollen brauchste doch nur das gleiche model/bild zu verwenden wie im spiel?...



  • Jetzt komm ich muahahah:

    ALso schreib eine Klasse: CEntityInformation die die DAten enthält:
    Objekttyp ( z.B. CComputerStation oder CBuilding o.ä.) als String. Dann brauchst du noch die Positionen der Tiles. Natürlich müss die Struktur noch detailierter z.B. um anzuzeigen wellches Bitmap verwendet werden soll.

    Im Editor schreibst du einfach einen Renderer der aus den Informationen Der CEntityInformation Klassen das Level zeichnen kann.

    Nun schreibst du in eine Datei ( Dein Levelformat ) lauter Objekte dieser Klassen für jedes Objekt das du platziert hast.

    In deinem Spiel lädst du die datei und liest die ganzen Objektdaten aus und erstellst so eine Dynamische Liste mit allen Objekten vom angegeben Typ. das sollte dann kein Problem mehr sein.

    Mit freundlichem Gruß
    XeXeS


Anmelden zum Antworten