unity programar programacion naves lenguaje juegos juego codigo c++

c++ - programar - Lenguajes de scripting y desarrollo de juegos/programación



unity (10)

Bueno, he estado involucrado en el desarrollo / programación de juegos en 2D, y muchos juegos que he visto usan algún tipo de lenguaje de scripting también. Así que me pregunto: ¿cuál es el propósito de usar scripts en juegos? Sé que no hay una única razón para responder, y he estado tratando de considerar todas las posibilidades. Esto es lo que ''pienso'' que sé hasta ahora:

1) Los scripts permiten cambiar el juego sin tener que volver a compilar.

2) Los scripts son más fáciles de usar para los no programadores.

3) Los scripts me permiten separar el motor del juego, lo que me permite hacer que otros juegos con los mismos componentes sean más rápidos.

Eso es todo de lo que soy consciente. Mi siguiente pregunta es, si voy a ser Dev / programando un juego solo, ¿realmente necesito usar scripts? ¿O podría prototipo del juego usando algo como python o ruby, para permitir pruebas rápidas, y luego reescribir el código en C ++ ahorrando tiempo y errores de compilación, etc.?

Otra cosa que me pregunto es si es mejor usar Ruby o Python, ya que tengo más experiencia con eso. ¿O debería usar Lua, Perl o algo más si se ajusta mejor a lo que pretendo lograr? Hablando de eso, ¿para qué debo usar los scripts? ¿Debo usarlos para ubicar y modelar las IU del menú del juego, escribir / leer archivos guardados, cargar niveles de mapas, mantener matrices o estructuras de terminología del juego como "Nuevo juego" o "Salir", todo lo anterior, ninguno de los anteriores? ?

Si utilizo scripts, ¿no permitirá eso que la mecánica del juego sea editada por el usuario final? ¿O hay una manera de empaquetar los scripts en un archivo comprimido que el motor pueda leer?

Básicamente, me pregunto:

¿Para qué debo usar scripting en mi juego? ¿Y por qué?

¿Necesito usar lenguajes de scripting si trabajo solo o con programadores en lugar de con Devs?

¿Qué lenguaje de secuencias de comandos debería usar si estuviera creando plataformas, juegos de rol o qué tienes?


¿Para qué debo usar scripting en mi juego? ¿Y por qué?

Como todos (incluso usted) ha dicho, los scripts hacen que su juego sea más fácil de editar. En un equipo más grande, las secuencias de comandos también tienen un efecto de productividad muy bueno: las personas con conocimientos tecnológicos pueden seguir perfeccionando el motor, mientras que las personas creativas pueden trabajar en el juego real, y los dos equipos no tienen que interponerse mutuamente .

¿Necesito usar lenguajes de scripting si trabajo solo o con programadores en lugar de con Devs?

No lo necesita y, dependiendo de cuál sea su objetivo final, podría ser realmente una pérdida de tiempo implementar scripts. También desarrollo un atm juego de scripting 2D; Estoy solo, pero lo hago también como un desafío personal y también porque quiero que el juego sea fácilmente modificable.

¿Qué lenguaje de secuencias de comandos debería usar si estuviera creando plataformas, juegos de rol o qué tienes?

Las dos opciones más populares son Lua y Python. La mayoría de la gente recomienda Lua porque es un poco más rápido. Fui con Python porque tiene soporte (nativo) para las clases, que funciona bien con mi arquitectura C ++ existente, y también porque creo que es un lenguaje mucho más agradable para trabajar.


¿Para qué debo usar scripting en mi juego? ¿Y por qué?

Las razones que usted cita son buenas. Una cosa que quizás deba comprender es que la mayoría de los juegos profesionales aún están diseñados con C ++ y está lejos de ser flexible para cambiar si la base del código es grande. Por lo tanto, si usa C ++, necesitará lenguajes de scripting para hacer cambios rápidos donde sea importante que se le permita hacerlo de acuerdo con las razones que mencionó.

Si no usa C ++, tal vez use un lenguaje que pueda absorber los cambios rápidamente, haciendo que el propósito principal de los scripts no sea tan obvio. No usaría el lenguaje de scripting en un juego Flash o Python, por ejemplo.

¿Necesito usar lenguajes de scripting si trabajo solo o con programadores en lugar de con Devs?

Como mi respuesta anterior: depende de la sincronización de los cambios. Piense que las reglas básicas de los juegos rara vez cambian, pero todo lo relacionado con el diseño de niveles lo hará, y debería ser comprobable lo antes posible. Si puedes hacerlo en el lenguaje de programación del juego, ¿para qué molestarse? Si no puede, entonces cualquier forma de acelerar la integración de cambios pagará.

¿Qué lenguaje de secuencias de comandos debería usar si estuviera creando plataformas, juegos de rol o qué tienes?

Francamente, no hay una solución única para cualquier problema. Personalmente uso Falcon y ChaiScript, Lua es bien conocido, pero cualquier lenguaje de scripting que pueda usarse con la programación de tu juego servirá. Esa es una pregunta que ya se ha hecho y si tiene dudas, simplemente elija Lua, ya que es la más común en los juegos.


