Autor: Fernando Rodríguez

Fecha: 20-04-01

 

¿Aprendemos a programar o a inicializar DirectX?

 

Una de las cosas más normales en la programación de videojuegos es ver cómo la base en la que se sustenta está llena de chavales (¿pongamos 14 años?) que se mueren de ganas por realizar videojuegos. Todos suelen comenzar de la misma manera. Primero, se encargan de buscar algún libro que ponga en la portada “C++” y leerlo durante 15 días (obteniendo, así, unos conocimientos que los conviertan en “expertos”). Una vez hecho esto, van a por lo que se supone que es todo lo que necesitan para desarrollar juegos: “DirectX” (porque es lo que más asocian con el desarrollo de videojuegos). Se lanzan como locos a por las dichosas librerías y una vez que las han logrado inicializar (y dibujar con ellas el bitmap de rigor en pantalla), forman un grupo de programación. Abren su página web (anunciando los tres proyectos que están desarrollando), invirtiendo en ello más tiempo del que necesitaron para aprender “C++” y “DirectX”, y comentan en algún foro importante, que buscan grafistas (por supuesto, con conocimientos 3D).

 

Ese es el estereotipo del monstruo de programación de 14 años (y de más años), que tantos foros puebla a lo largo y ancho de la red. Así de triste resulta la increíble locura en que se ha convertido el panorama actual de desarrollo. No voy a engañar a nadie, yo he cometido el mismo error, como supongo que muchos de los que estarán leyendo este artículo, en mis inicios (no existían las “DirectX” pero el ensamblador era el “paradigma” de la programación de videojuegos, y muchos de nosotros perdimos el tiempo intentando aprenderlo cuando aún desconocíamos aspectos elementales de la programación).

 

Es cierto, cada vez el desarrollo de videojuegos se convierte en una actividad de marketing más, en el que librerías como “DirectX” parecen representar todo lo que se ha de conocer para poder hacer videojuegos. Esto es, naturalmente, completamente falso y conduce a que haya un aprendizaje totalmente incorrecto de lo que es la programación y de los lenguajes (total, sólo me interesa aprender “C++” para poder saber cómo se hace una clase y cómo se escribe una función; el resto va a ser todo llamadas a “DirectX”). Pero lo más grave de todo, es que esta carencia de saber realmente qué es lo que se está haciendo, crea programadores que no son capaces de salir fuera del entorno asociado a la librería que han elegido para representar los gráficos en pantalla. Dándose casos en los que “eminencias” en “DirectX”, no saben decirte porqué una lista es mucho más ineficiente que un árbol de búsqueda localizando elementos, o qué algoritmos de ordenación pueden ser útiles o qué es una “tabla hash”. O, lo más habitual, no conocen de forma aceptable el lenguaje de programación que utilizan. Todo esto conduce, irremediablemente, a que muchas de ellas nunca puedan tener los conocimientos necesarios para poder crear un videojuego, cerrarlo y aprender realmente a programar. Poco les ayuda, además, la salidas consecutivas de nuevas versiones de librerías como “DirectX”, pues los que parecen este “síndrome” se lanzan como locos a crear wrappers y dejan sus supuestos proyectos siempre aplazados.

 

Y todo lo que he comentado sobre “DirectX” es aplicable a  “OpenGL”. Da igual la librería usada para representar algo en pantalla, siempre acabamos acudiendo a ese aspecto visual que son los videojuegos y nos olvidamos de que lo realmente importante es saber comprender la lógica interna de cualquier del programa (videojuego) que estamos desarrollando. Lo que queremos hacer es un juego, no una aplicación que muestre un bonito cubo 3D rotando en pantalla o un montón de sprites caminando de un lado a otro.

 

La moraleja está clara. Procura utilizar siempre librerías gratuitas que encapsulen todo el tratamiento tecnológico (tratamiento de gráficos, sonido, etc) cuando te encuentres en un momento de aprendizaje. A menos de que te decidas a hacer algo serio y sepas ya cómo hay que abordar la construcción de un motor, desde el punto de vista de su arquitectura y lógica interna general, no te saldrá rentable crearte tus propias librerías tecnológicas. Lo único que conseguirás será crear un wrapper tras otro, impidiéndote alcanzar (en el 99% de los casos) tus objetivos de crear un videojuego.

 

Si eres de los que hace tiempo estás con un proyecto de videojuego y lo único que tienes es un wrapper de tu librería favorita a medio acabar y un montón de tutoriales sobre la misma, encima de tú mesa, deberías de recapacitar sobre lo que quieres hacer y lo que realmente estás haciendo.