Levelscripte dynamisch zur Laufzeit einbinden
-
Wie baue ich am Besten Scripte für die jeweiligen Level eines 2d rpgs ein?
also beispielsweise sowas wie
if(!vars[NEKRO_SAID_HELLO]) { get_char("nekro")->say("Hello"); get_char("nekro")->jump(); } else if(vars[NEKRO_PISSED]) { start_battle(new Monster("Necromancer", 12)); }etc...
Im Moment code ich die direkt rein und compiliere dann alles neu, aber das kann irgendwo keine Dauerlösung sein da dann jeder immer den aktuellen Source haben muss der ein Level baut.
Das gewünschte Ergebnis ist halt das ich den Code in den Leveleditor tippe und da bestenfalls nochmal auf einen Button drücke damit der Kram letztendlich läuft und nicht erst das gesamte Spiel durchcompilieren muss.Gibt ja eigentlich genug Wege das reinzubauen, ich baue eine eigene Scriptsprache(viel Arbeit irgendwo wenn Schleifen und ifs usw rein sollen), ich nehme eine vorhandene(find da irgendwie auch nix passendes hmm... und irgendwie erscheint mir das auch so overpowered da ich wirklcih nur schleifen ifs variablen und ein paar fertige Methode aufrufen will), schreib das in xml(was dann zu riesenscriptdateien führt und irgendwo unflexibel ist Öö), schreib eine dll oder geb die objektdateien mit dem Editor mit und erstell dann mit den neuen Leveln eine neue Exe(was dann auch wieder knöppedrücken ist ^^) oder mache was anderes :p.
Nur was würdet ihr sagen eigenet sich da nun am Besten? ^^
-
"Einfach" ne Art Scriptsprache erstellen mit der Du die Daten rein lädst.
Beispielsweise sowas wie
OBJECT Badewanne ROOM 14
SEE "In der Ecke steht ne Wanne"
onLook "Dies ist eine Badewanne"
ontalk "Badewannen reden nur über trockene Themen"
...
END Badewannedann brauchst du noch eine Datei in der schalter gesetzt werden
IF use Badewanne SET 14 TRUE;
IF 14=TRUE AND 16=TRUE THEN ...
oder so..
ob sich das lohnt? ka.
-
Gibt auch schon fertige Bibliotheken wie LUA.
Bye, TGGC (Wähle deine Helden)
-
hm LUA hab ich mir auch angeschaut, ich frag mich da halt einerseits ob das nicht etwas übertrieben ist weil ich halt echt nur ein paar methoden aufrufen will und andererseits stört mich eine Sprache lernen zu müssen bevor ich da loslegen kann ^^.
Aber ich schätze das geht schneller als was eigenes zu bauen was Schleifen und ifs in allen Kombinationen kann.
Naja alternativ könnte ich halt den gnu compiler zum Editor packen und da dann die Neu geschriebenen Sachen compilieren... hätte auch seinen Reiz weils am wenigsten Arbeit wäre wenn der Kram erstmal läuft und ich in c++ proggen kann ^^
-
lua ist genau dafür gemacht
-ein paar methoden aufrufen
-kaum sprache lernen müssenwäre also genau das richtige für dich

btw. empfehle ich lua_bind (gibt es ne verlinkung dazu auf der lua hp), ist ein netter c++ wrapper.
rapso->greets();
-
oki danke dann schau ich mir das mal näher an