2010-01-21 8 views
8

Mi piacerebbe scrivere un gioco MMO basato sul web che permetta agli utenti di scrivere AI ed eseguirlo come parte del gioco. Ho intenzione di utilizzare Html5 per la grafica e voglio che questo sia basato sul web in modo che possa essere accessibile dagli smartphone. Ho bisogno di trovare un linguaggio di programmazione che supporti sandboxing, concorrenza, hot code swap e una grande libreria per semplificare le cose.Quali linguaggi di programmazione supportano lo scambio di codice e/o il sandboxing?

In questo momento la mia ricerca sta diventando Erlang, Stackless Python e Lua. Qualsiasi aiuto è apprezzato.

+0

Vorrei dare un'occhiata all'inserimento di JavaScript. –

risposta

15

Erlang non supporta sandboxing, quindi probabilmente non si desidera utilizzarlo, almeno per il proprio linguaggio di scripting. Erlang non è l'ideale per gli script, quindi probabilmente è ok.

Erlang sarebbe fare un buon linguaggio di back-end per un progetto come questo, tuttavia, e lo raccomanderei vivamente dall'esperienza personale.

Non credo che Stackless abbia anche il supporto per la sandboxing, quindi probabilmente è anche fuori dalla lista.

Lua, d'altra parte, supporta esplicitamente il sandboxing e ha anche coroutine: http://lua-users.org/wiki/SandBoxes, http://lua-users.org/wiki/CoroutinesTutorial, quindi lo consiglierei per il linguaggio di scripting.

Lua è anche estremamente facile da incorporare come si vede in questo piccolo tutorial: http://heavycoder.com/tutorials/lua_embed.php (e si può anche andare via senza tutte le librerie che caricano roba da quando si vorrebbe essere sandboxing comunque).

+0

+1 per i collegamenti Lua –

+1

Erlang funzionerebbe benissimo. Assicurati solo che gli utenti inviino solo una lingua dsl valida al sistema AI. E fare regole che l'IA deve seguire. AI non può inviare a molti messaggi in un secondo e deve rispondere a domande vere. Perché non dovrebbe funzionare? – Flinkman

+0

Beh, per i principianti, se stanno usando una DSL, non è Erlang come linguaggio incorporato, è un DSL. La domanda affermava che stava cercando * di trovare * una lingua da incorporare, non * scrivere * una lingua. – pib

7

Vorrei anche andare con Lua a causa della sua assurda personalizzazione e versalità (se non ti piace la sua sintassi puoi change it in un funzionale o simile a Python). Come detto nella risposta precedente, hai sandboxing e una forte concorrenza. Personalmente non penserei mai di incorporare qualcosa di diverso da Lua;>.

Tuttavia, Lua manca di una libreria standard estesa, ed è qui che Python vince alla grande: /.

+0

Per un linguaggio incorporato, in cui la libreria standard estesa non è necessaria, è perfetta, però. Soprattutto in un caso come questo in cui è in esecuzione codice non attendibile, si desidera limitare il più possibile le potenziali aree di rottura. Per un linguaggio di programmazione generico, Python è sempre quello che cerco, di sicuro. – pib

+1

JavaScript, Forth e Lisp sono tra le altre lingue che considererei l'incorporamento, ma non sono sicuro che ci siano concorrenti forti per Lua per un'attività come questa ... – pib