Los términos scripts y scripting parecen usarse indistintamente en el intercambio de desarrollo de juegos, pero aparte de leer preguntas sobre la elección del lenguaje de scripting, no entiendo la relación entre scripts y scripting, y el lenguaje central. ¿Qué hace típicamente un guión, cuándo se usaría y son los guiones en algunos contextos (según lo definido por los programadores de juegos) diferentes a un lenguaje de guiones?
13
Respuestas:
Las secuencias de comandos se escriben para un lenguaje de secuencias de comandos. La gente puede usar las palabras en oraciones de argot para obtener la confusión a la que se refiere, pero pídale a cualquier persona las definiciones de Script, Scripting y Scripting Language y obtendrá algo como: Scripting es el acto de escribir Scripts usando un lenguaje de scripting.
Cuando incrusta un lenguaje de secuencias de comandos en un motor de juego, o el lenguaje central al que se refiere, está exponiendo no solo los objetos dentro del motor del juego sino también permitiendo que se escriba la lógica para el motor del juego. Otra cosa a tener en cuenta es que esto convierte su juego en una especie de máquina virtual, ya que los lenguajes de secuencias de comandos rara vez se compilan en lenguaje de máquina y, en cambio, su motor de juegos los interpreta en una forma de código de bytes e interpreta en tiempo de ejecución.
Esto tiene grandes beneficios para el equipo de desarrollo, algunos de los cuales puede encontrar a continuación:
Estoy seguro de que la lista puede seguir y seguir, estoy seguro, especialmente cuando entras en tipos de juegos especializados y cómo las secuencias de comandos pueden ayudar a definir las reglas de formación de grupos para mover grupos de unidades en un RTS o cómo puedes crear una lógica de UI en un lenguaje de script para proporcionar una IU extensible a sus usuarios finales y similares.
fuente
El uso de secuencias de comandos tiene muchas ventajas sobre el "lenguaje central". Algunos de estos incluyen:
fuente
Un script generalmente es una pieza de código que se ejecuta fuera de su motor central. Por lo general, está contenido en archivos de texto donde desee guardarlos. Luego, el motor lo carga, analiza y ejecuta en tiempo de ejecución.
Lo que generalmente sucede es que, sea cual sea el lenguaje que use (Lua, Angelscript, por ejemplo), este lenguaje generalmente tiene algunas facilidades que permiten al programador del motor exponer las funciones del motor o incluso clases completas a la instancia del "motor de secuencias de comandos" que se está ejecutando actualmente .
Por ejemplo (ejemplo totalmente estúpido, pero solo para entender) su código de juego podría tener una función pública que genere zombis en algún lugar:
El lenguaje de secuencias de comandos que utiliza ahora le permite exponer esta función al analizador de secuencias de comandos que se está ejecutando. Esto significa que puede abrir un archivo de texto, escribir "SpawnZombie (200,300,1337)" y una vez que su motor ejecute el código, aparecerá un Zombie en esa ubicación.
Las otras respuestas ya enumeran un par de buenos ejemplos de cómo se usa típicamente, pero omiten un punto que encuentro muy importante:
Este tipo de scripts hace que sea muy fácil depurar o probar el juego durante el tiempo de ejecución.
Digamos que quieres descubrir la manera perfecta de colocar un zombie en el mapa para que tenga el máximo efecto de miedo en el jugador una vez que lo descubre. Sin soporte de secuencias de comandos, tendría que salir de la aplicación, cambiar algunos números mágicos en el código, volver a compilar y probarlo.
Con el soporte de secuencias de comandos (siempre que tenga algún método para ingresar texto durante el tiempo de ejecución, por ejemplo, una consola de depuración), simplemente escriba "SpawnZombie (333,444,555)" y vea cómo se ve.
De la misma manera, es posible que puedas generar armas, vehículos, cargar diferentes mapas, cambiar los valores de algunas cosas en el juego, etc., matar enemigos porque no quieres perder el tiempo llegando a la parte que necesita ser probado etc.
Esto te ahorrará toneladas de veces en juegos más complejos.
fuente
1) Las secuencias de comandos suelen ser mucho más fáciles de modificar que el código.
2) Las secuencias de comandos a menudo se pueden modificar en el campo. Esto permite modificar el juego.
fuente
La mayoría de los lenguajes de script son mucho más expresivos que el lenguaje en el motor central. A menudo, el motor está escrito en un lenguaje de nivel relativamente bajo (por ejemplo, C ++) por razones de rendimiento, pero el código de juego no necesita ser tan eficiente y, por lo tanto, las prioridades cambian para poder expresar la funcionalidad fácilmente.
Por ejemplo, escritura dinámica vs. estática. Otro ejemplo: recolección de basura versus administración manual de memoria.
fuente
Las secuencias de comandos le permiten escribir lógica en un nivel superior. En otras palabras, escribe menos código con más funcionalidad.
Entonces, un ejemplo, lo siguiente muestra la diferencia entre escribir algo en código y escribirlo en un lenguaje de script.
Código de juego
}
Código de script
¿Ves cuánto menos codificación tiene que hacer el diseñador si usas un lenguaje de script?
La razón es que en el código del juego, tienes que dividir un evento en múltiples cuadros y escribir el código desde una perspectiva de múltiples cuadros. Por otro lado, las secuencias de comandos le permiten pensar en el evento de múltiples cuadros como una sola línea de código, porque todos los códigos adicionales se abstraen detrás de una función de secuencia de comandos.
Puedes preguntar, pero ¿no puede esa función simplemente escribirse en el código del juego también? Bueno, sí, pero eso significa que los diseñadores tendrán que abrir el código fuente del motor del juego y escribir todos los códigos allí, y no querrás que tus diseñadores revisen el código fuente del motor del juego (podrían cambiar accidentalmente algún otro código y todo se cuelga).
En cambio, desea que su diseñador haga algo como esto en su lugar: haga clic con el botón derecho en un automóvil en el Editor de mapas, haga clic en Insertar secuencia de comandos, escriba los códigos de secuencia de comandos. No hay problema con los códigos fuente críticos del motor del juego.
fuente