2010-01-21 14 views
8

Me gustaría escribir un juego MMO basado en la web que permita a los usuarios escribir AI y ejecutarlo como parte del juego. Planeo usar Html5 para gráficos y quiero que esté basado en la web para que se pueda acceder desde los teléfonos inteligentes. Necesito encontrar un lenguaje de programación que admita el sandboxing, la concurrencia, el intercambio de códigos de acceso rápido y una gran biblioteca para facilitar las cosas.¿Qué lenguajes de programación son compatibles con el intercambio de códigos y/o el espacio aislado?

En este momento mi investigación está apareciendo Erlang, Stackless Python y Lua. Cualquier ayuda es apreciada.

+0

Echaré un vistazo a la incrustación de JavaScript. –

Respuesta

15

Erlang no es compatible con sandboxing, por lo que probablemente no desee utilizar eso, al menos para su lenguaje de scripting. Erlang no es ideal para secuencias de comandos de todos modos, por lo que es probable que esté bien.

Erlang sería hacer un buen lenguaje de fondo para un proyecto como este, sin embargo, y lo recomiendo por experiencia personal.

No creo que Stackless tenga compatibilidad con sandboxing tampoco, por lo que probablemente también esté fuera de la lista.

Lua, por otro lado, explícitamente admite sandboxing, y tiene coroutines, también: http://lua-users.org/wiki/SandBoxes, http://lua-users.org/wiki/CoroutinesTutorial, así que lo recomendaría para su lenguaje de scripting.

Lua también es extremadamente fácil de incorporar como se ve en este pequeño tutorial: http://heavycoder.com/tutorials/lua_embed.php (e incluso puede salir sin que toda la biblioteca cargue cosas, ya que de todos modos querrá guardarla).

+0

+1 para los enlaces de Lua –

+1

Erlang funcionaría muy bien. Solo asegúrese de que los usuarios solo envíen un lenguaje dsl válido al sistema AI. Y crea reglas que la IA debe seguir. AI no puede enviar muchos mensajes en un segundo y debe responder preguntas vivas. ¿Por qué eso no funcionaría? – Flinkman

+0

Bueno, para empezar, si están usando una DSL, no es Erlang como un lenguaje incrustado, es una DSL. La pregunta indicaba que estaba buscando * encontrar * un idioma para insertar, no * escribir * un idioma. – pib

7

También me gustaría ir con Lua debido a su absurda personalización y versatilidad (si no le gusta su sintaxis puede change it a una funcional o similar a una pitón). Como se dijo en la respuesta anterior, tienes sandboxing y concurrencia fuerte. Yo personalmente nunca pensaría en incrustar nada más que Lua;>.

Sin embargo, Lua carece de una biblioteca estándar ampliada, y aquí es donde Python gana a lo grande: /.

+0

Para un lenguaje incrustado, donde no se necesita la biblioteca estándar expandida, es perfecto, sin embargo. Especialmente en un caso como este en el que no se confía en la ejecución del código, debe limitar las posibles áreas de rotura tanto como sea posible. Para un lenguaje de programación de propósito general, Python siempre es a lo que recurro, seguro. – pib

+1

JavaScript, Forth y Lisp son algunos de los otros idiomas que consideraría incrustar, pero no estoy seguro de si hay competidores fuertes para Lua para una tarea como esta ... – pib

Cuestiones relacionadas