2009-11-23 12 views
5

Mi amigo y yo estamos en las primeras etapas de crear un lenguaje específico de dominio diseñado para la programación de juegos, para su trabajo de tesis.¿Qué características te gustaría ver en un juego de programación de DSL?

El lenguaje tendrá un nivel bastante bajo, tendrá una sintaxis tipo C, recolección de basura opcional, y estará orientado a sistemas que tienen poca memoria o capacidad de procesamiento (es decir, Nintendo DS), pero debe ser potente lo suficiente para facilitar el desarrollo de PC con facilidad. No será un lenguaje de scripting, sino uno compilado, pero como no queremos pasar meses escribiendo un compilador normal, la primera implementación será básicamente un traductor de LanguageName-to-C, con TCC o GCC como el compilador final

Ahora, tengo una pregunta para todos ustedes, los programadores de juegos por ahí:

¿Qué le gustaría ver en un lenguaje? ¿Qué características, implementación y sintaxis, serían las mejores para ello? ¿Que evitar?

Editar:

Algunas cosas que ya inventado:

  • objetos basados ​​en el estado - Un objeto puede existir en uno de sus propios estados (o sub-estados)
  • eventos y funciones - los eventos no tienen que existir para ser llamados, y pueden aparecer
  • asignación dinámica limitada y compatibilidad con puntero - queremos que sea lo más seguro posible
  • soporte para compilación de objetos ng (Hero está compuesto (dinámicamente) de Actor, Hurtable, Dirigible, etc.)
  • "recursos" en estados, cargados y descargados automáticamente al comienzo/final del estado (por ejemplo, un objeto de textura OpenGL es un recurso)
  • soporte básico para la localización y la serialización
  • una sintaxis que es apta para su procesamiento rápido
  • queremos hacer que el lenguaje lo más consistente posible: todo lo que se pasa como valor, cada declaración tiene una sintaxis predecible (por ejemplo. function retType name(type arg) is (qualifier, list) { }; sin const, static, public calificadores en cualquier lugar excepto en la lista de clasificación, etc.)
+0

Clojure tiene muchas características que admiro, especialmente en el frente de Programación Funcional. Podría hacer una buena cosa desde la cuna. – Kzqai

Respuesta

3

Personalmente, me gusta escribir juegos que puedan acceder a la amplia y amplia audiencia de la web. Sería más que interesante simplificar la interfaz entre el escritorio y la web.

Probablemente sea más el dominio de las aplicaciones creadas con el lenguaje que el lenguaje en sí, supongo, pero tal vez algo que es útil tener en cuenta durante la fase de diseño.

+0

¿Podría dar un ejemplo de lo que quiere decir? – GhassanPL

+0

Disculpe, no tengo capacitación formal en el diseño del lenguaje, así que realmente no tengo detalles sorprendentes, pero puedo ver el beneficio de poder hacer que su programa de juegos pase información a un servidor del sitio web para mostrarlo, y en general tener una estrecha integración entre un juego que se ejecuta en el escritorio y las conexiones sociales disponibles en la web. * se encoge de hombros * – Kzqai

4

Algo para facilitar la programación simultánea. Una mezcla de Erlang y C++ tal vez. He estado pensando en esto una y otra vez desde que se anunció el procesador Cell, pero tomaría una gran cantidad de tiempo R & D para desarrollarlo y resolver muchos de los problemas que ya tienen soluciones en los programas tradicionales de C++.

+0

El lenguaje tendrá soporte para corutinas muy básicas (básicamente las corutinas de Duff, tal como las presenta Simon Tatham). – GhassanPL

2

Entonces, no quiero reventar realmente tu burbuja, pero ... ¿quizás debería? Como desarrollador profesional de juegos, debo decir que realmente deben existir tres tipos de "idiomas" para el desarrollo de juegos.

En primer lugar, está el idioma del nivel del motor. Esto es típicamente C++. Se trata de rendimiento. Los artefactos de la jugabilidad no están destinados a ser implementados aquí (lamentablemente, a menudo lo son).

A continuación viene el lenguaje de juego. Es liviano, fácil de entender y está diseñado para una iteración rápida.

Finalmente, existe algún tipo de lenguaje de scripting visual. Este es el más ligero de todos y está dirigido a no programadores (diseñadores de niveles, etc.).

Dicho esto:

Sin duda la salida UnrealScript. Se usa en toda la industria (ya que el motor Unreal es una piedra angular del desarrollo de juegos FPS).

Yo recomendaría apoyo:

  • Programación concurrente (echa un vistazo a lo PCC hace con Stackless Python para Eve Online)
  • la replicación de red (echa un vistazo a UnrealScript, puede etiquetar las funciones a ejecutar ya sea en el servidor o el cliente, o para que sea seguro ejecutar en el cliente, etc.)
  • Estado (como se mencionó) sería genial. UnrealScript tiene esta facilidad. Esto debe realizarse con seguridad (es decir, ingresar y salir en cualquier punto, las transiciones complejas se manejan con elegancia, etc.)

¡Buena suerte!

+0

WoW se implementa más o menos de la misma manera que usted dice: motor C++, interfaz de usuario escrita en un lenguaje de scripting, y luego hay macros para accesos directos de entrada del usuario. Utiliza un enfoque estratificado y multilingüe y se vuelve totalmente exitoso. – JohnnySoftware

Cuestiones relacionadas