2010-07-29 9 views
7

Lo que estoy buscando es un motor de scripting para Java que permita a los usuarios escribir scripts simples para controlar el comportamiento y los eventos de un juego. Algo que:¿Qué es un lenguaje de scripting bueno y simple para incrustar en un motor de juegos Java?

  • es simple - algo fácil de aprender, especialmente para las personas con cierta experiencia básica de programación/scripting

  • ofrece mucho control - Puedo fácilmente iniciar/detener/pausar secuencias de comandos y de control la cantidad de tiempo de ejecución de cada uno obtiene, tal vez la cantidad de espacio de memoria que pueden utilizar

  • está separado del entorno Java en sí - No hay acceso desde scripts de Java a cualquier objetos o clases, sólo para aquellas funciones que prevé explícitamente

Considero el motor de JavaScript de Rhino, y sería adecuado para mis propósitos, pero por lo que he leído (example), está diseñado para integrarse tanto con Java que el entorno seguro sería complicado. Prefiero comenzar con un motor que da a los scripts acceso a nada por defecto, que tener uno completamente abierto que tengo que cerrar. Es posible que los scripts no siempre sean fiables, por lo que no debería ser fácil romper el entorno.

También me considero el desarrollo de mi propio idioma con algo como antlr, pero es probable que más esfuerzo que quiero poner en.

¿Alguna sugerencia?

Respuesta

4

¿Has considerado Lua?

Google docs preview de un pdf sobre el tema

Lyrio, G.H.S.O; Seixas, R.B .; El uso de Lua como escritura de la lengua en los Juegos codificados en Java, Actas de la North American Simulación y la IA en los juegos de conferencia - GameOn-NA, Eurosis, Montreal, Canadá, 2008.

+1

Es Lua, no LUA.Ver http://www.lua.org/about.html#name – lhf

+0

Gracias por señalarme, editado. –

2

Debe darle una oportunidad a Groovy, una lenguaje de scripting que easily integrates con la plataforma Java.

Su sintaxis es 100% compatible con Java, pero también tiene una sintaxis simplificada que lo convierte en un lenguaje adecuado para la implementación de DSL.

No estoy seguro si puede detener/pausar la ejecución del código Groovy desde un programa Java, debe leer el Groovy API.

Al ejecutar el código Groovy desde un programa Java, puede especificar el contexto pasado al script y puede consultar el contexto modificado por el script para las variables de salida. La secuencia de comandos se puede aislar por completo del entorno Java subyacente al crear un GroovyShell con un CompilerConfiguration apropiado.

1

JACL es uno de esos idiomas. Está basado en TCL. Hagas lo que hagas, no inventes otro idioma. Hay muchas buenas opciones por ahí.

0

En mi opinión, no solo el idioma, sino la forma de interactuar es importante. JSR 223 es más compatible entre diferentes idiomas, pero "nativo" parece ser el mejor (es decir, la integración de objetos completos de groovy)

Cuestiones relacionadas