Pregunta

  

El script del juego controlará la lógica NPC / AI.

Si tuviera que implementar la función de secuencias de comandos dentro del juego, ¿qué idioma debería admitir?

Tenga en cuenta que mi implementación se ejecutará en múltiples plataformas como .net, flash, javascript y java.

¿Cuáles son las ventajas y desventajas de las posibilidades enumeradas? ¿Cuánto tiempo llevará implementar el intérprete?

¿Qué características buscan los scripters del juego? ¿Qué están implementando otros juegos?

Estoy pensando en votar por JavaScript debido al hecho de que todos pueden leerlo y escribirlo.

¿Qué piensas?

¿Fue útil?

Solución

Usaría Lua, porque es terriblemente fácil de insertar. Incrustar Python parecía ser complicado y realmente no lo he perseguido.

Este enlace puede ser de uso adicional si quieres saber más sobre cómo incrustar Lua y sus ventajas / desventajas.

Otros consejos

Usa Lua. Es un lenguaje hermoso, ampliamente adoptado en la industria de los juegos .

Existen enlaces Lua para la mayoría de sus plataformas:

También hay proyecto llvm-lua , que puede ser útil para portar Lua a otras plataformas.

En cuanto a JavaScript como plataforma de host ... Este tema aparece de forma recurrente en la lista de correo de Lua , pero aún no se han publicado soluciones serias. Si realmente necesita alojar Lua en JS, pregunte en la lista de correo de Lua, tal vez algunas personas puedan compartir su experiencia sobre el tema.

Preferiría Python por sus enlaces en muchos idiomas.

Creo que te refieres a "integrar" el intérprete, y no "implementar" eso. Dependiendo de sus habilidades, crear un intérprete para un lenguaje de script podría llevar mucho tiempo.

Sé con certeza que Python y Lua tienen enlaces para .NET y Java; puede incrustar los intérpretes. No sé si hay enlaces para Javascript y Flash.

El problema con Python es que hay tres variantes, todas hechas por diferentes personas.

  • IronPython para .NET
  • Jython para Java
  • y el CPython regular

No he trabajado en Jython, así que no voy a comentar al respecto. Pero hay ciertos problemas de portabilidad entre IronPython y CPython. Por ejemplo: IronPython no admite extensiones C nativas. Si hay scripts escritos en CPython que los usan, tendrá dificultades para portarlos a IronPython. Además, si los scripts de IronPython usan bibliotecas .NET, tendrá dificultades para portarlos a CPython.

Las implementaciones de Lua, por otro lado, provienen de un solo lugar y no espero tales problemas.

Eso depende de cuán complejo sea su código (cuán complicado puede ser el comportamiento de los NPC). Tcl, Lua y JavaScript son para tareas simples. Escribir grandes fragmentos de código en estos idiomas rápidamente tiende a ser imposible de mantener (especialmente para usuarios ocasionales).

Squirrel utiliza una sintaxis tipo C con la que la mayoría de las personas se sentirán cómodas, pero ¿qué tal el soporte de herramientas? Si tiene que escribir todo con el Bloc de notas, eso también lo limitará severamente.

Python es un lenguaje maduro que es fácil de aprender (solo compare el "tutorial" de Lua con el que viene con Python). Si bien las diversas versiones de Python pueden parecer intimidantes (consulte la respuesta de Rohit ), el código de Python en tu juego será el mismo para todos ellos. Viene con un IDE (IDLE) y hay otros IDE que admiten Python que le proporciona la finalización del código, la depuración, la ejecución de casos de prueba, etc.

Si desea usar Python, considere usar Stackless , ya que es bastante mejor en subprocesos que CPython estándar. Se usa en algunos MMORPG (EVE Online, IIRC), por lo que tiene un historial en los juegos. Además, es muy bueno para las continuas (parte de la razón por la que se desarrolló en primer lugar), que es un modelo bastante bueno para la lógica de tipo 'simulación' que se usa en los juegos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top