Wie eine Scriptsprache für Spiele programmieren



  • Hallo,
    ich programmiere mit C (oder C++) Programme und Spiele. Was ich mich jetzt frage, ist wie ich eine kleine Scriptsprache realisieren kann. Das Hauptprogramm soll also (uncompilte) Scripte aus einer Datei ausführen.
    So will ich die KIs der NPC realisieren. Ich könnte natürlich die Scriptbefehle in Echtzeit in C Code umwandeln lassen, aber ich denke das wird zu langsam werden.
    Ich müsste dann ja jede Zeile extra in Befehle und Argumente zerhacken und ausführen. Eine komplette KI wird aber wahrscheinlich nicht kurz sein.
    Auf der Suche nach einer Lösung habe ich von LUA gehört, aber mir ist noch ziemlich unklar ob ich damit das Problem lösen kann.
    Über Vorschläge wäre ich sehr dankbar
    -Don von, mit, zu und bei Carlos



  • entweder du machst dir ein einfaches basic oder du nimmst python als scriptsprache



  • Wie wärs den mit CSL (c scripting language)

    http://csl.sourceforge.net/csl.html



  • du hast mich nicht verstanden

    Nehmen wir an ich hab eine ausführbare datei und eine Textdatei Sript.txt.
    Jetzt will ich in die Textdatei zum Beispiel Dinge wie MovePlayer (0,-1) schreiben und diese sollen dann von dem Spiel ausgeführt werden
    Verstehst du mich jetzt ??? Wenn du so willst will ich eine kleine neue Programmiersprache schreiben um die NPC zu steuern. Das Spiel würde einen Compiler enthalten und meine Frage ist jetzt wie ich darim kommen kann jeden Befehl in Echtzeit zu compilen.



  • Naja indem du die Datei halt ganz normal als Textdatei einliest, parst und dann halt ein if(befehl == "moveplayer")moveplayer(parameter1, parameter2); machst ?

    sobald du schleifen, variablen, if bedingungen etc machen willst wirds allerdings alles andere als "mal eben eine kleine Programmiersprache machen" :p

    Weswegen es halt fertige Lösungen in Form von (Script)sprachen wie Lua oder Pyton gibt.
    Das man genausolange braucht bis man die begriffen hat wie man brauchen würde eine eigene Sprache zu schreiben sei mal dahingestellt 🙄 .



  • wie wärs mit selber einen scanner/parser schreiben?
    dann kannst du das runtime oder compiletime machen (codegenerierung) und bist völlig unabhängig.
    kannst ja auch einen parser generator (zB coco/r) verwenden, dann kannst du zB mit einem grammar file deine grammatik definieren und brauchst nur noch die "aktionen" reinschreiben...

    hth

    PS: kenne coco/r nur für java, aber denke für c dürfte die ausführung ähnlich sein.



  • falls du wirklich die Motivation und das Wissen hast dich damit auseinanderzusetzen, kannst du dir auch mal das antun:

    http://www1.hs-bremerhaven.de/kelb/CC/index.html



  • @hephaistos6 was ist ein scanner parser anderes als eine rudimentäre mini-sprache

    @on Carlos
    Zur Information CSL kann in dein Programm eingebunde und als unterroutine aufgerufen werden. CSL läßt sich durch C-Funktionen um belibig viele "Befehle" wie zum Beispiel MovePlayer (0,-1) erweitert werden. Würde also IMHO zu deiner Problembeschreibung passen
    Es lohnt sich auf die Seite zu gehen und mal ein bisschen darüber zu lesen.

    Wir haben es auch schon erfolgreich in einem kleine projekt vor 2-3 Jahren eingesetzt. Leider habe ich zu spät davon erfahren und wir hatten unsere Testsprache schon großteils implementiert und getestet (läuft inzwischen seit 11 Jahren).

    @c.rackwitz Was ich nicht weis gibt es eine Mögklichkeit phyton in eine Programm von mir so einzubinden, das ich Zugriff auf Programminterne Daten habe? Ich meine damit nicht ob ich phyton von meinem Programm aus starten und ein script ausführen lassen kann, das ist trivial.



  • Ich hab mir die CSL Homepage kurz angeschaut aber ich muss jetzt schlafen gehen.
    Soweit wie ich sehe kann ich das schon gebrauchen, ich will halt nur ein paar simple Befehle wie IF und selber definierte wie Moveplayer etc einbauen. Programminterne Variablen (zB Landkarte, Koordinaten von anderen NPC) müsste das Script narütlich auch abrufen können.



  • python kannst du komplett einbinden über die API



  • @c.rackwitz
    Verstehe ich das richtig? Ich kann phyton auf diesselbe Weise einbinden wie CSL

    C Scripting Language (CSL) is a well structured and easy to learn script programming language available for 32 bit Windows, OS/2 and Unix style systems. CSL follows the C syntax very closely and programmers used to C, C++ and JAVA will immediately be familiar with it. CSL is used like an interpreter: You write the program with your favorite editor and run it directly like any shell script.

    A powerful set of libraries covers topics like system, strings, maths, files, async communications, regular expressions, registry and profiles, window control and others. The data access library enables high performance tasks against ORACLE, DB2, MySQL and ODBC like data import/export, schema setup scripts and other.

    More than that, the CSL scripting engine can be embedded in applications. CSL has 2 programming interfaces: The C API can be used with almost every 32 bit C/C++ compiler, while the C++ class library is available for selected C++ compilers only.

    Kannst du mir dazu ein paar Quellen / Referenzen geben

    Danke



  • hab ich keine ahnung, ob es genauso einfach geht. aber gehen sollte es irgendwie.



  • Danke, dann mus ich mal selber suchen lassen 😃



  • @PAD: Du suchst wahrscheinlich sowas
    http://docs.python.org/api/api.html



  • angelscript ist auch nicht schlecht....

    und von der lizenz her attraktiv.



  • genial sind angaben über produkte ohne Bezugsquellen

    Wo kann man was über Angelscript erfahren außer im AngelFachgeschäft? 😃



  • also bitte, google hat sich meineswissens (ausser bei einer downtime) noch niemanden verwehrt.....

    und natürlich gibt es angelscript auf der angelcode-fachgeschäft-seite: 😉

    http://www.angelcode.com/angelscript/

    lizenz ist zlib-like, noch gönnerhafter geht es ja kaum.



  • @loki1985 Danke


Anmelden zum Antworten