Mit Skripten meine ich hier nicht nur das Einfügen von Konfigurationsdaten in ein Skript, sondern auch das Skripten von Teilen des Projekts wie Klassenmethoden, testspezifische Spielschleifen usw. Dies würde nicht nur die Entwicklung beschleunigen, sondern auch den Spielern ermöglichen, einige davon zu sehen Skripte, um einige Aspekte des Spiels zu optimieren.
Einige Sprachen wie Lua haben einige Wrapper wie Luabind, aber als ich es in der Vergangenheit verwendet habe, hatte es Probleme, weil es die Neudefinition von Methoden in einem Kontext der Vererbung nicht unterstützte.
Was sind Ihre Vorschläge für Sprachen / Wrapper, die Sie verwenden oder nicht verwenden sollten?
quelle
Ich habe Chaiscript gemocht . Ich habe es nicht sehr lange benutzt, aber es scheint ziemlich solide zu sein.
Im Gegensatz zu Python oder Lua wurde es von Grund auf für die Verwendung mit C ++ entwickelt. Der Bindevorgang scheint viel sauberer zu sein als bei Luabind / etc.
Hier ist die Zusammenfassung der Website:
quelle
Ich würde Lua empfehlen .
Python ist auch sehr beliebt. Viele vorgestellte Spiele-Engines (zum Beispiel Blender) verwenden es.
C ++ :: Boost verfügt über eine Bibliothek für die Arbeit mit Python.
Ich habe über Eichhörnchen gelesen , es aber nicht benutzt.
Sie können diese Game Engine-Übersicht lesen . Es gibt eine
Scripting
Spalte. Sie sehen, dass Lua und Python die beliebtesten Skriptsprachen sind.quelle
Warum nicht selbst bauen?
Wenn Sie Zeit, Geduld und Lernbereitschaft haben, können Sie jederzeit versuchen, eine eigene Skript-Engine mit allen Funktionen und der erforderlichen Syntax zu entwickeln.
Vorteile
Nachteile
Zeit. Nicht viele Leute haben es. Wenn Sie JETZT etwas benötigen, probieren Sie einen bereits vorhandenen Motor aus (wie einer der bereits vorgeschlagenen).
Geschwindigkeit. Viele der vorhandenen Skriptmodule sind sehr schnell - eine benutzerdefinierte Lösung ist möglicherweise nicht so schnell.
Teamgröße. In vielen vorhandenen Scripting-Engines arbeiten größere Teams an der Codebasis, egal ob es sich um private Teams oder globale Freiwillige handelt. Für Code ist etwas zu sagen, das von vielen anderen Personen überprüft und erneut überprüft wird.
Ein Skriptmodul erfordert eine gewisse Anfangsplanung, um effektiv zu arbeiten. Es gibt eine Menge Grundlagen, die ebenfalls implementiert werden müssten und möglicherweise überhaupt nicht mit der eigentlichen Skript-Engine zu tun haben.
Dies ist keine vollständige Liste. Wenn Sie feststellen, dass Sie im Back-End einer vorhandenen Skriptsprache zahlreiche Änderungen vornehmen müssen, um die gewünschten Funktionen zu erhalten, sollten Sie sich nach einer anderen Engine umsehen, die Ihren Anforderungen besser entspricht, oder einfach eine eigene erstellen.
Mir ist klar, dass es den Leuten Spaß macht, sich mit "Faulheit" zu beschäftigen und "das Rad nicht neu zu erfinden", aber ich denke, es gibt etwas zu lernen, wie dieses Zeug gemacht wird. Und eine bestimmte Implementierung ist wahrscheinlich besser für Ihr Projekt als eine generische Implementierung.
"Erstellen von Skriptsystemen in C ++" scheint der / die bevorzugte (n) Artikel zu sein, den / die die Benutzer bei der Diskussion des Themas teilen: http://www.gamedev.net/reference/list.asp?categoryid=76
quelle
Ich habe versucht, Lua, Python, Schema und Eichhörnchen. Lua hat das Beste herausgefunden; Es hat eine größere Community und bessere Unterstützung als Squirrel und viel bessere Speicher- und Leistungseigenschaften als Python. Schema hat auch sehr gut funktioniert und hat einen sehr kleinen Interpreten, aber es war für Designer schwierig, ihre Köpfe um eine funktionale Sprache zu wickeln.
quelle
Hier sind Links zu Luabind und Tolua, Wrapper für Lua / C ++
http://luabind.sourceforge.net/
http://www.tecgraf.puc-rio.br/~celes/tolua/
quelle