Temas de diverso calado personal

lunes, 26 de febrero de 2007

Videojuegos y sus 1001 lenguajes de programación

Aunque el titulo de este articulo suene a broma, que lo es :), no deja de ser algo bastante real y es que, hoy en dia la invasión de cientos de lenguajes de programación es obvia, todas las empresas se lanzan a hacer sus propios lenguajes de scripts extendiendo la funcionalidad de sus librerías.

TIOBE, en su web, hace un indice de popularidad basado en "on the world-wide availability of skilled engineers, courses and third party vendors" que no es poco. En esta web se ve como Ruby es la que despunta más y tiene la entrada más fuerte en los 20 lenguajes de programación más usados y conocidos!, otros lenguajes con Lenguaje D y ABAP.



Read more...




En esta otra web podemos ver, basado en otra forma para calcular el indice de popularidad, como C sigue partiendole la cara a otros lenguajes en proyectos nuevos y como C# aumenta sus espectativas.

Mi favorito seguirá siendo MOO, pero el que se programa moo, moooo, moooooo, mo.

Por otra parte existen los Lenguajes de Script que no dejan de salir por todos lados, es agobiante y absurdo. Python y Lua, este último basado en el binding del 1º, se crearon como necesidad para los programadores de extender la funcionalidad sin tener que compilar y linkar código. Y dices tu... que bien mola. Si mola, solo que hay 400 como estos 2, para diferentes cosas, como NSIS para hacer instaladores que tiene un manual más tocho que Lua, o hace poco QScript, para la librería QT, que bonito!! puedo hacer formularios en tiempo real... no te jod...

Yo estoy cansadisimo de lenguajes de programación que extienden la absurdez de los lenguajes a los que intentan cumplimentar y no me meto con Python o Lua, sino con los enanos que hay por todas partes.

Actualmente, y gracias a dios lenguajes como D o C# extienden su funcionalidad a script y linkan y compilan ddl/dll en tiempo de ejecución sin ningún problema. Y es que, esa es una buena feature de un lenguaje de programación. Sin duda C# hoy en dia es muy conocido y la gente va probando sus virtudes, pero yo personalmente que quedo con D que es una evolución brutal de C/C++ al estilo de las mismas, depurado y limpio, pulcro! moderno de bajo-medio nivel y con todas las features de un lenguaje de medio-alto nivel como C#. Brillante. Llevo siguiendolo desde hace ya casi 2 años y recientemente he podido comprobar IDEs decentes y como el proyecto ddt ( plugin de eclipse para programar en lenguaje D, como el de C/C++ ) o Poseidon ya son bastante funcionles.

En lenguaje D, se puede extender perfectamente de las librerias y dlls ya compiladas de C/C++ con 0 problemas, el propio lenguaje extiende su funcionalidad a una compilación externa y en tiempo de ejecución, hay ports de SWT ( DWT ) yo que se, cuando madure un poco, por mucho que quiera microsoft meternos con calzador C#, que está genial, el al código gestionado le van a dar por saco. Toma lenguaje de programación en condiciones gestado desde hace más años que C#. Podeis encontrar caracteristicas del lenguaje y el compilador aquí. Debería quitarle el polvo al libro que empecé sobre D...

Pues bien hoy en dia en el desarrollo de videojuegos se usan normalmente, Python o Lua con gran aceptación para desarrollar el flujo del juego, a veces hay motores de videojuegos que estan volcados al sistema de script. Una manera moderada de hacer esto y conservar la claridad mental al respecto es hacer el lenguaje de script una herramienta util para el desarrollo que tenga una parcela bien definida y sepamos para que va a servir. Si haces que el lenguaje de script pueda hacer cosas del tipo, game.getPlayer("prompt").setVelocity(10000), el desastre se huele al volcar toda la funcionalidad de OOP de C++ a un lenguaje de script. La gente dice, bueno se encriptan los ficheros, se protegen!! tal... eso no se puede dejar para una versión release y luego a parte del coste de implementación encima el coste para proteger esos datos como ya se hace hoy en dia con las texturas o los shaders!

Si se utilizase lenguajes de programación con su propia extensión o likado en tiempo de ejecución tendriamos toda la funcionalidad con 0 coste de implementación y adaptación del lenguaje de script y su posterior protección. Otro ejemplo deprotección es el motor de Battlefield y juegos que en definitiva se juegan por red, pero que la información de script está comprimida o protegida de alguna manera. Necesitan hacer comprobaciones para saber que todos los usuarios tienen los mismos datos. Y dios te libre si son un buen puñado de MB con lo que costaría leer y compararlo con el servidor.

Con un lenguaje como D tienes toda la flexibilidad del código sin preocuparte por exportar funciones y el coste de implementación el debugeo de Lua ( que es un follón ) etc... etc... luego solo tienes que ir compilando/grabando tus progresos y al final de todo tienes una ddl ( libreria dinamica ) limpia, pulcra, impoluta y perfecta! :). Al contrario que con C# que hace esto mismo, solo que las dll compiladas con .net necesitan ser protegidas, una porqueria ¬¬. Es más prueba a renombrar una dll de .Net a .exe y ejecutalo :D OOP total.



0 comentarios: