Ich denke darüber nach, eine meiner alten Ideen für ein Spiel auszuprobieren. Der Kernpunkt dieses Spiels wäre die mögliche Stufe der funktionalen Anpassung der Spielumgebung und der Objekte (z. B. das Ändern des Verhaltens einer Raumschiffwaffe). Dafür müsste das Spiel skriptfähig sein. Ich möchte es auch nicht kommerzialisieren, es ist lediglich eine interessante Programmierherausforderung für mich.
Da ich hauptsächlich ein .NET-Typ bin, werde ich XNA / C # für das Spiel selbst verwenden. Für das Scripting denke ich darüber nach, mit Python oder Lua zu arbeiten. Ich habe bereits Erfahrungen mit Python gemacht und habe nichts dagegen als Sprache. Lua hingegen ist für mich fast völlig neu, abgesehen von einigen kleinen Änderungen an World of Warcraft-Addons, die ich hier und da vorgenommen habe, und es sieht vielversprechend aus. Also hier ist meine Frage:
Was sind die Vor- und Nachteile von Lua vs. Python als Skriptsprache für die XNA / C # -Plattform?
Ist einer von ihnen mit XNA / C # wesentlich einfacher zu verwenden? Hat einer von ihnen einige spezifische Vor- oder Nachteile bei der Verwendung mit XNA / C #? Warum würden Sie XNA / C # übereinander empfehlen?
Antworten:
Ich kann die beiden nicht vergleichen, da ich bisher nur Erfahrung mit der Einbettung von IronPython in ein C # -Spiel hatte. Folgendes gefällt mir jedoch:
1) Es ist einfach! Laden Sie die IronPython-DLLs herunter, fügen Sie eine Referenz in das Projekt ein.
2) Wie Sie dem obigen Beispiel entnehmen können, konvertiert IronPython tatsächlich in BCL-Klassen, wo dies möglich ist. Das Ergebnis des Skripts ist eine System.Numerics.BigInteger und kein PyObject
3) Das
dynamic
Schlüsselwort in C # wurde für Interop-Situationen erstellt, in denen der statische Typ nicht verfügbar ist:quelle
IronPython und C # passen gut zusammen. IronPython kann zu C # hinzugefügt werden, um die Leistung zu steigern. Wenn Sie also Spiele schreiben, sind Python-Aufrufe in C # von Vorteil. Python selbst kann XNA nicht verwenden, kann jedoch Directx verwenden, was C # nicht direkt kann.
quelle