Der einzige Vorteil, den ich mir derzeit vorstellen kann, ist, dass Sie einige Codierungsaktualisierungen über Lua vornehmen können, ohne neu kompilieren zu müssen.
Reduzieren Sie den Nutzen nicht so leicht. Sie werden nie verstehen, wie produktiv Sie sein werden, bis Sie den Neukompilierungsschritt wegnehmen.
Der "Fluss" ist ein ziemlich gut verstandenes psychologisches Konzept, wenn es um Arbeit geht. Der Flow ist das Gefühl, dass Sie bekommen, wenn Sie sich auf eine Aktivität konzentrieren, wenn Sie Probleme analysieren und lösen, fast ohne nachzudenken, usw. Sie sind am produktivsten, wenn Sie "fließen".
Kompilier mal vermassel das alles. Es ist schwierig, im Fluss zu bleiben, wenn zwischen den Tests sogar eine Kompilierung von 10 Sekunden liegt.
Wenn du das Gameplay entwickelst, hast du normalerweise eine "enge Schleife". Sie haben eine Idee, programmieren einen Test, um festzustellen, ob er funktioniert, und probieren ihn anschließend aus. Wenn es nicht funktioniert, ändern Sie es und versuchen es erneut. Die "Code-to-Test" -Zeit ist für die Aufrechterhaltung des Flusses sehr wichtig. Es ist entscheidend, es so klein wie möglich zu halten.
Mit Lua (oder einer anderen eingebetteten Skriptsprache) können Sie Änderungen testen, nicht nur ohne "Kompilieren", sondern live im Spiel . Abhängig davon, wie Sie Ihr Spiel erstellen, können Sie einen Befehl ausführen, mit dem das Spiel mit neuen Skripten neu gestartet wird, ohne Daten anhalten und neu laden zu müssen. Sie müssen nicht nur nicht neu kompilieren, sondern auch nicht erneut ausführen.
Die Fähigkeit, dies zu tun, kann bei richtiger Motorunterstützung die Produktivität dramatisch steigern.
Ein weiterer großer Vorteil von Skripten ist die Fähigkeit, sich einfach nicht darum zu kümmern. Wenn Sie lange Zeit mit dem Schreiben von C ++ verbracht haben, werden Sie erstaunt sein, wie viel Zeit Sie über minutae verbringen. Wo Speicher gelöscht wird. Wo dies befreit wird. Selbst wenn Sie shared_ptr
überall verwenden, werden Sie schon durch die Eingabe all dieser Variablentypnamen langsamer.
In einer dynamisch getippten Skriptsprache müssen Sie sich nicht darum kümmern. Das Scoping ist einfach. Funktionen sind erstklassige Objekte; Sie müssen Funktoren nicht manuell erstellen. Es ist einfach so einfach , einige Dinge zu tun.
Nun, das hat auch Nachteile, wenn Sie kein disziplinierter Programmierer sind. Es ist sehr einfach, Globals in Lua zu verwenden (obwohl es Möglichkeiten gibt, dies zu verhindern). Nicht fürsorglich bedeutet, dass Sie beim Codieren sehr schlampig sein können.
Aber dann wieder, kann Vorteile haben sehr nachlässig zu sein .
Ein weiterer Vorteil von Lua ist, dass es eine nette Datenbeschreibungssprache macht. Ähnlich wie JSON nur eine JavaScript-Datei ist, die ein Array / eine Tabelle erstellt und zurückgibt, können Sie Lua-Skripte erstellen, die Tabellen zurückgeben.
Dies ist nützlich für Konfigurationsdateien. Das Tabellenformat von Lua ist viel besser als das von .ini. Das Format ist immer noch recht übersichtlich, kompakt und erweiterbar.
Oh, und es ist immer noch ein Lua-Skript, damit es die eigentliche Logik ausführen kann. Der Nachteil dabei ist , dass es sich um ein Lua-Skript handelt, mit dem die eigentliche Logik ausgeführt werden kann . Das könnte im Spiel katastrophal sein, da der Benutzer möglicherweise anfangen könnte, Dinge zu vermasseln.
Tatsächlich ist dies jedoch leicht zu handhaben. Lua ist für die Einbettung konzipiert, was bedeutet, dass die Isolierung eigentlich recht einfach ist. In der Tat liefert ein neuer Lua-Staat standardmäßig nichts . Sie müssen tatsächlich etwas tun, um auch die grundlegendsten Lua-Standardbibliotheken verfügbar zu machen. Der Dateizugriff, der Spielstatuszugriff usw. sind alles Opt-in-Optionen, keine Opt-out-Optionen. Und jeder Lua-Staat ist voneinander getrennt. Der Lua-Status, den Sie für AI-Skripte verwenden, muss nicht der Lua-Status sein, den Sie für Konfigurationsdateien verwenden.
Ich habe tatsächlich einen Code, mit dem Sie viele Lua-Standardbibliotheken registrieren können, der jedoch alle Datei-E / A-Vorgänge durchläuft und entfernt. Das Schlimmste, was eine Lua-Skript-basierte Konfigurationsdatei anrichten kann, ist, dass Ihr Spiel sofort abstürzt, wenn es ausgeführt wird. Und da Sie diese Konfigurationsdateien nicht manuell freigeben, wäre das für einen Hacker kein großer Spaß.
Ich würde sagen, dass der größte Nachteil jeder Skriptsprache das Debuggen ist. Die meisten Skriptsprachen haben keine Debugger und Lua ist nicht anders. Lua verfügt über alle Tools, die zum Erstellen von Debugging-Tools erforderlich sind. Es ist jedoch kein Debugger eingebaut. Sie müssen eine zusammenstellen. Und das wird ein angemessenes Maß an Arbeit erfordern.
Oder du kannst mit "printf debugging" fällig machen. Es hängt wirklich davon ab, wie viel Lua-Code Sie schreiben.