Digamos que tengo un juego escrito en C ++. Pero quiero agregarle algunas funciones de modding o scripting. ¿Cómo se podría agregar una funcionalidad de scripting a tu juego?
Digamos que tengo un juego escrito en C ++. Pero quiero agregarle algunas funciones de modding o scripting. ¿Cómo se podría agregar una funcionalidad de scripting a tu juego?
Respuestas:
En primer lugar, debes decidir qué parte de tu juego está programada. Una opción es tener un juego completamente programado en el sentido de que, si bien las operaciones de back-end de tiempo crítico están codificadas en C ++, toda la lógica del juego está en el lenguaje de secuencias de comandos. Los diseñadores usan el backend como una API llamada desde el lenguaje de scripting de alto nivel. En el otro extremo, puede tener pocos lugares específicos donde se usan los scripts, como la interfaz de usuario o las secuencias de comandos, con la mayoría del código del juego todavía en C ++. Cada enfoque tiene ventajas (velocidad, flexibilidad, tiempo de compilación, alcance del juego, etc.), pero debe decidirlo de antemano.
Una vez que sepa cómo desea utilizar las secuencias de comandos, ahora debe decidir si va a utilizar un lenguaje de secuencias de comandos existente o su propio lenguaje específico de dominio . Hoy en día hay muchos lenguajes de secuencias de comandos para elegir con diferentes objetivos de diseño y audiencias objetivo, por lo que no estoy seguro de si vale la pena crear el suyo. Si decide implementar el suyo, aquí hay algunos recursos:
Lua es un lenguaje de script popular ligero y fácil de insertar. Utiliza una pila para la comunicación entre el host y el lenguaje incorporado y se utilizó con éxito en muchos juegos profesionales . Sol2 simplifica el proceso de unión de Lua y C ++. Si no le gusta la sintaxis de Lua, Moonscript es un lenguaje que compila a Lua y agrega un buen conjunto de características.
Otras opciones incluyen AngelCode , que le permite llamar a las funciones C y C ++ directamente. Python y Ruby son un poco más complejos de incrustar, pero son muy agradables de programar. Si desea incrustar Python, eche un vistazo a Boost.Python . Otra idea es incorporar JavaScript para aprovechar los rápidos motores de scripting desarrollados para los navegadores (ver V8 y SpiderMonkey ).
Escribí una publicación sobre cómo incrustar el script GameMonkey en un juego usando DragonFire SDK aquí .
Básicamente, la idea es exponer sus funciones C \ C ++ al lenguaje de script elegido y usarlas desde su script. En mi tutorial, expuse 2 funciones del DragonFire SDK. Al inicio del juego, llamo a la función onStart desde el script y en la actualización, llamo a la función onTimer desde el script.
¡Espero que ayude!