Universitat Oberta de Catalunya

Entrevista a Ramón Santamaría, creador de la biblioteca gráfica raylib

Raylib es una librería en C sencilla y fácil de utilizar para aprender a programar videojuegos. Nuestro entrevistado, Ramón Santamaría empezó a desarrollarla hace 3 años y hasta ahora la ha utilizado con más de 250 alumnos con excelentes resultados.
Captura de pantalla de Raylib
Captura de pantalla de raylib

¿Nos podrías explicar cómo fueron tus primeros pasos en el desarrollo de videojuegos?

Desde niño me han apasionado los videojuegos, me parecían el sistema de entretenimiento perfecto, capaces de transportarte a otros mundos donde vivir aventuras increíbles. Siempre quise saber cómo funcionaban y tras intentar realizar varios cursos de programación sin mucho éxito, empecé creando niveles para juegos como Doom o Warcraft II, recuerdo lo apasionante que era poder jugar a mis propios niveles y fue cuando decidí que quería dedicarme a ello. Años más tarde estudie una ingeniería electrónica donde poco había de videojuegos pero me proporciono unas fuertes bases en matemáticas y física que me serían muy útiles en el futuro. Tras mi ingeniería me especialicé con un Máster en desarrollo de videojuegos y poco tiempo después de terminar encontré trabajo en Electronic Arts, como ingeniero de integración. Durante 3 años en EA aprendí muchísimo y me sirvió para entender mucho mejor no solo cómo funcionaban los procesos creativos sino también toda la vertiente más empresarial del desarrollo de videojuegos.

Centrándonos en la librería raylib que has desarrollado recientemente. ¿Qué es exactamente? ¿Cómo se te ocurrió la idea?

Hace algunos años empecé a trabajar como profesor de programación de videojuegos en un centro privado donde la mayoría de alumnos que entraban tenían perfil artístico y pocos habían escrito algo de código en su vida. Intenté utilizar varias herramientas para enseñar programación pero ninguna se adaptaba a mi metodología; a menudo eran demasiado complicadas de utilizar, con nomenclaturas poco intuitivas para una persona inexperta, o abstraían demasiado de la programación al estudiante con interfaces de point-and-click y arrastrar-soltar. Aprovechando mi experiencia, decidí crear una librería a medida que fuese sencilla y fácil de utilizar pero que obligase al alumno a escribir código y entender las bases de la programación de videojuegos. raylib empezó cómo un proyecto de fin de semana que ha crecido de modo desmesurado gracias al feedback continuo de más de 250 alumnos que han aprendido programación de videojuegos utilizando esta librería. raylib es gratuito y de código abierto y está especialmente pensado para la educación.

Core 3D en primera persona
Core 3D en primera persona

¿Cuánto tiempo te ha llevado su desarrollo y cuáles son los principales retos y dificultades con las que te has encontrado durante este proceso?

Justamente acabo de publicar una nueva versión de la librería para conmemorar su tercer aniversario. Han sido tres años de continuo desarrollo y unas 7000 horas de trabajo invertidas. El mayor reto al que me he enfrentado ha sido intentar mostrar de manera sencilla al estudiante funcionalidades que a menudo no son sencillas de entender. A parte de esto, otros retos que he tenido que afrontar han sido mayormente técnicos, como a la hora de adaptar la librería a múltiples plataformas; especialmente destacable su adaptación para Raspberry Pi, un pequeño ordenador del tamaño de una tarjeta de crédito, y su adaptación para Oculus Rift CV1, uno de los cascos de realidad virtual más avanzados del mercado. Como curiosidad, mencionar que raylib probablemente sea la única librería del mercado que te permite desarrollar un videojuego completo en C tanto para Raspberry Pi como para Oculus Rift CV1.

Core Oculus Rift Raylib
Core Oculus Rift raylib

¿Ha participado algún colaborador en el desarrollo de raylib?

Si, raylib es un proyecto libre y de código abierto. Múltiples personas de todo el mundo han colaborado con añadidos, corrección de errores y nuevos ejemplos, incluso algunos alumnos míos han trabajado conmigo para añadir ciertas funcionalidades a la librería como el sistema de cámara 3D o distintos efectos de iluminación. De hecho, podría decir que todos mis alumnos han colaborado de modo indirecto en la librería proporcionando feedback, ideas y mejoras para esta.