De hecho, casi todos los servidores de juegos MMORPG están programados en script.

Todo el motor C ++ incorporará un lenguaje de script para el manejo lógico, lua es un lenguaje de script adecuado para él.

En Bigworld, Python es el lenguaje de inserción predeterminado.

Y node.js también es un buen candidato para la programación de servidores de juegos. Porque su capacidad de red es superior. Hay un marco de código abierto en node.js: https://github.com/NetEase/pomelo/


Está bien, sé que esto está un poco muerto, pero tengo que decir esto. Literalmente no existe tal cosa como la programación sin scripts. Honestamente, no importa si los escribes en ti mismo o no, el hecho es que alguien escribió esos guiones. Al igual que el rubí, para usarlo, necesitas un programa como, por ejemplo, notepad + para configurarlo, o cualquier RPG Maker basado en computadora de enterbrain usa una forma de rubí para operar. te guste o no, cuando uses computadoras para diseñar un juego, aprende a escribir. Ahora, en cuanto al idioma, busca un poco y prueba otros diferentes. No pierda el tiempo con el uso de un motor precompilado, solo trabaje desde cero. Confía en mí, estarás mejor. Todavía estoy tratando de decidir cuál me gusta más, Lua (C ++) o Ruby. Puedo usar C ++ puro


Honestamente, como esto suena como tu primer intento en un juego, no deberías preocuparte por este tipo de cosas. En su lugar, me preocuparía más mantener el alcance de su proyecto en un nivel en el que tenga la posibilidad de que una bola de nieve realmente complete algo. Si aún no has hecho algo al nivel de Tic-Tac-Toe o Pong, hazlo primero. Lo que aprendas allí será más valioso que preocuparse por un lenguaje de scripting.

Ah, y si estás haciendo un juego de rol como tu primer intento en un juego. No lo hagas Son, con mucho, el tipo de juego más difícil de hacer, incluso para los desarrolladores profesionales, con muchas, muchas veces los recursos disponibles para ellos. Mantenlo simple y usa esto como una experiencia de aprendizaje.

De vuelta a sus preguntas: si usted es el único que verá su juego, elija usar un lenguaje de scripting o no. Si le ahorrará tiempo en general o si desea aprender cómo hacer la integración de secuencias de comandos con el código, hágalo, pero tenga en cuenta que será una pérdida de tiempo.

Sí / no / depende de tu segundo. Si el alcance de su juego es pequeño, las secuencias de comandos no son tan importantes. Si haces esto solo, las secuencias de comandos no son tan importantes.

Su elección sobre lo que sabe o lo que su motor admitirá (o qué herramientas de motor puede comprar para admitir). Lua es popular, pero incluso los scripts enrollados a mano también funcionarán. Se trata más de desacoplar los datos del trabajo de tipo de código y diseño del trabajo de tipo de ingeniero.

Sus puntos iniciales anteriores se aplican. Los scripts mantienen a los no programadores fuera del código y permiten que cualquier persona en un equipo cambie fácilmente los datos relacionados con los datos que deberían estar en el código de todos modos. Los scripts también actúan como un lenguaje de muy alto nivel que permite muchos cambios de nivel de juego en formas controladas que se verían feas si se colocan en el código. Personalmente he trabajado en juegos que se hicieron en ambos sentidos. Los juegos con secuencias de comandos fueron un poco más fáciles de mantener al final del ciclo de juego. SI SI SI EL código de soporte de la secuencia de comandos era maduro y se había ejecutado a través de algunos ciclos de depuración. El nuevo código de soporte de script es más difícil de depurar que codificar las cosas directamente porque hay más puntos posibles de falla. Los juegos que fueron codificados sin scripts tendían a hacerse un poco más rápido, pero requerían mucho más tiempo de programador / ingeniero, lo que significa que el alcance general de las cosas debía limitarse para mantenerse dentro del presupuesto.

Diré que las secuencias de comandos bien diseñadas y el sistema de juego en general siempre superarán la codificación directa. Mira a Unity para ver un ejemplo de cómo las secuencias de comandos y el código y todo lo demás se pueden acoplar en una interfaz elegante que permite un desarrollo de juegos muy rápido.


Las razones que enumeras son todas razones válidas para usar lenguajes de scripting en juegos. Sin embargo, también agregaría otra razón: diferentes lenguajes se adaptan mejor a diferentes tipos de tareas de programación y un lenguaje de scripting de alto nivel te permite escribir partes de tu juego en un lenguaje que podría ser mejor que C ++.

Las principales razones por las que C ++ se usa ampliamente en los juegos son el rendimiento, el fácil acceso a las API o el hardware nativos de bajo nivel (en las consolas) y la inercia. interactuó con desde C ++. Sin embargo, para muchas tareas, los lenguajes de nivel superior como Python, C # o Ruby tienen beneficios de productividad del programador sobre C ++ que pueden superar las ventajas de C ++ para el código que no es crítico para el rendimiento o que no tiene que interactuar con las API nativas.

Un motor de juego C ++ bien diseñado con un lenguaje de scripting de alto nivel puede ofrecerle lo mejor de ambos mundos: el rendimiento y el acceso de bajo nivel de C ++ donde más se necesita y los beneficios de productividad de un lenguaje de alto nivel donde más se necesitan.


