Wie werden Scriptsprachen in C++ basierten Spieleengines umgesetzt?



  • Lua, Python usw. sind ja alles Scriptsprachen die man immer häufiger in Spielen wiederfindet.

    Aber wann und wofür sollte man anstatt auf nativem C++ Code auf Code in einer Scriptsprache setzen?

    Gut, bei einem Quest für ein RPG wird wohl ein Script völlig ausreichend sein.
    Gleiches gilt wohl für Rundenstategriespiele in dem zwei Einheiten gegeneiner kämpfen und nun das Kampfergebnis berechnet und ausgewertet werden muss, auch das kann man sicher gut als Script lösen und man braucht dafür nicht wirklich viel Performance.

    Aber gilt das auch für die KI, die Wegfindung eines NPCs?

    Schreibt mal, was ihr so darüber wißt.

    In welchen Fällen eines Spieles sollte man also auf eine Scriptsprache setzen und diese einem nativen C++ Code vorziehen?



  • Wann auf Scriptsprache se schrieb:

    Lua, Python usw. sind ja alles Scriptsprachen die man immer häufiger in Spielen wiederfindet.

    Echt?

    Wann auf Scriptsprache se schrieb:

    Aber wann und wofür sollte man anstatt auf nativem C++ Code auf Code in einer Scriptsprache setzen?

    Vorteile:
    -Scriptfehler (wenn von C++ richtig angefasst) lassen das Spiel nicht abstürzen, sondern nur ein Objekt verschwinden/flackern/quietschen.
    -Die Scripter/Entwickler der Quests oder der Monster müssen weniger schlau sein und können viel billiger eingekauft werden.
    -Die gescripteten Inhalte können viel schneller per Try&Error geprüft werden.
    -Sogar Kunden können scripten, wenn man die Schnittstelle aufmacht.

    Nachteile:
    -Die Scriptsprachen (bis auf LUA) sind viel zu schwach, die Script-API wird halbherzig aufgesetzt, man kann am Ende nur triviale Scheiße schripten.
    -Laaaaannnnggggssam.
    -Magnet für den inner platform effect

    Wann auf Scriptsprache se schrieb:

    Gut, bei einem Quest für ein RPG wird wohl ein Script völlig ausreichend sein.

    Wenn die Schnittstelle ausreicht.

    Wann auf Scriptsprache se schrieb:

    Aber gilt das auch für die KI, die Wegfindung eines NPCs?

    Wir streiten uns gerade fast, ob wir im A* den schnellen linksausgerichteten Binärheap nehmen, aufs Schlangenöl Fibonacci Heap reinfallen oder uns die Mühe machen, den van Emde Boas tree zu implementieren oder gar mal calendar queues antesten. Um aus der Wegfindung noch ein paar Prozent rauszuquetschen.
    Das geht in C++ relativ locker von der Hand.
    Und dann kommt einer daher, uns will es scripten und mal schnell 1000% dazubezahlen. Klar, kommt vor. Und zwar immer wieder. Weil die Wegfindung zwar in C++ existiert, aber den Scriptern gegenüber nicht geöffnet wurde.

    Wann auf Scriptsprache se schrieb:

    In welchen Fällen eines Spieles sollte man also auf eine Scriptsprache setzen und diese einem nativen C++ Code vorziehen?

    Wenn Du alleine arbeitest, dann gar nicht scripten.



  • volkard schrieb:

    Wann auf Scriptsprache se schrieb:

    Lua, Python usw. sind ja alles Scriptsprachen die man immer häufiger in Spielen wiederfindet.

    Echt?

    Nein, man progammiert damit heute auch Full Bloat Betriebssysteme für den Power PC.

    Wann auf Scriptsprache se schrieb:

    Aber wann und wofür sollte man anstatt auf nativem C++ Code auf Code in einer Scriptsprache setzen?

    Vorteile:
    -Scriptfehler (wenn von C++ richtig angefasst) lassen das Spiel nicht abstürzen, sondern nur ein Objekt verschwinden/flackern/quietschen.
    -Die Scripter/Entwickler der Quests oder der Monster müssen weniger schlau sein und können viel billiger eingekauft werden.
    -Die gescripteten Inhalte können viel schneller per Try&Error geprüft werden.
    -Sogar Kunden können scripten, wenn man die Schnittstelle aufmacht.

    Nachteile:
    -Die Scriptsprachen (bis auf LUA) sind viel zu schwach, die Script-API wird halbherzig aufgesetzt, man kann am Ende nur triviale Scheiße schripten.
    -Laaaaannnnggggssam.

    Ja, langsam.
    Die Frage ist nur, wo und für was kann man problemlos auf die langsame Scriptsrpache zurückgreifen?

    -Magnet für den inner platform effect

    Was meinst du damit?

    Wann auf Scriptsprache se schrieb:

    Aber gilt das auch für die KI, die Wegfindung eines NPCs?

    Wir streiten uns gerade fast, ob wir im A* den schnellen linksausgerichteten Binärheap nehmen, aufs Schlangenöl Fibonacci Heap reinfallen oder uns die Mühe machen, den van Emde Boas tree zu implementieren oder gar mal calendar queues antesten. Um aus der Wegfindung noch ein paar Prozent rauszuquetschen.
    Das geht in C++ relativ locker von der Hand.
    Und dann kommt einer daher, uns will es scripten und mal schnell 1000% dazubezahlen. Klar, kommt vor. Und zwar immer wieder. Weil die Wegfindung zwar
    in C++ existiert, aber den Scriptern gegenüber nicht geöffnet wurde.

    Verstehe.
    Die Scriptsprache wird also zum Lösen von Problemen der Wegfindung von Scriptern mißbraucht, obwohl das eigentlich in C++ gelöst werden sollte.

    Richtig?

    Wann auf Scriptsprache se schrieb:

    In welchen Fällen eines Spieles sollte man also auf eine Scriptsprache setzen und diese einem nativen C++ Code vorziehen?

    Wenn Du alleine arbeitest, dann gar nicht scripten.

    Aber komme ich mit Scripten nicht wesentlich schneller ans Ziel?
    Die Punkte, mal kurz was testen, Absurtzsicherheit usw. gelten doch auch für mich als Einzelperson. Oder?

    Und falls aus dem Projekt mal was größeres werden sollte, dann ist man hinterher froh, wenn man so etwas gleich implementiert hat und die Kunden das Spiel modden können, was wiederum den Verkaufszahlen hilft.



  • "Mal kurz was testen" ist für den Programmierer aber nicht wirklich der Fall, denn wenn man keine full-rebuilds machen muss geht das Kompilieren wohl schnell genug. Das ist nur dann ein wirklich gutes Argument, wenn Leute die sich im Sourcecode nicht auskennen mal schnell etwas testen wollen, und dich dafür nicht angammeln müssen. Ansonsten kann man auch viel außerhalb des Sourcecodes machen, ohne dass es ein Script sein muss. Definitionen von Items, Charakteren, Texte, etc. kann man alles aus Dateien laden. Bis zu einem gewissen Grad sogar Events und Quests, man denke da an StartNPC, EndNPC, Text, Bedingung, .. dafür braucht man nicht zwangsläufig eine Scriptsprache.



  • Wann auf Scriptsprache se schrieb:

    -Magnet für den inner platform effect

    Was meinst du damit?

    ➡ google

    Wann auf Scriptsprache se schrieb:

    Wenn Du alleine arbeitest, dann gar nicht scripten.[/quote]
    Aber komme ich mit Scripten nicht wesentlich schneller ans Ziel?
    Die Punkte, mal kurz was testen, Absurtzsicherheit usw. gelten doch auch für mich als Einzelperson. Oder?
    [/quote]
    Kurz was testen geht mit C++ genauso. Sogar tendenziell leichter, weil alles vorliegt und nicht erst verfügbar gemacht werden muss.

    Absturzsicherheit gegen den Main-Programmierer? Falls das nötig ist, musst Du Dich rauswerfen, fürchte ich. 🕶



  • volkard schrieb:

    Wann auf Scriptsprache se schrieb:

    -Magnet für den inner platform effect

    Was meinst du damit?

    ➡ google

    Google führte mich hier hin, was soll ich damit?

    http://de.wikipedia.org/wiki/Magnet

    Absturzsicherheit gegen den Main-Programmierer? Falls das nötig ist, musst Du Dich rauswerfen, fürchte ich. 🕶

    Kein Quellcode ist perfekt und mit jeweils 100 neue Zeilen kommen x neue Bugs hinzu.



  • Wann auf Scriptsprache se schrieb:

    volkard schrieb:

    Wann auf Scriptsprache se schrieb:

    -Magnet für den inner platform effect

    Was meinst du damit?

    ➡ google

    Google führte mich hier hin, was soll ich damit?

    http://de.wikipedia.org/wiki/Magnet

    Nee.
    http://lmgtfy.com/?q=inner+platform+effect

    Absturzsicherheit gegen den Main-Programmierer? Falls das nötig ist, musst Du Dich rauswerfen, fürchte ich. 🕶

    Kein Quellcode ist perfekt und mit jeweils 100 neue Zeilen kommen x neue Bugs hinzu.

    Nee. Werde erfahrener. Lies das Forum. Lies nicht Gamecoder-Foren. Kommst erstens auf unglaublich geringe Quoten. Und nach dem Lesen von Meyers sogar auf erst recht unglaublich geringe Quoten, die zudem bei Dir auftauchen und nicht beim Kunden.
    C++ macht Spaß. Nicht zuletzt, weil es so wirksam ist. Glaube mir!



  • volkard schrieb:

    Nee.
    http://lmgtfy.com/?q=inner+platform+effect

    Ernsthaft? Du beantwortest so einem schlechten Trollversuch mit einem hilfreichen Link?



  • Schau dir mal AngelScript an.
    Finde ich für C++ weit besser als LUA, da es für C++ designed ist.



  • volkard schrieb:

    die Script-API wird halbherzig aufgesetzt, man kann am Ende nur triviale Scheiße schripten.
    -Laaaaannnnggggssam.

    Hallo, ich hätte auch mal eine Frage zum Thema Skriptsprachen in Spielen/Anwendungen, genauer gesagt zu Lua in Spielen.

    Implementieren die Spielehersteller die Sprache selbst?

    Ich mein, bei kleineren Spielen ist das wahrscheinlich nicht der Fall, aber bei Sachen wie WOW?

    Der Grund ist folgender: Ich finde nirgends einen Verweiß auf Lua von WOW.
    Ich habe ein anderes Spiel im Regal stehen, da steht auf der letzten Seite im Handbuch unter den Danksagungen extra, dass das Spiel Lua mit LuaBind verwendet.

    Deshalb habe ich die Vermutung, dass Blizzard eine eigene Lua-Engine implementiert hat.

    Ist das so?



  • LUA bietet nur Sprachregeln und einige wenige Funktionen. Alle anderen Funktionen muss man selber implementieren und an die Sprache binden.
    Also, nein, Blizz hat die Sprache nicht selber definiert, nur die Funktionen.



  • Scorcher24 schrieb:

    LUA bietet nur Sprachregeln und einige wenige Funktionen. Alle anderen Funktionen muss man selber implementieren und an die Sprache binden.
    Also, nein, Blizz hat die Sprache nicht selber definiert, nur die Funktionen.

    Mhh, vielleicht war mein Beitrag nicht ganz klar.

    Lua hat stellt selbst eine offizielle API bereit, die aber in/für C ist.

    Ich nehme jetzt mal stark an, dass WOW in C++ geschrieben ist.

    Ich hätte eigentlich gedacht, dass WOW irgendwelche Wrapper (wie z.b. LuaBind für C++) einsetzt. Aber ich finde nirgends einen Hinweis.

    Daher denke ich, dass Blizzard Lua selbst implementiert hat (also: Scanner, parser, eigene API für Lua usw.).

    Ich weiß, das so etwas sehr unüblich ist, aber für so ein Spiel wie WOW kann ich mir das gut vorstellen.

    Weiß in diesem Punkt jemand genaueres?

    Die Sprache (nicht API) ist natürlich viel älter und schon seit Jahren genau standardisiert (für weitere Infos: www.lua.org).

    LUA ist unter der MIT-Lizenz veröffentlicht. Es wäre also denkbar, dass WOW seine eigene LUA API hat.

    ?



  • 😕 darauf hätte ich doch gerne eine antwort



  • Dann frag Blizzard.



  • Scorcher24 schrieb:

    Dann frag Blizzard.

    Wenn das jetzt ein ernstgemeinter Vorschlag war: Ich glaub nicht, dass der Support mails dieser Art beantwortet, bzw. beantworten kann, vor allem, wenn die mail von einem "nicht-wow-spieler" kommt.



  • Naja woher sollen WIR das wissen??
    Man kann LUA auch statisch linken und daher ist hier keine vernünftige Antwort möglich.



  • ernst? schrieb:

    Ich glaub nicht, dass der Support mails dieser Art beantwortet

    Schreib einfach Michael Morhaime direkt an. Auf dem kurzen Dienstweg bekommst schon eher eine Antwort, als über den arroganten Support.

    Ich geh davon aus, dass es keinen Grund gibt, den Interpreter selber zu schreiben. Die Sprache ist ziemlich einfach und der Interpreter ist sehr klein und schnell. Die könnten sich höchstens denken, dass sie einen eigenen Interpreter einfacher integrieren könnten, aber ich halte es eher für unwahrscheinlich.



  • Mechanics schrieb:

    ernst? schrieb:

    Ich glaub nicht, dass der Support mails dieser Art beantwortet

    Schreib einfach Michael Morhaime direkt an. Auf dem kurzen Dienstweg bekommst schon eher eine Antwort, als über den arroganten Support.

    Ich geh davon aus, dass es keinen Grund gibt, den Interpreter selber zu schreiben. Die Sprache ist ziemlich einfach und der Interpreter ist sehr klein und schnell. Die könnten sich höchstens denken, dass sie einen eigenen Interpreter einfacher integrieren könnten, aber ich halte es eher für unwahrscheinlich.

    ja, aber die sache ist halt, dass ich nirgends einen hinweis auf die verwendung von lua finde, und soweit ich weiß (ich bin kein jurist.) muss so ein hinweis irgendwo hin.

    spielt hier jemand zufällig wow und könnte mal ins handbuch schauen? auf den letzten seiten unter "danksagungen" steht das vielleicht.

    p.s.: wer ist micheal morhaime?



  • big brother schrieb:

    p.s.: wer ist micheal morhaime?

    http://static.fjcdn.com/pictures/Tactical_76914c_133816.jpg


Log in to reply