2009-02-26 8 views
6

Ich spiele WoW seit ungefähr 2 Jahren und ich war ziemlich neugierig auf Lua, die verwendet wird, um Addons zu schreiben. Was ich bisher über Lua gelesen habe, war "schnell", "leicht" und "das ist großartig", ich fragte mich, wie und wann ich es benutzen sollte.Wann ist es gut Embedded Skriptsprache wie Lua zu verwenden

In welcher typischen Situation müssen Sie eine Skriptsprache wie Lua in ein System einbetten?

Antwort

13

Wenn Sie Endbenutzer benötigen, um das System definieren/ändern zu können, ohne dass das System neu geschrieben werden muss. Es wird in Spielen verwendet, um Erweiterungen zuzulassen oder die Haupt-Game-Engine unverändert zu lassen, während Inhalte geändert werden können.

2

Schnelle Entwicklung für Anwendungen mit Echtzeitbeschränkungen. Computerspiele sind eine davon ;-)

+0

andere Nicht-Spiele-Apps mit Lua sowohl für die Erweiterbarkeit und um es einfach zu entwickeln/Refactor: apt, nmap, monoton, Adobe LightRoom, love2d, wildpockets – Javier

2

Es ist eine gültige Lösung, wenn Sie Dritten erlauben, Plug-Ins oder Mods für Ihre Software zu entwickeln.

Sie können eine API in jeder Sprache implementieren, die Sie verwenden, aber eine Skriptsprache wie LUA ist für einfache Entwickler eher einfach und zugänglich.

3

Lua ist:

  • Leichte
  • Einfach zu integrieren, auch in einer asynchronen Umgebung wie ein Spiel
  • Einfach für Nicht-Programmierer Personal wie Integratoren, Designer und Künstler zu lernen

Da Spiele in der Regel all diese Eigenschaften erfordern, wird Lua meist dort eingesetzt. Eine andere Lösung könnte jede Anwendung sein, die einige Skriptfunktionen benötigt, aber Entwickler entscheiden sich oft für eine etwas schwerere Lösung wie .Net oder Python.

8

Eingebettete Skriptsprachen funktionieren auch gut zum Speichern von Konfigurationsinformationen. Zuletzt habe ich überprüft, dass die Mozilla-Familie JavaScript für ihre Konfigurationsinformationen verwendet.

Als nächstes sind sie ideal für die Entwicklung von Plugins. Sie können eine benutzerdefinierte API erstellen, um sie den Plug-in-Entwicklern zur Verfügung zu stellen, und die Plug-in-Entwickler erhalten eine Menge Freiheit, wenn Sie mit einer ganzen Sprache arbeiten müssen.

Eine andere ist, wenn flache Dateien nicht ausdrucksvoll genug sind. Wenn Sie datengesteuerte Apps schreiben wollen, in denen das Verhalten parametrisiert ist, werden Sie lange Konditionssätze, die auf Konfigurationskombinationen testen, wirklich satt haben. Wenn dies geschieht, schreiben Sie besser die Regeln UND ihre Auswertung in Ihre Konfiguration.

Dieses Thema wird in dem Buch Pragramtic Programmer behandelt.

2

Zusätzlich zu den erwähnten Skripting- und Konfigurierbarkeitsfällen würde ich einfach sagen, dass Lua + C (oder Lua + C++) eine perfekte Übereinstimmung für Softwareentwicklung ist. Es ermöglicht es, eine Engine/Usage-Schnittstelle zu erstellen, in der Engine in C/C++ ausgeführt wird, und das Verhalten oder die Anpassung in Lua.

OS X Kakao hat Objective-C (C- und Smalltalk-Amalgam, wobei sich die Sprache durch die Linie ändert). Ich finde Lua + C ähnlich, nur die Sprache ändert sich durch eine Quelldatei, was für mich eine bessere Abstraktion ist.

Die Gründe, warum Sie nicht möchten Lua verwenden, sind auch bemerkenswert.Weil es kaum einen guten Debugger hat. Andererseits scheinen die Leute auch kaum eine zu brauchen. :)

0

Zusätzlich zu all den guten Gründen, die von anderen erwähnt werden, ist Embedding Lua in C sehr hilfreich, wenn Sie Text manipulieren, mit Dateien arbeiten oder nur eine höhere Programmiersprache benötigen. Lua hat viele nette Features (Tabellen, Funktionen sind erstklassige Werte, viele andere gute Sachen). Auch wenn lua nicht so schnell wie C oder C++ ist, ist es für eine interpretierte Sprache ziemlich schnell.

3

Eine Skriptsprache wie Lua kann auch verwendet werden, wenn Sie den Code (mit sofortiger Wirkung) ändern müssen, während die Anwendung läuft. man kann das nicht in wow sehen, denn soweit ich mich erinnere, wird der Code am Anfang geladen (und nicht erneut geprüft und neu geladen, während er läuft).

aber denken Sie an ein anderes Beispiel: Webserver und Skriptsprache - (Gott sei Dank) Sie können Ihren PHP-Code ändern, ohne Apache neu zu kompilieren oder Apache neu zu starten.

steve yegge hat dieses Ding für seine eigene mmorpg Motor powering wyvern, mit jython oder Rhino und Javascript (kann mich nicht erinnern). Er schrieb die Core-Engine in Java, aber die Programmlogik in Python/Javascript.

die Wirkung dieser ist:

  • er nicht den Kern Motor neu zu starten muss, wenn die Skripte zu ändern, weil das alle Spieler trennen würde
  • er andere können wir die einfachere Programmierung tun wie definieren neuer Gegenstände und Monster ohne all den kritischen Code, um sie
  • Sandbox ausgesetzt wird: wenn ein Fehler im Script geschieht, können Sie in der Lage sein, sie ohne Gefährdung der umliegenden Anwendung
anmutig zu handhaben
Verwandte Themen