In welchen Fällen sind welche Skriptsprachen besser als andere?
Alle Antworten sind erwünscht. Bitte geben Sie eine Beschreibung und beschreiben Sie, in welchen Fällen sich die Sprache auszeichnet.
(Denken Sie daran, eine Sprache pro Antwort)
In welchen Fällen sind welche Skriptsprachen besser als andere?
Alle Antworten sind erwünscht. Bitte geben Sie eine Beschreibung und beschreiben Sie, in welchen Fällen sich die Sprache auszeichnet.
(Denken Sie daran, eine Sprache pro Antwort)
Antworten:
Lua ist in der Spielebranche weit verbreitet . Von unabhängigen Spielen ( Aquaria ) bis zu AAA-Titeln (Civilization).
Der Hauptgrund? Ich würde sagen, weil es leicht zu erlernen und in Ihre Spiele zu integrieren ist. Aber das Gleiche könnte man mit Python sagen, da bin ich mir sicher. Das Schreiben von Skripten ist im Allgemeinen nicht schwierig. Ich denke, der wahre Grund, warum Sie sich für Lua entscheiden sollten, ist, dass es erwiesenermaßen viel mehr Ressourcen gibt, von denen Sie lernen können. Wenn Sie Lust haben, mit etwas zu experimentieren, das nicht der Norm entspricht, würde ich anfangen, mit einer anderen Sprache zu experimentieren.
Eichhörnchen hat eine interessante Geschichte. Es wurde gebaut, nachdem ein Spielarchitekt Probleme mit Luas unvorhersehbarer Müllabfuhr hatte, und verrückt, dass alles null ist, auch wenn es nicht existiert .
Eichhörnchen ist die in Left 4 Dead 2 verwendete Skriptsprache . Die API ist sehr luaartig (Squirrels Autor liebt Luas Design ).
Eichhörnchen ist also eine großartige Sprache, da es eine Art Lua der zweiten Generation ist. Es hat die guten Ideen genommen und die nervigen Exzentrizitäten beseitigt.
Gleiche von Lua:
Neu bei Squirrel:
Der Hauptnachteil von Eichhörnchen ist, dass es nicht Lua ist. Lua ist viel weiter verbreitet. Aber wenn das kein Problem ist, ist Eichhörnchen ein einfacher Gewinn. Die Popularität der Sprache ist jedoch oftmals ein nützliches Merkmal für sich, weshalb die Entscheidung nicht so eindeutig ist.
V8 Javascript von Google.
PRO's:
Ganz einfach zu bedienen
Ständig besser werden
Leistungsstark und flexibel
Sonstiges Wie bereits erwähnt, ist Javascript ein weit verbreitetes Programmierwerkzeug. Durch das Hinzufügen zu meinen Spielen haben sich weit mehr Menschen als in anderen Sprachen dazu in der Lage gefühlt. Es unterstützt auch eine große Menge an Casting und Konvertierung, um Arbeit für den Programmierer zu sparen, macht es auch wirklich benutzerfreundlich und funktioniert gut mit STL.
Mögliche CON's:
Dokumentation kann verwirrend sein Es ist wirklich nicht das Beste.
Beispiele Oft ein Netz der Verrücktheit. Da es keine solide Einfachheit gibt, wirkt es viel höher als es ist.
Vorlagen Manchmal werden diese gehasst oder vermieden.
SDK-Codebasisgröße Die generierte Codegröße kann als aufgebläht angesehen werden.
Das hängt vom Spiel und seiner Zielplattform ab.
Ein Spiel mit 100 Nicht-Spieler-Charakteren (RTS-Spiele) hat andere Anforderungen als ein Spiel mit nur 2 Charakteren (Street Fighter). Ein Spiel, das auf einem PC ausgeführt wird, hat andere Anforderungen als ein Spiel, das auf einer Konsole ausgeführt wird.
Lua ist beliebt
GameMonkey wird von mehreren Teams verwendet. Es ist schneller als Lua und fädelt besser.
Python wurde in mehreren Spielen verwendet.
JavaScript ist eine mögliche Option, da Sie JavaScript-Engines herunterladen können. Es gibt mehr JavaScript-Programmierer als jeder andere Programmierertyp.
Es gibt auch spezialisierte Sprachen.
SCUMM wurde in verschiedenen Abenteuerspielen verwendet und ist besonders für diese Spiele geeignet.
Der Vollständigkeit halber ist eine weitere Option Monoskript , mit der Sie die Novell-Implementierung des .NET-Frameworks für die Skripterstellung verwenden können. Es ist das, was Unity benutzt. Hier ist eine weitere Seite zum Einbetten von Mono in Ihre Anwendung.
Das Mono-Framework ist schneller als die meisten Skriptsprachen (vielleicht sogar alle?), Da es nicht interpretiert wird. Da sich zwischen dem Compiler und dem Befehlssatz eine Ebene befindet, können Sie verschiedene Sprachen programmieren, darunter C # und Dialekte von Python, Lua und Javascript.
Ich bin mir jedoch nicht sicher, ob es auf allen Plattformen kostenlos ist.
Ich persönlich fand AngelScript (siehe Link unten) viel einfacher an C ++ zu binden als Lua, als ich eine Skriptsprache für mein eigenes Projekt auswählte. (Ich habe tatsächlich eine kleine Wrapper-Bibliothek dafür geschrieben, um die Verwendung zu vereinfachen, und zwar auf Kosten einiger Flexibilität.)
http://www.angelcode.com/angelscript/
Trotzdem vermute ich, dass Lua einige Vorteile hat, die es für kommerzielle Spieleentwickler attraktiv machen:
(a) Es ist ausgereifter und verbreiteter als AngelScript
(b) Die Syntax ist für Nicht-Programmierer einfacher (AngelScript ist sehr C ++ -artig)
(c) Es hat einen kleineren Platzbedarf als AngelScript (zumindest soweit ich mich erinnere)
Wenn Sie jedoch nur ein Hobbyprojekt schreiben, würde ich sagen, dass AngelScript zumindest einen Blick wert ist.
Sie sollten eine Skriptsprache wählen, die stabile und gut unterstützte Bindungen zur primären Entwicklungssprache Ihres Spiels aufweist. Wenn Sie Ihr Spiel in C oder C ++ schreiben, stehen für Python und Lua ziemlich solide Bindungen zur Verfügung. Wenn Sie Ihr Spiel für die .NET-Plattform schreiben (mit C # oder einer anderen Sprache), empfehle ich die Verwendung von IronPython oder IronRuby. Beide sind vollständige Sprachimplementierungen, die die Dynamic Language Runtime (DLR) von Microsoft nutzen, die eine hervorragende Leistung und eine sehr enge Integration mit .NET Framework bietet. Die Interoperabilität zwischen C # und IronPython / IronRuby ist heutzutage ziemlich reibungslos, insbesondere mit der Einführung der dynamischen Bindung von Call-Sites in C # 4.0.
Nun, speziell schlau .
Mit guile können Sie Ihre eigene DSL (Domain Specific Language) nur für Ihr Spiel haben. Sobald Sie sich an die Klammern und die Präfixnotation gewöhnt haben, ist das Schema der Himmel, mit dem Sie arbeiten können.
Wenn Sie in einem ernsthaften Spiel mit Guile spielen wollen, würde ich ein paar Monate warten, bis das 2.0-Release IIRC, einen Ecmascript-Interpreter sowie das aktuelle Schema enthält. Sie können auch große Geschwindigkeitsverbesserungen erwarten.
Dies hängt davon ab, wofür Sie es tatsächlich benötigen. Wie David betont, ist Lua sehr beliebt, obwohl mir ein Spieleentwickler mitteilte, dass er sich nicht ganz sicher war, warum. Ich denke, seine Leichtigkeit ist ein häufiger Grund, aber an diesem Punkt würde ich erwarten, dass viele Leute Lua benutzen, weil dies de facto zum Standard geworden ist. Es scheint am besten für sehr leichte Modifikationen.
Für einen umfassenderen Ansatz würde ich sagen, dass Python die richtige Wahl ist. Civ IV benutzte es, um eine anständige Wirkung zu erzielen.
Die Auswahl einer Skriptsprache über eine andere hängt von Ihren spezifischen Anforderungen ab.
Einige der Optionen, zwischen denen Sie wählen müssen, könnten sein:
Geschwindigkeit des Interpreters - Wenn die Scripting-Funktion ausschließlich von Entwicklern verwendet wird, um statisches Verhalten zu skripten, sind Geschwindigkeit und eine vollwertige und erweiterbare API möglicherweise der wichtigste Aspekt. Ich habe dort einige gute Erfahrungen mit LUA gemacht.
Leicht zu erlernen, Zugänglichkeit - für einen Content- / Leveldesigner kann es schwierig sein, komplexere Skriptsprachen (abhängig vom Hintergrund) zu lernen, um dynamisches Verhalten zu erzeugen. In diesem Fall könnte die Verwendung von leicht zu erlernenden (dh häufig verwendeten) und gut dokumentierten Sprachen hier angemessener sein. JavaScript oder Python könnten hier eine gute Lösung sein.
Workflow-Integration - Wenn Sie eine bestimmte Produktionspipeline mit bereits vorhandenen Tools haben, kann es eine schlechte Idee sein, eine Sprache zu verwenden, die für einen bestimmten Fall am besten zu funktionieren scheint, wenn die anderen Tools mit einem völlig anderen Tool arbeiten. Dies gilt insbesondere dann, wenn mehrere Programmierer an den verschiedenen Tools arbeiten. In diesem Fall könnte es effizienter sein, die "nicht ganz passende" Sprache zu verwenden.
Wenn Sie an einem Titel für Windows arbeiten und verwalteten Code schreiben, der auf der Common Language Runtime (CLR) ausgeführt wird, z. B. in C #, sollten Sie (Iron) Python als Skriptsprache integrieren.
Nach meiner Erfahrung ist Python für Nicht-Programmierer / Designer sehr einfach zu unterrichten. Es ist für Entwickler noch einfacher zu erlernen, da es im Wesentlichen wie Pseudocode liest. Dynamisch getippt zu werden ist nur einer der Aspekte, die dazu beitragen, dass Menschen mit wenig oder ohne Vorkenntnisse in der Programmierung schnell mit der Sprache arbeiten können.
Die CLR- und Sprachteams von Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin und andere) sind nicht nur einfach zu erlernen und leistungsstark, sondern haben auch großartige Arbeit geleistet, um Compiler- und Laufzeitfunktionen über das neue Dynamic verfügbar zu machen Die Language Runtime (DLR) in .NET 4 macht die Interoperabilität zwischen statisch und dynamisch eingegebenem Code wesentlich einfacher. Nach dem, was ich bisher gesehen und ausprobiert habe, ist der Code auf ein Minimum reduziert. Dadurch bleibt Ihre Codebasis sauber und wartbar.
Sie können dies nutzen, um die Reibung zwischen den Skriptteilen Ihres Spiels und der Engine sehr gering zu halten. Wenn beide in derselben VM ausgeführt werden, kann die Laufzeit auch den Code während der Ausführung optimieren.
Wenn Sie ein bestehendes Team haben, das die Skriptsprache verwendet, oder einen leitenden (Level-) Designer, der die Skriptsprache verwendet, entscheiden Sie sich für eine Sprache Ihrer Wahl. Sie werden ihre Zeit damit verbringen, also sollten sie versorgt werden.
[Salzkorn] Wenn Sie niemanden haben oder langfristig planen, dann rollen Sie Ihren eigenen . Ja, das Schreiben eines Compilers und / oder Interpreters für eine Skriptsprache kann ein oder zwei Wochen dauern, aber auf lange Sicht lohnt sich die Flexibilität um ein Vielfaches. Geh einfach nicht zu weit in die Irre und erfinde den Brainfuck neu. [/Salzkorn]