Al hacer scripts aquí me refiero no solo a poner los datos de configuración en un script, sino a hacer scripts de partes del proyecto, como algunos métodos de clase, probar un bucle de juego específico, etc. Esto no sería solo para acelerar el desarrollo, sino también para permitir a los jugadores ver algunos de estos guiones para modificar algunos aspectos del juego.
Algunos lenguajes como Lua tienen algunos envoltorios como luabind, pero cuando lo usé en el pasado tuvo problemas porque no admitía la redefinición de métodos en un contexto de herencia.
¿Cuáles son sus sugerencias de lenguaje / envoltorios para usar o no usar?
fuente
Me ha gustado Chaiscript ; No lo he estado usando durante mucho tiempo, pero hasta ahora parece bastante sólido.
A diferencia de Python o lua, está construido desde cero para usarse con C ++. El proceso de enlace parece mucho más limpio que con luabind / etc.
Aquí está el resumen del sitio web:
fuente
Yo recomendaría a Lua .
Python también es muy popular. Muchos motores de juegos destacados (Blender, por ejemplo) lo usan.
C ++ :: Boost tiene una biblioteca para trabajar con Python.
Leí sobre Ardilla , pero no la usé.
Puedes leer esta descripción general de Game Engine . Hay una
Scripting
columna. Puede ver que Lua y Python son los lenguajes de script más populares.fuente
¿Por qué no construir el tuyo?
Si tiene tiempo, paciencia y ganas de aprender, siempre puede intentar desarrollar su propio motor de secuencias de comandos con todas las características y sintaxis que necesita.
Ventajas
Desventajas
Hora. No mucha gente lo tiene. Si necesita algo AHORA, pruebe un motor ya existente (como uno de los que ya se sugirió).
Velocidad. Muchos motores de secuencias de comandos existentes son muy rápidos: una solución personalizada puede no ser tan rápida.
Tamaño del equipo. Muchos motores de secuencias de comandos existentes tienen equipos más grandes de personas que trabajan en la base de código, ya sean equipos privados o voluntarios globales, hay algo que decir sobre el código que muchas otras personas verifican y vuelven a verificar.
Un motor de secuencias de comandos requiere una cierta cantidad de planificación inicial para lograrlo de manera efectiva. Hay muchas bases que también deberían implementarse y que quizás no tengan que ver con el motor de secuencias de comandos real.
De ninguna manera es una lista exhaustiva. Si tiene que hacer una gran cantidad de cambios en el back-end de un lenguaje de scripts existente para obtener la funcionalidad que desea, en mi opinión, probablemente debería buscar otro motor que se ajuste más a sus requisitos o simplemente cree el suyo propio.
Me doy cuenta de que a la gente le gusta "holgazanear" y "no reinventar la rueda", pero creo que hay algo que decir sobre aprender cómo se hace esto. Y una implementación específica probablemente será mejor para su proyecto que una implementación genérica.
"Crear sistemas de secuencias de comandos en C ++" parece ser el (los) artículo (s) favorito (s) que la gente comparte al discutir el tema: http://www.gamedev.net/reference/list.asp?categoryid=76
fuente
He probado Lua, Python, Scheme y Squirrel. Lua funcionó mejor; tiene una comunidad más grande y mejor soporte que Squirrel, y características de memoria y rendimiento mucho mejores que Python. Scheme funcionó muy bien también, y tiene un intérprete realmente pequeño, pero fue difícil para los diseñadores comprender un lenguaje funcional.
fuente
Aquí hay enlaces a luabind y tolua, envoltorios para lua / c ++
http://luabind.sourceforge.net/
http://www.tecgraf.puc-rio.br/~celes/tolua/
fuente