2010-01-21 13 views
8

Ich möchte ein webbasiertes MMO-Spiel schreiben, das es Benutzern erlaubt, AI zu schreiben und es als Teil des Spiels auszuführen. Ich beabsichtige, Html5 für Grafiken zu verwenden und möchte, dass diese webbasiert ist, damit auf Smartphones zugegriffen werden kann. Ich muss eine Programmiersprache finden, die Sandboxing, Parallelität, Hot-Code-Swapping und eine große Bibliothek unterstützt, um die Dinge einfacher zu machen.Welche Programmiersprachen unterstützen Hot-Code-Swapping und/oder Sandboxing?

Zu dieser Zeit sind meine Forschung Erlang, Stackless Python und Lua. Jede Hilfe wird geschätzt.

+0

Ich würde einen Blick auf die Einbettung von JavaScript werfen. –

Antwort

15

Erlang nicht unterstützt Sandboxing, so dass Sie wahrscheinlich nicht verwenden möchten, zumindest für Ihre Skriptsprache. Erlang ist sowieso nicht ideal zum Skripten, das ist wahrscheinlich in Ordnung.

Erlang würde eine gute Backend-Sprache für ein Projekt wie diese jedoch machen, und ich kann es aus eigener Erfahrung sehr empfehlen.

Ich glaube nicht, dass Stackless auch Sandboxing unterstützt, das ist wahrscheinlich auch von der Liste.

Lua, auf der anderen Seite, unterstützt explizit Sandboxing und hat auch Coroutinen: http://lua-users.org/wiki/SandBoxes, http://lua-users.org/wiki/CoroutinesTutorial, also würde ich das für Ihre Skriptsprache empfehlen.

Lua ist auch sehr einfach einzubetten, wie in diesem kleinen Tutorial zu sehen: http://heavycoder.com/tutorials/lua_embed.php (und Sie können sogar ohne die ganze Bibliothek Lade Sachen wegkommen, da Sie sowieso sandboxing werden wollen).

+0

+1 für die Lua Links –

+1

Erlang würde großartig funktionieren. Stellen Sie nur sicher, dass Benutzer nur eine gültige DSL-Sprache für das AI-System übermitteln. Und erstelle Regeln, denen die KI folgen muss. AI kann nicht zu viele Nachrichten in einer Sekunde senden und muss auf lebendige Fragen antworten. Warum würde das nicht funktionieren? – Flinkman

+0

Nun, für Anfänger, wenn sie ein DSL verwenden, ist es nicht Erlang als eingebettete Sprache, es ist ein DSL. Die Frage besagte, dass er eine Sprache finden wollte, um eine Sprache einzubetten, nicht * zu schreiben *. – pib

7

Ich würde auch mit Lua wegen seiner absurden Anpassbarkeit und Vielseitigkeit gehen (wenn Sie es nicht mögen, Syntax können Sie change it zu einem funktionalen oder einem Python-ähnlichen). Wie in der vorherigen Antwort erwähnt, haben Sie Sandboxing und starke Nebenläufigkeit. Ich persönlich würde niemals daran denken, etwas anderes als Lua einzubetten;>.

Allerdings fehlt Lua eine erweiterte Standard-Bibliothek, und das ist, wo Python große Zeit gewinnt: /.

+0

Für eine eingebettete Sprache, in der die erweiterte Standardbibliothek nicht benötigt wird, ist sie jedoch perfekt. Gerade in einem solchen Fall, in dem nicht vertrauenswürdiger Code läuft, möchten Sie die potenziellen Bruchbereiche so weit wie möglich begrenzen. Für eine universelle Programmiersprache ist Python sicher immer das, wonach ich suche. – pib

+1

JavaScript, Forth und Lisp gehören zu den anderen Sprachen, die ich als Einbettung in Betracht ziehen würde, aber ich bin mir nicht sicher, ob es für eine solche Aufgabe starke Konkurrenten für Lua gibt ... – pib