Google
 

jueves, noviembre 08, 2007

¿Lenguajes "alternativos" en los motores de juegos?

No nos desengañemos, salvo honrosas excepciones en C# o Java como jMonkeyEngine, no hay ni un sólo motor 3d (al menos que yo tenga constancia) orientado a juegos comerciales que usen otro lenguaje que no sea C/C++.

¿Es que no es posible crear un buen motor 3d en algún lenguaje funcional? Puedo entender que no se escoja Lisp por no ser tan rápido como C/C++ (aunque considero que es lo suficientemente rápido) pero ¿porqué no tirar de OCaml o de Haskell por poner dos ejemplos? Creo que los lenguajes funcionales son perfectos para el desarrollo de un motor 3d. Además, hoy en dia todos los lenguajes tienen FFI para poder acceder a librerias como OpenGL o OpenAL.

Soya3D está escrito integramente en Python. Aunque aún le falta mucho camino por recorrer es un buen ejemplo.

También tenemos Flag, un juego escrito totalmente en Haskell.

3 comentarios:

David dijo...

Ummm... bueno, por un lado está el tema de los objetos COM, de los que se hace uso en DirectX, y que por motivos del propio lengueje (hasta donde yo sé) limitan la posibilidad de utilizar esta API en lenguajes como Java, mientras que en C++ no tenemos ningún problema.

Pero si es cierto que hay una clara polarización hacia el C++, por lo que he visto en GameDev [http://www.devmaster.net/engines/]

Gracias por el enlace a Frag, muy interesante!

Javier Candeira dijo...

Hombre, Naughty Dog usa Lisp como lenguaje de scripting en todos sus juegos (hacen un engine en C/C++, y secriben su propio Lisp que corre en el engine). No sé si cuentas eso como programar juegos en Lisp, pero yo sí.

Victor M. dijo...

David: tienes acceso a las COM desde otros lenguajes (aunque no tengo experiencia con esto). Igualmente OpenGL esta disponible en cualquier tipo de plataforma.

Javier: no me refería al juego en si sino a los motores 3d. De todas formas muy interesante lo de Naughty Dog, no sabia que tiraban tanto de Lisp.