2009-02-26 17 views
6

Estoy jugando WoW por aproximadamente 2 años y tenía mucha curiosidad acerca de Lua que se usa para escribir complementos. Dado que lo que he leído hasta ahora sobre Lua fue "rápido", "ligero" y "esto es genial", me preguntaba cómo y cuándo usarlo.Cuando es bueno usar lenguaje de script incrustado como Lua

¿Cuál es la situación típica en la que deberá incrustar un lenguaje de script como Lua en un sistema?

Respuesta

13

Cuando necesita que los usuarios finales puedan definir/cambiar el sistema sin requerir que el sistema se reescriba. Se usa en juegos para permitir extensiones o para permitir que el motor del juego principal permanezca sin cambios, al mismo tiempo que permite cambiar el contenido.

2

Desarrollo rápido para aplicaciones con restricciones en tiempo real. Los juegos de computadora son uno de estos ;-)

+0

otras aplicaciones que no son de juegos que usan Lua tanto para la extensibilidad como para facilitar su desarrollo/refactorización: apt, nmap, monotone, Adobe LightRoom, love2d, wildpockets – Javier

2

Es una solución válida si desea permitir que terceros desarrollen complementos o modificaciones para su software.

Puede implementar una API en cualquier idioma que esté utilizando, pero un lenguaje de script como LUA tiende a ser más simple y accesible para desarrolladores ocasionales.

3

Lua es:

  • Ligera
  • fácil de integrar, incluso en un entorno asynchronized como un juego
  • fácil de aprender para el personal no programador como integradores, diseñadores y artistas

Dado que los juegos generalmente requieren todas esas cualidades, Lua se usa principalmente allí. Otra cita podría ser cualquier aplicación que necesite alguna funcionalidad de scripting, pero los desarrolladores a menudo optan por una solución un poco más pesada, como .Net o python.

8

Los lenguajes de scripting integrados funcionan bien para almacenar también información de configuración. La última vez que revisé, la familia Mozilla usa JavaScript para su información de configuración.

A continuación, son excelentes para desarrollar complementos. Puede crear una API personalizada para exponer a los desarrolladores de complementos, y los desarrolladores de complementos obtienen una gran libertad de tener un lenguaje completo para trabajar.

Otro es cuando los archivos planos no son lo suficientemente expresivos. Si desea escribir aplicaciones controladas por datos en las que el comportamiento está parametrizado, se cansará de largas cadenas de pruebas de condicionales para combinaciones de configuraciones. Cuando esto sucede, es mejor escribir las reglas Y su evaluación en su configuración.

Este tema recibe una cierta cobertura en el programador Pragramtic del libro.

2

Además de los casos de scripting y configurabilidad mencionados, simplemente afirmaría que Lua + C (o Lua + C++) es una combinación perfecta para cualquier desarrollo de software. Permite crear una interfaz de motor/uso donde el motor está hecho en C/C++ y el comportamiento o la personalización realizada en Lua.

OS X Cocoa tiene Objective-C (A y amalgama Smalltalk, donde el lenguaje cambia según la línea). Encuentro que Lua + C es similar, solo el lenguaje cambia por un archivo fuente, lo que para mí es una mejor abstracción.

Las razones por las que no quieren utilizar Lua también son dignas de mención.Porque apenas tiene un buen depurador. Por otra parte, la gente apenas parece necesitar uno tampoco. :)

0

Además de todos los excelentes motivos mencionados por otros, Incrustar Lua en C es muy útil cuando necesita manipular texto, trabajar con archivos o simplemente necesita un lenguaje de nivel superior. Lua tiene mucha característica ingeniosa (las tablas, las funciones son valores de primera clase, muchas otras cosas buenas). Además, aunque lua no es tan rápido como C o C++, es bastante rápido para un lenguaje interpretado.

3

un lenguaje de script como Lua también se puede utilizar si tiene que cambiar el código (con efecto inmediato) mientras la aplicación se está ejecutando. uno puede no ver esto en wow, porque, por lo que recuerdo, el código se carga al inicio (y no se vuelve a verificar y volver a cargar mientras se está ejecutando).

pero piense en otro ejemplo: servidor web y lenguaje de scripting - (afortunadamente) puede cambiar su código php sin tener que recompilar apache o reiniciar apache.

steve yegge hizo eso por su propio motor mmorpg alimentando wyvern, usando jython o rhino y javascript (no puedo recordar). escribió el motor central en java, pero la lógica del programa en python/javascript.

el efecto de esto es:

  • que no tiene que reiniciar el motor principal al cambiar los guiones, porque eso sería desconectar todos los jugadores
  • que puede permitir que otros hagan la programación más simple como la definición de nuevos artículos y monstruos sin exponer todo el código crítica para ellos
  • caja de arena: si un error ocurre dentro de la secuencia de comandos, puede ser capaz de manejar con gracia sin poner en peligro la aplicación que rodea
Cuestiones relacionadas