Me ha resultado poco útil utilizar scripts, tanto cuando trabajé en un gran estudio de juegos como en mi trabajo como desarrollador independiente. Por otro lado, tengo amigos que han utilizado con éxito motores modernos de calidad profesional con tecnología de scripting. Mientras haces el desarrollo de juegos indie por tu cuenta (o en un equipo pequeño), creo que deberías evitarlo. Las principales razones son:

  • Añade sobrecarga prácticamente en todas partes: un idioma más para dominar (por desarrollador en el equipo), el rendimiento es más lento que el nativo y la API es el enlace más débil, lo que significa que a menudo es necesario reconstruir el binario de todos modos.
  • La única ganancia real con un lenguaje de nivel superior es menos horas de desarrollo por adelantado (si está usando un motor maduro), pero en mi experiencia, el tiempo se consume al acabar con los errores.
  • Muchos lenguajes de scripts de juegos utilizan la escritura dinámica (Lua, Python sin pila, Peón), que me parece propenso a errores en comparación con los lenguajes tipificados estáticamente. Si tú también sientes que solo es bueno para cosas simples, también podrías hacerlo de forma nativa.

Como nota al margen , encuentro que los lenguajes de programación de juegos son excepcionalmente útiles, pero solo para aplicaciones de prototipo rápido, no para componentes enormes dentro de los juegos. Vea mi respuesta here .


No estoy convencido de que las interfaces de scripting para los juegos que escribes sean tan útiles. Hice un trabajo en Freeciv una vez, e hice un gran esfuerzo para habilitar el "modding" mediante la interfaz de scripting. Una característica que parecía poco utilizada. Creo que hay un peligro del efecto plataforma interior . No necesita un lenguaje de scripting para personalizar su juego: ya tiene un lenguaje de programación perfectamente bueno (C ++, en su caso) para hacerlo. Es un WTF .


Sus 3 razones principales son todas correctas al 100% y son las principales razones para usar lenguajes de scripting junto con su motor de juego.

Personalmente solo he tenido experiencia con Lua a través de Luabind. Es un poco difícil de configurar pero valió la pena. Lo que puede hacer con los lenguajes de scripting es exponer las estructuras de datos y / o la funcionalidad que desea que el "usuario", en este caso, usted mismo pueda usar. En general, las únicas mecánicas del juego, etc., que pueden editarse son las que usted les permitió.

¿Para qué debo usar scripting en mi juego? ¿Y por qué? Cargar activos, exponer características / tipos, es decir, para nuestro motor de juego (escrito en c ++), teníamos un nivel básico, y luego muchos tipos diferentes de niveles se heredaban de él, como el nivel de onda, la coincidencia de muerte, etc. El usuario simplemente establece en el guión qué tipo de nivel necesitan, y luego agrega los activos aquí también. En mi demo teníamos;

Nivel = "nivel de onda"

--Nivel inicial de enemigos.

EnemyNumbers = "3"

--Nivel total de olas

WaveNumbers = "4"

- coeficiente de onda

WaveCoeff = "1.1"

--Tamaño del terreno.

TerrainSize = "256"

--Archivo de terreno

TerrainFile = "resource / Models / mountainous.raw"

No te preocupes demasiado por los números y todo eso.

Como puede ver, algunos activos se cargan y determinan el tipo de nivel

También le dimos mucho control a los scripts de la IA, de hecho, las estructuras de datos estaban casi completamente expuestas a Lua.

¿Necesito usar lenguajes de scripting si trabajo solo o con programadores en lugar de con Devs?

¿Si no talvez? Todos preferimos la codificación ''real'', por supuesto. Si puedes hacer que tu motor de juego sea lo suficientemente abstracto como para construir juegos completamente diferentes solo con Lua, entonces significa que has hecho un gran trabajo y lo has diseñado muy bien.

La otra cosa en la que tienes que pensar, especialmente si tu motor de juego es bastante grande, y seamos realistas, no va a haber uno pequeño, ¡cada vez que compiles, puede tomar minutos! Es el enlazador que está tomando tiempo aquí.

¿Qué lenguaje de secuencias de comandos debería usar si estuviera creando plataformas, juegos de rol o qué tienes?

Solo he usado Lua, así que ese es el único consejo que puedo dar aquí.

Espero que esta información sea útil para usted.


Te daré una respuesta rápida y breve. Los scripts son principalmente para cambiar cosas mientras el juego aún se está ejecutando, por lo que puedes editar las cosas más rápido. Esto es mucho mejor que recompilar, recargar los activos, ir al punto específico en el juego, activar ciertos condicionales (elementos, hablar con personas en un orden específico, etc.) y etc.

Las cosas que se hacen en el guión son: el habla del personaje, la interacción de los PNJ con los disparadores (por ejemplo, caminar a algún lugar, detenerse para hablar con otro PNJ, luego ejecutarse en algún lugar, los scripts se usan para la sincronización), los disparadores o eventos en general y las estadísticas del enemigo (salud, velocidad, precisión, A veces lógica para dicho personaje).