¿Cuáles son las ventajas que ofrece raylib respecto a otras librerías para la creación de Videojuegos?

Control total sobre el código y ningún tipo de interfaz gráfica que facilite la tarea de hacer juegos. Esto permite al alumno conocer al detalle el proceso interno de funcionamiento de un videojuego y ver cómo es la programación del modo más crudo, sin ningún tipo de abstracción. raylib no es una herramienta con interfaz gráfico tipo point-and-click o de arrastrar-soltar, con raylib el alumno tiene que escribir código. No es la mejor herramienta para desarrollar un juego profesional (aunque sea posible) pero si para aprender cómo hacerlo.

¿Qué tipo de videojuegos se pueden hacer a partir de esta librería?

Se pueden crear todo tipo de juegos, 2D y 3D, de plataformas, puzzle o aventuras, para móvil, PC o consola, más grandes o más pequeños… cualquier tipo de juego, el único límite lo marca la imaginación del alumno y sus ganas de trabajar. En la página web de raylib (http://www.raylib.com/games.htm) hay una docena de juegos clásicos listos para que el alumno los juegue y los investigue para descubrir cómo funcionan por dentro, sin duda es el mejor material didáctico para un futuro programador de videojuegos.

Shaders standard vs Shaders processed
Shaders standard vs Shaders processed

¿Cómo se puede acceder a raylib?¿Cómo se usa?

Raylib se puede descargar gratuitamente desde la página web (www.raylib.com), por defecto se facilita un instalador para Windows que incluye todas las herramientas necesarias pre-configuradas (básicamente un editor de texto y un compilador) para empezar a programar videojuegos desde el primer minuto. El alumno solo tiene que instalarlo, abrir el editor de texto y compilar. Todo está automatizado y preparado… pero de modo completamente transparente para el alumno, raylib no oculta nada del proceso de compilación, el objetivo es que el alumno aprenda cómo funcionan las cosas.

Arquitectura de Raylib
Arquitectura de raylib

Actualmente estás preparando la asignatura de Programación Gráfica del Máster de Diseño y Desarrollo de Videojuegos de la UOC, junto con Joan Arnedo, uno de los profesores de los estudios de Informática, Multimedia y Telecomunicaciones. ¿Puedes contarnos qué aprenderán los alumnos de esta asignatura durante el curso?

Aprenderán cómo funcionan los gráficos por ordenador mediante la creación de tres videojuegos. Para el primero de ellos, un Arkanoid, utilizaran raylib y se familiarizaran con la programación gráfica, aprenderán las bases de la programación de videojuegos y los diferentes elementos involucrados. El segundo juego es tipo Zelda, unas mazmorras 2D de vista top-down, para ello utilizarán una de las piezas internas de raylib: rlgl, es como bajar un nivel en el proceso para ver cómo funcionan las cosas por dentro. El tercer videojuego será en 3D, un juego tipo Doom, donde los alumnos utilizarán directamente la librería gráfica OpenGL (en su versión más moderna), es como bajar al nivel más profundo de la programación gráfica, obteniendo acceso directo al hardware. Creo que les va a gustar, vamos, yo estaría encantado.

¿Nos podrías contar tus planes de futuro para raylib u otros proyectos?

Raylib va creciendo y mejorando constantemente tras cada nueva versión durante los últimos tres años y el objetivo es que siga haciéndolo, sin embargo, con vistas al futuro inmediato, me gustaría centrar esfuerzos en mejorar el soporte para las distintas plataformas y ampliar la colección de ejemplos. Respecto a otros proyectos, por un lado tengo un juego en desarrollo que me gustaría terminar y también estoy desarrollando algunas herramientas educativas muy interesantes, todo ello utilizando raylib.

Ramón Santamaría

Ramón Santamaría (@raysan5), ingeniero electrónico y desarrollador de videojuegos con más de 10 años de experiencia en el sector. Desde hace 5 años, compagina su trabajo como desarrollador, dando clases como profesor, enseñando múltiples disciplinas relacionadas con el desarrollo de videojuegos. Su creación más reciente, raylib, es una librería fácil de utilizar especialmente diseñada para enseñar programación de videojuegos a alumnos sin experiencia.

Deja un comentario